Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Итак, по просьбам трудящихся выкладываю порт своего стека на LPC1768, выдранный из текущего проекта, над которым щас тружусь. NikeE_CM3.zip Собирается IAR'ом 6.20.3 (вроде крайний на текущий момент), за подправить для GCC - даже не просите. В качестве PHY используется KSZ8041TL, что, в общем, не принципиально - править, если что, файл emac.c Тактовая проца в проекте - 100МГц, кварц - 20МГц, менять - функция InitPLL в файле hardware_init.c Так же для генерации 50МГц REFCLK используется сам процессор через модуль CLKOUT. Кому не надо, в файле hardware_init.c необходимо убрать //Нужно если 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-авторизация в вебсервере сделана ;) Эмулятор 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrewlekar 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Эмуляцию EEPROM уже хочется глянуть. У меня своя есть, но довольно сложная реализация и сектора не очень эффективно используются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Эмуляцию EEPROM уже хочется глянуть. А что, собственно стек не интересен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба А че он самый быстрый то? С чем сравнивалось? У мя тоже есть свой стек :rolleyes: правда в LPC я не силен :) Но есть SAM7X... Как нить измерю сантиметры Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба А че он самый быстрый то? С чем сравнивалось? А Вы замечали, что у нас на форуме в каждом обсуждении, касаемом TCP-стеков имеется несколько обязательных фраз про то, что TCP - это очень медленно и т.д.? И обычно выше 30мбит никто не поднимается в заявках ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба А Вы замечали, что у нас на форуме в каждом обсуждении, касаемом TCP-стеков имеется несколько обязательных фраз про то, что TCP - это очень медленно и т.д.? И обычно выше 30мбит никто не поднимается в заявках ;)Да есть тут пара-тройка юююзвонов, но я не об этом. Я о том, с чем сравнивалось - почему он "самый быстрый" :) Кстати, на счет самого маленького тоже надо проверить... А сколько занимает памяти TCP-сокет кстати? И сколько стек использует стека? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба А сколько занимает памяти TCP-сокет кстати? 49 байт, если мне не изменяет память. И сколько стек использует стека? Немного. 40 байт стека в основном коде плюс немного в процедурах (не более 16 байт). Callback-и, например, в http-сервере - 48 байт суммарно. Правда, есть еще md5, тот добавляет 56 байт. Я о том, с чем сравнивалось - почему он "самый быстрый" Пока ни с чем, исключительно по общей тенденции реплик по форуму. Мне лень ковыряться в других стеках и доводить их до ума - дабы можно было адекватно сравнить. Давайте с Вашим померяемся :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Давайте с Вашим померяемся :)Хорошо. Постараюсь причесать до понедельника. После отпуска ни как не могу настроиться на нормальный лад :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Хорошо. Постараюсь причесать до понедельника. Так а по-простому? Прикрутите к подходящему Вашему проекту тестовый сокет, в который скормится метров 100 рандома и вуаля. Я такой использую: r=r*1103515245+12345; Софтик для теста можете у меня из архива взять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Так а по-простому? Сейчас попробую. Просто проект пылится уже более двух лет. По моему под 4 ИАР еще. Так что сегодня и по быстрому не обещаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Интересная штука. Эх, причесать бы код и абстрагировать от железа - получился бы полезный для многих проект. А с документацией ещё полезнее было бы... Кстати, для разбора заголовков HTTP есть интересная библиотека: HTTP parser. Чтобы не изобретать свой велосипед. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Эх, причесать бы кодДа :) автору без обид - я тож об этом подумал - куча-мала :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Эх, причесать бы код и абстрагировать от железа От железа к железу оно в полпинка переносится. Изначально это был проект под AVR, который с рукопашным эзернетом был. Порт по времени занял два дня. А код там нечего причесывать. Он сделан из соображений оптимальности и портабельности под разные архитектуры без потери этой самой оптимальности. Кому читабельность - тому масса проектов в сети, вполне читабельно, только работает так себе ;) А вот документацию, конечно, надо делать. Только где взять время :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Эх, причесать бы код и абстрагировать от железа - получился бы полезный для многих проект. Я пока исходники вообще не смотрел, но к "оторвать от железа" сразу отношусь плохо - этих оторванных от железа, использующих от возможностей железа 0 целых хрен десятых уже понаписано немеряно. На данный момент максимальную ценность представляют решения которые наконец-то показывают, как максимально эффективно работать с конкретным железом и какой эффект от этого получается. Судя по скорости работы с конкретным железом этот стек интегрирован хорошо. И именно в этом его положительный пример. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба Судя по скорости работы с конкретным железом этот стек интегрирован хорошо. Честно говоря, не сильно я там особенности железа использую. Есть что покрутить (в частности, есть тонкости в передатчике), но исключительно ради снижения CPU load. Будет свободное время - займусь. Пока на очереди - Flow Control. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться