|
|
  |
подскажите хороший tcp/ip стек, кроме uIP |
|
|
|
May 3 2007, 14:43
|

Частый гость
 
Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593

|
Цитата(lebiga @ May 2 2007, 12:28)  Смотри почту Ну если это не секрет, может для всех выложите? Или на FTP залейте пожалуйста.
|
|
|
|
|
May 3 2007, 22:59
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Цитата(zuy @ May 3 2007, 15:43)  Ну если это не секрет, может для всех выложите? Или на FTP залейте пожалуйста. Выкладываю Господа, только не обессудьте! Я выкладываю предыдущую рабочую версию моего проекта. Ничего в главном файле c main не удалял. Версия для ИАР, когда-то компилировалась и в Кейле, но там были проблемы с #PRAGMA PACK(1) (еще carm). В новом Кейл МДК этой опции нет, надо везде прописывать __packed. Главный документ из микрочипа AN833b.pdf Исходники можно найти на микрочипе. Ищите mstkv220401.zip (пик18) предыд версия, есть RTL8019 драйвер. Но скорее всего это файл на вебе уже нет. tcpip stack v3.6.zip(пик18) - добавлен драйвер ENC28J60 dsPIC_Stack_v.90.EXE - для dsPIC, интересен более ANSI написанием, добавлены новые функции Могу выложить на FTP - расскажите как
|
|
|
|
|
May 6 2007, 09:57
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Тут посмотрел стек от uIP - был ошарашен сложностью и заумностью формирования веб страниц - какие-то скрипты в виде букв в каждой строчке - да и преобразование в си файл потом - не понимаю, зачем так сложно. В микрочиповском я пишу веб страницу в обыкнованном веб редакторе - в нем и смотрю. Потом ужимается все хтмл файлы совместно в бин и по фтп (или через гипертерминал по сом) отправляю в атмеловскую флешку AT45 и все! Вообще-то ужатие в бин тоже можно переписать и отправлять чистые исходники, но мне влом было разбираться. Особенности переменных, выводимых в веб страницу - начинается с %, типа %12 - нттр во время выдачи страницы при получении % заменяет 12 (12h) на переменную, которую я сам определил - или число, или строку. Если в веб странице надо написать % - я заменяю на % - единственное неудобство, да и то это нужно делать в cgi файлах, html идут так. Да вообще-то смотрите примеры - более информативно. Естественно пример вырезан - остальное коммерчески используется.
|
|
|
|
|
May 6 2007, 10:34
|

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

|
Цитата(lebiga @ May 4 2007, 01:59)  Выкладываю Вполне "механический" порт на ARM и так не выдающегося творения Microchip. Сам стек не расматривал, но "драйвер ENC28J60" смотрел пару месяцев назад очень внимательно - произвел неприятное впечатление  . Стиль написания обсуждать не буду, но практически полное отсутствие обработки нештатных ситуаций "впечатлило"  . Практически единственное место, где что-то обозначено в этом направлении заканчивается "блестящим" выходом их положения - перезагрузкой!!! контроллера. А при портировании даже этот фиговый листок был убран  . При механическом переносе на 32bit платформу не сочли нужным убрать фатальные warnings "Use of address of unaligned structure member"  Как оно работает???
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 6 2007, 11:15
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Цитата(zltigo @ May 6 2007, 14:34)  Вполне "механический" порт на ARM и так не выдающегося творения Microchip. Сам стек не расматривал, но "драйвер ENC28J60" смотрел пару месяцев назад очень внимательно - произвел неприятное впечатление  . Стиль написания обсуждать не буду, но практически полное отсутствие обработки нештатных ситуаций "впечатлило"  . Практически единственное место, где что-то обозначено в этом направлении заканчивается "блестящим" выходом их положения - перезагрузкой!!! контроллера. А при портировании даже этот фиговый листок был убран  . При механическом переносе на 32bit платформу не сочли нужным убрать фатальные warnings "Use of address of unaligned structure member"  Как оно работает??? Системы эксплуатируются уже год, рестарта из-за ошибок при приеме заголовков не замечал. Use of address of unaligned structure member - работаем с __packed или #pragma pack - все ок. Ничего не мешает перенести обработку некоторых нештатных ситуаций из других драйверов микрочипа или дописать свое. Для меня главное преимущество этого стека - полные исходники и см. пред. сообщение!
Сообщение отредактировал lebiga - May 6 2007, 11:16
|
|
|
|
|
May 6 2007, 11:44
|

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

