RTX5. Ядро (информация и управление)

Описание

Группа функций информации и управления ядром позволяет:

  • получить информацию о системе и ядре.
  • получить информацию о версии интерфейса CMSIS-RTOS.
  • инициализация ядра RTOS для создания объектов.
  • запуск ядра RTOS и переключение потоков.

 

Функции информации и управления ядром не могут быть вызваны из подпрограмм обработки прерываний.

Инициализация ядра для RTX5 описана в разделе «Запуск системы»

 

 

Пример кода

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*----------------------------------------------------------------------------
 * Главный поток приложения
 *---------------------------------------------------------------------------*/
void app_main (void *argument) {
 
  // ...
  for (;;) {}
}
 
int main (void) {
 
  // Инициализация системы
  SystemCoreClockUpdate();
  // ...
 
  osKernelInitialize();                 // Инициализация CMSIS-RTOS
  osThreadNew(app_main, NULL, NULL);    // Создание главного потока приложения
  osKernelStart();                      // Запускает ядро RTOS и начинает переключение потоков
  for (;;) {}
}

Структуры

struct osVersion_t

Поля структуры:

uint32_t api  API версия (major.minor.rev: mmnnnrrrr dec).
uint32_t kernel Версия ядра (major.minor.rev: mmnnnrrrr dec).

Определяет версию ядра и API. Версия представлена в виде объединенного десятичного числа в формате: major.minor.rev: mmnnnrrrr

Используйте функцию osKernelGetInfo для получения номеров версий.

Перечисления

enum osKernelState_t

Перечислители:

  • osKernelInactive  Неактивный. Ядро еще не готово. osKernelInitialize должен быть успешно выполнен.
  • osKernelReady  Готовность к использованию. Ядро еще не запущено. osKernelStart переводит ядро в рабочее состояние.
  • osKernelRunning  Запущено. Ядро инициализировано и запущено.
  • osKernelLocked  Заблокировано. Ядро было заблокировано с помощью функции osKernelLock. Функции osKernelUnlock или osKernelRestoreLock разблокируют его.
  • osKernelSuspended Приостановленный. Ядро было приостановлено с помощью osKernelSuspend. Функция osKernelResume возвращает к нормальной работе.
  • osKernelError Ошибка. Произошла ошибка.
  • osKernelReserved Зарезервированный.

Состояние ядра, полученное с помощью функции osKernelGetState. В случае ошибки функции osKernelGetState или если она вызывается из ISR, функция возвращает osKernelError, в противном случае она возвращает состояние ядра.

Функции

osStatus_t osKernelInitialize (void)

Функция osKernelInitialize инициализирует ядро RTOS. До вызова этой функции можно вызывать только osKernelGetInfo и osKernelGetState.

Возвращает код состояния, который указывает на статус выполнения функции.

Возможные возвращаемые значения osStatus_t:

  • osOK в случае успешного выполнения.
  • osError если произошла неуказанная ошибка.
  • osErrorISR если вызывается из программы обработки прерываний.
  • osErrorNoMemory если память не может быть зарезервирована для операции.

 

Эта функция не может быть вызвана из подпрограмм обработки прерываний.

 

Пример кода

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "RTE_Components.h"
#include  CMSIS_device_header
#include "cmsis_os2.h"
 
/*----------------------------------------------------------------------------
 * Главный поток приложения
 *---------------------------------------------------------------------------*/
void app_main (void *argument) {
 
  // ...
  for (;;) {}
}
 
int main (void) {
 
  // Инициализация системы
  SystemCoreClockUpdate();
  // ...
 
  osKernelInitialize();                 // Инициализация CMSIS-RTOS
  osThreadNew(app_main, NULL, NULL);    // Создание главного потока приложения
  osKernelStart();                      // Запускает ядро RTOS и начинает переключение потоков
  for (;;) {}
}

Оставить ответ