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

 
 
> Ethernet+TCP/IP, Самое дешевое решение
Rst7
сообщение Mar 5 2008, 11:51
Сообщение #101


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

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



Решил поделиться с народом своим проектом. Положу в отдельную тему, а не в "Исходники...", потому как скорее всего надо будет обсудить wink.gif

Предыстория такова - давно хотел сделать дешевое и простое подключение своего устройства к Ethernet, естественно с поддержкой TCP/IP. Сначала рассматривались общеизвестные варианты типа RTL8019, Wiznet и т.д. - первый отпал по причине слишком уж камня большого, второй - дорого. Была попытка реализовать PHY-уровень при помощи USART в режиме SPI на Mega88/168, однако оказалось, что если с передачей нет проблем, с приемом все хуже - слишком уж сложной получается схема синхронизации тактовой частоты проца с синхросигналом, выделенном из манчестера, в единичном экземпляре оно конечно поднимается, но о серийном повторении - ну никак.
Потом взгляд переместился на микросхемы PHY, и, при внимательном изучении, оказалось, что довольно просто обеспечить работу с PHY при тактовой проца 20МГц. Да и со стоимостью нет вопросов - Realtek'овский RTL8201BL стоит всего около 1$ (как заметил zltigo, Realtek вообще славится экстремально дешевыми решениями в области Ethernet). Была сделана тестовая платка (схему и pcb прилагаю) и на ней все запущено. Не обошлось без подводных камней, но они были успешно обойдены wink.gif

.SCH и .PCB файлы в архиве - это схема и разводка тестовой платы. Проц используется ATMega168-20AI, PHY - уже упомянутый RTL8201BL, 74HCT547 - буферный регистр, заодно и преобразование уровней 3.3-5В (только не всех линий, по науке надо было еще кое-что преобразовать, но было лень. Вдруг будете использовать в более-менее серийном устройстве - не забудьте все выполнить как положено)

Сами исходники - под EWAVR5.10.
Код
          1 960 arp.h - заголовочник для ARP-пакетов
          6 404 eeprom_3.s90 - работа с троированным eeprom
          1 668 ethernet.h - заголовочник для Ethernet-пакетов
<DIR>          HTMLsource - каталог с исходными HTML-файлами и компрессором, который генерирует файл pages.c, запустите generate.cmd и посмотрите
            831 icmp.h - заголовочник для ICMP-пакетов
          2 400 ip.h - заголовочник для IP-пакетов
          3 487 mac.c - передатчик Ethernet-пакетов
          3 365 macros.m90 - вот не помню, файл из стандартного иаровского комплекта, зачем перенес в проект - хоть убейте не помню
          6 240 mac_rx.asm - прием Ethernet-пакетов
         21 591 main.c - HTTP-сервер
          4 188 md5cheat.c - MD5 для Digest-авторизации
         16 690 network.c - собственно TCP/IP-стек
            102 network_addr.h - адреса по умолчанию
          5 728 network_routines_avr.c - оптимизированные под AVR всякие процедурки, используемые стеком
         52 023 NikeE.ewp - проект
            159 NikeE.eww - воркспейс
          2 890 nike_e.h - заголовочник всего проекта
          4 993 pages.c - запакованные HTML-странички
          1 159 pages.h - заголовочник от страничек
<DIR>          PCAD - схема/плата
            204 prog.bat - прошиватель
          1 733 stdafx.h - типы данных
          2 731 stuff.asm - тут быстрый i2a (для AVR) и таблица CRC32
          6 256 tcp.h - заголовочник для TCP-пакетов


Заголовочники написаны на основе заголовочников из стека Prottoss'а, за что ему и спасибо.

Есть пара маленьких тонкостей - прием пакета написан на ассемблере, а вот передача - на Си, но я посматривал в листинг, посему исправления нужно вносить очень аккуратно, а вообще-то желательно переписать на ассемблере и посылку пакета. По простому можно заставить IAR сгенерить не листинг, а исходный текст (есть там галочка) и подключить его к проекту вместо mac.c.

На MAC-уровне реализовано управление входящим потоком при помощи метода, среднего между Back-pressure и Collision-Based. При переполненом внутреннем буфере на первый входящий пакет генерируется встречный пакет (как в Collision-Based) из 0x55, который оканчивается, когда буфер освобождается (Back-pressure).

Внутренние буфера 2*256 байт, поэтому, например, ICMP-пакет пинга с -l 209 дропается, а с -l 208 - нормально обрабатывается. Для TCP это не мешает (хотя, конечно, и падает скорость передачи), т.к. максимальный размер пакета регулируется окном.

