|
FreeRTOS STM32, Никогда не использовал RTOS, расскажите что-как |
|
|
|
Jul 19 2013, 21:39
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Всем доброго времени суток.
Никогда раньше не использовал RTOS , и вот думаю начать. Положил глаз на freeRTOS. Работаю с STM32 . Возникли такие вопросы :
1)Как RTOS влияет на производительность и энергопотребления (что одно и то же) .Как я понимаю, для работы RTOS должно постоянно происходить прерывание systic. Стало быть, появляется как минимум это прерывание с постоянным выполнением какого-то кода какой-то длинны. Для устройств с батарейным питанием где в активном режиме каждые 100мка на счету это приемлимо ?
2)Как RTOS сочетается со спящими режимами ? Когда процессор максимально заглушен, потребляет 1-2 мка и ждёт прерывания от ноги wakup .
3)Со всеми устройствами процессора RTOS обязывает работать только через свои функции, напрямую к регистрам уже нельзя обращаться ? Если так, то как быть со всякими тонкостями, которые решаются только на уровне железа ? К примеру, захотелось синхронизировать два таймера с точностью до 1 такта системной частоты. Если работаешь с регистрами, то можно придумать как это сделать. А после перехода на RTOS подобные "фокусы" будут возможны ?
Заранее благодарю за ответы !
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
 |
Ответов
|
Jul 20 2013, 04:26
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(aaarrr @ Jul 20 2013, 02:28)  3. Нет у FreeRTOS (как и у большей части мелких ОС) таких функций. Так что "фокусы" никуда не денутся. 3) Я просто вижу во всех примерах , что работа происходит не через регистры а через функции системы. Код void vFreeRTOSInitAll() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_StructInit(&port); port.GPIO_Mode = GPIO_Mode_Out_PP; port.GPIO_Pin = GPIO_Pin_0; port.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &port); } 4) И вопрос, вытекающий из 3): если операционка переключается между задачами без ведома задачь, то как быть с настройками тех же портов ? Или это уже моя забота, что бы задачи вывода и приёма по одному и тому же GPIO не запускались одновременно ?
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Aug 11 2013, 06:17
|
Знающий
   
Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594

|
Цитата(MiklPolikov @ Jul 20 2013, 08:26)  3) Я просто вижу во всех примерах , что работа происходит не через регистры а через функции системы. Код void vFreeRTOSInitAll() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_StructInit(&port); port.GPIO_Mode = GPIO_Mode_Out_PP; port.GPIO_Pin = GPIO_Pin_0; port.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &port); } 4) И вопрос, вытекающий из 3): если операционка переключается между задачами без ведома задачь, то как быть с настройками тех же портов ? Или это уже моя забота, что бы задачи вывода и приёма по одному и тому же GPIO не запускались одновременно ? Кстати, работа с битами портов в STM32 через библиотеку происходит атомарно, блокировать переключение контекста не требуется. Для инициализации - да, требуется блокировать. Что касается выбора RTOS, то FreeRTOS самая популярная система, есть TCP, много народу использует, будет у кого спросить совет если что. Не требуется вникать в тонкости работы, достаточно инструкции на сайте. Начинать проще всего так: скачать с сайта дистрибутив и взять за основу проект на вашем контроллере (или самом близком) и писать свою задачу.
|
|
|
|
Сообщений в этой теме
MiklPolikov FreeRTOS STM32 Jul 19 2013, 21:39      kolobok0 Цитата(MiklPolikov @ Nov 20 2013, 21:24) ... Nov 21 2013, 00:26 x893 К тому же есть режим tickless для совсем малопотре... Jul 19 2013, 23:06 _Pasha 3.Приведенный Вами код работы с периферией использ... Jul 20 2013, 06:03 MiklPolikov Прокомментируйте пожалуйста мои первые шаги freeR... Jul 21 2013, 05:53  PDA Цитата(MiklPolikov @ Jul 21 2013, 09:53) ... Jul 21 2013, 07:14  Сергей Борщ QUOTE (MiklPolikov @ Jul 21 2013, 07:53) ... Jul 21 2013, 08:25  Ruslan1 Цитата(MiklPolikov @ Jul 21 2013, 08:53) ... Jul 21 2013, 08:35   MiklPolikov Цитата(Ruslan1 @ Jul 21 2013, 12:35) Для ... Jul 21 2013, 09:45 AlexandrY Цитата(MiklPolikov @ Jul 20 2013, 00:39) ... Jul 22 2013, 06:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|