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

 
 
 
Reply to this topicStart new topic
> DSP/BIOS, Обмен данными между потоками
owl
сообщение Dec 5 2007, 12:37
Сообщение #1


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

Группа: Свой
Сообщений: 90
Регистрация: 7-08-06
Из: Смоленск
Пользователь №: 19 370



Подскажите пожалуйста как лучше решить проблему средствами Dsp/Bios.
Создан Task, отвечающий за прием данных из сети. Прием UDP пакетов.
Есть подпрограмма декодера для преобразования полученных данных.
Создан Task вывода данных - отображения на экране.
Проц: TMS320DM6437

Попробовал прием, обработку, вывод сделать в одном потоке, но получается, что довольно часто теряются данные при приеме.

Вывод разделить прием пакетов в отдельном потоке, обработку и вывод в другом.

Какой механизм DSP/BIOS лучше использовать для передачи данных от одного потока к другому?
С DSP/BIOS серьезно не работал, посмотрел примеры, но под эту задачу, мне кажется, что ничего особенно не подходит.
Если не жалко поделитесь ссылкой, примером кода.
Go to the top of the page
 
+Quote Post
Vasiliy Rufitski...
сообщение Dec 6 2007, 14:05
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 19-10-07
Пользователь №: 31 519



Смотрите в сторону объектов MBX - "почтовый ящик" и SEM - "семафор". MBX содержит в себе семафор и очередь данных.
Работают с этим так:
Одна задача вызывает MBX_post, а другая - MBX_pend() с параметром таймаута. Если таймаут SYS_FOREVER, то один поток будет бесконечно ждать, пока другой не вызовет MBX_post() (не положит в его маилбокс данные).

SEM - то же что и MBX, только передачи данных нет. Для Вашей задачи ИМХО лучше MBX использовать.

Если создаётся задел на будущее - то лучше обернуть приёмник UDP пакетов и декодирование в CELL объекты RF5 (reference framework). Тогда можно использовать SCOM объекты. Это работа затратная по времени, требует чёткой организации работы с памятью, но пользоваться потом вроде как удобнее.
Go to the top of the page
 
+Quote Post
owl
сообщение Dec 7 2007, 09:59
Сообщение #3


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

Группа: Свой
Сообщений: 90
Регистрация: 7-08-06
Из: Смоленск
Пользователь №: 19 370



Цитата(Vasiliy Rufitskiy @ Dec 6 2007, 17:05) *
Смотрите в сторону объектов MBX - "почтовый ящик" и SEM - "семафор". MBX содержит в себе семафор и очередь данных.
Работают с этим так:
Одна задача вызывает MBX_post, а другая - MBX_pend() с параметром таймаута. Если таймаут SYS_FOREVER, то один поток будет бесконечно ждать, пока другой не вызовет MBX_post() (не положит в его маилбокс данные).

SEM - то же что и MBX, только передачи данных нет. Для Вашей задачи ИМХО лучше MBX использовать.

Если создаётся задел на будущее - то лучше обернуть приёмник UDP пакетов и декодирование в CELL объекты RF5 (reference framework). Тогда можно использовать SCOM объекты. Это работа затратная по времени, требует чёткой организации работы с памятью, но пользоваться потом вроде как удобнее.

Спасибо. MBX попробовал. Работает.
Go to the top of the page
 
+Quote Post

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

 


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


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