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

 
 
> Вышла предварительная версия TN NET TCP/IP stack
yuri_t
сообщение Aug 13 2009, 09:47
Сообщение #1


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

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



TN NET TCP/IP написан для процессоров с размером RAM >= 32 KBytes и с размером FLASH >= 128 KBytes ( NXP © LPC23xx/LPC17XX, Atmel © AT91SAM7X, Luminary Micro © LM3S6xx/LM3S8xx/LM3S9xx, Freescale © MCF5223X и других аналогичных MCU).

TN NET TCP/IP stack базируется на industry-standard BSD TCP/IP stack. В качестве API используются BSD sockets. TN NET TCP/IP stack использует TNKernel ОСРВ для обеспечения действительно мультизадачной и реентерантной работы.

B предварительную версию (0.8) не включены TCP и DHCP протоколы.

www.tnkernel.com
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yuri_t
сообщение Sep 14 2009, 06:00
Сообщение #2


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

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



TN NET TCP/IP stack обновился до версии 0.8.5.

Добавлен пример "Embedded Web server".

TN NET TCP/IP stack версии 0.8.5 представляется достаточно зрелым для использования/тестирования
в реальных проектах.
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Oct 1 2009, 12:24
Сообщение #3


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

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Вышла версии 0.9 TN NET TCP/IP stack.

Добавлен DHCP client.

Просьба ко всем, кто использует (пробует) TN NET TCP/IP stack - присылайте,
пожалуйста, ваши замечания и предложения на yuri@tnkernel.com.
Go to the top of the page
 
+Quote Post
sim732
сообщение Mar 28 2010, 19:22
Сообщение #4





Группа: Участник
Сообщений: 3
Регистрация: 13-11-09
Пользователь №: 53 607



Цитата(yuri_t @ Oct 1 2009, 14:24) *
Вышла версии 0.9 TN NET TCP/IP stack.

Добавлен DHCP client.

Просьба ко всем, кто использует (пробует) TN NET TCP/IP stack - присылайте,
пожалуйста, ваши замечания и предложения на yuri@tnkernel.com.


Здравствуйте Юрий. Пытаюсь использовать Ваш TCP/IP stack с TN kernel в одном проекте
и столкнулся с такой проблемой. Есть задача, которая с одной стороны работает с клиентом
на host PC по tcp/ip, а сдругой стороны с двумя очередями. Если задача читает сокет, то она
естественно засыпает при отсутствии сообщений от клиента. Но тогда она может прозевать
сообщение из очереди. Есть ли в Вашей реализации стека что-либо такое (типа select), что
может сообщать о событии появления сообщения через сокет до вызова функции s_recv ?

Сообщение отредактировал sim732 - Mar 28 2010, 19:24
Go to the top of the page
 
+Quote Post
sim732
сообщение Mar 30 2010, 20:02
Сообщение #5





Группа: Участник
Сообщений: 3
Регистрация: 13-11-09
Пользователь №: 53 607



Почитал tn-net-sockets.pdf. Оказывается в Вашей реализации сокет можно перевести
в неблокирующий режим. Не очень хорошее решение моей проблемы (напрасно будет тратится
процессорное время), но все же лучше, чем ничего. Использую предоставленную функцию s_ioctl().
Сокет переводиться в неблокирующий режим не хочет. Смотрю исходные тексты и вижу, что
в функции tcp_s_recv() проверка состояния so->so_state на SS_NBIO вообще отсутствует. Т.е. в этой
версии tcp/ip стека(0.9) перевести открытый сокет в неблокирующее состояние нельзя.
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Mar 31 2010, 18:00
Сообщение #6


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

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Ф-ция 'select' создавалась для классических аппликаций - где нет multithreading и все происходит
внутри одной ф-ции main(). Для малоформатных RTOS типа TNKernel 'select' "тяжеловат", да и в
общем-то и не нужен (IMHO).