Интерфейс стека с пользовательским софтом выполнен как вызов CallBack-функции, которая должна обрабатывать события TCP_EVENT_CONREQ (запрос соединения), TCP_EVENT_CONNECTED (соеденино), TCP_EVENT_CLOSE (закрыто), TCP_EVENT_ABORT (прервано), TCP_EVENT_ACK (подтверждение ранее переданных данных), TCP_EVENT_DATA (принята новая порция данных), TCP_EVENT_REGENERATE (повтор посылки с начала), TCP_EVENT_SEND (посылка следующей порции). Непосредственно разбор этих сообщений выполняется в HTTP_hook, который вызывает HTTP_hook_DATA_RX для обработки новых данных (например, собственно запроса GET/POST) и HTTP_hook_DATA_TX (генерация данных для передачи).

На данный момент реализованы только слушающие (серверные) сокеты, но нетрудно сделать и клиентские.

В HTTP-сервере реализована digest-авторизация. Соответственно пришлось пободаться с MD5 в плане уменьшения занимаемого места, удалось поместить его в 1100 байт, больше его под AVR не ужмешь видимо (хотя, конечно, пару байт всегда можно сэкономить, я имею в виду глобальное ужимание).

Само наполнение HTTP-сервера сейчас банальное - управление портом С, вывод значений АЦП и отдельная страничка настроек IP/MAC-адресов и задания новых login/pass.


Ну а вот так выглядит спаяное устройство
Прикрепленное изображение


Ну и о скорости. wget в зависимости от погоды показывает 130-160 КБайт/с (порядка 1 Мбита/с). Теоретический предел приема - гдето под 4Мбита/с. Т.е. дропать пакеты он сможет именно с такой скоростью smile.gif (и даже быстрее, потому что сначала я проверяю, мой ли пакет, а только потом считаю CRC32, этот расчет выполняется медленнее приема пакета, тут ничего не попишешь)
Прикрепленные файлы
Прикрепленный файл  NikeE.zip ( 106.73 килобайт ) Кол-во скачиваний: 11119
 


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

