diwil 0 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба Уважаемые, до этого меня устраивала скорость около 4 мбит на f405 через usb fs. сейчас возникла необходимость передавать в комп примерно 50-60 мбит. Я накапливаю эти данные в проц через 2 SPI и система работает следующим образом: * ОСи нет. * каждые 16мс по одному SPI накапливается 8*8*16*2 = 4кБайт * по второму 3*2*960*16 = 92160 байт. оба SPI синхронизированы, поэтому я знаю когда мне надо данные вычитывать и передавать. И вот по этому событию (прерыванию от дма) я хочу передавать данные в комп. Принимать от компа данные... ну может байт 60 раз в секунду. Поток, который надо (92160 + 4096)*8*62.5 = 48.128 мегабит (теоретически) + еще чуть-чуть. Необходимо выбрать транспорт. * USB FS отпадает. Хотя и хорошо работает вплоть (я пробовал) до 4мБит. * Поскольку мне необходимо использовать двойной буфер + буфер для отправки данных, то мне нужно минимум 300к памяти. * А это только Н7. * поскольку у меня места мало, то могу использовать только 100 или (хуже) 144 -х ногие корпуса. А в них нет USB HS. * Внешний PHY для USB HS у меня плохо влезает, конфликтует с другими девайсами и сильно по корпусу раскидан. За сим: * Я думаю в сторону изернета. * из доступных примеров я нашел только реализацию на LAN1820/1842. Там тоже все ноги по корпусу раскиданы, но его я смог его развести. * но я не нашел внятных примеров как оно работает. Поскольку у Н7 косяк - нет физики HS, то, похоже, хоть и с внешним MII, ETH выигрывает. За сим вопросы: 1. LwIP без оси работает? Надеюсь, что да. 2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать) 3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ? 4. И вообще, 50МБит получится? Я проискал посмотрел, но кроме общих слов ничего внятного не нашел... Заранее благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Студент заборстроительного 0 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба Обсуждалось уже много раз. Поиском что ли не умеете пользоваться? К примеру почитайте тему https://electronix.ru/forum/index.php?showtopic=144619 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба У меня в закладках есть вот эта тема: https://electronix.ru/forum/index.php?showt...=92903&st=0 Но я просто мимо проходил - эзернет в "боевом" режиме я так и не использовал, подсказать ничего не смогу.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба Обсуждалось уже много раз. Поиском что ли не умеете пользоваться? К примеру почитайте тему https://electronix.ru/forum/index.php?showtopic=144619 благодарю за ссылку, но там не ответов на мои вопросы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 50 24 ноября, 2017 Опубликовано 24 ноября, 2017 (изменено) · Жалоба За сим вопросы: 1. LwIP без оси работает? Надеюсь, что да. 2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать) 3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ? 4. И вообще, 50МБит получится? Каким образом будет реализован прием на компе, в смысле протокол поверх эзернета? Если есть возможность писать драйвер, можно вообще кидать чистыми эзернет кадрами, что заметно ускорит работу, если так не получается, придется пилить IP, затем, хотя бы UDP. Есть стеки более простые, чем lwip, и работают быстрее. lwip без оси работает, и без сокетов тоже, но в виду буферирования и динамической памяти может оказаться не слишком резв.. Изменено 24 ноября, 2017 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба Каким образом будет реализован прием на компе, в смысле протокол поверх эзернета? Если есть возможность писать драйвер, можно вообще кидать чистыми эзернет кадрами, что заметно ускорит работу, если так не получается, придется пилить IP, затем, хотя бы UDP. Есть стеки более простые, чем lwip, и работают быстрее. lwip без оси работает, и без сокетов тоже, но в виду буферирования и динамической памяти может оказаться не слишком резв.. на компе BSD сокеты. другие не хочу (в промискис режиме читать не хочу) у меня задача - отправить по UDP, абы не заморачиваться в подтверждениями rst/ack и т.д . Но отправить хочу сразу много. т.е. стэк должен уметь фрагментировать пакеты. И, желательно, чтобы он (стэк) это делал сам. Желательно, чтобы стэк это делал где-то в прерываниях и тихо, ибо процу тоже есть чем заняться, а ось накручивать на это не хочу. а какие стэки еще есть, которые разумно ложатся на stm32 линейки f/h7? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 24 ноября, 2017 Опубликовано 24 ноября, 2017 (изменено) · Жалоба через spi пролезет, через ethernet и lwip - вряд ли Изменено 24 ноября, 2017 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба а какие стэки еще есть, которые разумно ложатся на stm32 линейки f/h7? CY7C68013A. И он есть в QFN и BGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба поскольку у меня места мало, то могу использовать только 100 или (хуже) 144 -х ногие корпуса. А в них нет USB HS. если места мало - без вариантов ставьте bga Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 78 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба а FT2232H не справится ли с задачей забирания данных с двух SPI в комп вообще без наличия МК? хотя с 48МГц может и не успеть. ну тогда не MPSSE, а FIFO режим + мелкая CPLD. зачем там буфер на 300кБ и соответственно H7 не очень понятно. а если у МК есть ещё пара SPI, можно поделить поровну на два по 30. и пропихнуть через MPSSE. и вместо кипариса 68013 уж лучше FT232H, со стороны ПК хотя бы приключений не будет. как вариант ещё один МК (ну или сменить текущий) чтобы HS PHY на борту был. кортексы от nxp/atmelmicrochip, PIC32, ADSP-BF70x хоть с мегабайтом памяти. ну и если MII как и внешний HS PHY раскидан по корпусу, c другой периферией конфликтует и с трудом разводится, есть LAN9250. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба и вместо кипариса 68013 уж лучше FT232H, со стороны ПК хотя бы приключений не будет. А в чём приключения-то? Работает вроде стабильно. Хотя на такой скорости я его не пробовал. как вариант ещё один МК (ну или сменить текущий) чтобы HS PHY на борту был. Это несомненно лучший вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 78 24 ноября, 2017 Опубликовано 24 ноября, 2017 · Жалоба А в чём приключения-то? Работает вроде стабильно. Хотя на такой скорости я его не пробовал. драйвера? я на каком-то одном ноутбуке загрузку по USB так и не одолел, хотя и не разбирался особо. но он даже голый МК (совсем без еепрома) вообще никак не видел. но может мне просто повезло тогда во времена миграции 32->64, xp->w7, а сейчас c унифицированным для всех CyUSB3 всё хорошо. как там с w10 и линуксами? и если хоть что-нибудь помимо GPIF (который тоже как минимум сконфигурировать надо), для встроенного 8051 только страшненький sdcc? ну а может просто руки из жопы :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 25 ноября, 2017 Опубликовано 25 ноября, 2017 · Жалоба 2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать) 3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ? 4. И вообще, 50МБит получится? Я, тогда, задам вопрос по-другому: На stm32 (хотя, должно быть, на всех процах одинаково), если я, работая в режиме без оси, хочу передать 100к с UDP, lwip, то * надо ли мне несколько раз вызывать sendto() или * lwip сам, в прерываниях, соберет пакеты и их отправит? или есть другой IP стэк, который это сделает хорошо и быстро? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 25 ноября, 2017 Опубликовано 25 ноября, 2017 · Жалоба или есть другой IP стэк, который это сделает хорошо и быстро? UDP протокол настолько фантастически примитивен, что я не понимаю почему для этой задачи нужен LwIP. Может для своей задачи удастся сделать всё максимально оптимально. Хотя DHCP (если нужен) и прочую настроечную дребедень я бы предоставил LwIP или другим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 25 ноября, 2017 Опубликовано 25 ноября, 2017 · Жалоба драйвера? я на каком-то одном ноутбуке загрузку по USB так и не одолел, хотя и не разбирался особо. но он даже голый МК (совсем без еепрома) вообще никак не видел. Загрузкой по USB я пользовался только во время отладки. Штатно прошивка грузилась с I2C. Проблем не было замечено. и если хоть что-нибудь помимо GPIF (который тоже как минимум сконфигурировать надо), для встроенного 8051 только страшненький sdcc? Не понял вопрос... Диаграммы работы GPIF рисовал в GPIF-редакторе, загружал конфигурацию GPIF - прошивкой. Прошивку компилил/отлаживал в Keil. Даже без эмулятора. Наверняка можно и IAR - чем удобно. или есть другой IP стэк, который это сделает хорошо и быстро? Если Вам просто нужно до компа (который рядом находится), то оптимальнее будет вообще без TCP-стека - чисто Ethernet-уровень. Не знаю только как под виндой до этого уровня добраться, возможно нужен будет какой-то драйвер. Но, имхо, USB для вашей задачи - удобнее. UDP протокол настолько фантастически примитивен, что я не понимаю почему для этой задачи нужен LwIP. Может для своей задачи удастся сделать всё максимально оптимально. Хотя DHCP (если нужен) и прочую настроечную дребедень я бы предоставил LwIP или другим. Обработку IP до уровня UDP можно и самому написать, без сторонних костылей. Без DHCP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться