Доброе время суток!
Сегодня я расскажу и покажу, как быстро и безболезненно поднять embOS для stm32f429i-disco. Увидим, как создавать потоки и как с ними работать.
1. Переходим на официальный сайт Segger в раздел загрузок https://segger.com/downloads.html.
2. Находим архив с название embOS trial for Cortex-M and KEIL compiler. Нажимаем на него и переходим на экран регистрации.


3. В окне регистрации необходимо заполнить Ваши данные, можно и не свои, нажимаем принять и у нас началась загрузка файла.

4. После небольшого промежутка времени, необходимо разархивировать архив. В разархивированном архиве находим проект для stm32f429i-disco.

5. Запускаем проект для кеила, немножко по шаманим с настройками и конфигурацией железа и заливаем проект.



6. После заливки прошивы на камень, светодиод PG13 и светодиод PG14 начинают мигать с различной частотой на борде. Это базовый пример. В родительской папке embOS есть руководство по эксплуатации данной ОСРВ и диспетчер задач для embOS, подключаешь плату запускаешь embOSView и смотришь за процессом переключения (вытеснения) задач.
Если Вы работали с другими ОСРВ, я думаю Вам будет очень многое сразу, в коде программы, понятно.
/*********************************************************************
* SEGGER MICROCONTROLLER GmbH & Co KG *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1995 - 2015 SEGGER Microcontroller GmbH & Co KG *
* *
* www.segger.com Support: support@segger.com *
* *
**********************************************************************
* *
* embOS * Real time operating system for microcontrollers *
* *
* *
* Please note: *
* *
* Knowledge of this file may under no circumstances *
* be used to write a similar product or a real-time *
* operating system for in-house use. *
* *
* Thank you for your fairness ! *
* *
**********************************************************************
* *
* OS version: 4.06b *
* *
**********************************************************************
----------------------------------------------------------------------
File : Start_LEDBlink.c
Purpose : Sample program for OS running on EVAL-boards with LEDs
--------- END-OF-HEADER --------------------------------------------*/
#include "RTOS.h"
#include "BSP.h"
OS_STACKPTR int StackHP[128], StackLP[128]; /* Task stacks */
OS_TASK TCBHP, TCBLP; /* Task-control-blocks */
static void HPTask(void) {
while (1) {
BSP_ToggleLED(0);
OS_Delay (50);
}
}
static void LPTask(void) {
while (1) {
BSP_ToggleLED(1);
OS_Delay (200);
}
}
/*********************************************************************
*
* main
*
*********************************************************************/
int main(void) {
OS_IncDI(); /* Initially disable interrupts */
OS_InitKern(); /* Initialize OS */
OS_InitHW(); /* Initialize Hardware for OS */
BSP_Init(); /* Initialize LED ports */
/* You need to create at least one task before calling OS_Start() */
OS_CREATETASK(&TCBHP, "HP Task", HPTask, 100, StackHP);
OS_CREATETASK(&TCBLP, "LP Task", LPTask, 50, StackLP);
OS_Start(); /* Start multitasking */
return 0;
}
Продолжение следует…