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

 
 
> 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
сообщение Feb 3 2014, 07:04
Сообщение #2


Знающий
****

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



Цитата
Первый с копированием данных из pbuf и второй запись указателя в дескриптор на pbuf в dma, в первом скопировал стек продолжает работать. во втором передал указатель и ждем когда произойдет передача. Может еще есть варианты и какой из этих лучше?


Вам следует хорошо изучить PBUF, в pbuf пакет может лежать не одним цельным, а кусками этот код собирает из кусков 1 целый буфер.
Код
for(q = p; q != NULL; q = q->next)
{[quote][/quote]
memcpy(pkt, q->payload, q->len);
pkt += q->len;
}

Это можно конечно исправить, установив в настройках размер PBUF максимальному размеру фрейма. Но это очень большое расточительство памяти и никак не оправдывает себя. Есть маленький плюс позволяет сделать зеро копи драйвер. Но выигрыш очень мизерный. А памяти все будет жрать немерено.

У меня сделано так. Для дма драйвера выделено 2-4 буфера на передачу размером в максимальный фрейм (1512 по моему). Есть указатель на текущий буфер. Я его беру туда копирую pbuf, запускаю передачу дма, а текущему указателю присваиваю адрес следующего буфера и так по кругу. С приемом также есть от 2 - 16 (буферов дма размером в фрейм), есть указатель на текущий. Так как я использую ОС нет необходимости для приема использовать прерывания, так как дма умеет по кругу писать в буфера. Буру текущий указатель проверяю есть ли новый фрейм если есть, копирую его в новый pbuf, этот мечу свободным передвигаю указатель на следующий. И так по кругу.

У меня stm32f107 UDP - 70 Mbit/s TCP - 52 Mbit/s (4 буфера на передачу и 4 буфера на прием).

#define PBUF_POOL_SIZE 24
#define PBUF_POOL_BUFSIZE 256

Цитата
Понятно. Еще наверно будет проблема без ос, если потребуется управлять через веб интерфейс с нескольких компьютеров.
Хотя наверно можно обойтись, слушаем порт 80 как присоединился клиент его апи сохраняем, делаем что то, тут присоединился компьютер с другим айпи ему отправиться последняя страница которую смотрели последний раз,как это лучше реализовать.
С ос понятно каждому клиенту новый поток.


Проблемы нету, это можно сделать. Но именно это меня и заставило перейти на ОС. Так под ОС это реализовывается очень просто на каждое соединение свой таск. Без ОС это столько всякого гемора. Особенно если надо передавать большие фалы устройству. Когда я это сделал без ОС я понял что у меня получилась своя собственная маленькая ос в программе и зачем это ?. Почему это так я могу рассказать но много писать. Могу сказать так что стек под ОС быстрее работает (следует понимать не скорость передачи,а больше ресурсов остается основной программе), меньше расходуется памяти, да да МЕНЬШЕ. Код становится хорошо читаемым и понимаемым, вместо громадных автоматов состояний. Ну и конечно же надо хорошо понимать много поточность, и как правильно писать под ОС и наче получите что то работающее очень плохо.
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
- - 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
- - 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 Текстовая версия Сейчас: 31st July 2025 - 22:51
Рейтинг@Mail.ru


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