|
lwIP + FreeRTOS + lpc23xx (24xx) |
|
|
|
Sep 11 2009, 08:56
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
В общем осваивая lpc2388 решил разобраться с Ehternet. uIP идущий в комплекте с FreeRTOS успешно доковырял для того чтобы все заработало (там работы было на пару часов - инициализация PHY и IAR вместо Rowley). Но общее впечатление от uIP не очень хорошее - не место ему в ARM с операционкой - больше он все-таки подходит для однозадачки и слабых процов, ну или в тех случаях, когда всего функционала - простенький Web-сервер. Почитал про lwIP, вспомнил что как-то слил отсюда чей-то пример портирования lwIP 1.3.0 как раз под нужный мне девайс + FreeRTOS (к сожалению вспомнить чье не могу). Подцепил все это к своему проекту, добился соединения и работы простенькой задачки - Web-сервер из примеров по lwIP и начал разбираться дальше. Т.к. меня прежде всего интересует передача по UDP делал несколько экспериментов и натолкнулся на баг - при посылке UDP-пакета большего размера, чем влезает в один Ethernet-кадр и соответственно пакет должен быть побит на два Ethernet-кадра приходит только второй кадр (видно в т.ч. по Ethereal). Сначала думал, что баг связан с неправильной работой с netif->mtu, даже его нашел и исправил, но по большому счету это ситуацию не исправило. В общем уже голову сломал. Данный порт судя по содержимому EMAC.c/EMAC_ISR.c сделан из порта uIP и что выглядит не сильно красиво (хотя автору и за то что есть большое спасибо). Готов уже делать порт самостоятельно, но к сожалению начальство начало поджимать и времени на это есть совсем не много. В общем может быть кто-то чем-то сможет помочь? Если готовым портом не поделитесь, то хотя бы общие советы может какие по портированию дадите? Нашел откуда порт брал - http://electronix.ru/forum/index.php?showt...st&p=435397.
|
|
|
|
|
 |
Ответов
|
Sep 14 2009, 19:20
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(slabnoff @ Sep 14 2009, 20:58)  Для начала заменил копирование по-байтно в цикле банальным memcpy() Ну нормальное memcpy() совсем не банально  Ну а все эти lw да u в общем-то поделки и не думаю, что их можно без огромных затрат довести до ума и стабильной работы в произвольном окружении  Цитата Однако emac умеет отсылать пакеты из любой области памяти, в то время как.... Только вот при этом будет заниматься не преферийная шина AHB а шина памяти контроллера и ядро будет бить баклуши. Иногда очень удобно использовать USBишную память с ней по DMA можно с внешней шины пересылать и MAC по DMA доступ имеет. Ну а стек протоколов бескомпромисный - смотрите BSD порт Юрия Темкина - он тут несколько раз уже ссылки постил, даже сегодня http://www.tnkernel.com
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 15 2009, 18:00
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955

|
Цитата(zltigo @ Sep 14 2009, 23:20)  Только вот при этом будет заниматься не преферийная шина AHB а шина памяти контроллера и ядро будет бить баклуши. Иногда очень удобно использовать USBишную память с ней по DMA можно с внешней шины пересылать и MAC по DMA доступ имеет. В общем сделал nocopy алгоритм, забирающий данные из внутреннего ОЗУ, запустил - Wireshark принимает пакеты со сплошными 0x55. Прочитал внимательнее документацию - емаковский DMA умеет брать данные только с устройств на AHB1/AHB2 - т.е. внутреннее ОЗУ не доступно. Обидно, мне под результаты измерений надо буфер в 32 КБайт...
|
|
|
|
|
Sep 15 2009, 20:47
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(slabnoff @ Sep 15 2009, 20:00)  Прочитал внимательнее документацию - емаковский DMA умеет брать данные только с устройств на AHB1/AHB2 - т.е. внутреннее ОЗУ не доступно. Насколько мне помнится - нет - он является мастером по отношению к обеим шинам и ему доступно все. Для GPDMA AHB c MAC и его памятью действительно не доступны. Других ограничений не помню. А ошибки инициализации и работы DMA надо по любому обрабатывать а не судить по "0x55" Цитата Обидно, мне под результаты измерений надо буфер в 32 КБайт... ??? И что именно его Вы хотите ОДНИМ UDP пакетом заслать? Очень э.... неразумно. Заполняйте буфер и разгружайте его поэтапно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
slabnoff lwIP + FreeRTOS + lpc23xx (24xx) Sep 11 2009, 08:56 slabnoff Так, пока докопался до того, что первая часть паке... Sep 11 2009, 11:30  slabnoff Цитата(zltigo @ Sep 14 2009, 23:20) Ну а ... Sep 15 2009, 07:15    slabnoff Цитата(zltigo @ Sep 16 2009, 00:47) Наско... Sep 16 2009, 17:30     zltigo Цитата(slabnoff @ Sep 16 2009, 19:30) Пре... Sep 16 2009, 18:29      slabnoff Цитата(zltigo @ Sep 16 2009, 22:29) Ну и ... Sep 16 2009, 19:30 slabnoff Цитата(zltigo @ Sep 14 2009, 23:20) Ну но... Sep 14 2009, 19:56 slabnoff Продолжаю эксперименты с lwIP (1.3.1).
1) Переклю... Sep 15 2009, 11:45 Quasar ЦитатаIn addition to this memory, it can also acce... Dec 2 2009, 12:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|