Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Incrustado

Memoria de partición en Nucleus RTOS/SE: Servicios de utilidad y estructuras de datos

Memoria de partición en Nucleus RTOS/SE: Servicios de utilidad y estructuras de datos
Ver la serie RTOS Revealed

Basándonos en nuestra exploración previa de memoria de partición RTOS, este artículo profundiza en las utilidades prácticas y estructuras de datos subyacentes que permiten una gestión de memoria eficiente en Nucleus RTOS y su edición simplificada, Nucleus SE.

Servicios de Utilidad de Pool de Particiones

Nucleus RTOS ofrece tres llamadas API dedicadas que proporcionan capacidades esenciales de información y gestión para pools de particiones: recuperar información detallada del pool, determinar el número total de pools en una aplicación y adquirir punteros a todas las estructuras de pool. Las dos primeras funciones están completamente soportadas en Nucleus SE, aunque con algunas diferencias de características debido a su conjunto reducido.

Obtención de Información de Pool de Particiones

El servicio NU_Partition_Pool_Information retorna una instantánea completa de un pool de particiones especificado. En Nucleus SE, la función retorna un conjunto de datos reducido, reflejando la ausencia de nombramiento de objetos, orden de suspensión y soporte de suspensión de tareas.

Llamada API de Nucleus RTOS para Información de Pool de Particiones

Prototipo de llamada de servicio:

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);

Parámetros:

pool – puntero al pool de particiones para el que se solicita información.

name – puntero a buffer de 8 caracteres que recibirá el nombre del pool (incluyendo terminador nulo).

start_address – puntero a variable que recibirá la dirección base del área de datos del pool.

pool_size – puntero a variable que recibirá el tamaño total del pool en bytes.

partition_size – puntero a variable que recibirá el tamaño de cada partición.

available – puntero a variable que recibirá el conteo de particiones actualmente libres.

allocated – puntero a variable que recibirá el conteo de particiones en uso.

suspend_type – puntero a variable que recibirá la política de suspensión (valores válidos: NU_FIFO o NU_PRIORITY).

tasks_waiting – puntero a variable que recibirá el número de tareas suspendidas en este pool.

first_task – puntero a variable que recibirá el puntero a la primera tarea suspendida.

Retorna:

NU_SUCCESS – operación exitosa.

NU_INVALID_POOL – el puntero de pool proporcionado es inválido.

Llamada API de Nucleus SE para Información de Pool de Particiones

En Nucleus SE, la misma funcionalidad se proporciona mediante la interfaz simplificada a continuación. Como SE no soporta suspensión de tareas, los campos relacionados se omiten.

Prototipo de llamada de servicio:

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)

Parámetros:

pool – el índice del pool de particiones.

start_address – puntero a variable que recibirá la dirección base del área de datos del pool.

pool_size – puntero a variable que recibirá el tamaño total del pool en bytes.

partition_size – puntero a variable que recibirá el tamaño de cada partición.

available – puntero a variable que recibirá el número de particiones libres.

allocated – puntero a variable que recibirá el número de particiones usadas.

tasks_waiting – puntero a variable que recibirá el número de tareas en espera (cero si la suspensión de tareas está deshabilitada).

first_task – puntero a variable que recibirá el índice de la primera tarea suspendida (cero si la suspensión de tareas está deshabilitada).

Retorna:

NUSE_SUCCESS – operación exitosa.

NUSE_INVALID_POOL – el índice de pool es inválido.

NUSE_INVALID_POINTER – uno o más argumentos puntero son nulos.

Implementación de Nucleus SE para Información de Pool de Particiones

La implementación SE es concisa: la rutina popula los campos solicitados y, cuando las APIs de bloqueo están habilitadas, establece el conteo de tareas en espera y el índice de la primera tarea (de lo contrario estos campos se ponen a cero).

Memoria de partición en Nucleus RTOS/SE: Servicios de utilidad y estructuras de datos

Obtención del Número de Pools de Particiones

Este servicio retorna el número total de pools de particiones definidos en la aplicación. En Nucleus RTOS, el conteo puede cambiar dinámicamente a medida que se crean o destruyen pools; en Nucleus SE, el conteo es fijo en tiempo de compilación.

Llamada API de Nucleus RTOS para Número de Pools de Particiones

Prototipo de llamada de servicio:

UNSIGNED NU_Established_Partition_Pools(VOID);

Parámetros: Ninguno.

Retorna: El número actual de pools de particiones activos.

Llamada API de Nucleus SE para Número de Pools de Particiones

Prototipo de llamada de servicio:

U8 NUSE_Partition_Pool_Count(void);

Parámetros: Ninguno.

Retorna: El número de pools de particiones configurados en tiempo de compilación.

Implementación

La rutina SE simplemente retorna el valor de la constante en tiempo de compilación NUSE_PARTITION_POOL_NUMBER.

Incrustado

  1. Fundamentos de Memoria Digital: Direccionamiento, Acceso y Volatilidad
  2. Microprocesadores: La Evolución de la Computación con Programa Almacenado
  3. Estructuras vs Clases en C++: Guía práctica para desarrolladores embebidos
  4. Buzones en Nucleus SE: Guía práctica de configuración y uso
  5. Semaforos en Nucleus RTOS: Servicios de utilidad y estructuras de datos
  6. Semaforos en Nucleus SE: Visión general, configuración y API esenciales
  7. Dominando grupos de banderas de evento: Servicios de utilidad y estructuras de datos en Nucleus RTOS/SE
  8. Grupos de banderas de evento en Nucleus SE: Guía introductoria de configuración y uso de API
  9. Colas en Nucleus SE: Introducción y llamadas de servicio principales
  10. Cloud vs. servidores on-premise: eligiendo la solución de hosting adecuada
  11. Microsoft Azure anuncia servicios de tokenización Blockchain y gestión de datos