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

Partition Memory в Nucleus RTOS/SE: Утилитарные сервисы и структуры данных

Partition Memory в Nucleus RTOS/SE: Утилитарные сервисы и структуры данных
View the RTOS Revealed series

Строя на нашем предыдущем исследовании RTOS partition memory, эта статья углубляется в практические утилиты и базовые структуры данных, обеспечивающие эффективное управление памятью в Nucleus RTOS и его облегченном издании, Nucleus SE.

Partition Pool Utility Services

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

Получение информации о Partition Pool

Сервис NU_Partition_Pool_Information возвращает комплексный снимок указанного partition pool. В Nucleus SE функция возвращает урезанный набор данных, отражающий отсутствие object naming, suspend ordering и task suspend поддержки.

Nucleus RTOS API Call для информации Partition Pool

Прототип service call:

STATUS NU_Partition_Pool_Information(NU_PARTITION_POOL *pool, CHAR *name, VOID **start_address, UNSIGNED *pool_size, UNSIGNED *partition_size, UNSIGNED *available, UNSIGNED *allocated, OPTION *suspend_type, UNSIGNED *tasks_waiting, NU_TASK **first_task);

Параметры:

pool — указатель на partition pool, для которого запрашивается информация.

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

start_address — указатель на переменную, получающую базовый адрес области данных пула.

pool_size — указатель на переменную, получающую общий размер пула в байтах.

partition_size — указатель на переменную, получающую размер каждой партиции.

available — указатель на переменную, получающую счетчик свободных партиций.

allocated — указатель на переменную, получающую счетчик используемых партиций.

suspend_type — указатель на переменную, получающую suspend policy (валидные значения: NU_FIFO или NU_PRIORITY).

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

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

Возвращает:

NU_SUCCESS — операция успешна.

NU_INVALID_POOL — предоставленный pool pointer недействителен.

Nucleus SE API Call для информации Partition Pool

В Nucleus SE та же функциональность предоставляется через облегченный интерфейс ниже. Поскольку SE не поддерживает task suspend, связанные поля опущены.

Прототип service call:

STATUS NUSE_Partition_Pool_Information(NUSE_PARTITION_POOL pool, ADDR *start_address, U32 *pool_size, U16 *partition_size, U8 *available, U8 *allocated, U8 *tasks_waiting, NUSE_TASK *first_task)

Параметры:

pool — индекс partition pool.

start_address — указатель на переменную, получающую базовый адрес области данных пула.

pool_size — указатель на переменную, получающую общий размер пула в байтах.

partition_size — указатель на переменную, получающую размер каждой партиции.

available — указатель на переменную, получающую число свободных партиций.

allocated — указатель на переменную, получающую число используемых партиций.

tasks_waiting — указатель на переменную, получающую число ожидающих задач (ноль если task suspend отключен).

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

Возвращает:

NUSE_SUCCESS — операция успешна.

NUSE_INVALID_POOL — pool index недействителен.

NUSE_INVALID_POINTER — один или более pointer аргументов null.

Nucleus SE Реализация информации Partition Pool

SE реализация лаконична: рутина заполняет запрошенные поля и, когда blocking APIs включены, устанавливает waiting-task count и first task index (иначе эти поля обнуляются).

Partition Memory в Nucleus RTOS/SE: Утилитарные сервисы и структуры данных

Получение числа Partition Pools

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

Nucleus RTOS API Call для числа Partition Pools

Прототип service call:

UNSIGNED NU_Established_Partition_Pools(VOID);

Параметры: Нет.

Возвращает: Текущее число активных partition pools.

Nucleus SE API Call для числа Partition Pools

Прототип service call:

U8 NUSE_Partition_Pool_Count(void);

Параметры: Нет.

Возвращает: Число partition pools, сконфигурированных на compile time.

Реализация

SE рутина просто возвращает значение compile-time константы NUSE_PARTITION_POOL_NUMBER.


Встроенный

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