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

 
 
> Самый быстрый и самый маленький TCP-стек., По просьбам трудящихся.
Rst7
сообщение Jul 27 2011, 10:57
Сообщение #1


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Итак, по просьбам трудящихся выкладываю порт своего стека на LPC1768, выдранный из текущего проекта, над которым щас тружусь.

Прикрепленный файл  NikeE_CM3.zip ( 350.37 килобайт ) Кол-во скачиваний: 563


Собирается IAR'ом 6.20.3 (вроде крайний на текущий момент), за подправить для GCC - даже не просите.

В качестве PHY используется KSZ8041TL, что, в общем, не принципиально - править, если что, файл emac.c

Тактовая проца в проекте - 100МГц, кварц - 20МГц, менять - функция InitPLL в файле hardware_init.c

Так же для генерации 50МГц REFCLK используется сам процессор через модуль CLKOUT. Кому не надо, в файле hardware_init.c необходимо убрать
CODE
  //Нужно если 50МГц для RMII генерируется процом
  PINSEL3 |= (0x01UL<<22); //CLKOUT on P1.27
  CLKOUTCFG=0x00000110; //CLKOUT 100MHz/2=50MHz used for RMII


Стек поддерживает TCP (и серверные, и клиентские сокеты), ICMP. Очень не долго прикрутить UDP. Поддерживается Fast Retransmit на передачу. На прием - сделаю чуть позже (если, конечно, понадобится).

Архитектура стека - callback по событиям из низкоприоритетного прерывания (используется модуль RIT как таймер, необходимый для TCP и заодно происходит Wakeup этого потока при поступлении пакетов - через прерывание от EMAC, которые должно быть высокоприоритетным (но при этом очень короткое, TODO - управление Flow Control)). Сам стек - network.c.

По умолчанию IP-адрес - 192.168.0.100.

Есть вебинтерфейс, даже с поддержкой ajax - можно поставить галочку Update Graphics и повеселиться (естественно, с браузером, который понимает HTML5 - Опера, Хром, Тормозилла - все годится). Кнопки "<<" и ">>" тоже можно понажимать. Для создания и отображения этих данных копать show_data.c и HTMLsource/http_root_level3.

Еще там случайно md5-авторизация в вебсервере сделана wink.gif

Прикрепленное изображение


Эмулятор EEPROM в проекте не прикручен, так что на страничке конфигурации настройки стека не сохраняются. Когда у себя в проекте прикручу, сюда сделаю порт.

