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

 
 
> uClinux. Сеть. Потоки. Real Time.
RCray
сообщение Nov 12 2010, 16:49
Сообщение #1


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

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Попытаюсь описать проблему.

Есть uClinux на BF537, работает многопоточное (pthread) пользовательское приложение.

Один из потоков (P1) отвечает за обмен данными между сетью (UDP, recvfrom, sendto) и периферийным процессором (по SPORT, но это не важно), идёт обмен критичными ко времени обмена данными. Время между обращениями к этому потоку не должно превышать T1 (скажем 20 мс).

При активировании обмена сторонними данными по сети относительно большими объёмами данных (скачивания какого-нибудь левого файла, запрос страницы по http) около мегабайта приводит к задержкам обработки нашего критичного потока >T1.

Интересно отметить, что в ligthhttpd есть такой параметр, как полоса. Можно менять её при компилировании, и тем самым страница web-интерфейса устройства грузится дольше, но передача управления потоку не выходит за рамки установленного числа T1. Для сравнения размер передаваемых данных web-страницы составляет 1,5 Мб, установка максимальной полосы (при которой страница грузится 2 сек) приводит к задержкам > T1, до 40-50 мс, установка полосы при которой страница грузится (2 мин) к задержкам > T1 не приводит. Понятно что 2 минуты это ни в какие ворота.

Размышления о TCP/IP стеке, сетевом драйвере uClinux'а привели к ключевым словам - Adeos/Xenomai/RTnet.

Перевод uClinux на Adeos/Xenomai не помог, хотя пользовательское приложение уже работает с API функциями сетевого программирования для риал-тайма. Всё-равно ситуация повторяется. Не знаю может быть это связано с тем, что остались системные вызовы (recvfrom, sendto) при работе с сетью, которые всё-равно переводят потоки из primary mode (Xenomai) в secondary mode (Linux).
Значит вопрос в драйвере сети и нужно копать в сторону RTnet и написании своего риал-тайм драйвера MAC? Или могут помочь какие-то шаманства со стеком TCP/IP, размеры каких-то буферов?

Не хватает знаний в области сетевых технологий, чтобы сформулировать задачу точнее.

У кого есть какие размышления? Спасибо.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 01:50
Рейтинг@Mail.ru


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