|
Цитата(lebiga @ May 6 2007, 14:15)  Системы эксплуатируются уже год, рестарта из-за ошибок при приеме заголовков не замечал. Естественно. Вы даже его выбросили. Код // Validate the data returned from the ENC28J60. Random data corruption, // such as if a single SPI bit error occurs while communicating or a // momentary power glitch could cause this to occur in rare circumstances. if(header.NextPacketPointer > RXSTOP || ((BYTE_VAL*)(&header.NextPacketPointer))->bits.b0 || header.StatusVector.bits.Zero || header.StatusVector.bits.CRCError || header.StatusVector.bits.ByteCount > 1518 || !header.StatusVector.bits.ReceiveOk) { ;//Reset(); } Забыли  Цитата Use of address of unaligned structure member - работаем с __packed или #pragma pack - все ок. Паковка это из "другой оперы". Цитата Ничего не мешает перенести обработку некоторых нештатных ситуаций из других драйверов микрочипа или дописать свое. Не мешает, но Microchip этого не сделал и в документации, между прочим, тоже не посчитал нужным поделиться информацией. Ну те кто это запихивает не глядя куда-то и потом мотивируют "год работает" поступают неправильно. Я сейчас тоже буду использовать этот контроллер для быстрой модификации устройства, но информацию о поведении и разрешении проблем приходится добывать или эмпирическим путем, либо обильно стелить соломку
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 6 2007, 12:04
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Цитата(zltigo @ May 6 2007, 15:44)  Не мешает, но Microchip этого не сделал и в документации, между прочим, тоже не посчитал нужным поделиться информацией. Ну те кто это запихивает не глядя куда-то и потом мотивируют "год работает" поступают неправильно. Я сейчас тоже буду использовать этот контроллер для быстрой модификации устройства, но информацию о поведении и разрешении проблем приходится добывать или эмпирическим путем, либо обильно стелить соломку  Только что глянул - у микрочипа вышла новая версия 4.02 от 11 апреля. Обработку ошибок так и не сделали, зато добавили вкусностей - TCPPerformanceTest, UDPPerformanceTest, netbios, telnet намного лучше, dns клиент и т.д. Буду разбираться и что-то апгрейдить в своих проектах. А о соломке - предлагаю обмен информацией, тем более, что у меня есть кому собирать баги при эксплуатации.
|
|
|
|
|
May 6 2007, 12:24
|

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

|
Цитата(lebiga @ May 6 2007, 15:04)  Только что глянул - у микрочипа вышла новая версия 4.02 от 11 апреля. Странно, но я вижу только V3.6 http://www.microchip.com/stellent/idcplg?I...sUserText=28j60Цитата А о соломке - предлагаю обмен информацией, тем более, что у меня есть кому собирать баги при эксплуатации. Стек меня не интересует в принципе - свой наработан. На баги в эксплуатации я права не имею  . Ну на счет того что получится на железном уровне для 28J60 - подумаю, возможно выложу.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 6 2007, 12:29
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Цитата(zltigo @ May 6 2007, 16:24)  Странно, но я вижу только V3.6 http://ww1.microchip.com/downloads/en/Devi...tack%204.02.zipссылки находятся по поиску документа с ключевым словом TCP
Сообщение отредактировал lebiga - May 6 2007, 12:30
|
|
|
|
|
May 6 2007, 13:26
|

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

