-
- Можете ещё подсказать или навести на путь истинный? На плате SMCS LAN8720A, подключено по RMII. Какая у него скорость в пределе? Тактирование от ножки контроллера 25МГц, 2 бита данных. Даже если 50МГц MDC, по описанию получаем полезных 16 бит из Dingo(216 знак., 08.02.2016 11:16, ссылка)
- Ну ваще. MDC/MDIO - это management interface для настройки PHY и мониторинга состояния. Легко можно его не подключать, если PHY по умолчанию правильно настроен. Данные прокачиваются по TX[1:0]/RX[1:0] с тактовой 50 МГц, т.е. получается аккурат 100 SciFi(8 знак., 08.02.2016 13:15)
- А как управление передачей приёмом идёт? Например, когда передатчик не имеет данных. А в описаниях как-то упускают этот момент. Dingo(83 знак., 08.02.2016 13:26 - 13:30)
- Данные передаются синхронно с тактовой 50МГц, два бита за такт. Наличие/отсутствие данных определяется дополнительными сигналами: на передачу TXEN (Transmit Enable), на прием CRS_DV (Carrier Sense/Data Valid - две функции у ножки). Расписано это LightElf(74 знак., 08.02.2016 15:52, ссылка)
- Спасибо. Теперь всё на места встало. А ведь заглядывал на вики, да пропустил. :'( - Dingo(08.02.2016 17:05)
- Данные передаются синхронно с тактовой 50МГц, два бита за такт. Наличие/отсутствие данных определяется дополнительными сигналами: на передачу TXEN (Transmit Enable), на прием CRS_DV (Carrier Sense/Data Valid - две функции у ножки). Расписано это LightElf(74 знак., 08.02.2016 15:52, ссылка)
- А как управление передачей приёмом идёт? Например, когда передатчик не имеет данных. А в описаниях как-то упускают этот момент. Dingo(83 знак., 08.02.2016 13:26 - 13:30)
- Ну ваще. MDC/MDIO - это management interface для настройки PHY и мониторинга состояния. Легко можно его не подключать, если PHY по умолчанию правильно настроен. Данные прокачиваются по TX[1:0]/RX[1:0] с тактовой 50 МГц, т.е. получается аккурат 100 SciFi(8 знак., 08.02.2016 13:15)
- Да я репу чешу: все условия вроде ему создал, а оно не работает "искаропки". С другой стороны - если бы примеры от ST были нерабочие, народ бы давно шапками их закидал. Кто-нибудь запускал их? Я про AN3966. - Dingo(14.12.2015 13:24 - 13:28)
- lwip - непростой зверь. Не очень-то верю, что можно просто взять какой-то левый пример с ним и сделать что-то серьёзное, не залезая во внутренности. Сам я прикручивал голый lwip с сайта проекта, драйвер для STM32 ваял руками. - SciFi(14.12.2015 14:10, картинка)
- Господа, подскажите, кто с каким потоком работал через Ethernet? Требуется 9 Мбит. Если попилить на куски по ~1400 байт, то ~825 пактов в секунду. А у меня STM32F407 на 168 МГц нонстопом отправляет пакеты с интервалом ~106 мсек (чуть больше 10 Dingo(352 знак., 18.01.2016 13:38)
- Гугл говорит, что кто-то разгонял TCP до 92 Мбит/с. Естественно, зависит от того, что с этими данными делаете, ведь там тормозов помимо lwip можно понаделать. Опять же, если сделано через #опу и кривыми руками, как это часто бывает на всяких SciFi(46 знак., 18.01.2016 14:06, ссылка)
- Спасибо вам ещё раз. Теперь думать, как выяснить, кто тормозит (жрёт больше времени МК) ? - Dingo(18.01.2016 15:23)
- У ТСП есть такой параметр как количество данных, отправленных без подтверждения. То есть стек может ждать подтверждение на каждый пакет и только потом отправлять следующий пакет. А может сразу запузырить дюжину пакетов и ждать подтверждение на них ASDFS(238 знак., 18.01.2016 15:40)
- Там внутре lwip много ручек покрутить можно. Нужно, чтобы затыков при выделении памяти не было. А память там выделяется в разных местах по-разному, и объёмы буферов настраиваются отдельно. Без поллитры не разберёшься. - SciFi(18.01.2016 15:46)
- А ведь написали! В общем, опция #define MEMP_OVERFLOW_CHECK сильно тормозит выделение и освобождение памяти. Dingo(154 знак., 04.02.2016 12:22)
- Поскольку мне подтверждение не нужно по той простой причине, что мне не где держать такие буфера на случай повторной отправки, то (пока?) остановился на UDP. - Dingo(18.01.2016 15:45)
- Для UDP достаточно uIP. Он проще на 2 порядка. - SciFi(18.01.2016 15:46)
- Его рекомендуете? или "ручки крутить" у LwIP? Источник данных - "внешняя память" на CPLD. - Dingo(19.01.2016 05:06 - 06:34)
- Для UDP достаточно uIP. Он проще на 2 порядка. - SciFi(18.01.2016 15:46)
- Там внутре lwip много ручек покрутить можно. Нужно, чтобы затыков при выделении памяти не было. А память там выделяется в разных местах по-разному, и объёмы буферов настраиваются отдельно. Без поллитры не разберёшься. - SciFi(18.01.2016 15:46)
- У ТСП есть такой параметр как количество данных, отправленных без подтверждения. То есть стек может ждать подтверждение на каждый пакет и только потом отправлять следующий пакет. А может сразу запузырить дюжину пакетов и ждать подтверждение на них ASDFS(238 знак., 18.01.2016 15:40)
- Спасибо вам ещё раз. Теперь думать, как выяснить, кто тормозит (жрёт больше времени МК) ? - Dingo(18.01.2016 15:23)
- Гугл говорит, что кто-то разгонял TCP до 92 Мбит/с. Естественно, зависит от того, что с этими данными делаете, ведь там тормозов помимо lwip можно понаделать. Опять же, если сделано через #опу и кривыми руками, как это часто бывает на всяких SciFi(46 знак., 18.01.2016 14:06, ссылка)
- Хм.. пакетик прилетает в процессе удаления блока? Dingo(1516 знак., 29.12.2015 11:52)
- Продолжу тему. Память куда-то съедает. Ситуация - шлём UDP пакеты, потом перестаёт. Попробовал сообщения включить - ну да, памяти не хватает, а почему не пишет. Dingo(3298 знак., 29.12.2015 08:08 - 08:11)
- Сколько раз вызываете udp_echoclient_connect()? - SciFi(29.12.2015 12:01)
- Вот тут было решение, которое я пропустил. Набросал что-то вроде профайлера, который считает среди прочего количество запусков участка исходника. Выяснилось, цикл прокручивается довольно резво. Начал копать дальше. Оказывается - дело было в Dingo(158 знак., 12.02.2016 11:33)
- Я бы из примеров ST вообще поостерёгся что-либо использовать :-) - SciFi(12.02.2016 11:42)
- Много. 4 раза в секунду должен. Допилить либу, чтобы рапортовал откуда вызывается memp_malloc() и memp_free()? Там есть вроде подобный функционал, но не соображу, как запустить пока. Dingo(893 знак., 30.12.2015 06:35)
- Нельзя так. Если у Вас UDP_PCB pool размером, скажем, 4 элемента, то он исчерпается ровно за 1 секунду. Выделять PCB 4 раза в секунду - глупость. Что делать-то надо? - SciFi(30.12.2015 07:55 - 08:04)
- Ещё логи. Странно получается - вроде и блок выделил, но тут же ещё один выделяет. А принятые пакеты куда LwIP складывает? Я про ситуацию, когда было принято несколько пакетов между обращениями, они в цепочке связанных pcb окажутся? Dingo(822 знак., 30.12.2015 08:27 - 08:34)
- Нарезать на пакеты и отправить ~400 килобайт за секунду, причём времени на повторную отправку не будет (точнее- места под хранение последующих данных), потому и TCP не годится. При чём основная задача будет съедать больше 50% времени. И где размер Dingo(240 знак., 30.12.2015 08:18 - 08:20)
- Не надо увеличивать этот пул. Нужен всего один UDP PCB. Выделять при инициализации. Через него и отправлять это всё. - SciFi(30.12.2015 08:23)
- Идею понял. Просто как в примере было, так и по накатанной пошло. :( Dingo(68 знак., 30.12.2015 08:58)
- Вот реальный пример (SNTP клиент, ненужное срезано): SciFi(875 знак., 30.12.2015 09:35)
- Идею понял. Просто как в примере было, так и по накатанной пошло. :( Dingo(68 знак., 30.12.2015 08:58)
- Не надо увеличивать этот пул. Нужен всего один UDP PCB. Выделять при инициализации. Через него и отправлять это всё. - SciFi(30.12.2015 08:23)
- Нельзя так. Если у Вас UDP_PCB pool размером, скажем, 4 элемента, то он исчерпается ровно за 1 секунду. Выделять PCB 4 раза в секунду - глупость. Что делать-то надо? - SciFi(30.12.2015 07:55 - 08:04)
- Вот тут было решение, которое я пропустил. Набросал что-то вроде профайлера, который считает среди прочего количество запусков участка исходника. Выяснилось, цикл прокручивается довольно резво. Начал копать дальше. Оказывается - дело было в Dingo(158 знак., 12.02.2016 11:33)
- Сколько раз вызываете udp_echoclient_connect()? - SciFi(29.12.2015 12:01)
- Ещё спрошу - DHCP запускали? Статически выдаёт, роутер учитывает, при попытке перейти на динамическое выделение индейская национальная изба "фигвам". Копаю. - Dingo(15.12.2015 13:09)
- Запускал. - SciFi(15.12.2015 13:13)
- Эм.. Ну, каков вопрос - таков ответ. ;-) Уточню: какие функции отвечают за корректную работу? Где взять подробное описание или пример для Standalone, можете подсказать? Dingo(1792 знак., 15.12.2015 13:21 - 13:25)
- Не помню уже, давно это было. Наверное, просто залез внутрь lwip, и всё стало понятно. У меня вот так: SciFi(1162 знак., 15.12.2015 13:28)
- Не могу найти граблей. Может роутер местный не успевает отвечать? Как wireshark настроить, чтобы он весь диалог ловил? Сейчас МАК платки ловит и широковещательные. (x.x.x.52 - комп в сети). Dingo(1876 знак., 16.12.2015 10:47)
- Предупреждения при сборке ничему не угрожают, если заглянете в код, то поймёте, почему. А как настроить wireshark? Не знаю. Сказать ему, чтобы ловил все пакеты DHCP? - SciFi(16.12.2015 10:52)
- То есть вы согласны с версией, что роутер молчит и не пытается выйти на диалог о выдаче адреса?? - Dingo(16.12.2015 10:58)
- Это был бы какой-то странный роутер. Но всё это поддаётся проверке. - SciFi(16.12.2015 11:05)
- Эм.. даже незнаю, как правильно задать вопрос. "Куда копать посоветуете?" Пакет вроде правильный. А русская Wiki нуждается в правке. Dingo(16.12.2015 11:48)
- Открыл я этот pcap. Wireshark мне сразу сказал, что MAC неправильный (мультикаст штоле?). А ежели так, я бы на месте роутера тоже не стал отвечать. - SciFi(16.12.2015 11:59)
- О! Спасибо, это оно! Брал по ссылке. А там, оказывается тонкости есть. :-O Скопировал дейтсвующий из сетки, поменял чуть, теперь всё замечательно! - Dingo(16.12.2015 12:52, ссылка)
- Вот так вот. Не только лишь все MAC адреса одинаково полезны. Я тоже один раз обжёгся. Обратите внимание на битик "multicast": - SciFi(16.12.2015 12:57, ссылка, картинка)
- Поскольку я отсебятину записал, я и localy administarated сделал сразу его. ссылку уже видел, но ещё раз спасибо вам. - Dingo(16.12.2015 13:01)
- Бит locally administrated выставлять кошерно, если конечно вы не купили диапазон MAC-адресов. - LightElf(16.12.2015 14:58)
- Я тоже разок попал с этим битом. Пару лет девайсы без замечаний работали в простеньких сетях - свитчи + компы с WIN. Первый же встретившийся беспроводный роутер с луниксом не пропустил "левые" MAC-и... - Гудвин(16.12.2015 14:46)
- Поскольку я отсебятину записал, я и localy administarated сделал сразу его. ссылку уже видел, но ещё раз спасибо вам. - Dingo(16.12.2015 13:01)
- Вот так вот. Не только лишь все MAC адреса одинаково полезны. Я тоже один раз обжёгся. Обратите внимание на битик "multicast": - SciFi(16.12.2015 12:57, ссылка, картинка)
- О! Спасибо, это оно! Брал по ссылке. А там, оказывается тонкости есть. :-O Скопировал дейтсвующий из сетки, поменял чуть, теперь всё замечательно! - Dingo(16.12.2015 12:52, ссылка)
- Открыл я этот pcap. Wireshark мне сразу сказал, что MAC неправильный (мультикаст штоле?). А ежели так, я бы на месте роутера тоже не стал отвечать. - SciFi(16.12.2015 11:59)
- Эм.. даже незнаю, как правильно задать вопрос. "Куда копать посоветуете?" Пакет вроде правильный. А русская Wiki нуждается в правке. Dingo(16.12.2015 11:48)
- Это был бы какой-то странный роутер. Но всё это поддаётся проверке. - SciFi(16.12.2015 11:05)
- То есть вы согласны с версией, что роутер молчит и не пытается выйти на диалог о выдаче адреса?? - Dingo(16.12.2015 10:58)
- Предупреждения при сборке ничему не угрожают, если заглянете в код, то поймёте, почему. А как настроить wireshark? Не знаю. Сказать ему, чтобы ловил все пакеты DHCP? - SciFi(16.12.2015 10:52)
- Не могу найти граблей. Может роутер местный не успевает отвечать? Как wireshark настроить, чтобы он весь диалог ловил? Сейчас МАК платки ловит и широковещательные. (x.x.x.52 - комп в сети). Dingo(1876 знак., 16.12.2015 10:47)
- Не помню уже, давно это было. Наверное, просто залез внутрь lwip, и всё стало понятно. У меня вот так: SciFi(1162 знак., 15.12.2015 13:28)
- Эм.. Ну, каков вопрос - таков ответ. ;-) Уточню: какие функции отвечают за корректную работу? Где взять подробное описание или пример для Standalone, можете подсказать? Dingo(1792 знак., 15.12.2015 13:21 - 13:25)
- Запускал. - SciFi(15.12.2015 13:13)
- Нашёл. Павел на http сделал пример, а остальные не стал допиливать. А у него на Dingo(199 знак., 15.12.2015 07:51)
- Господа, подскажите, кто с каким потоком работал через Ethernet? Требуется 9 Мбит. Если попилить на куски по ~1400 байт, то ~825 пактов в секунду. А у меня STM32F407 на 168 МГц нонстопом отправляет пакеты с интервалом ~106 мсек (чуть больше 10 Dingo(352 знак., 18.01.2016 13:38)
- lwip - непростой зверь. Не очень-то верю, что можно просто взять какой-то левый пример с ним и сделать что-то серьёзное, не залезая во внутренности. Сам я прикручивал голый lwip с сайта проекта, драйвер для STM32 ваял руками. - SciFi(14.12.2015 14:10, картинка)
- Можете ещё подсказать или навести на путь истинный? На плате SMCS LAN8720A, подключено по RMII. Какая у него скорость в пределе? Тактирование от ножки контроллера 25МГц, 2 бита данных. Даже если 50МГц MDC, по описанию получаем полезных 16 бит из Dingo(216 знак., 08.02.2016 11:16, ссылка)