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

 
 
6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> подскажите хороший tcp/ip стек, кроме uIP
zuy
сообщение May 3 2007, 14:43
Сообщение #16


Частый гость
**

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



Цитата(lebiga @ May 2 2007, 12:28) *
Смотри почту


Ну если это не секрет, может для всех выложите?
Или на FTP залейте пожалуйста.
Go to the top of the page
 
+Quote Post
lebiga
сообщение May 3 2007, 22:59
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 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 - расскажите как
Прикрепленные файлы
Прикрепленный файл  tcpip_microchip_to_arm.rar ( 152.19 килобайт ) Кол-во скачиваний: 377
 
Go to the top of the page
 
+Quote Post
lebiga
сообщение May 6 2007, 09:57
Сообщение #18


Частый гость
**

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



Тут посмотрел стек от uIP - был ошарашен сложностью и заумностью формирования веб страниц - какие-то скрипты в виде букв в каждой строчке - да и преобразование в си файл потом - не понимаю, зачем так сложно. В микрочиповском я пишу веб страницу в обыкнованном веб редакторе - в нем и смотрю. Потом ужимается все хтмл файлы совместно в бин и по фтп (или через гипертерминал по сом) отправляю в атмеловскую флешку AT45 и все! Вообще-то ужатие в бин тоже можно переписать и отправлять чистые исходники, но мне влом было разбираться.

Особенности переменных, выводимых в веб страницу - начинается с %, типа %12 - нттр во время выдачи страницы при получении % заменяет 12 (12h) на переменную, которую я сам определил - или число, или строку. Если в веб странице надо написать % - я заменяю на % - единственное неудобство, да и то это нужно делать в cgi файлах, html идут так. Да вообще-то смотрите примеры - более информативно. Естественно пример вырезан - остальное коммерчески используется.
Прикрепленные файлы
Прикрепленный файл  web_mchip_to_arm.rar ( 52.52 килобайт ) Кол-во скачиваний: 219
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2007, 10:34
Сообщение #19


Гуру
******

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



Цитата(lebiga @ May 4 2007, 01:59) *
Выкладываю

Вполне "механический" порт на ARM и так не выдающегося творения Microchip. Сам стек не расматривал, но "драйвер ENC28J60" смотрел пару месяцев назад очень внимательно - произвел неприятное впечатление sad.gif. Стиль написания обсуждать не буду, но практически полное отсутствие обработки нештатных ситуаций "впечатлило" sad.gif. Практически единственное место, где что-то обозначено в этом направлении заканчивается "блестящим" выходом их положения - перезагрузкой!!! контроллера.
А при портировании даже этот фиговый листок был убран sad.gif. При механическом переносе на 32bit платформу не сочли нужным убрать фатальные warnings "Use of address of unaligned structure member" sad.gif Как оно работает???


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение May 6 2007, 11:15
Сообщение #20


Частый гость
**

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



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


Системы эксплуатируются уже год, рестарта из-за ошибок при приеме заголовков не замечал. Use of address of unaligned structure member - работаем с __packed или #pragma pack - все ок. Ничего не мешает перенести обработку некоторых нештатных ситуаций из других драйверов микрочипа или дописать свое. Для меня главное преимущество этого стека - полные исходники и см. пред. сообщение!

Сообщение отредактировал lebiga - May 6 2007, 11:16
Прикрепленные файлы
Прикрепленный файл  lan_driver.rar ( 43 килобайт ) Кол-во скачиваний: 222
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2007, 11:44
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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();
    }

Забыли smile.gif

Цитата
Use of address of unaligned structure member - работаем с __packed или #pragma pack - все ок.

Паковка это из "другой оперы".
Цитата
Ничего не мешает перенести обработку некоторых нештатных ситуаций из других драйверов микрочипа или дописать свое.

Не мешает, но Microchip этого не сделал и в документации, между прочим, тоже не посчитал нужным поделиться информацией. Ну те кто это запихивает не глядя куда-то и потом мотивируют "год работает" поступают неправильно.
Я сейчас тоже буду использовать этот контроллер для быстрой модификации устройства, но информацию о поведении и разрешении проблем приходится добывать или эмпирическим путем, либо обильно стелить соломку sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение May 6 2007, 12:04
Сообщение #22


Частый гость
**

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



Цитата(zltigo @ May 6 2007, 15:44) *
Не мешает, но Microchip этого не сделал и в документации, между прочим, тоже не посчитал нужным поделиться информацией. Ну те кто это запихивает не глядя куда-то и потом мотивируют "год работает" поступают неправильно.
Я сейчас тоже буду использовать этот контроллер для быстрой модификации устройства, но информацию о поведении и разрешении проблем приходится добывать или эмпирическим путем, либо обильно стелить соломку sad.gif


