реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> stm32 передать в ком поток 49мБит, в какую сторону думать?
diwil
сообщение Nov 24 2017, 19:55
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Уважаемые,

до этого меня устраивала скорость около 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МБит получится?

Я проискал посмотрел, но кроме общих слов ничего внятного не нашел...

Заранее благодарю.





Go to the top of the page
 
+Quote Post
Студент заборстр...
сообщение Nov 24 2017, 20:02
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334



Обсуждалось уже много раз. Поиском что ли не умеете пользоваться?
К примеру почитайте тему https://electronix.ru/forum/index.php?showtopic=144619
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 24 2017, 20:13
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



У меня в закладках есть вот эта тема: https://electronix.ru/forum/index.php?showt...=92903&st=0

Но я просто мимо проходил - эзернет в "боевом" режиме я так и не использовал, подсказать ничего не смогу..


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
diwil
сообщение Nov 24 2017, 20:29
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Студент заборстроительного @ Nov 24 2017, 23:02) *
Обсуждалось уже много раз. Поиском что ли не умеете пользоваться?
К примеру почитайте тему https://electronix.ru/forum/index.php?showtopic=144619


благодарю за ссылку, но там не ответов на мои вопросы
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 24 2017, 21:23
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(diwil @ Nov 24 2017, 22:55) *
За сим вопросы:
1. LwIP без оси работает? Надеюсь, что да.
2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать)
3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ?
4. И вообще, 50МБит получится?


Каким образом будет реализован прием на компе, в смысле протокол поверх эзернета? Если есть возможность писать драйвер, можно вообще кидать чистыми эзернет кадрами, что заметно ускорит работу, если так не получается, придется пилить IP, затем, хотя бы UDP. Есть стеки более простые, чем lwip, и работают быстрее.

lwip без оси работает, и без сокетов тоже, но в виду буферирования и динамической памяти может оказаться не слишком резв..

Сообщение отредактировал mantech - Nov 24 2017, 21:25
Go to the top of the page
 
+Quote Post
diwil
сообщение Nov 24 2017, 21:34
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(mantech @ Nov 25 2017, 00:23) *
Каким образом будет реализован прием на компе, в смысле протокол поверх эзернета? Если есть возможность писать драйвер, можно вообще кидать чистыми эзернет кадрами, что заметно ускорит работу, если так не получается, придется пилить IP, затем, хотя бы UDP. Есть стеки более простые, чем lwip, и работают быстрее.

lwip без оси работает, и без сокетов тоже, но в виду буферирования и динамической памяти может оказаться не слишком резв..


на компе BSD сокеты. другие не хочу (в промискис режиме читать не хочу)

у меня задача - отправить по UDP, абы не заморачиваться в подтверждениями rst/ack и т.д . Но отправить хочу сразу много. т.е. стэк должен уметь фрагментировать пакеты. И, желательно, чтобы он (стэк) это делал сам. Желательно, чтобы стэк это делал где-то в прерываниях и тихо, ибо процу тоже есть чем заняться, а ось накручивать на это не хочу.

а какие стэки еще есть, которые разумно ложатся на stm32 линейки f/h7?
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 24 2017, 21:59
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



через spi пролезет, через ethernet и lwip - вряд ли


Сообщение отредактировал Огурцов - Nov 24 2017, 22:03
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 24 2017, 22:03
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(diwil @ Nov 24 2017, 23:34) *
а какие стэки еще есть, которые разумно ложатся на stm32 линейки f/h7?

CY7C68013A. И он есть в QFN и BGA.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 24 2017, 22:06
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(diwil @ Nov 24 2017, 19:55) *
поскольку у меня места мало, то могу использовать только 100 или (хуже) 144 -х ногие корпуса. А в них нет USB HS.

если места мало - без вариантов ставьте bga
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 24 2017, 23:09
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



а 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.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 24 2017, 23:14
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_pv @ Nov 25 2017, 01:09) *
и вместо кипариса 68013 уж лучше FT232H, со стороны ПК хотя бы приключений не будет.

А в чём приключения-то? Работает вроде стабильно. Хотя на такой скорости я его не пробовал.

