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

 
 
> lwIP + FreeRTOS + lpc23xx (24xx)
slabnoff
сообщение Sep 11 2009, 08:56
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
slabnoff
сообщение Sep 14 2009, 18:58
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 26-09-05
Пользователь №: 8 955



Мдя... Накопал, что баг явно в процедуре IP-фрагментации (ну и еще несколько багов явно есть при портировании). В итоге созрел на свой порт. Немного поисследовал, поразбирался с emac... Для начала заменил копирование по-байтно в цикле банальным memcpy() - в итоге около 2 Мбайт/с вместо 1 Мбайт/с (UDP, максимальный размер пакета влезающий в один Ethernet-фрейм). Однако emac умеет отсылать пакеты из любой области памяти, в то время как все просмотренные мной порты lwIP и uIP зачем-то копируют эти пакеты в буфер EMAC'а. Предварительный (имитационный) код показывает 3 МБайт/с (с включенной оптимизацие компилятора - 4 МБайт/c). Странно, что портов с таким подходом нет.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 14 2009, 19:20
Сообщение #3


Гуру
******

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



Цитата(slabnoff @ Sep 14 2009, 20:58) *
Для начала заменил копирование по-байтно в цикле банальным memcpy()

Ну нормальное memcpy() совсем не банально smile.gif Ну а все эти lw да u в общем-то поделки и не думаю, что их можно без огромных затрат довести до ума и стабильной работы в произвольном окружении sad.gif
Цитата
Однако emac умеет отсылать пакеты из любой области памяти, в то время как....

Только вот при этом будет заниматься не преферийная шина AHB а шина памяти контроллера и ядро будет бить баклуши. Иногда очень удобно использовать USBишную память с ней по DMA можно с внешней шины пересылать и MAC по DMA доступ имеет.

Ну а стек протоколов бескомпромисный - смотрите BSD порт Юрия Темкина - он тут несколько раз уже ссылки постил, даже сегодня smile.gif
http://www.tnkernel.com


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 20:08
Рейтинг@Mail.ru


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