Только что глянул - у микрочипа вышла новая версия 4.02 от 11 апреля. Обработку ошибок так и не сделали, зато добавили вкусностей - TCPPerformanceTest, UDPPerformanceTest, netbios, telnet намного лучше, dns клиент и т.д. Буду разбираться и что-то апгрейдить в своих проектах.
А о соломке - предлагаю обмен информацией, тем более, что у меня есть кому собирать баги при эксплуатации.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2007, 12:24
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 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
Цитата
А о соломке - предлагаю обмен информацией, тем более, что у меня есть кому собирать баги при эксплуатации.

Стек меня не интересует в принципе - свой наработан. На баги в эксплуатации я права не имею smile.gif. Ну на счет того что получится на железном уровне для 28J60 - подумаю, возможно выложу.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение May 6 2007, 12:29
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2007, 13:26
Сообщение #25


Гуру
******

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



Цитата(lebiga @ May 6 2007, 15:04) *
Обработку ошибок так и не сделали,

Ну инициализацию подправили для мягких перезагрузок теперь корректнее, баг в MACGetHeader() c порчей текущего банка при одном из выходов неуклюже залатали. Убрали зависание в MACFlush(). Какая-то совершенно дурацкая заплатка в MACGetArry() для указателя на буфер равного 1. C бодуна похоже sad.gif Добавили кучку установок 0 банка. Выкинули тест памяти (наверное догадались его два раза подряд запустить и насладиться результатом). Передатчик стали тупо (вне зависимости от успешности окончания передачи) сбрасывать перед каждой новой активизации передачи - настораживает!
И очень плохое - похерили несколько буферов передачи - типа нет функции - нет проблем sad.gif
Если это действительно у них такая "борьба с багами" при использовании нескольких буферов, то очень тоскливо sad.gif
Цитата
зато добавили вкусностей....

Лучше-бы "фундамент" не латали, а нормальный сделали: (. Если у них и "вкусности" так написаны, то я лучше на хлебе и воде посижу smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение May 6 2007, 14:56
Сообщение #26


Частый гость
**

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



Цитата(zltigo @ May 6 2007, 17:26) *
Ну инициализацию подправили для мягких перезагрузок теперь корректнее, баг в MACGetHeader() c порчей текущего банка при одном из выходов неуклюже залатали. Убрали зависание в MACFlush(). Какая-то совершенно дурацкая заплатка в MACGetArry() для указателя на буфер равного 1. C бодуна похоже sad.gif Добавили кучку установок 0 банка. Выкинули тест памяти (наверное догадались его два раза подряд запустить и насладиться результатом). Передатчик стали тупо (вне зависимости от успешности окончания передачи) сбрасывать перед каждой новой активизации передачи - настораживает!
И очень плохое - похерили несколько буферов передачи - типа нет функции - нет проблем sad.gif
Если это действительно у них такая "борьба с багами" при использовании нескольких буферов, то очень тоскливо sad.gif

Лучше-бы "фундамент" не латали, а нормальный сделали: (. Если у них и "вкусности" так написаны, то я лучше на хлебе и воде посижу smile.gif


Вот поискал - оказывается народ писал драйвера, причем писал сразу под арм

http://www.embeddedrelated.com/groups/lpc2000/show/12049.php
http://hubbard.engr.scu.edu/avr/avrlib/doc...__enc28j60.html
или см файл
Прикрепленные файлы
Прикрепленный файл  enc28j60_driver.zip ( 194.65 килобайт ) Кол-во скачиваний: 213
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 6 2007, 15:21
Сообщение #27


Гуру
******

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



Цитата(lebiga @ May 6 2007, 17:56) *
Вот поискал - оказывается народ писал драйвера, причем писал сразу под арм

Народ могое что "писал", переписывыал и "выкладывал", только толковое среди всего выкладываемого встречается крайне редко sad.gif. Кто-же хорошее выкладывает smile.gif. Ничего удивительного, если даже производители с именем и деньгами обычно выкладывают более чем сомнительного качества исходники sad.gif. Похоже ниша сэмплописательства плотно оккупирована студентами или в лучшем случае восточными программистами. Поискоим информации по 28j60 занимался очень плотно. Из многих зол Микрочиповский "драйвер" пожалуй наименьшее. Большая часть на нем и базируется.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
lebiga
сообщение Aug 27 2007, 18:27
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 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 сокета для управления и данных - это я уже выяснил экспериментально.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 27 2007, 19:35
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 27 2007, 19:37
Сообщение #30


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(zltigo @ May 6 2007, 14:44) *
Паковка это из "другой оперы".

Паковка из "той оперы", т.к. заменяет все LDR/STR(W) на эквиваленты LDR/STR( B ) в случае невыровнянных полей.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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