|
Цитата(lebiga @ May 6 2007, 15:04)  Обработку ошибок так и не сделали, Ну инициализацию подправили для мягких перезагрузок теперь корректнее, баг в MACGetHeader() c порчей текущего банка при одном из выходов неуклюже залатали. Убрали зависание в MACFlush(). Какая-то совершенно дурацкая заплатка в MACGetArry() для указателя на буфер равного 1. C бодуна похоже  Добавили кучку установок 0 банка. Выкинули тест памяти (наверное догадались его два раза подряд запустить и насладиться результатом). Передатчик стали тупо (вне зависимости от успешности окончания передачи) сбрасывать перед каждой новой активизации передачи - настораживает! И очень плохое - похерили несколько буферов передачи - типа нет функции - нет проблем Если это действительно у них такая "борьба с багами" при использовании нескольких буферов, то очень тоскливо  Цитата зато добавили вкусностей.... Лучше-бы "фундамент" не латали, а нормальный сделали: (. Если у них и "вкусности" так написаны, то я лучше на хлебе и воде посижу
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 6 2007, 14:56
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Цитата(zltigo @ May 6 2007, 17:26)  Ну инициализацию подправили для мягких перезагрузок теперь корректнее, баг в MACGetHeader() c порчей текущего банка при одном из выходов неуклюже залатали. Убрали зависание в MACFlush(). Какая-то совершенно дурацкая заплатка в MACGetArry() для указателя на буфер равного 1. C бодуна похоже  Добавили кучку установок 0 банка. Выкинули тест памяти (наверное догадались его два раза подряд запустить и насладиться результатом). Передатчик стали тупо (вне зависимости от успешности окончания передачи) сбрасывать перед каждой новой активизации передачи - настораживает! И очень плохое - похерили несколько буферов передачи - типа нет функции - нет проблем Если это действительно у них такая "борьба с багами" при использовании нескольких буферов, то очень тоскливо  Лучше-бы "фундамент" не латали, а нормальный сделали: (. Если у них и "вкусности" так написаны, то я лучше на хлебе и воде посижу  Вот поискал - оказывается народ писал драйвера, причем писал сразу под арм http://www.embeddedrelated.com/groups/lpc2000/show/12049.phphttp://hubbard.engr.scu.edu/avr/avrlib/doc...__enc28j60.htmlили см файл
|
|
|
|
|
Aug 27 2007, 18:27
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Вот прицепил стек 4.02 микрочипа в свое устройство... Первое впечатление - работает намного устойчивее 3 версии, http страница от долгого пассивного висения тормозить не начинает. Телнет наворочен слишком, искать пароля и юзера прямо в памяти ENC - долго, а потом освобождать буффер чтением в NULL - плохо(это просто не работает - запись по адресу 0 вызывает abort).
Драйвер ENC28J60 более оптимизирован - приемный буффер и передающие на каждый tcp сокет организованы прямо в памяти ENC. Но это привело к тому, что нужно было уменьшить величину передающих буфферов и уменьшить длину строк в телнете.
Нашел ошибку, скорее из-за компилятора ИАР, в MCC18 проблем нет(8-бит!)
typedef unsigned long DWORD; // 32-bit unsigned
из tcpipconfig.h: #define MAX_TCP_SOCKETS (8ul) #define TCP_TX_FIFO_SIZE (200ul) #define TCP_RX_FIFO_SIZE (200ul)
из tcp.h: typedef struct _TCB { NODE_INFO remote; WORD_VAL remotePort; WORD_VAL localPort;
WORD txUnackedTail; WORD remoteWindow; DWORD MySEQ; DWORD RemoteSEQ; BYTE retryCount; TICK retryInterval; SHORT sHoleSize; WORD wFutureDataSize; } TCB; #define RESERVED_TCP_MEMORY ((DWORD)MAX_TCP_SOCKETS*((DWORD) (TCP_TX_FIFO_SIZE+1)+(DWORD)TCP_RX_FIFO_SIZE+(DWORD)sizeof(TCB)))
и в mac.h // MAC RAM definitions #define RAMSIZE 8192ul #define TXSTART ((RAMSIZE-1ul) - (1ul+1514ul+7ul) - RESERVED_TCP_MEMORY)
Буфферы налазили друг на друга, причина - ошибка вычисления RESERVED_TCP_MEMORY, компилятор иар 4.41, устранил так:
#define RESERVED_TCP_MEMORY (MAX_TCP_SOCKETS*( (TCP_TX_FIFO_SIZE+1)+TCP_RX_FIFO_SIZE+sizeof(TCB)))
Вот хочу спросить: для максимальной надежности в системе с http и telnet управлением - лучше работать с пакетами какой длины - 100-200 байт или 1000 байт? Строка get у меня длинная (много параметров) - до 1000 байт. Если в http используются 2 фрейма - сколько минимум http (а соответственно и tcp) сокетов нужно открыть, чтобы страницы грузились побыстрее. IE6 вроде открывает не более 4х. FTP требует 2 tcp сокета для управления и данных - это я уже выяснил экспериментально.
|
|
|
|
|
Aug 27 2007, 19:35
|

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

|
Цитата(lebiga @ Aug 27 2007, 21:27)  #define RESERVED_TCP_MEMORY ((DWORD)MAX_TCP_SOCKETS*((DWORD) (TCP_TX_FIFO_SIZE+1)+(DWORD)TCP_RX_FIFO_SIZE+(DWORD)sizeof(TCB))) с преобразованиями (DWORD) - дурь однозначная - выбрасываь везде, тем более, что константы UL описаны. Цитата для максимальной надежности в системе с http и telnet управлением - лучше работать с пакетами какой длины - 100-200 байт или 1000 байт? Что такое 'надежнось' и каков канал связи.... Если это то, что я понимаю, то лучше мелкими. Цитата .. сокетов нужно открыть, чтобы страницы грузились побыстрее. Думаю открывайте по минимуму, иначе контролер на облуживании сокетов будет слабейшим звеном.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|