Цитата(_pv @ Nov 25 2017, 01:09) *
как вариант ещё один МК (ну или сменить текущий) чтобы HS PHY на борту был.

Это несомненно лучший вариант.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 24 2017, 23:44
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(jcxz @ Nov 25 2017, 06:14) *
А в чём приключения-то? Работает вроде стабильно. Хотя на такой скорости я его не пробовал.

драйвера? я на каком-то одном ноутбуке загрузку по USB так и не одолел, хотя и не разбирался особо. но он даже голый МК (совсем без еепрома) вообще никак не видел.
но может мне просто повезло тогда во времена миграции 32->64, xp->w7, а сейчас c унифицированным для всех CyUSB3 всё хорошо. как там с w10 и линуксами?
и если хоть что-нибудь помимо GPIF (который тоже как минимум сконфигурировать надо), для встроенного 8051 только страшненький sdcc?

ну а может просто руки из жопы laughing.gif
Go to the top of the page
 
+Quote Post
diwil
сообщение Nov 25 2017, 10:35
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(diwil @ Nov 24 2017, 22:55) *
2. Если да, то операция записи в сокет сколько за раз данных проглотит? (в BSD машинах оно может втянуть в ядро сразу все за один вызов write() или send() а потом само передавать)
3. Если оно в таком виде работает, то можно ли в LwIP, открыть сразу 2 сокета (разные порты) и типа слушать их чем-то типа select() ?
4. И вообще, 50МБит получится?



Я, тогда, задам вопрос по-другому:

На stm32 (хотя, должно быть, на всех процах одинаково), если я, работая в режиме без оси,
хочу передать 100к с UDP, lwip, то
* надо ли мне несколько раз вызывать sendto() или
* lwip сам, в прерываниях, соберет пакеты и их отправит?

или есть другой IP стэк, который это сделает хорошо и быстро?
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 25 2017, 11:12
Сообщение #14


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(diwil @ Nov 25 2017, 13:35) *
или есть другой IP стэк, который это сделает хорошо и быстро?

UDP протокол настолько фантастически примитивен, что я не понимаю почему для этой задачи нужен LwIP. Может для своей задачи удастся сделать всё максимально оптимально.
Хотя DHCP (если нужен) и прочую настроечную дребедень я бы предоставил LwIP или другим.


--------------------
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 25 2017, 12:37
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_pv @ Nov 25 2017, 01:44) *
драйвера? я на каком-то одном ноутбуке загрузку по USB так и не одолел, хотя и не разбирался особо. но он даже голый МК (совсем без еепрома) вообще никак не видел.

Загрузкой по USB я пользовался только во время отладки. Штатно прошивка грузилась с I2C. Проблем не было замечено.

Цитата(_pv @ Nov 25 2017, 01:44) *
и если хоть что-нибудь помимо GPIF (который тоже как минимум сконфигурировать надо), для встроенного 8051 только страшненький sdcc?

Не понял вопрос... wacko.gif
Диаграммы работы GPIF рисовал в GPIF-редакторе, загружал конфигурацию GPIF - прошивкой. Прошивку компилил/отлаживал в Keil. Даже без эмулятора. Наверняка можно и IAR - чем удобно.

Цитата(diwil @ Nov 25 2017, 12:35) *
или есть другой IP стэк, который это сделает хорошо и быстро?

Если Вам просто нужно до компа (который рядом находится), то оптимальнее будет вообще без TCP-стека - чисто Ethernet-уровень.
Не знаю только как под виндой до этого уровня добраться, возможно нужен будет какой-то драйвер.
Но, имхо, USB для вашей задачи - удобнее.

Цитата(AVR @ Nov 25 2017, 13:12) *
UDP протокол настолько фантастически примитивен, что я не понимаю почему для этой задачи нужен LwIP. Может для своей задачи удастся сделать всё максимально оптимально.
Хотя DHCP (если нужен) и прочую настроечную дребедень я бы предоставил LwIP или другим.

Обработку IP до уровня UDP можно и самому написать, без сторонних костылей. Без DHCP.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016