В случае TNKernel/TN NET и использовании TCP sockets, task, в которой производится s_recv(), должна
только принимать по s_recv() и не в коем случае не ждать какие-то другие события, очереди etc.
Другие события, очереди etc. дожны ждать ДРУГИЕ task(s).
Результат приема должен посылаться в ДРУГУЮ task (c помощью tn_queue например).
При этом блокирующий прием работает естественным образом, а неблокирующий прием
не нужен вообще (поэтому он и не реализован).
Код
void task_rx_socket_A_func(void * par)
{

   for(;;)
   {
      rc = s_recv(g_s, (unsigned char*)g_rx_buf, RX_BUF_SIZE, 0);
      if(rc < 0) //-- SOCKET_ERROR
      {
      }
      else if(rc == 0) // closed by peer
      {
      }
      else //-- got some data
      {
          //--processing data, obtained by the s_recv(), or send it to another task
      }
    //-----
   }
}
Go to the top of the page
 
+Quote Post
sim732
сообщение Apr 1 2010, 08:39
Сообщение #7





Группа: Участник
Сообщений: 3
Регистрация: 13-11-09
Пользователь №: 53 607



Цитата(yuri_t @ Mar 31 2010, 21:00) *
В случае TNKernel/TN NET и использовании TCP sockets, task, в которой производится s_recv(), должна
только принимать по s_recv() и не в коем случае не ждать какие-то другие события, очереди etc.
Другие события, очереди etc. дожны ждать ДРУГИЕ task(s).
Результат приема должен посылаться в ДРУГУЮ task (c помощью tn_queue например).
При этом блокирующий прием работает естественным образом, а неблокирующий прием
не нужен вообще (поэтому он и не реализован).


Спасибо Юрий за комментарий. Я так и поступил. Хотя и добавил пару строк в
tn_tcp_send.c для того, чтобы было соответствие с документацией.
Код
      if(m)
         break;
      else
      {
        if(so->so_state & SS_NBIO)
        {
           splx(tnet, sm);
           return -EWOULDBLOCK;
        }
        else
        {
           splx(tnet, sm);
           tn_net_wait(&so->so_rcv.sb_sem);
        }
      }

