Перейти к содержанию
    

Размышления на тему TCP/IP.

За два часа создал TCP сервер на Wiznet. Цена вопроса 3.5 долара – готовый демо борд – с одной стороны подключил контролер с другой воткнул кабель и готово.

Возникает вопрос – зачем нужны навороченные камни с фаями и маками когда есть такое простое решение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот в том месте где Wiznet подключается к контроллеру и будет слабое звено. 
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1.Не у всех есть достаточно места для дополнительного контроллера.

2. Кроме интерфейса TCP/IP и сервера должны выполнятся другие задачи и МК для них может стоит гораздо дороже 3.5 $, и как правило Eth там уже есть, тогда зачем выкидывать лишние 3.5 $

Каждый разработчик живет в своем ограниченном мире задач и вопрос зачем они нужны другим не корректен, просто сейчас такие чипы не нужны вам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 минут назад, jenya7 сказал:

когда есть такое простое решение?

1) TCP сервер нужен не только лишь всем.

2) Сколько соединений Wiznet умеет поддерживать одновременно?

3) Я так понимаю, вы за два часа полносью написали всю программу с нуля? Нет? Тогда попробуйте сделать шаг вправо или влево от того, что задумали авторы вашего примера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, AlexandrY said:

Вот в том месте где Wiznet подключается к контроллеру и будет слабое звено. 
 

Wiznet поддерживает скорость до 80 мега.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, Сергей Борщ said:

1) TCP сервер нужен не только лишь всем.

2) Сколько соединений Wiznet умеет поддерживать одновременно?

3) Я так понимаю, вы за два часа полносью написали всю программу с нуля? Нет? Тогда попробуйте сделать шаг вправо или влево от того, что задумали авторы вашего примера.

у них есть примеры DHCP, DNS, FTPClient, FTPServer, httpServer, MQTT, SNMP, SNTP, TFTP. По моему все потребности покрыли.

8 сокетов RX и 8 сокетов TX.

зачем писать с нуля? у них прекрасная библиотека и прекрасные отлаженные примеры. нужно написать только апликативный лэер.

19 minutes ago, ikm said:

1.Не у всех есть достаточно места для дополнительного контроллера.

2. Кроме интерфейса TCP/IP и сервера должны выполнятся другие задачи и МК для них может стоит гораздо дороже 3.5 $, и как правило Eth там уже есть, тогда зачем выкидывать лишние 3.5 $

Каждый разработчик живет в своем ограниченном мире задач и вопрос зачем они нужны другим не корректен, просто сейчас такие чипы не нужны вам.

Вы транс и обвязку все равно будете ставить. Это не стоит денег? И камень вы можете взять дешевле без Eth .

 

 

я понимаю это to good to be true вот пытаюсь понять где подвох.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

51 minutes ago, jenya7 said:

Wiznet поддерживает скорость до 80 мега.

80 там поддерживает только 100 ногий жрущий монстр W5300. Но набор протоколов у него никакой.  IPv6 даже нет. 
Идет с голым Socket API для bareboard. 
Делайте выводы. 

И еще.
Единственная  заявленная совместимость с известными проектами у Wiznet есть только с mbed.
Но там mbed целиком располагается в их чипах W7500 с Cortex-M0.
Т.е. по честному разгрузить сторонний TCP стек с помощью Wiznet так просто не выйдет.
Это не считая невозможности отладки всего что ниже TCP.
Короче как был  этот Wiznet довольно нишевым продуктом таким и остался. 
 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то что я привел выше это для W5500. Не знаю с чем у него совместимость, проект я писал в IAR под STM32F3. нормальная отладка, я могу спуститься на любой уровень.

Зачем грузить сторонний стек? чем родной плох?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, jenya7 сказал:

у них есть примеры DHCP, DNS, FTPClient, FTPServer, httpServer, MQTT, SNMP, SNTP, TFTP. По моему все потребности покрыли.

8 сокетов RX и 8 сокетов TX.

зачем писать с нуля? у них прекрасная библиотека и прекрасные отлаженные примеры. нужно написать только апликативный лэер.

 

Я работал с W7500. Примеров с ним они дают вдвое меньше чем вы перечислили.Да и насчет прекрасной библиотеки и отлаженного кода у меня совсем другое впечатление сложилось. Сделано на отвяжись, и самое хреновое что написано все в жестком однопоточном варианте, который там просто прибит гвоздями. При работе с РТОС практически все надо переписывать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jenya7 said:

то что я привел выше это для W5500. Не знаю с чем у него совместимость, проект я писал в IAR под STM32F3. нормальная отладка, я могу спуститься на любой уровень.

Зачем грузить сторонний стек? чем родной плох?

