Уважаемые,
до этого меня устраивала скорость около 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МБит получится?
Я проискал посмотрел, но кроме общих слов ничего внятного не нашел...
Заранее благодарю.