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

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


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

Группа: Модераторы
Сообщений: 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
- - Rst7   QUOTE Надо зарытую собаку искать, поэтому тут не т...   Jul 30 2011, 15:50
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 18:50) Ну когд...   Jul 30 2011, 15:54
- - Nixon   Прекращаете троллить Rst7 - он же не написал что е...   Jul 30 2011, 16:07
- - Rst7   QUOTE При приеме я сталкивался с реализациями TCP ...   Jul 30 2011, 16:10
|- - VslavX   Цитата(Rst7 @ Jul 30 2011, 19:10) Кстати,...   Jul 30 2011, 17:33
- - Rst7   QUOTE Надо сказать, что QNAP все исходники выложил...   Jul 30 2011, 18:34
|- - prottoss   Цитата(Rst7 @ Jul 31 2011, 00:34) Допилил...   Jul 31 2011, 09:24
- - Rst7   QUOTE Наверное фигню сморозил - проще, может быть,...   Jul 31 2011, 10:58
|- - prottoss   Цитата(Rst7 @ Jul 31 2011, 16:58) Если мн...   Jul 31 2011, 11:08
- - Rst7   QUOTE Интересно, но в ARM-режиме производительност...   Jul 31 2011, 11:14
|- - prottoss   Цитата(Rst7 @ Jul 31 2011, 17:14) Есть на...   Jul 31 2011, 11:17
|- - zltigo   QUOTE (prottoss @ Jul 31 2011, 13:17) Не ...   Jul 31 2011, 11:20
- - Rst7   QUOTE Например: Оно самое. В контексте рассматрив...   Jul 31 2011, 11:35
|- - prottoss   zltigo, Rst7 Поднял производительность на целыx по...   Jul 31 2011, 12:16
|- - zltigo   QUOTE (prottoss @ Jul 31 2011, 14:16) Под...   Jul 31 2011, 14:29
|- - prottoss   Цитата(zltigo @ Jul 31 2011, 20:29) Дежав...   Jul 31 2011, 16:01
- - Rst7   QUOTE Дежавю О блин, плохо дело с портом на SAM7....   Jul 31 2011, 14:46
|- - VslavX   Цитата(Rst7 @ Jul 31 2011, 17:46) О блин,...   Jul 31 2011, 15:19
- - Rst7   QUOTE Можно хранить и в выравненном - для SAM7X мо...   Jul 31 2011, 16:01
- - igneous   Собрал версию 1318 на LPC1769 @ 100 Mhz. Тест скор...   Aug 1 2011, 04:42
- - Hoksmur   Доброго здравия всем! Что тема старая - вижу...   Feb 8 2016, 07:50
- - Rst7   Не важно, как подключен. 100М вполне достижимая ск...   Feb 9 2016, 16:47
2 страниц V  < 1 2


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:04
Рейтинг@Mail.ru


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