Перейти к содержанию
    

Быстрый стек tcp/ip для lpc2378

Нужно получить 1.5-2 Мбайта/с используя tcp на lpc2378 так чтобы осталось время на другие задачи(требуется собирать данные с двух устройств по двум ком портам используя несложный протокол и отправлять их по сети в PC, иметь небольшой веб сервер для настройки устройств и доступ по фтп к файлам с настройками). Используя операционку от micrium и их стек tcp/ip можно получить такие скорости? Или стоит взять проц мощнее?можно выбирать только из lpc2378 или аt91sam92600.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в сторону lwip. У атмела есть готовые примеры для SAM9 - маленький вебсервер и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в сторону lwip. У атмела есть готовые примеры для SAM9 - маленький вебсервер и т.п.

 

На sam9 вообще без разницы, что ставить. Скорости в любом случае будут огромные, тут кто-то писал о 60-70Mbit/s. Меня интересует можно ли на LPC решить мою задачу. Прочитал много отзывов о том, что у народа на AT91SAM7X256 получаются совсем мизерные скорости <<1Mbit/s. Боюсь как бы у меня такого на LPC2378 не вышло...

Изменено пользователем Dars

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прочитал много отзывов о том, что у народа на AT91SAM7X256 получаются совсем мизерные скорости <<1Mbit/s. Боюсь как бы у меня такого на LPC2378 не вышло...

Видимо у народа руки не оттуда растут. Слабо верится, что можно написать настолько плохой стек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На sam9 вообще без разницы, что ставить. Скорости в любом случае будут огромные..

Улыбнуло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в сторону lwip. У атмела есть готовые примеры для SAM9 - маленький вебсервер и т.п.

 

Ещё кроме lwip есть uIP (так называемый микро IP)

http://www.sics.se/~adam/uip/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно получить 1.5-2 Мбайта/с используя tcp на lpc2378 так чтобы осталось время на другие задачи(требуется собирать данные с двух устройств по двум ком портам используя несложный протокол и отправлять их по сети в PC, иметь небольшой веб сервер для настройки устройств и доступ по фтп к файлам с настройками). Используя операционку от micrium и их стек tcp/ip можно получить такие скорости? Или стоит взять проц мощнее?можно выбирать только из lpc2378 или аt91sam92600.

 

Вашу задачу решить можно. У меня сейчас утсройство работает на 30 Мбит/с по UDP, при загрузке процессора 30% (частота ядра 60 МГц) (поток в одну сторону). Причем раскачивал до 70 Мбит.

Сразу говорю - порты uIP в примерах IAR не берите за основу, они просто кошмарно неоптимальны!

Портируйте сами или пишите конкретно под этот процессор свой стек. Просматривая uIP, в принципе если его немного переписать, то можно увеличить скорость в несколько раз на этом ARMе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вашу задачу решить можно. У меня сейчас утсройство работает на 30 Мбит/с по UDP, при загрузке процессора 30% (частота ядра 60 МГц) (поток в одну сторону). Причем раскачивал до 70 Мбит.

Сразу говорю - порты uIP в примерах IAR не берите за основу, они просто кошмарно неоптимальны!

Портируйте сами или пишите конкретно под этот процессор свой стек. Просматривая uIP, в принципе если его немного переписать, то можно увеличить скорость в несколько раз на этом ARMе.

 

Переписать много сложнее, чем заново переписать, выкидывая все ненужные навороты и оставить только UDP и ARP. Тогда можно достигнуть и 90Мвсек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реальны данные из жизни: u-boot на SAM9260 загружает по tftp (UDP протокол, стек какой-то нераспространенный ) протоколу 20 МБайт за 20 секунд в SDRAM. Но думаю, что это не показатель, т.к. сетевая часть не шибко оптимизирована...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Подскажите пожалуйста как настроить LwIP на максимальную скорость передачи по TCP.

Месяц уже ковыряю, а скорость всего 180 Кбайт/с. Исходящие пакеты идут размером ~128...512 байт.

 

Вырезать что-то из стека не хотелось бы. 1 МБайта/с по ТСП вполне достаточно. скорей всего дело в каких-то опциях... но каких?

 

 

