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

 
 
> lwip с Rtos или без Rtos, Как лучше, правильнее, удобнее использовать стек с rtos или без
sergey sva
сообщение Jan 29 2014, 08:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Не знаю пока всех тонкостей по этой теме, проконсультируйте пожалуйста.
Как лучше использовать stek lwip с Rtos или без какие за и против, для примера контроллер lpc4337?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Jan 31 2014, 14:03
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
Если нет системы не получиться использовать сокет, если правильно понял.


Да.

Если у Вас пинга нету чего вы лезете к tcp_slowtmr ??? вам нужен только ARP, IP, ICMP. В изернете нельзя передавать пакеты меньшие 64 байт!!!,
многие МАС не умеют дополнять пакет если он меньше 64 байт это надо будет сделать вам самим. STM32 умеет это делать но п омоему надо где то битик установить.


P.S. Все по шагам.

1) Делаем функцию приема кадров изернет. Запускаем ее проверяем что она принимает правильно. Буфер расшифровываем в уме.
2) Делаем функцию передачи, создаем константный фрейм, засовываем его в функцию ловим ваершарком убеждаемся что все ок.
3) Прикручиваем эти функции к стеку.
4) Запускаем пинг. Смотрим ARP таблицу, если ваш МАС есть а девайс не пингается что с IP + ICMP, Если в таблице нету вашего МАСа копаем ARP.
5) Потом уже UDP + TCP

Я использую FreeRTOS + LwIP примерно так у меня выглядят функции драйвера (прием вынесен в отдельную задачу)

Прием:
Код
__task void EthernetDeamon(void *arg)
{
  int32_t size;
  struct pbuf *p,*q;
  uint8_t* pkt;
  struct netif *ethif = (struct netif *)arg;
  for(;; )
  {
    size = HwEMAC::RecivePacket((void**)&pkt, 1000);
    if ( size > 0 )
    {
      p = pbuf_alloc(PBUF_RAW, size, PBUF_POOL);
      if (p != NULL)
      {
        for (q = p; q != NULL; q = q->next)
        {
          memcpy((u8_t*)q->payload, pkt, q->len);
          pkt += q->len;
        }
        HwEMAC::Recived();
        if (tcpip_input(p,ethif) != ERR_OK) pbuf_free(p);
      }
    }
    else
    {
      LINKSTATUS_t ls = HwPHY::LinkStatus(PHY_ADDR);
      if ( ls == NOLINK )
      {
        netif_set_link_down(ethif);
        HwEMAC::Stop();
      }
      else
      {
        if (!netif_is_link_up(ethif))
        {
          HwEMAC::Start(ls);
          netif_set_link_up(ethif);
        }
      }
    }
  }
};

P.S. tcpip_input - используется если стек работает в режиме ОС (NO_SYS = 0), если без ос то фреймы нужно запихивать в ethernet_input

