Старт ARM. RTOS часть 1-ая. STM32F4 и SAM3N.

Доброе время суток!) Продолжаем изучать микроконтроллеры ARM архитектуры, сегодня пойдет речь о RTOS (OCPB), а в частности про FreeRTOS (тут я добавлю свою ложку дёгтя) и новый зверь ChibiOS. RTOS — операционная система реального времени. Что такое реальное время? Стандарт POSIX 1003.1 даёт следующее определение: «Реальное время в операционных системах — это способность операционной системы обеспечить требуемый уровень сервиса в определённый промежуток времени». Операционная система, реагирующая на событие за определенный, заданный промежуток времени. Операционные системы реального времени делят на два типа — системы жесткого реального времени и системы мягкого реального времени. Операционная система, которая может обеспечить требуемое время выполнения задачи реального времени даже в худших случаях, называется операционной системой жёсткого реального времени. Операционная система, которая может обеспечить требуемое время выполнения задачи реального времени в среднем, называется операционной системой мягкого реального времени.
FreeRTOS — http://www.freertos.org/

Лого freertos
ChibiOS — http://www.chibios.org/

Лого чиби
Какие MCU поддерживают данные оси?
FreeRTOS – наверное самая пушистая, количество платформ просто зашкаливает, вот ссылка ( http://www.freertos.org/RTOS_ports.html ), где подробно перечисляется, какие мсиюшки поддерживает freertos: Actel, Altera, Atmel, NXP,.., ST… и очень много другого.
ChibiOS – не такая пушистая, но потенциал очень велик)
Так какие платформы поддерживает чиби?
ARM Cortex-M0 (ARMv6-M) GCC LPC11xx, LPC11Uxx, STM32F0xx
ARM Cortex-M0 (ARMv6-M) RVCT LPC11xx, LPC11Uxx, STM32F0xx
ARM Cortex-M3 (ARMv7-M) GCC LPC13xx, STM32F1xx, STM32F2xx, STM32L1xx
ARM Cortex-M3 (ARMv7-M) IAR LPC13xx, STM32F1xx, STM32F2xx, STM32L1xx
ARM Cortex-M3 (ARMv7-M) RVCT LPC13xx, STM32F1xx, STM32F2xx, STM32L1xx
ARM Cortex-M4 (ARMv7-ME) GCC STM32F3xx, STM32F4xx
ARM Cortex-M4 (ARMv7-ME) IAR STM32F3xx, STM32F4xx
ARM Cortex-M4 (ARMv7-ME) RVCT STM32F3xx, STM32F4xx
ARM7 GCC AT91SAM7x, LPC214x
MegaAVR GCC ATmega128, AT90CAN128, ATmega328p, ATmega1280
MSP430 GCC MSP430F1611
Power Architecture e200z GCC/HighTec SPC56x (all)
STM8 Cosmic STM8L, STM8S
STM8 Raisonance STM8L, STM8S
Как мы видим это в основном ведущие поставщики микроконтроллеров ST, Atmel и NXP.
Первые примеры будут посвящены вытесняющей многозадачности. Что такое многозадачность? Это свойство операционной системы или среды выполнения обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах. Вытесняющая многозадачность — это когда диспетчер каждый системный тик, останавливает задачу(А), и передает управление другой задаче(Б). Обеспечивая тем самым псевдопараллельное выполнение. Сегодня у нас будут два подопытных кролика. Первый STM32F429ZI –DISCO и второй SAM3N-EK.

Для изучения freertos есть, ОЧЕНЬ ПОДРОБНОЕ РУКОВОДСТВО ПО FREERTOS написал Андрей Курниц для журнала «Компоненты и технологии» (http://www.kit-e.ru/articles/micro/2011_2_96.php ). И так начинаем:
STM32F4 + Keil + FreeRTOS

Проект freertos_stm32f4

STM32F4 + keil + ChibiOS


halInit() – инициализация борды
chSysInit() – инициализация оси и инициализация диспетчера задач
Thread *chThdCreateStatic(void *wsp, size_t size, tprio_t prio, tfunc_t pf, void *arg) – создание потока (создание задачи).
1 — ый аргумент – указатель на выделенную память для задачи
2- ой аргумент – размер памяти, сколько выделили
3- ый аргумент – уровень приоритета для задачи
4- ый аргумент — имя функции
5-ый аргумент – данные передаваемые функции
Проект для чиби
SAM3N-EK+Ateml Studio 6 +FreeRTOS



Проект_FreeRTOS_Atmel
Как мы видим применение freertos просто потрясающее, программная реализация просто копи пастом переносится на другую платформу, немного подправив код. Если возникли вопросы, оставляется их в коментах, я обязательно отвечу, а на сегодня все, всем пока!)

Отправить ответ

Оставьте первый комментарий!

Уведомлять о
avatar
wpDiscuz