|
подскажите хороший tcp/ip стек, кроме uIP |
|
|
|
 |
Ответов
|
May 1 2007, 18:41
|

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

|
Цитата(InsolentS @ Mar 31 2007, 19:21)  Здравствуйте! Мне нужно добавить ethernet в мой девайс на AT91SAM7X256, но не знаю какую реализацию стека для этого выбрать. С осями тоже не хочется заморачиваться, по крайней-мере не с FreeRTOS. Мне всего-то надо отправлять с компа на девайс 64-битные посылки. Можно ли реализовать простенький стек самому? Насколько это сложно? Я переделал микрочиповский стек (PIC18, dsPIC) для АРМа. Подкупили полные исходники всех модулей. Работает устойчиво, правда делал только веб управление, телнет и фтп. Еще подкупил драйвер для микрочиповской же микросхемы 28J60 (SPI-ETHERNET, 5$ в Киеве). Есть драйвера универсальные типа NE2000 Конечно, SAM7X имеет уже МАС, но у меня идут LPC лучше, чем атмел, да и PHY искать не надо. Кому интересно - могу более подробно.
|
|
|
|
|
May 2 2007, 10:58
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(lebiga @ May 1 2007, 19:41)  Я переделал микрочиповский стек (PIC18, dsPIC) для АРМа. Подкупили полные исходники всех модулей. Работает устойчиво, правда делал только веб управление, телнет и фтп. Еще подкупил драйвер для микрочиповской же микросхемы 28J60 (SPI-ETHERNET, 5$ в Киеве). Есть драйвера универсальные типа NE2000 Конечно, SAM7X имеет уже МАС, но у меня идут LPC лучше, чем атмел, да и PHY искать не надо. Кому интересно - могу более подробно. Мне оооочень интересно.Сам собирался пойти этим путем, да все никак не соберусь.Если порт не "коммерческий секрет" может поделитесь nebula2@mail.ru
|
|
|
|
|
May 2 2007, 12:28
|

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

|
Цитата(viael @ May 2 2007, 11:58)  Мне оооочень интересно.Сам собирался пойти этим путем, да все никак не соберусь.Если порт не "коммерческий секрет" может поделитесь nebula2@mail.ru Смотри почту
|
|
|
|
|
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, 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
|
|
|
|
|
Aug 27 2007, 20:06
|

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

|
Цитата(defunct @ Aug 27 2007, 22:37)  Паковка из "той оперы", т.к. заменяет все LDR/STR(W) на эквиваленты LDR/STR( B ) в случае невыровнянных полей. Ой! "А мужики-то и не знают"  . Заменяет, когда может, а гогда Warning? тогда, простите, не смогли заменить, ибо чего предупреждать, если все в порядке. Ну а почему в вышеупомянутом случае работает - это IAR, при обнаружении #pragma pack сразу зарание снимает с себя ответственость, даже если на самом деле все пакуется идеально. Багофича у него такая  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 27 2007, 21:59
|

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