передача:
Цитата
err_t EthernetOutput(struct netif *ethif, struct pbuf *p)
{
uint8_t* pkt;
struct pbuf *q;
if (HwEMAC::GetSendBuffer((void**)&pkt,20) != 0 ) return ERR_IF;
for(q = p; q != NULL; q = q->next)
{
memcpy(pkt, q->payload, q->len);
pkt += q->len;
}
HwEMAC::Send(p->tot_len);
return ERR_OK;
}



Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sergey sva   lwip с Rtos или без Rtos   Jan 29 2014, 08:50
- - scifi   Я использовал без RTOS - так исторически сложилось...   Jan 29 2014, 09:26
- - sergey sva   Понятно, какие еще есть открытые , на данный моме...   Jan 29 2014, 11:53
|- - scifi   Цитата(sergey sva @ Jan 29 2014, 15:53) Е...   Jan 29 2014, 12:45
||- - Golikov A.   Цитата(scifi @ Jan 29 2014, 16:45) Кроме ...   Jan 29 2014, 17:29
||- - _Артём_   Цитата(Golikov A. @ Jan 29 2014, 19:29) К...   Jan 29 2014, 18:07
||- - scifi   Цитата(Golikov A. @ Jan 29 2014, 21:29) П...   Jan 29 2014, 19:08
|- - kolobok0   Цитата(sergey sva @ Jan 29 2014, 15:53) ....   Jan 29 2014, 16:17
- - sergey sva   Да. Смотрел пример в нем реализовано так Код for...   Jan 29 2014, 13:21
- - Golikov A.   Мне кажется что memcpy быстрее скопирует данные из...   Jan 29 2014, 18:32
|- - _Артём_   Цитата(Golikov A. @ Jan 29 2014, 20:32) И...   Jan 29 2014, 19:24
|- - scifi   Не только дефицит ОЗУ, но и вообще не нужны мне ре...   Jan 29 2014, 20:10
- - sergey sva   struct pbuf->len указывает размер в байтах или ...   Jan 30 2014, 14:11
- - MALLOY2   В байтах   Jan 30 2014, 15:54
- - sergey sva   Понятно видимо гдето ошибся. Добавили вывод в терм...   Jan 30 2014, 18:17
- - sergey sva   Снял лог есть несколько ошибок, может у кого такие...   Jan 30 2014, 20:27
- - sergey sva   Думаю что не хочет работать из за этой ошибки tcp_...   Jan 31 2014, 12:45
- - Golikov A.   no active pcbs это не ошибка, это констатация факт...   Jan 31 2014, 13:32
- - sergey sva   Быстрый ,медленый таймер дергае tcptmr(), может ещ...   Jan 31 2014, 14:01
- - sergey sva   Благодарю ,помогли . Ошибка была в копирование из ...   Jan 31 2014, 17:12
- - sergey sva   Вроде проясняется потихоньку). Сейчас между двумя ...   Feb 1 2014, 06:08
- - Golikov A.   ну есть третий, сделать свой буфер, аналог PBUF, н...   Feb 1 2014, 11:09
- - sergey sva   Понятно. Еще наверно будет проблема без ос, если ...   Feb 2 2014, 05:25
|- - scifi   Цитата(sergey sva @ Feb 2 2014, 09:25) Ещ...   Feb 2 2014, 05:42
- - sergey sva   Например у меня несколько страниц web подключился ...   Feb 2 2014, 05:58
|- - scifi   Цитата(sergey sva @ Feb 2 2014, 09:58) На...   Feb 2 2014, 06:09
- - Golikov A.   ну вообще вы описываете стандартную работу сервера...   Feb 2 2014, 18:57
- - MALLOY2   ЦитатаПервый с копированием данных из pbuf и второ...   Feb 3 2014, 07:04
- - sergey sva   Цитатамаксимальный фрейм (1512 по моему). наверно ...   Feb 3 2014, 12:24
|- - scifi   Цитата(sergey sva @ Feb 3 2014, 16:24) #d...   Feb 3 2014, 13:00
||- - kolobok0   Цитата(scifi @ Feb 3 2014, 17:00) ...у не...   Feb 3 2014, 18:21
||- - scifi   Цитата(kolobok0 @ Feb 3 2014, 22:21) там ...   Feb 3 2014, 19:17
|- - Golikov A.   Цитата(sergey sva @ Feb 3 2014, 16:24) Ка...   Feb 3 2014, 14:00
- - sergey sva   У меня вот так задается PBUF_POOL_BUFSIZE Код/**...   Feb 3 2014, 13:51
- - sergey sva   Может есть готовые библиотеки работы с сокетами ?   Feb 3 2014, 14:15
- - sergey sva   Еще один вопрос новичка по lwip, после accept как ...   Feb 3 2014, 15:35
- - MALLOY2   ЦитатаБуквально на днях сам на этом обжёгся. lwip ...   Feb 3 2014, 15:46
|- - scifi   Цитата(MALLOY2 @ Feb 3 2014, 19:46) lwip ...   Feb 3 2014, 15:54
- - sergey sva   Понятно. У меня первый вариант без ос. Вот еще как...   Feb 3 2014, 16:08
- - Golikov A.   почитайте викизнание по LwIP он сам сделает стру...   Feb 3 2014, 17:33
- - sergey sva   Документация только здесь http://lwip.wikia.com/wi...   Feb 3 2014, 19:09
- - sergey sva   После того как сервер получает запрос Get tcp долж...   Feb 4 2014, 12:39
- - sergey sva   Собрал по примерам исходников функцию которая долж...   Feb 4 2014, 15:18
- - scifi   Хотите написать свой веб сервер? Бросайте это гибл...   Feb 4 2014, 17:22
- - sergey sva   Сейчас посмотрю. Откуда же ей взяться если буду в...   Feb 4 2014, 17:50
- - sergey sva   Не выходит никак ничего )). В чем может быть дело...   Feb 9 2014, 09:36
- - sergey sva   Все заработало причина была в этом флаге TCP_WRITE...   Feb 9 2014, 14:01
- - sergey sva   Как ускорить процесс, сейчас в tcp_pool (foo,4) в ...   Feb 10 2014, 07:46
- - sergey sva   Если увеличить скорость быстрого и медленного тайм...   Feb 10 2014, 18:23
|- - kolobok0   Цитата(sergey sva @ Feb 10 2014, 22:23) Е...   Feb 12 2014, 12:26
- - Golikov A.   а вы попробуйте%)... пакеты приходить уходить чащ...   Feb 10 2014, 19:01
- - sergey sva   У меня сейчас почему то retransmitt с браузера про...   Feb 10 2014, 19:06
- - sergey sva   Никак не пойму в чем дело иногда не происходит пов...   Feb 11 2014, 13:32
- - Golikov A.   погодите, по быстрому таймеру дергается функция об...   Feb 12 2014, 17:56


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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:44
Рейтинг@Mail.ru


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