Сообщений в этой теме
- Rst7   Ethernet+TCP/IP   Mar 5 2008, 11:51
- - Rst7   ЦитатаИначе, если слейв СРАЗУ-ЖЕ отвечать начнёт, ...   Mar 28 2008, 09:15
- - one_man_show   Друзья. возможно я невнимательно прочитал ветку, т...   Apr 14 2008, 14:03
- - Rst7   ЦитатаВедь есть версия XPort-Modbus XP1001000M-03R...   Apr 14 2008, 14:13
|- - alexander55   Наша контора сейчас использует Moxa NPORT 54501. Н...   Apr 15 2008, 06:30
|- - one_man_show   Цитата(Rst7 @ Apr 14 2008, 18:13) Есть. о...   Apr 17 2008, 09:31
||- - MrYuran   Цитата(one_man_show @ Apr 17 2008, 12:31)...   Apr 17 2008, 09:36
||- - alexander55   Цитата(MrYuran @ Apr 17 2008, 13:36) А по...   Apr 17 2008, 12:43
||- - Огурцов   2 Rst7: Про modbus-serial конвертор. Посмотрел сай...   Mar 5 2009, 15:17
||- - Rst7   Цитата(Огурцов @ Mar 5 2009, 17:17) 2 Rst...   Mar 6 2009, 12:55
||- - RA3WUM   Цитата(Rst7 @ Mar 6 2009, 15:55) Неспешно...   Mar 6 2009, 13:05
|||- - blackfin   Цитата(RA3WUM @ Mar 6 2009, 16:05) А я во...   Mar 6 2009, 13:09
|||- - RA3WUM   Цитата(blackfin @ Mar 6 2009, 16:09) А из...   Mar 6 2009, 13:14
||- - Огурцов   Цитата(Rst7 @ Mar 6 2009, 13:55) Вы хотит...   Mar 6 2009, 13:25
|- - Dog Pawlowa   Цитата(Rst7 @ Apr 14 2008, 18:13) Есть. о...   Mar 6 2009, 06:54
- - _Pasha   Цитата(Огурцов @ Mar 5 2009, 19:17)  конв...   Mar 6 2009, 07:03
- - RA3WUM   Как считаете, если к подобному девайсу прикрутить ...   Mar 6 2009, 12:37
- - Rst7   ЦитатаА из инета звуковые файлы, случайно, не в фо...   Mar 6 2009, 13:11
|- - blackfin   Цитата(Rst7 @ Mar 6 2009, 16:11) Да нет. ...   Mar 6 2009, 13:14
|- - RA3WUM   Цитата(Rst7 @ Mar 6 2009, 16:11) Надо тол...   Mar 6 2009, 13:17
|- - blackfin   Цитата(Rst7 @ Mar 6 2009, 16:11) Надо тол...   Mar 6 2009, 13:18
- - Rst7   ЦитатаТ.е. RTP+RTSP+IGMP+UDP не модно? Нет конечн...   Mar 6 2009, 13:16
- - blackfin   Кстати, есть где-нибудь в удобном виде список инет...   Mar 6 2009, 13:16
- - Rst7   Вот прямо вот так в наглую: КодGET /altrock-lo HTT...   Mar 6 2009, 13:21
- - RA3WUM   Еще вопрос, есть разница вышеприведённом проекте и...   Mar 6 2009, 13:21
- - Rst7   ЦитатаА что за метаданные? Есть какой-то стандарт?...   Mar 6 2009, 13:25
- - Rst7   ЦитатаПример реализации не подскажете? Обещаная с...   Mar 6 2009, 13:43
|- - blackfin   Цитата(Rst7 @ Mar 6 2009, 16:43) Обещаная...   Mar 6 2009, 13:44
|- - Огурцов   Цитата(Rst7 @ Mar 6 2009, 13:43) А так - ...   Mar 7 2009, 08:17
- - Rst7   Цитата(RA3WUM @ Mar 6 2009, 15:21) Еще во...   Mar 6 2009, 13:51
- - RA3WUM   74HC574 чем-нибудь заменяется?   Mar 7 2009, 08:01
- - Rst7   Цитата74HC574 чем-нибудь заменяется? Эээ, а разве...   Mar 7 2009, 16:33
- - Rst7   Тааак... По просьбе будущего производителя моих де...   Mar 7 2009, 17:55
|- - RA3WUM   Цитата(Rst7 @ Mar 7 2009, 20:55) Тааак......   Mar 8 2009, 15:33
|- - Rst7   Цитата(RA3WUM @ Mar 8 2009, 17:33) Пробов...   Mar 8 2009, 16:01
|- - RA3WUM   Цитата(Rst7 @ Mar 8 2009, 19:01) Вроде на...   Mar 8 2009, 16:37
- - Rst7   ЦитатаА какой версии IAR? Написано же в первом по...   Mar 8 2009, 16:51
- - RA3WUM   Отлично, буду курить TCPIPстек   Mar 8 2009, 17:07
|- - Rst7   Цитата(RA3WUM @ Mar 8 2009, 19:07) Отличн...   Mar 8 2009, 17:20
- - RA3WUM   Благодарю *жмёт_руку*   Mar 8 2009, 19:39
- - dimka2001   Люди добрые, а у кого есть описание на контроллер ...   Apr 8 2009, 06:34
- - Rst7   Даташит берется на сайте Realtek'а, он там в с...   Apr 8 2009, 07:36
|- - dimka2001   Цитата(Rst7 @ Apr 8 2009, 11:36) Даташит ...   Apr 9 2009, 05:43
- - Rst7   ЦитатаА есть инфа на русском? Нет. А зачем?   Apr 9 2009, 05:46
|- - dimka2001   Цитата(Rst7 @ Apr 9 2009, 09:46) Нет. А з...   Apr 9 2009, 07:32
|- - defunct   Цитата(dimka2001 @ Apr 9 2009, 10:32) Над...   Apr 9 2009, 11:28
|- - RA3WUM   Цитата(dimka2001 @ Apr 9 2009, 10:32) Над...   Apr 9 2009, 19:50
- - Rst7   ЦитатаНадо оформить документацию.... Эээ, а приче...   Apr 9 2009, 07:35
- - alewka   Rst7, начинаю вот помалеху собирать сие чудо, уж и...   Apr 24 2009, 20:36
- - Rst7   Цитатаникаих новостей не появилось в софте/железе?...   Apr 25 2009, 07:27
|- - alewka   Цитата(Rst7 @ Apr 25 2009, 10:27) Вроде н...   Apr 26 2009, 08:55
- - alewka   В последней доработке под RTL8201CP неточность с R...   Apr 29 2009, 22:29
- - alewka   Немогу отредактировать сообщение почемуйто Подск...   Apr 29 2009, 23:48
- - Rst7   ЦитатаПо даташиту он 5.9к (в схеме указан 5.9, а в...   Apr 30 2009, 05:28
- - ZiB   всем привет. решил вот то же попробовать собрать. ...   May 1 2009, 12:54
- - Rst7   ЦитатаМК обязательно на 20 мгц? ниже частоту можно...   May 1 2009, 13:31
- - ZiB   О сенькс эти трансы доступны для меня. Проблем нет...   May 1 2009, 14:03
- - Rst7   Цитатапросто в запасе кучка чипов с макс частотой ...   May 1 2009, 14:17
- - ZiB   так бы уже завтра-после завтра спаял ладно заказа...   May 1 2009, 15:43
- - Rst7   RE: Ethernet+TCP/IP   May 1 2009, 16:00
|- - RA3WUM   Rst7 Как там ваш проект по прикручиванию vs1053 к ...   May 4 2009, 04:29
- - ZiB   спасибо, сансей. но я пока не дорос стартану с ор...   May 1 2009, 16:11
- - RA3WUM   Вот нашёл проект интернет-радио http://www.wattero...   May 4 2009, 07:43
- - Rst7   ЦитатаКак там ваш проект по прикручиванию vs1053 к...   May 4 2009, 07:49
|- - RA3WUM   Цитата(Rst7 @ May 4 2009, 11:49) Лень, че...   May 4 2009, 09:18
|- - WHALE   Цитата(Rst7 @ May 4 2009, 11:49) Лень, че...   May 4 2009, 13:41
- - Rst7   ЦитатаТак ведь 164 дороже раза в два Ладно. Посмо...   May 4 2009, 10:11
|- - RA3WUM   Цитата(Rst7 @ May 4 2009, 14:11) Ладно. П...   May 14 2009, 04:37
- - Rst7   ЦитатаДык они эта,вроде тоже до 16Мгц тока Сплошн...   May 4 2009, 13:47
- - Rst7   ЦитатаА в чём принципиальная разница в работе данн...   May 14 2009, 07:59
|- - RA3WUM   Цитата(Rst7 @ May 14 2009, 11:59) В работ...   May 15 2009, 08:47
- - dimka76   Вопрос к RST7. А почему вы не использовали SNI вм...   May 18 2009, 08:45
- - Rst7   ЦитатаТогда бы можно было бы использовать аппаратн...   May 18 2009, 08:48
|- - dimka76   Цитата(Rst7 @ May 18 2009, 12:48) Как Вы ...   May 18 2009, 09:22
- - Rst7   ЦитатаЧастота тактов при 10Mbps mode составляет 2....   May 18 2009, 09:26
|- - dimka76   Цитата(Rst7 @ May 18 2009, 13:26) Поплака...   May 18 2009, 09:36
- - Rst7   Цитата16 тактов на байт против ваших 8 на половину...   May 18 2009, 09:42
- - dimka76   теперь все ясно   May 18 2009, 09:51
- - RA3WUM   Уважаемый Rst7, как же там продвигается дело с 16-...   Jun 3 2009, 09:40
- - Rst7   Цитатакак же там продвигается дело с 16-ти мегагер...   Jun 3 2009, 09:49
- - alewka   Ребята, есть у кого печатная плата девайса в сприн...   Jun 27 2009, 12:57
|- - RA3WUM   Цитата(alewka @ Jun 27 2009, 16:57) Ребят...   Jul 1 2009, 06:52
|- - alewka   Цитата(RA3WUM @ Jul 1 2009, 09:52) Ну был...   Jul 2 2009, 16:37
|- - RA3WUM   Цитата(alewka @ Jul 2 2009, 20:37) Думаю ...   Jul 3 2009, 04:59
|- - alewka   Цитата(RA3WUM @ Jul 3 2009, 07:59) Там до...   Jul 3 2009, 06:55
|- - RA3WUM   Цитата(alewka @ Jul 3 2009, 10:55) сделал...   Jul 3 2009, 09:33
|- - alewka   Цитата(RA3WUM @ Jul 3 2009, 12:33) Против...   Jul 5 2009, 08:46
|- - RA3WUM   Цитата(alewka @ Jul 5 2009, 12:46) Никаки...   Jul 23 2009, 10:51
- - Rst7   ЦитатаЯ наверное донял этим вопросом, но не только...   Jul 3 2009, 05:19
- - asen   Если ультро низкая стоимость то С8051Т600 от силаб...   Jul 13 2009, 05:25
|- - RA3WUM   Цитата(asen @ Jul 13 2009, 09:25) Если ул...   Jul 13 2009, 05:56
|- - A.l.e.x.   Цитата(RA3WUM @ Jul 13 2009, 08:56) По-мо...   Jul 13 2009, 09:18
|- - RA3WUM   Цитата(A.l.e.x. @ Jul 13 2009, 13:18) У м...   Jul 13 2009, 09:30
- - Rst7   Цитатана нем тогда нао делать Делайте.   Jul 13 2009, 05:36
- - (R)soft   Цитата(A.l.e.x. @ Jul 13 2009, 12:18) У м...   Jul 13 2009, 11:59
- - Rst7   ЦитатаЭто так, мысли в слух... Вова, по науке там...   Jul 13 2009, 12:18
- - alewka   Привет! Ребята, подскажите как можно отладить...   Oct 11 2009, 09:44
- - Rst7   ЦитатаСхема тянет 150 мА, чипы немного греются. Д...   Oct 11 2009, 10:33
|- - alewka   Цитата(Rst7 @ Oct 11 2009, 13:30) Дофига....   Oct 11 2009, 10:54
- - Rst7   ЦитатаПоставил с 5 и 12 ножки ) Со стороны разъем...   Oct 11 2009, 12:01
3 страниц V  < 1 2 3 >


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

 


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


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