Не надо так старательно передергивать. TCP стек в Wiznet для вас закрыт и ничего отладить там не можете. W5500 не поддерживает 80 mbit.
Повеселило их традиционное "Not support IP Fragmentation" 
Эт вам еще предстоит куда нибудь тыркнутся со свом Wiznet, а он там не будет работать ни в какую.
Не думайте что вы здесь такой Колумб.  Wiznet  тут обсасывался еще 10 лет назад. Сам на нем обжегся. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, WHILE said:

Я работал с W7500. Примеров с ним они дают вдвое меньше чем вы перечислили.Да и насчет прекрасной библиотеки и отлаженного кода у меня совсем другое впечатление сложилось. Сделано на отвяжись, и самое хреновое что написано все в жестком однопоточном варианте, который там просто прибит гвоздями. При работе с РТОС практически все надо переписывать.

 

ок. это уже аргумент. осталось понять где тут жесткий однопоточный вариант

int32_t WIZNET_Run(uint8_t sn, uint8_t* buf, uint16_t port)
{
    int32_t ret;
    uint16_t size = 0, sentsize=0;           
    
    #if _TCP_DEBUG_
    uint8_t destip[4];
    uint16_t destport;
    #endif
    
    uint8_t status = getSn_SR(sn);
  
    switch(status)
    {
         case SOCK_ESTABLISHED :
             //if(getSn_IR(sn) & Sn_IR_CON)
             if (status & Sn_IR_CON)
             {
                 #if _TCP_DEBUG_
		 getSn_DIPR(sn, destip);
		 destport = getSn_DPORT(sn);
    
		 printf("%d:Connected - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport);
                 #endif
	         setSn_IR(sn, Sn_IR_CON);
             }
             
	     if((size = getSn_RX_RSR(sn)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur.
             {
	         if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE;
		     ret = recv(sn, buf, size);

		 if(ret <= 0) return ret;      // check SOCKERR_BUSY & SOCKERR_XXX. For showing the occurrence of SOCKERR_BUSY.
		     sentsize = 0;
                    
		 while(size != sentsize)
		 {
		     ret = send(sn, buf+sentsize, size-sentsize);
		     if(ret < 0)
		     {
			  close(sn);
			  return ret;
		     }
		     sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero.
		 }
                
             }
         break;
         
         case SOCK_CLOSE_WAIT :
             #if _TCP_DEBUG_
             printf("%d:CloseWait\r\n",sn);
             #endif
             if((ret = disconnect(sn)) != SOCK_OK) return ret;
             #if _TCP_DEBUG_
             printf("%d:Socket Closed\r\n", sn);
             #endif
         break;
         
         case SOCK_INIT :
             #if _TCP_DEBUG_
    	     printf("%d:Listen, TCP server , port [%d]\r\n", sn, port);
             #endif
             if( (ret = listen(sn)) != SOCK_OK) return ret;
         break;
         
         case SOCK_CLOSED:
             #if _TCP_DEBUG_
             printf("%d:TCP server start\r\n",sn);
             #endif
             if((ret = socket(sn, Sn_MR_TCP, port, 0x00)) != sn) return ret;
             #if _TCP_DEBUG_
             printf("%d:Socket opened\r\n",sn);
             #endif
         break;
         
         default:
         break;
    }

    return 1;
}

код бежит в своем потоке. а как иначе должно быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, jenya7 said:

ок. это уже аргумент. осталось понять где тут жесткий однопоточный вариант

код бежит в своем потоке. а как иначе должно быть?

Только покажите здесь следы потока. Эт че,  теперь любую функцию потоком называют? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, AlexandrY сказал:

перь любую ф

 

2 минуты назад, AlexandrY сказал:

Только покажите здесь следы потока. Эт че,  теперь любую функцию потоком называют? 

Присоединяюсь к Александру. Сравните с этой корейской писаниной mbed-овский стэк для WIZNET.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, AlexandrY said:

Не надо так старательно передергивать. TCP стек в Wiznet для вас закрыт и ничего отладить там не можете. W5500 не поддерживает 80 mbit.
Повеселило их традиционное "Not support IP Fragmentation" 
Эт вам еще предстоит куда нибудь тыркнутся со свом Wiznet, а он там не будет работать ни в какую.
Не думайте что вы здесь такой Колумб.  Wiznet  тут обсасывался еще 10 лет назад. Сам на нем обжегся. 

The W5500 SPI supports 80 MHz speed and the new efficient SPI protocol, so users can implement high speed network communication.

А зачем открытый TCP стек? Я в LWIP никогда ничего не правил.

Зачем IP Fragmentation нужна? для передачи web страниц?

5 minutes ago, AlexandrY said:

Только покажите здесь следы потока. Эт че,  теперь любую функцию потоком называют? 

а что для вас поток? какие чудеса вы от него ждете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 minutes ago, jenya7 said:

А зачем открытый TCP стек? Я в LWIP никогда ничего не правил.

А тут даже теоретически не будет такой возможности.

 

16 minutes ago, jenya7 said:

Зачем IP Fragmentation нужна? для передачи web страниц?

Для работы в интернетах дальше стола.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...