Спасибо еще раз за Вашу работу. Отличная RTOS и стиль написания очень
ясный.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yuri_t   Вышла предварительная версия TN NET TCP/IP stack   Aug 13 2009, 09:47
- - zltigo   Цитата(yuri_t @ Aug 13 2009, 11:47) TN NE...   Aug 13 2009, 13:18
- - Rst7   ЦитатаВышла предварительная версия TN NET TCP/IP s...   Aug 13 2009, 13:44
- - yuri_t   - по поводу портирования BSD Идея была использо...   Aug 13 2009, 14:50
|- - zltigo   Цитата(yuri_t @ Aug 13 2009, 16:50) IMHO,...   Aug 13 2009, 15:18
- - yuri_t   TN NET обновилась до версии 0.8.3. TN NET TCP IP/...   Aug 26 2009, 10:36
|- - zltigo   Цитата(yuri_t @ Aug 26 2009, 12:36) TN NE...   Aug 26 2009, 10:56
|- - Bender   Цитата(yuri_t @ Mar 31 2010, 22:00) Ф-ция...   Oct 13 2010, 10:38
|- - grinux   Цитата(Bender @ Oct 13 2010, 14:38) Мне н...   Oct 13 2010, 10:55
- - LightElf   Изучаю сорцы. Возникли несколько вопросов: 1) Можн...   May 25 2010, 09:27
|- - yuri_t   Цитата(LightElf @ May 25 2010, 12:27) Изу...   May 25 2010, 17:59
|- - LightElf   Цитата(yuri_t @ May 25 2010, 21:59) Можно...   May 25 2010, 18:23
- - shista   Во время разработки своего проекта столкнулся со с...   Jun 4 2010, 20:32
- - grinux   Добрый день. Есть устройство, работающее по TCP с ...   Sep 17 2010, 15:19
- - grinux   Сравнил работу устройства с Wiznet(правое окно), т...   Sep 20 2010, 17:07
- - grinux   С Linux ситуация аналогичная, RST не воспринимает.   Sep 21 2010, 10:41
- - Rst7   Перенес в топик посты из соседней темы по просьбе ...   Sep 21 2010, 12:49
|- - grinux   Цитата(Rst7 @ Sep 21 2010, 16:49) Перенес...   Sep 21 2010, 14:03
- - Rst7   Секундочку, а почему контрольная сумма TCP для пак...   Sep 21 2010, 14:44
|- - grinux   Цитата(Rst7 @ Sep 21 2010, 18:44) Секундо...   Sep 21 2010, 15:54
- - Rst7   QUOTE Ошибка в функции tcp_respond() Если это у а...   Sep 21 2010, 16:50
- - yuri_t   Большое спасибо Григорию, Дмитрию и вообше всем по...   Sep 22 2010, 11:33
|- - grinux   Юрий, вы не планируете в ближайшее время расширени...   Sep 24 2010, 17:12
|- - _NB   Цитата(yuri_t @ Sep 22 2010, 14:33) Больш...   Sep 27 2010, 13:11
|- - Bender   Цитата(yuri_t @ Sep 22 2010, 15:33) ... ...   Sep 30 2010, 08:56
|- - megajohn   Цитата(yuri_t @ Sep 22 2010, 15:33) Поэто...   Aug 6 2013, 15:32
- - yuri_t   Что бы написать PPP, нужен соответствующий реальны...   Sep 25 2010, 16:13
- - yuri_t   Работа с >10 одновременно открытых TCP connect...   Oct 13 2010, 15:34
|- - LightElf   QUOTE (yuri_t @ Oct 13 2010, 19:34) Работ...   Oct 13 2010, 16:44
|- - Bender   Цитата(LightElf @ Oct 13 2010, 20:44) Хм....   Oct 13 2010, 18:52
|- - LightElf   QUOTE (Bender @ Oct 13 2010, 22:52) Да-да...   Oct 14 2010, 13:10
|- - YAM   Цитата(LightElf @ Oct 14 2010, 16:10) BTW...   Oct 15 2010, 17:16
- - yuri_t   Каждое ТСР соединение требует приличного (опять-та...   Oct 14 2010, 13:50
|- - VslavX   Цитата(yuri_t @ Oct 14 2010, 16:50) Каждо...   Oct 14 2010, 14:24
- - grinux   Подскажите, как использовать новый MAC адрес без п...   Oct 14 2010, 15:49
- - Bender   Хорошо, еще такой вопрос - прибор "отвалился...   Oct 14 2010, 18:18
- - yuri_t   Цитата(grinux @ Oct 14 2010, 18:49) Подск...   Oct 14 2010, 18:42
|- - Bender   Цитата(yuri_t @ Oct 14 2010, 22:42) Я не ...   Oct 15 2010, 05:07
||- - DL36   Очень простая реализация только передачи по UDP, м...   Oct 15 2010, 06:38
||- - LightElf   QUOTE (yuri_t @ Oct 14 2010, 17:50) Каждо...   Oct 15 2010, 11:17
|- - grinux   Цитата(yuri_t @ Oct 14 2010, 22:42) Честн...   Oct 15 2010, 07:13
|- - Bender   Цитата(grinux @ Oct 15 2010, 11:13) При п...   Oct 15 2010, 08:02
- - yuri_t   Чтобы иметь возможность неблокирующего приема в TN...   Oct 17 2010, 06:01
- - AntonPV   Прошу прощения,может есть такие,у кого есть опыт и...   Nov 16 2010, 15:36
- - Pavel V.   Я попытался портировать стек на процессор LPC1768,...   Dec 27 2010, 02:42
- - prgjz   Да, выложил в указанном топике. В tn_net_cfg.h #d...   Dec 27 2010, 11:26
- - spf   Ошибочка обнаружена в проверке на multicast, не ра...   Feb 1 2011, 18:47
- - yuri_t   Цитата(spf @ Feb 1 2011, 22:47) Ошибочка ...   Feb 2 2011, 15:30
- - spf   Когда ожидается вариант со всеми доработками? PS:...   Feb 3 2011, 04:28
- - megajohn   Цитата(spf @ Feb 3 2011, 08:28) Когда ожи...   Jul 30 2013, 14:17
- - megajohn   Цитата(megajohn @ Jul 30 2013, 18:17) Сам...   Jul 31 2013, 03:25


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:07
Рейтинг@Mail.ru


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