|
lwip с Rtos или без Rtos, Как лучше, правильнее, удобнее использовать стек с rtos или без |
|
|
|
 |
Ответов
|
Jan 29 2014, 11:53
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Понятно, какие еще есть открытые , на данный момент нашел два lwip и fnet и uIP. Второй кто нибудь использовал ? Еще вопрос по стеку Lwip в функции low_level_output в цикле заполняется dma и после отправляется фрейм. Если сразу отправлять, насколько это будет правильно? Код for(q = p; q != NULL; q = q->next) { заполняем dma(q->payload, q->len); запрос на передачу() }
|
|
|
|
|
Jan 29 2014, 12:45
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(sergey sva @ Jan 29 2014, 15:53)  Еще вопрос по стеку Lwip в функции low_level_output в цикле заполняется dma и после отправляется фрейм. Если сразу отправлять, насколько это будет правильно? Сразу отправлять - это zero-copy transmit что ли? Я, собственно, так и делаю. Естественно, есть ограничения: данные для отправки не могут лежать в флеше, т.к. STM32 Ethernet DMA не имеет к ней доступа. Кроме того, я жду окончания отправки пакета прямо там же, так как в противном случае есть вероятность того, что буфер будет затёрт до того, как пакет будет отправлен. Чтобы не быть голословным, вот код: CODE err_t low_level_output(struct netif *netif, struct pbuf *p) { int i; uint32_t mask;
if (!netif_is_link_up(netif)) { return ERR_OK; } while ((ETH_DMASR & 0x00700000) != 0x00600000) { /* wait until Tx DMA is suspended */ } mask = (1u << 31) /* OWN bit */ | (1 << 28); /* first segment */ i = -1; for (;;) { i++; if (i == TX_RING_SIZE) { /* not enough TX descriptors */ return ERR_MEM; } tx_desc[i].len[0] = p->len; tx_desc[i].ptr[0] = p->payload; p = p->next; if (p) { tx_desc[i].len[1] = p->len; tx_desc[i].ptr[1] = p->payload; p = p->next; if (p) { tx_desc[i].status = mask; mask = (1u << 31); /* OWN bit */ } else { break; } } else { tx_desc[i].len[1] = 0; break; } } mask |= (1 << 21) /* end of ring */ | (1 << 29); /* last segment */ tx_desc[i].status = mask; REGBIT(ETH_DMASR, 10) = 1; /* reset ETS flag in status register */ ETH_DMATPDR = 0; /* start transmission */ while (REGBIT(ETH_DMASR, 10) == 0) { /* wait for data to be copied into Tx FIFO */ } return ERR_OK; }
|
|
|
|
Сообщений в этой теме
sergey sva lwip с Rtos или без Rtos Jan 29 2014, 08:50 scifi Я использовал без RTOS - так исторически сложилось... Jan 29 2014, 09:26  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 MALLOY2 ЦитатаЕсли нет системы не получиться использовать ... Jan 31 2014, 14:03 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|