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

Разделение памяти:служебные службы и структуры данных


Посмотреть серию раскрытых ОСРВ

В этой статье мы продолжаем рассмотрение разделов памяти RTOS.

Служебные службы пула разделов

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

Получение информации о пуле разделов

Этот служебный вызов получает выборку информации о пуле разделов. Реализация Nucleus SE отличается от Nucleus RTOS тем, что возвращает меньше информации, поскольку именование объектов и порядок приостановки не поддерживаются, а приостановка задачи может быть отключена.

Вызов API Nucleus RTOS для получения информации о пуле разделов

Прототип сервисного вызова:

<цитата>

STATUS NU_Partition_Pool_Information (NU_PARTITION_POOL * pool, CHAR * name, VOID ** start_address, UNSIGNED * pool_size, UNSIGNED * partition_size, UNSIGNED * доступно, UNSIGNED * выделено, OPTION * suspend_type, UNSIGNED * tasks_Twaiting); ** / сильный>

Параметры:

<цитата>

бассейн - указатель на пул разделов, информация о котором запрашивается

имя - указатель на 8-значную целевую область для имени пула разделов; это включает место для нулевого терминатора.

начальный_адрес - указатель на переменную, которая получит указатель на начало области данных пула разделов

pool_size - указатель на переменную, которая получит размер пула разделов (в байтах)

размер_раздела - указатель на переменную, которая получит размер разделов в этом пуле

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

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

suspend_type - указатель на переменную для хранения типа приостановки задачи; допустимые типы приостановки задачи: NU_FIFO и NU_PRIORITY .

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

первая_задача - указатель на указатель задачи, в который помещается указатель первой приостановленной задачи

Возврат:

<цитата>

NU_SUCCESS - звонок был успешно завершен

NU_INVALID_POOL - указатель пула разделов недействителен

Вызов Nucleus SE API для получения информации о пуле разделов

Этот вызов API поддерживает ключевые функции Nucleus RTOS API.

Прототип сервисного вызова:

<цитата>

STATUS NUSE_Partition_Pool_Information (NUSE_PARTITION_POOL pool, ADDR * start_address, U32 * pool_size, U16 * partition_size, U8 * доступен, U8 * выделен, U8 * tasks_waiting, NUSE_TASK * first_task)

Параметры:

<цитата>

бассейн - индекс пула разделов, информация о котором запрашивается

начальный_адрес - указатель на переменную, которая получит указатель на начало области данных пула разделов

pool_size - указатель на переменную, которая получит размер пула разделов (в байтах)

размер_раздела - указатель на переменную, которая получит размер разделов в этом пуле

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

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

tasks_waiting - указатель на переменную, которая получит количество задач, приостановленных в этом пуле разделов (ничего не возвращается, если приостановка задачи отключена)

первая_задача - указатель на переменную типа NUSE_TASK который получит индекс первой приостановленной задачи (ничего не возвращается, если приостановка задачи отключена)

Возврат:

<цитата>

NUSE_SUCCESS - звонок был успешно завершен

NUSE_INVALID_POOL - недействительный индекс пула разделов

NUSE_INVALID_POINTER - один или несколько параметров указателя недопустимы

Реализация Nucleus SE информации о пуле разделов

Реализация этого вызова API довольно проста:

Функция возвращает статус пула разделов. Затем, если включена блокировка вызовов API, возвращается количество ожидающих задач и индекс первой (в противном случае эти два параметра устанавливаются на 0).

Получение количества пулов разделов

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

Вызов API Nucleus RTOS для определения количества пулов разделов

Этот вызов API поддерживает ключевые функции Nucleus RTOS API.

Прототип сервисного вызова:

<цитата>

UNSIGNED NU_Established_Partition_Pools (VOID);

Параметры:

<цитата>

Нет

Возврат:

<цитата>

Количество созданных пулов разделов в приложении

Вызов Nucleus SE API для определения количества пулов разделов

Этот вызов API поддерживает ключевые функции Nucleus RTOS API.

Прототип сервисного вызова:

<цитата>

U8 NUSE_Partition_Pool_Count (недействительно);

Параметры:

<цитата>

Нет

Возврат:

<цитата>

Количество настроенных пулов разделов в приложении

Реализация

Реализация этого вызова API почти тривиально проста:значение #define символ NUSE_PARTITION_POOL_NUMBER возвращается.


Встроенный

  1. Плюсы и минусы облака по сравнению с собственными службами
  2. Токен блокчейна Microsoft Azure и службы управления данными
  3. Термины и концепции цифровой памяти
  4. Микропроцессоры
  5. Структуры и классы в C ++
  6. Почтовые ящики:введение и основные услуги
  7. Семафоры:служебные службы и структуры данных
  8. Семафоры:введение и базовые услуги
  9. Группы флагов событий:служебные службы и структуры данных
  10. Группы флагов событий:введение и базовые услуги