За основу брался порт ARM9_STR91X_IAR.

Система: AT91SAM9260 + FreeRTOS v5.0.3 + LwIP v1.3 + EWARM5.10

Изменено пользователем elektronshik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Подскажите пожалуйста как настроить LwIP на максимальную скорость передачи по TCP.

Читайте тут:

http://lists.gnu.org/archive/html/lwip-use...1/msg00007.html

Грубо говоря, у проблемы есть как минимум две стороны:

- Оптимизация настроек TCP. Нужно сделать так, чтобы TCP посылал как можно больше данных, не дожидаясь подтверждения приёма. Какие параметры нужно править для этого в lwipopts.h - см. по ссылке выше.

- Оптимизация сетевого драйвера и кода вычисления контрольной суммы, если процессор перегружен.

В любом случае, очень помогает выявлять проблемы анализатор пакетов типа Wireshark.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, сейчас посмотрю.

 

Пользуюсь как раз Wireshark. Процессор больше ничем не нагружен, код выполняется в SDRAM на 100Mhz.

 

Еще в догонку вопросик:

При пинге пакетами более 1500 байт принимается только первый фрагмент. Может встречали такую проблему? Пока только выяснил, что от второго пакета уже не срабатывает прерывание.

Изменено пользователем elektronshik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Подскажите пожалуйста как настроить LwIP на максимальную скорость передачи по TCP.

Месяц уже ковыряю, а скорость всего 180 Кбайт/с. Исходящие пакеты идут размером ~128...512 байт.

 

Вырезать что-то из стека не хотелось бы. 1 МБайта/с по ТСП вполне достаточно. скорей всего дело в каких-то опциях... но каких?

За основу брался порт ARM9_STR91X_IAR.

Система: AT91SAM9260 + FreeRTOS v5.0.3 + LwIP v1.3 + EWARM5.10

 

1. Увеличьте значение параметра MEM_SIZE. Если памяти у вас мегабайты, можно ставить 64-256 КБайт

2. Увеличьте значение TCP_SND_BUF. В случае достаточности памяти - 64 Кбайт

3. Также имеют значения размеры буферов драйвера.

 

У меня на SAM7X256:

MEM_SIZE =24000

TCP_SND_BUF=4500

 

FreeRTOS v5.0.3 + LwIP v1.3

на TCP достигает скорости 6,5 МбИт/сек, это, правда, при "холостой" отправке.

В задаче с реальными данными - 4 Мбит/сек, предел с реальными данными (для моей задачи) - ок. 5 МБит/сек

 

Да, и еще важный момент: Если используете NETCONN, обязательно устанавливайте опцию TCP_NODELAY для TCP. Собственно, при использовании сокетов это тоже нужно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на TCP достигает скорости 6,5 МбИт/сек, это, правда, при "холостой" отправке.

По моему скорость передачи реальных данных правильнее мерять бАйтами, т.к скорость передачи одного пакета на физическом уровне фиксированная (100Мбит/с в нашем случае). После прохождения данных через стек в прикладной уровень, мы получаем уже байты.

 

Вобщем попробовал сделать по рекомендации http://lists.gnu.org/archive/html/lwip-use...1/msg00007.html

В результате скорость увеличилась до 650 выход /150 вход (было 180 выход /3.3 вход)... не густо.

 

А с пингом проблема решилась - оказалось известный баг в ip_frag.c.

Теперь пингуется пакетами до 23600 байт 32 мс, если больше - превышение TTL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объясните мне пожалуйста, как вы получаете такие скорости?

У меня сейчас используется uIP без ОС на LPC2468. Программа отправляет TCP пакеты с моими данными. Длина данных не бывает больше 255. Такая специфика. После отправки анализирую uip_outstanding(conn). Как написано: Check if a connection has outstanding (i.e., unacknowledged) data. И тогда отправляю следующий пакет. так вот у меня между пакетами не меньше 200 мс. Т.е. за секунду 5 пакетов всего. Скорость получается около килобайта в секунду. Хотелось бы получить хотя бы 100 килобайт в секунду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...