ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
356201 Топик полностью
VVB (21.09.2012 12:52 - 15:08, просмотров: 440) ответил Mahagam на я uIP запустил за пару дней. а lwIP больше недели тракал, и то, не смог сделать мультисессионный телнет.
Я не счёл нужным ковыряться с uIP если есть более лучший lwIP. Предпочитаю использовать лучшее из того что смогу достать. Посмотрел сейчас принципиально другую реализацию порта lwIP+FreeRTOS для LPC1769 (порт от команды поддержки FreeRTOS), там такого бага нет, т.к. прямо в прерывании от Ethernet производится копирование информации в другой буфер для дальнейшей обработки пакета lwIP и область памяти принятого пакета снова используется MAC. В порте от группы поддержки NXP копирования вообще не происходит, эта область памяти и используется дальше в lwIP (сразу в прерывании ethernet производится попытка выделения буфера памяти с целью дальнейшего его использования для DMA, и настройка дескриптора на новую область памяти, ну и взвод семафора о готовности принятого или переданного пакета) и порт будет намного быстрее. В общем, группа поддержки NXP сделала намного более грамотную реализацию, но без обработки ситуаций нехватки памяти. А добавить такую обработку значит сильно изменить архитектуру порта. Там люди работают с 2 Мб памяти (LPC177x_178x + SDRAM) и таких проблем просто не возникает. Неудивительно, что не нашли этот баг. Я за пару дней запустил lwIP+FreeRTOS на своей платке и ещё пару дней ковырялся с глюками порта. Пара дней пройдёт, в голове уляжется -- тогда и пойму, как мне изменить порт. Кстати, при передаче пакета порт от команды поддержки FreeRTOS тоже копирует из одного буфера во второй, освобождает первый буфер и затем взводит DMA на использование второго буфера. А порт команды поддержки LPC не производит тупого ненужного копирования (если передаваемые данные размещаются в области доступной DMA), вместо этого по умолчанию все буферы lwIP размещаются в области доступной DMA для MAC и освобождение буфера происходит после завершения передачи.