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

 
 
> ModBus и Keil RTX, вопросы корректной реализации
sayberex
сообщение Dec 7 2010, 07:46
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 18-11-07
Пользователь №: 32 429



Есть у меня задача реализовать библиотеку для ModBus чтобы она работала через RS232 и RS485 чтобы могла легким движением руки быть ASCII и RTU и чтобы можно быстро ее прикрутить к любому UART на контролере коих на моем микроконтроллере три(согласно CMSIS для Cortex как я понимаю). Все это делаю я для микроконтроллера Luminary с помощью Keil если вдруг кому интересно. Так вот в чем собственно вопрос хочется чтобы библиотека могла работать как отдельно так и вместе с RTOS я для себя выбрал Keil-RTX но дело в том что, то что я написал сам пакет собирает(но необрабатывает) в прирывании а как я почитал в кейловской книге RL-ARM Getting Started раздел Interrupt Handling что RTOS не очень любят а вернее сказать вобще не любят что то долго делать в прерывании что как я понимаю плохо сказывается на шедулере так как я пишу системы реального времени то это может быть критично. Так вот оправдан ли такой подход или если я вдруг хочу использовать RTOS то мне придется переписывать код чтобы он был под нее и заточен то есть отдельную библиотеку для RTOS.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sayberex
сообщение Dec 7 2010, 08:32
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 18-11-07
Пользователь №: 32 429



Ну именно так и советуют поступать в документации по Keil RTX(делать высокоприоритетную задачу и будить ее по какому нибуть эвенту который генериться в UART ISR при приходе символа) но от что меня беспокоит в таком случае и проблема в дополнительных затратах в ресурсов тут менее приоритетна допустим мы работаем на скорости 115200 б/c фрейм для одного байта = 1старт бит + 8 бит данных + 1 паритет + 1 стоп бит = 11 бит для передачи одного байта период соответственно равен T = около 10 мкс тость 20 мкс для передачи 2х символов а для скоростей повыше и того меньше будет. В моем мк к примеру UART аж до мегабита раскочегарить можно если те ошибаюсь боюсь что при таком раскладе и 5 пакетов будет принимать только 1 нормально или может я не прав? С чего такие опасения я раскажу я тут писал ModBus TCP(на lwIP) и как заглянул в Ethernet ISR Handler а код там будь здоров или кто то в критическую секцию зашел от мы и начали пропускать наши байты в UART Thread.
Go to the top of the page
 
+Quote Post
Shein
сообщение Feb 27 2011, 15:03
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-07
Пользователь №: 25 855



Цитата(sayberex @ Dec 7 2010, 10:32) *
Ну именно так и советуют поступать в документации по Keil RTX(делать высокоприоритетную задачу и будить ее по какому нибуть эвенту который генериться в UART ISR при приходе символа) но от что меня беспокоит в таком случае и проблема в дополнительных затратах в ресурсов тут менее приоритетна допустим мы работаем на скорости 115200 б/c фрейм для одного байта = 1старт бит + 8 бит данных + 1 паритет + 1 стоп бит = 11 бит для передачи одного байта период соответственно равен T = около 10 мкс тость 20 мкс для передачи 2х символов а для скоростей повыше и того меньше будет. В моем мк к примеру UART аж до мегабита раскочегарить можно если те ошибаюсь боюсь что при таком раскладе и 5 пакетов будет принимать только 1 нормально или может я не прав? С чего такие опасения я раскажу я тут писал ModBus TCP(на lwIP) и как заглянул в Ethernet ISR Handler а код там будь здоров или кто то в критическую секцию зашел от мы и начали пропускать наши байты в UART Thread.

При больших скоростях, как мне кажется, лучше уже пользоваться ПДП (если есть конечно). Принимать в буфер а затем уже адрес буфера передавать по mailbox. Собственно без ПДП логика та же: несколько буферов, по очереди прием в один ои них, потом передача по mailbox адреса. Принимающая задача естественно должна позаботиться об освобождении буфера.
Go to the top of the page
 
+Quote Post



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

 


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


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