|
Цитата(zltigo @ Aug 27 2007, 23:06)  Ой! "А мужики-то и не знают"  . Заменяет, когда может, а гогда Warning? тогда, простите, не смогли заменить, ибо чего предупреждать, если все в порядке. Warning - потому что производительность упадет. Но с выполнением все действительно в порядке. У меня была диллема c RFC2198 (хидер нечетной длины!) копировать содержимое блоков на выровненный адрес, обрабатывать и пихать обратно в пакет, либо применить указатель на __packet структуру. Дык, второе (смотрел по асм листингу - обращения через LDRB/STRB) получилось работает быстрее. Цитата Ну а почему в вышеупомянутом случае работает - это IAR. ... Багофича у него такая . Работает и с RVCT и с STD251.. Нет багофичи там.. Пример, "С" код: Код typedef __packed struct tagTest { U32 x; } TTST_STRUCT, *PTST_STRUCT;
U8 a[ sizeof( TTST_STRUCT ) + 1 ];
void main(void) { PTST_STRUCT pTstStruct = (PTST_STRUCT)&a[1];
pTstStruct->x = 11223344; asm listing: Код 164: void main(void) 165: { 0x00001420 E92D4000 STMDB R13!,{R14} 0x00001424 E24DD004 SUB R13,R13,#0x00000004 166: 167: PTST_STRUCT pTstStruct = (PTST_STRUCT)&a[1]; 168: 0x00001430 E59F4238 LDR R4,[PC,#0x0238] 169: pTstStruct->x = 11223344; 170: 0x00001434 E59F3238 LDR R3,[PC,#0x0238] 0x00001438 E1A00004 MOV R0,R4 0x0000143C E5C03000 STRB R3,[R0] 0x00001440 E1A03423 MOV R3,R3,LSR #8 0x00001444 E5C03001 STRB R3,[R0,#0x0001] 0x00001448 E1A03423 MOV R3,R3,LSR #8 0x0000144C E5C03002 STRB R3,[R0,#0x0002] 0x00001450 E1A03423 MOV R3,R3,LSR #8 0x00001454 E5C03003 STRB R3,[R0,#0x0003]
|
|
|
|
|
Aug 27 2007, 22:49
|

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

|
Цитата(defunct @ Aug 28 2007, 00:59)  Но с выполнением все действительно в порядке. Совсем не обязательно. Цитата У меня была диллема... А теперь, пожалуйста, засунте свои изыскания подальше и вернитесь к проблеме, по которой не дав себе ни малейшего труда разобраться, тем не меннее решили "высказаться". 1. Берете выложенные исходники. 2. Находите там строчку, о которй шла речь (она там одна одинешенька во всем проекте с таким Warning) в моем посте: Цитата 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(); } На нее IAR ругается. Цитата Warning[Pa039]: use of address of unaligned structure member D:\ARM_WORK\TCP_IP_M\ENC28J60.c 650 Теперь жду объяснений ПОЧЕМУ он ругается, если header.NextPacketPointer является первым элементом структуры и не может быть не выровнен вне всякой зависимости от паковки структуры. 3. А в том, как это НЕ ПРАВИЛЬНО работает в случае, если адрес реально не будет выровнен на 4, рекомендую попробовать написать пару строк и ткнуться лбом.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 27 2007, 23:58
|

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

|
Цитата(zltigo @ Aug 28 2007, 01:49)  1. Берете выложенные исходники. Взял, посмотрел. Три места с таким варнингом. IP.c ICMP.c и тот что Вы привели. Цитата Теперь жду объяснений ПОЧЕМУ он ругается Warning выдается тупо на &header.NextPacketPointer. IAR вполне справедливо считает, что указатель может быть не выровнeнным. Но он упускает из виду приведение типа к указателю на упакованный union. Более того выдается такой же Warning, на безобидную конструкцию: pChar = (char *)&header.NextPacketPointer; Поэтому все три Warning'а здесь - "левые" Конструкции ((BYTE_VAL*)(&header.NextPacketPointer))->bits.b0 безопасна где б ни располагался NextPacketPointer.
|
|
|
|
|
Aug 28 2007, 06:17
|

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

|
Цитата(defunct @ Aug 28 2007, 02:58)  IAR вполне справедливо считает, что указатель может быть не выровнeнным. Но он упускает из виду приведение типа к указателю на упакованный union. Вот "упускает из виду" это и есть IAR баг, которого, как кто-то утверждал ренее, - "там нет". Цитата(lebiga @ Aug 28 2007, 08:49)  Подскажите, как лучше всего обработать эту ситуацию, кроме резета - сбросит ENC и провести опять инициализацию стека или как-то по другому: Как минимум по разному для разных ситуаций  а не один 'выход' для всех ). Эти вопросы надо задавать производителю чипа, но после такого "примера работы" совсем бесполезно, похоже. Пока у себы сделал 'по собственному' разумению и обложил отладочными сообщениями. CRC Eror просто игнориуется пакет, если конечно не стабильно непрерывно повторяющася ошибка. Для остальных железных переинициализируется толко железо. Разборки с целостностью софтовых буферов исключены  (зато добавлен дополнительный контроль за формированием тех-же header.NextPacketPointer ). Ошибок в логах не встречал. Цитата Да и второй вопрос - программный сброс как лучше делать - "b 0" - или еще нужно запретить прерывания(это для другой задачи)? Есть только один правильный "программый" сброс - через Watchdog, все остальные в той или иной степени вызывают проблемы, например, если инициализация железа улетела, или просто банально во время такого сброса Вы по P0.14 штатно нолик записали - улетите в загрузчик по такому ресету. Провокацию LPC на 'мгновенную' выдачу Reaet сделать легко, принудительно в любой момент нарушив 55-AA.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
InsolentS подскажите хороший tcp/ip стек Mar 31 2007, 18:21 AlexandrY OpenTCP отлично работает без осей и понятно написа... Mar 31 2007, 20:15 InsolentS Цитата(AlexandrY @ Mar 31 2007, 23:15) Op... Mar 31 2007, 22:36  zltigo Цитата(InsolentS @ Mar 31 2007, 21:36) А ... Mar 31 2007, 22:47   InsolentS Цитата(zltigo @ Apr 1 2007, 01:47) Их сай... Apr 1 2007, 03:02    zltigo Цитата(InsolentS @ Apr 1 2007, 02:02) .. ... Apr 1 2007, 09:24     InsolentS Цитата(zltigo @ Apr 1 2007, 12:24) Там не... Apr 1 2007, 12:30      zltigo Цитата(InsolentS @ Apr 1 2007, 11:30) а п... Apr 1 2007, 12:49       InsolentS Цитата(zltigo @ Apr 1 2007, 15:49) Тяжелы... Apr 1 2007, 16:42        spf Есть еще TINET , developed at Tomakomai National C... Apr 2 2007, 06:41   viael Цитата(lebiga @ May 2 2007, 13:28) Смотри... May 2 2007, 19:17     lebiga Тут посмотрел стек от uIP - был ошарашен сложность... May 6 2007, 09:57        lebiga Цитата(zltigo @ May 6 2007, 15:44) Не меш... May 6 2007, 12:04         zltigo Цитата(lebiga @ May 6 2007, 15:04) Только... May 6 2007, 12:24          lebiga Цитата(zltigo @ May 6 2007, 16:24) Странн... May 6 2007, 12:29         zltigo Цитата(lebiga @ May 6 2007, 15:04) Обрабо... May 6 2007, 13:26          lebiga Цитата(zltigo @ May 6 2007, 17:26) Ну ини... May 6 2007, 14:56           zltigo Цитата(lebiga @ May 6 2007, 17:56) Вот по... May 6 2007, 15:21            lebiga Вот прицепил стек 4.02 микрочипа в свое устройство... Aug 27 2007, 18:27             zltigo Цитата(lebiga @ Aug 27 2007, 21:27) #defi... Aug 27 2007, 19:35               zltigo Цитата(defunct @ Aug 28 2007, 13:32) насч... Aug 28 2007, 11:09            lebiga Немного в сторону от полемики...
Для zltigo
Подска... Aug 28 2007, 05:49 Annuta и мне можно примерчик ... тоже очень нуно.. Спасиб... May 2 2007, 20:15 Dimmy А вот еще один порт TCP/IP.
h__://www.modtronix.c... Aug 28 2007, 10:14 Dimmy Скажем так - особо сравнивать не с чем было, разве... Aug 28 2007, 12:29 zltigo Цитата(Dimmy @ Aug 28 2007, 15:29) Скажем... Aug 28 2007, 17:57  lebiga а вот ребята кинули мне на почту драйвер ENC28J60... Aug 28 2007, 18:14   zltigo Цитата(lebiga @ Aug 28 2007, 21:14) а вот... Aug 28 2007, 19:58 Yra а что никто тут не упомянул про Lw/IP - стек? Я е... Sep 21 2007, 07:38 cpl Цитата(Yra @ Sep 21 2007, 11:38) а что ни... Sep 21 2007, 07:49 MALLOY2 я сейчас узаю lwip 1.2.0 на STR912F, результатми о... Sep 21 2007, 07:58 etoja Как на lwip сделать FTP клиента?
Или другими слова... Sep 21 2007, 08:29 MALLOY2 да как все делают, а открыть можно скок угодно пор... Sep 21 2007, 08:54 e-yes LWIP, At91RM9200, GCC 4.1.2. HTTP-клиент. Скорость... Sep 21 2007, 12:17 Yra Насчёт где достать исходники LwIP: на сайте freert... Sep 24 2007, 18:13 scifi Цитата(Yra @ Sep 24 2007, 22:13) Кто може... Sep 25 2007, 05:28 Velund Кстати, о птицах...
А emBetter кто нибудь реально... Sep 24 2007, 22:54 etoja emBetter - неизвестный продукт неизвестной фирмы. ... Sep 25 2007, 03:20 e-yes Надо добавить, что сейчас LwIP свободно "дора... Sep 25 2007, 11:44 MALLOY2 После отимизаций стека LwIP на STR912FA получил ск... Nov 6 2007, 07:29 Waso Цитата(MALLOY2 @ Nov 6 2007, 15:29) После... Nov 6 2007, 13:02 MALLOY2 1) 8- битные и 16 битные переменные полей которые... Nov 7 2007, 07:49 ig_z Цитата(MALLOY2 @ Nov 7 2007, 11:49) 3) др... Nov 12 2007, 11:06 MALLOY2 КодЕсли ядро работает с езернет памятью
У STR912... Nov 13 2007, 07:32 ig_z Цитата(MALLOY2 @ Nov 13 2007, 11:32) У ST... Nov 13 2007, 08:18 i.cf Возвращаясь к теме подскажите хороший tcp/ip стек,... Aug 28 2009, 21:20 toweroff Цитата(i.cf @ Aug 29 2009, 01:20) Возвращ... Aug 29 2009, 12:56  i.cf Цитата(toweroff @ Aug 29 2009, 15:56) вот... Aug 29 2009, 17:01   aaarrr Цитата(i.cf @ Aug 29 2009, 21:01) Да виде... Aug 29 2009, 17:28    i.cf Цитата(aaarrr @ Aug 29 2009, 20:28) Обрат... Aug 29 2009, 17:43 dch Цитата(InsolentS @ Mar 31 2007, 22:21) Мн... Aug 30 2009, 02:10 i.cf Цитата(InsolentS @ Mar 31 2007, 21:21) Мн... Aug 30 2009, 07:51 goodwin На вот такой платке: http://www.starterkit.ru/html... Aug 30 2009, 19:37 lebiga Цитата(goodwin @ Aug 30 2009, 22:37) На в... Aug 31 2009, 12:16  aaarrr Цитата(lebiga @ Aug 31 2009, 16:16) Тольк... Aug 31 2009, 12:21   lebiga Цитата(aaarrr @ Aug 31 2009, 15:21) Много... Aug 31 2009, 12:38  goodwin Цитата(lebiga @ Aug 31 2009, 16:16) К сра... Aug 31 2009, 16:54 i.cf Цитата(goodwin @ Aug 30 2009, 22:37) TCP/... Aug 31 2009, 23:05 dch Цитата(i.cf @ Sep 1 2009, 03:05) 1,56Мбай... Sep 1 2009, 02:30  blackfin Цитата(dch @ Sep 1 2009, 06:30) На pc на ... Sep 1 2009, 07:11 lebiga Цитата(i.cf @ Sep 1 2009, 02:05) 1638400б... Sep 1 2009, 13:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|