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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Быстрый стек tcp/ip для lpc2378
Dars
сообщение Jun 21 2008, 13:45
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 238
Регистрация: 11-08-05
Пользователь №: 7 557



Нужно получить 1.5-2 Мбайта/с используя tcp на lpc2378 так чтобы осталось время на другие задачи(требуется собирать данные с двух устройств по двум ком портам используя несложный протокол и отправлять их по сети в PC, иметь небольшой веб сервер для настройки устройств и доступ по фтп к файлам с настройками). Используя операционку от micrium и их стек tcp/ip можно получить такие скорости? Или стоит взять проц мощнее?можно выбирать только из lpc2378 или аt91sam92600.
Go to the top of the page
 
+Quote Post
voyt
сообщение Jun 21 2008, 16:13
Сообщение #2


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

Группа: Свой
Сообщений: 75
Регистрация: 31-07-06
Из: Москва
Пользователь №: 19 223



Посмотрите в сторону lwip. У атмела есть готовые примеры для SAM9 - маленький вебсервер и т.п.
Go to the top of the page
 
+Quote Post
Dars
сообщение Jun 21 2008, 17:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 238
Регистрация: 11-08-05
Пользователь №: 7 557



Цитата(voyt @ Jun 21 2008, 20:13) *
Посмотрите в сторону lwip. У атмела есть готовые примеры для SAM9 - маленький вебсервер и т.п.


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

Сообщение отредактировал Dars - Jun 21 2008, 17:10
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 21 2008, 17:35
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Dars @ Jun 21 2008, 21:09) *
Прочитал много отзывов о том, что у народа на AT91SAM7X256 получаются совсем мизерные скорости <<1Mbit/s. Боюсь как бы у меня такого на LPC2378 не вышло...

Видимо у народа руки не оттуда растут. Слабо верится, что можно написать настолько плохой стек.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 21 2008, 18:47
Сообщение #5


Гуру
******

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



Цитата(Dars @ Jun 21 2008, 19:09) *
На sam9 вообще без разницы, что ставить. Скорости в любом случае будут огромные..

Улыбнуло.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
mobidev
сообщение Jun 22 2008, 18:10
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 22-06-08
Из: Краснодарский край
Пользователь №: 38 488



Цитата(voyt @ Jun 21 2008, 20:13) *
Посмотрите в сторону lwip. У атмела есть готовые примеры для SAM9 - маленький вебсервер и т.п.


Ещё кроме lwip есть uIP (так называемый микро IP)
http://www.sics.se/~adam/uip/
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jun 22 2008, 20:21
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



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


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


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Aprox
сообщение Jun 24 2008, 17:49
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(Vitaliy_ARM @ Jun 23 2008, 00:21) *
Вашу задачу решить можно. У меня сейчас утсройство работает на 30 Мбит/с по UDP, при загрузке процессора 30% (частота ядра 60 МГц) (поток в одну сторону). Причем раскачивал до 70 Мбит.
Сразу говорю - порты uIP в примерах IAR не берите за основу, они просто кошмарно неоптимальны!
Портируйте сами или пишите конкретно под этот процессор свой стек. Просматривая uIP, в принципе если его немного переписать, то можно увеличить скорость в несколько раз на этом ARMе.


Переписать много сложнее, чем заново переписать, выкидывая все ненужные навороты и оставить только UDP и ARP. Тогда можно достигнуть и 90Мвсек.
Go to the top of the page
 
+Quote Post
voyt
сообщение Jun 26 2008, 17:01
Сообщение #9


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

Группа: Свой
Сообщений: 75
Регистрация: 31-07-06
Из: Москва
Пользователь №: 19 223



Реальны данные из жизни: u-boot на SAM9260 загружает по tftp (UDP протокол, стек какой-то нераспространенный ) протоколу 20 МБайт за 20 секунд в SDRAM. Но думаю, что это не показатель, т.к. сетевая часть не шибко оптимизирована...
Go to the top of the page
 
+Quote Post
elektronshik
сообщение Oct 20 2008, 04:56
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723



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

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


За основу брался порт ARM9_STR91X_IAR.
Система: AT91SAM9260 + FreeRTOS v5.0.3 + LwIP v1.3 + EWARM5.10

Сообщение отредактировал elektronshik - Oct 20 2008, 05:12
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 20 2008, 05:52
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(elektronshik @ Oct 20 2008, 08:56) *
Здравствуйте. Подскажите пожалуйста как настроить LwIP на максимальную скорость передачи по TCP.

Читайте тут:
http://lists.gnu.org/archive/html/lwip-use...1/msg00007.html
Грубо говоря, у проблемы есть как минимум две стороны:
- Оптимизация настроек TCP. Нужно сделать так, чтобы TCP посылал как можно больше данных, не дожидаясь подтверждения приёма. Какие параметры нужно править для этого в lwipopts.h - см. по ссылке выше.
- Оптимизация сетевого драйвера и кода вычисления контрольной суммы, если процессор перегружен.
В любом случае, очень помогает выявлять проблемы анализатор пакетов типа Wireshark.
Go to the top of the page
 
+Quote Post
elektronshik
сообщение Oct 20 2008, 07:09
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723



Цитата(scifi @ Oct 20 2008, 09:52) *

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

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

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

Сообщение отредактировал elektronshik - Oct 20 2008, 07:09
Go to the top of the page
 
+Quote Post
KolyanV
сообщение Oct 20 2008, 07:36
Сообщение #13


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

Группа: Свой
Сообщений: 91
Регистрация: 1-06-05
Пользователь №: 5 621



Цитата(elektronshik @ Oct 20 2008, 07:56) *
Здравствуйте. Подскажите пожалуйста как настроить 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. Собственно, при использовании сокетов это тоже нужно
Go to the top of the page
 
+Quote Post
elektronshik
сообщение Oct 23 2008, 06:50
Сообщение #14


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723



Цитата(KolyanV @ Oct 20 2008, 11:36) *
на 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.
Go to the top of the page
 
+Quote Post
virfis
сообщение Oct 28 2008, 10:11
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



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

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 15:39
Рейтинг@Mail.ru


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