На порту 2000 висит отдаватель файла со случайными числами размером 100 мегабайт - это для теста скорости. В папочке GetData лежит проект забирателя для большого брата (собирать C++ Builder'ом).

Ну вот теперь, собственно, за скорость. По TCP - 90Мбит/с.
Прикрепленное изображение


На этом, кстати, предлагаю закончить спор о максимально достижимой скорости по TCP.

Ну размеры вообще не угадываются - 3.7кБ собственно стек, вебсервер - 3.5кБ. Ах да, там еще странички пакуются, но это осталось с версии для AVR, можно честно выбросить.

Собственно, примеры использования можно смотреть в rx_tcp_dump.c (тупой отправлятель данных) и http_server.c (веб-сервер, там берегите мозг).

Ну и на посошок - лицензии. От это все - GPL, так что пользуйтесь.

На все вопросы постараюсь ответить тут.

Добавлено 29 июня 2011г:
http://electronix.ru/forum/index.php?s=&am...st&p=956930 - ревизия 1315.

Добавлено 30 июля 2011г:
http://electronix.ru/forum/index.php?s=&am...st&p=957213 - ревизия 1318.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rst7   Самый быстрый и самый маленький TCP-стек.   Jul 27 2011, 10:57
- - andrewlekar   Эмуляцию EEPROM уже хочется глянуть. У меня своя е...   Jul 27 2011, 11:09
- - Rst7   QUOTE Эмуляцию EEPROM уже хочется глянуть. А что,...   Jul 27 2011, 11:45
- - prottoss   А че он самый быстрый то? С чем сравнивалось? У мя...   Jul 27 2011, 12:33
|- - VslavX   Цитата(prottoss @ Jul 27 2011, 15:33) А ч...   Jul 27 2011, 14:54
|- - blackfin   Цитата(VslavX @ Jul 27 2011, 18:54) А вот...   Jul 27 2011, 15:36
|- - VslavX   Цитата(blackfin @ Jul 27 2011, 18:36) Мож...   Jul 27 2011, 17:08
|- - blackfin   Цитата(VslavX @ Jul 27 2011, 21:08) Я вот...   Jul 27 2011, 17:16
- - Rst7   QUOTE А че он самый быстрый то? С чем сравнивалось...   Jul 27 2011, 12:40
|- - prottoss   Цитата(Rst7 @ Jul 27 2011, 18:40) А Вы за...   Jul 27 2011, 12:50
- - Rst7   QUOTE А сколько занимает памяти TCP-сокет кстати? ...   Jul 27 2011, 13:07
|- - prottoss   Цитата(Rst7 @ Jul 27 2011, 19:07) Давайте...   Jul 27 2011, 13:20
- - Rst7   QUOTE Хорошо. Постараюсь причесать до понедельника...   Jul 27 2011, 13:24
|- - prottoss   Цитата(Rst7 @ Jul 27 2011, 19:24) Так а п...   Jul 27 2011, 13:55
|- - prottoss   Цитата(Rst7 @ Jul 27 2011, 19:24) Так а п...   Jul 28 2011, 08:03
- - scifi   Интересная штука. Эх, причесать бы код и абстрагир...   Jul 27 2011, 14:01
|- - prottoss   Цитата(scifi @ Jul 27 2011, 20:01) Эх, пр...   Jul 27 2011, 14:13
|- - zltigo   QUOTE (scifi @ Jul 27 2011, 16:01) Эх, пр...   Jul 27 2011, 14:28
- - Rst7   QUOTE Эх, причесать бы код и абстрагировать от жел...   Jul 27 2011, 14:27
|- - prottoss   Цитата(Rst7 @ Jul 27 2011, 20:27) Так - п...   Jul 27 2011, 15:09
- - Rst7   QUOTE Судя по скорости работы с конкретным железом...   Jul 27 2011, 14:48
- - Rst7   QUOTE Может быть, обсудим методику тестирования пр...   Jul 27 2011, 15:08
- - Rst7   QUOTE Чего там оно просит? В windows/drivers/etc/...   Jul 27 2011, 15:23
- - Rst7   QUOTE Я вот жду LPC18xx - у него EMAC продвинутый,...   Jul 27 2011, 18:24
|- - VslavX   Цитата(Rst7 @ Jul 27 2011, 21:24) Однако ...   Jul 27 2011, 20:57
- - Rst7   QUOTE Можно, например, Ethereal'ом протестиров...   Jul 27 2011, 20:34
|- - blackfin   Цитата(Rst7 @ Jul 28 2011, 00:34) Только ...   Jul 28 2011, 04:15
- - Rst7   QUOTE Ну, допустим, не в два, а чуть больше чем в ...   Jul 27 2011, 21:28
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 00:28) Имеем з...   Jul 28 2011, 06:08
- - halfdoom   Цитата(Rst7 @ Jul 27 2011, 13:57) Ну вот ...   Jul 28 2011, 04:04
- - andrewlekar   ЦитатаА что, собственно стек не интересен? Не особ...   Jul 28 2011, 04:19
- - Rst7   QUOTE Их никто и не складывает. Данные идут в одно...   Jul 28 2011, 06:39
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 09:39) А оно-т...   Jul 28 2011, 07:36
- - Rst7   Подумал про передачу данных, например, с MMC. Да, ...   Jul 28 2011, 07:48
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 10:39) прерыва...   Jul 28 2011, 07:56
- - Rst7   QUOTE Угу, а если стек занят (ну по другому сокету...   Jul 28 2011, 08:14
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 11:14) Почему?...   Jul 28 2011, 10:53
- - AlexandrY   Цитата(Rst7 @ Jul 27 2011, 13:57) Итак, п...   Jul 28 2011, 10:08
- - Rst7   QUOTE и вижу вы даже не пытались оптимизировать ра...   Jul 28 2011, 10:30
|- - AlexandrY   Цитата(Rst7 @ Jul 28 2011, 13:30) Именно ...   Jul 28 2011, 12:51
- - Rst7   Кстати, о максимальной пропускной способности. Им...   Jul 28 2011, 11:27
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 14:27) Буфер п...   Jul 28 2011, 13:03
|- - halfdoom   Цитата(VslavX @ Jul 28 2011, 16:03) Но хр...   Jul 28 2011, 14:24
|- - VslavX   Цитата(halfdoom @ Jul 28 2011, 17:24) Воз...   Jul 28 2011, 14:33
- - Rst7   QUOTE Что значит крутить окно заранее? Это вообще ...   Jul 28 2011, 13:33
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 16:33) Для так...   Jul 28 2011, 14:10
- - Rst7   QUOTE Угу, и еще залезли в s->win и сделали его...   Jul 28 2011, 14:25
- - Rst7   QUOTE а для человека, незнакомого с протоколом TCP...   Jul 28 2011, 14:52
|- - blackfin   Цитата(Rst7 @ Jul 28 2011, 18:52) Более т...   Jul 28 2011, 15:18
|- - zltigo   QUOTE (blackfin @ Jul 28 2011, 18:18) Ага...   Jul 28 2011, 17:32
|- - blackfin   Цитата(zltigo @ Jul 28 2011, 21:32) При э...   Jul 28 2011, 18:31
|- - zltigo   QUOTE (blackfin @ Jul 28 2011, 21:31) и и...   Jul 28 2011, 18:50
|- - VslavX   Цитата(zltigo @ Jul 28 2011, 21:50) Прими...   Jul 28 2011, 19:08
|- - zltigo   QUOTE (VslavX @ Jul 28 2011, 22:08) А что...   Jul 28 2011, 19:19
|- - VslavX   Цитата(zltigo @ Jul 28 2011, 22:19) Там д...   Jul 28 2011, 19:32
|- - zltigo   QUOTE (VslavX @ Jul 28 2011, 22:32) И что...   Jul 28 2011, 19:43
- - Rst7   QUOTE Ага, вот тут и встает наш Главный холиварный...   Jul 28 2011, 16:13
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 19:13) Да поро...   Jul 28 2011, 17:56
- - yakub_EZ   IAR 6.21.1.2846 и common components 6.3.3.1990. П...   Jul 28 2011, 16:18
- - Rst7   QUOTE При компиляции просит revision.c, где его вз...   Jul 28 2011, 16:36
- - Rst7   QUOTE ИМХО, как раз LPC17xx неудачно выбран для ил...   Jul 28 2011, 19:23
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 22:23) конечно...   Jul 28 2011, 19:45
- - Rst7   QUOTE и похоже таки со 100% загрузкой ядра (раз 92...   Jul 28 2011, 20:04
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 23:04) Ну я по...   Jul 28 2011, 20:20
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 23:04) А вот т...   Jul 28 2011, 20:36
- - Rst7   QUOTE Хм, а разве он их генерирует, а не просто бе...   Jul 28 2011, 20:28
|- - VslavX   Цитата(Rst7 @ Jul 28 2011, 23:28) Распако...   Jul 28 2011, 20:44
|- - aaarrr   Цитата(Rst7 @ Jul 29 2011, 00:28) Да ладн...   Jul 28 2011, 22:06
- - Rst7   QUOTE Это для пакета в 1460 байт? Примерно 1 такт ...   Jul 28 2011, 20:43
- - Rst7   QUOTE А что - на PIO получится 25МГц выдать? Ну п...   Jul 28 2011, 20:55
- - Rst7   ЦитатаА еще придется CRC16 считать для каждой из ч...   Jul 29 2011, 06:59
- - Rst7   QUOTE Не стоит овчинка выделки - сделать можно, но...   Jul 29 2011, 08:18
- - Rst7   Сделал правильный отправлятель пакетов (без тупого...   Jul 29 2011, 10:00
|- - RA3WUM   Rst7 Сколько данный стек занимает RAM? В LPC1114 ...   Jul 29 2011, 15:28
- - Rst7   QUOTE Сколько данный стек занимает RAM? В LPC1114 ...   Jul 29 2011, 19:02
|- - RA3WUM   Цитата(Rst7 @ Jul 29 2011, 23:02) Или как...   Jul 29 2011, 19:26
- - Rst7   QUOTE Соответсвенно скорость порядка 96-192 кБит/с...   Jul 29 2011, 19:41
|- - RA3WUM   Цитата(Rst7 @ Jul 29 2011, 23:41) Источни...   Jul 29 2011, 19:59
- - Rst7   QUOTE Если не ошибаюсь на вашем стеке уже делали и...   Jul 29 2011, 20:36
|- - RA3WUM   Цитата(Rst7 @ Jul 30 2011, 00:36) Да. Но ...   Jul 29 2011, 20:57
- - Rst7   QUOTE Но в моём случае что есть под рукой, от того...   Jul 29 2011, 21:37
|- - RA3WUM   Цитата(Rst7 @ Jul 30 2011, 01:37) VS1053 ...   Jul 30 2011, 11:56
- - Rst7   Поигрался с dummynet, подправил некоторые неточнос...   Jul 30 2011, 08:57
- - VslavX   Небольшой апдейт про "Машу" Включил клю...   Jul 30 2011, 12:32
|- - prottoss   Цитата(VslavX @ Jul 30 2011, 18:32) Небол...   Jul 30 2011, 12:39
|- - VslavX   Цитата(prottoss @ Jul 30 2011, 15:39) Дак...   Jul 30 2011, 12:53
|- - prottoss   Цитата(VslavX @ Jul 30 2011, 18:53) Почем...   Jul 30 2011, 13:03
- - Rst7   QUOTE Имхо, вполне приличный результат для полноце...   Jul 30 2011, 12:56
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 15:56) Ага, из...   Jul 30 2011, 13:08
- - Rst7   QUOTE Где на LPC17 взять такой реальный поток данн...   Jul 30 2011, 13:04
- - Rst7   QUOTE Так что проигрыш всего 10 процентов скорости...   Jul 30 2011, 13:13
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 16:13) Проигры...   Jul 30 2011, 13:29
- - Rst7   QUOTE а еще Out-of-Order Segments и Selective ACK ...   Jul 30 2011, 13:39
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 16:39) Я с одн...   Jul 30 2011, 14:10
- - Rst7   QUOTE хотя, если тут перейти на RTOS, то это свою ...   Jul 30 2011, 14:39
|- - zltigo   QUOTE (Rst7 @ Jul 30 2011, 16:39) Не пора...   Jul 30 2011, 15:10
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 17:39) Не пора...   Jul 30 2011, 15:21
- - Rst7   QUOTE Написание и использование RTOS (кстати, ои о...   Jul 30 2011, 15:21
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 18:21) Да я не...   Jul 30 2011, 15:38
- - Rst7   QUOTE Угу, все именно так. Поэтому malloc/free у м...   Jul 30 2011, 15:34
2 страниц V   1 2 >


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

 


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


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