Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Мастерство Event Flag Groups: Утилитарные сервисы и структуры данных в Nucleus RTOS/SE

Мастерство Event Flag Groups: Утилитарные сервисы и структуры данных в Nucleus RTOS/SE
View the RTOS Revealed series

Эта статья продолжает рассмотрение event flag groups.

Event Flag Group Utility Services

Nucleus RTOS предоставляет три выделенных API вызова, оптимизирующих взаимодействие с event flag groups: получение детальной информации о группе, получение общего числа групп и доступ к указателям на все группы в приложении. Первые две функции полностью поддерживаются в Nucleus SE.

Информация о Event Flag Group

Этот service call доставляет ключевые данные о указанной event flag group. В Nucleus SE интерфейс усечен — object naming и suspend ordering опущены, и task suspend информация возвращается только когда фича включена.

Nucleus RTOS API Call для информации Event Group

Прототип service call:

STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *event_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);

Параметры:

group — указатель на user-supplied event flag group control block

name — 8-символьный буфер для имени группы (включая null terminator)

event_flags — указатель на переменную, получившую текущее значение флагов

tasks_waiting — указатель на переменную, получившую число задач, приостановленных на этой группе

first_task — указатель на NU_TASK переменную, получившую указатель на первую приостановленную задачу

Возвращает:

NU_SUCCESS — вызов завершен успешно

NU_INVALID_GROUP — предоставленный group pointer недействителен

Nucleus SE API Call для информации Event Group

Этот API предоставляет ту же основную функциональность, что и его RTOS аналог.

Прототип service call:

STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP group,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);

Параметры:

group — индекс event flag group

event_flags — указатель для получения текущего значения флагов

tasks_waiting — указатель для получения числа приостановленных задач (0 если task suspend отключен)

first_task — указатель для получения индекса первой приостановленной задачи (0 если task suspend отключен)

Возвращает:

NUSE_SUCCESS — вызов завершен успешно

NUSE_INVALID_GROUP — group index недействителен

Nucleus SE Реализация информации Event Group

Реализация проста: текущее значение флагов читается, и если blocking APIs включены, вычисляются waiting-task count и first-task index; иначе оба устанавливаются в 0.

*event_flags = NUSE_Event_Group_Data[group];#if NUSE_BLOCKING_ENABLE *tasks_waiting = NUSE_Event_Group_Blocking_Count[group]; if (NUSE_Event_Group_Blocking_Count[group] != 0) { U8 index; for (index=0; index

Получение числа Event Flag Groups

В Nucleus RTOS число групп может меняться динамически; вызов возвращает текущий счет. В Nucleus SE счет фиксирован на этапе сборки.

Nucleus RTOS API Call для Event Flag Group Count

Прототип service call:

UNSIGNED NU_Established_Event_Groups(VOID);

Возвращает:

Текущее число созданных event flag groups в приложении

Nucleus SE API Call для Event Flag Group Count

Прототип service call:

U8 NUSE_Event_Group_Count(void);

Возвращает:

Число сконфигурированных event flag groups в приложении

Nucleus SE Реализация Event Flag Group Count

Функция просто возвращает значение compile-time константы NUSE_EVENT_GROUP_NUMBER.


Встроенный

  1. Облако против собственных серверов: как выбрать правильное хостинг-решение
  2. Microsoft Azure анонсирует токенизацию блокчейна и сервисы управления данными
  3. Структуры C++ против классов: практическое руководство для разработчиков встроенных систем
  4. Mailboxes в Nucleus SE: Практическое руководство по конфигурации и использованию
  5. Семафоры в Nucleus RTOS: Утилитарные сервисы и структуры данных
  6. Семафоры в Nucleus SE: Обзор, конфигурация и основы API
  7. Event Flag Groups в Nucleus SE: Вводное руководство по конфигурации и использованию API
  8. Queues в Nucleus SE: Введение и основные Service Calls
  9. Apacer запускает глобальные высокопроизводительные флеш-карты CV110-SD и CV110-MSD
  10. OpenHW Group запускает семейство CORE-V открытых процессорных ядер