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:servicios de utilidad y estructuras de datos


Ver la serie RTOS Revealed

Este artículo continúa el análisis de la memoria de partición RTOS.

Servicios de utilidad del grupo de particiones

Nucleus RTOS tiene tres llamadas API que proporcionan funciones de utilidad asociadas con grupos de particiones:devolver información sobre un grupo de particiones, devolver el número de grupos de particiones en la aplicación y devolver punteros a todos los grupos de particiones en la aplicación. Los dos primeros se implementan en Nucleus SE.

Obtención de información del grupo de particiones

Esta llamada de servicio obtiene una selección de información sobre un grupo de particiones. La implementación de Nucleus SE se diferencia de Nucleus RTOS en que devuelve menos información, ya que no se admiten la asignación de nombres de objetos y el orden de suspensión y es posible que la suspensión de tareas no esté habilitada.

Llamada a la API Nucleus RTOS para obtener información sobre el grupo de particiones

Prototipo de llamada de servicio:

ESTADO NU_Partition_Pool_Information (NU_PARTITION_POOL * pool, CHAR * nombre, VOID ** start_address, UNSIGNED * pool_size, UNSIGNED * partition_size, UNSIGNED * disponible, UNSIGNED * asignado, OPTION * suspend_type, UNSIGNED * tasksT_waiting, ** / fuerte>

Parámetros:

piscina - puntero al grupo de particiones sobre el que se solicita información

nombre - puntero a un área de destino de 8 caracteres para el nombre del grupo de particiones; esto incluye espacio para el terminador nulo.

start_address - un puntero a una variable, que recibirá un puntero al inicio del área de datos del grupo de particiones

tamaño_piscina - un puntero a una variable, que recibirá el tamaño del grupo de particiones (en bytes)

tamaño_de_partición - un puntero a una variable, que recibirá el tamaño de las particiones en este grupo

disponible - un puntero a una variable, que recibirá el número de particiones actualmente disponibles en este grupo

asignado - un puntero a una variable, que recibirá el número de particiones actualmente en uso en este grupo

suspend_type - puntero a una variable para mantener el tipo de suspensión de la tarea; los tipos de suspensión de tareas válidos son NU_FIFO y NU_PRIORITY .

tareas_en espera - un puntero a una variable que recibirá el número de tareas suspendidas en este grupo de particiones

primera_tarea - un puntero a un puntero de tarea en el que se coloca el puntero de la primera tarea suspendida

Devoluciones:

NU_SUCCESS - la llamada se completó con éxito

NU_INVALID_POOL - el puntero del grupo de particiones no es válido

Llamada a la API de Nucleus SE para obtener información sobre el grupo de particiones

Esta llamada a la API admite la funcionalidad clave de la API Nucleus RTOS.

Prototipo de llamada de servicio:

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

Parámetros:

piscina - el índice del grupo de particiones sobre el que se solicita información

start_address - un puntero a una variable, que recibirá un puntero al inicio del área de datos del grupo de particiones

tamaño_piscina - un puntero a una variable, que recibirá el tamaño del grupo de particiones (en bytes)

tamaño_de_partición - un puntero a una variable, que recibirá el tamaño de las particiones en este grupo

disponible - un puntero a una variable, que recibirá el número de particiones actualmente disponibles en este grupo

asignado - un puntero a una variable, que recibirá el número de particiones actualmente en uso en este grupo

tareas_en espera - un puntero a una variable que recibirá el número de tareas suspendidas en este grupo de particiones (no se devuelve nada si la suspensión de tareas está deshabilitada)

primera_tarea - un puntero a una variable de tipo NUSE_TASK que recibirá el índice de la primera tarea suspendida (no se devuelve nada si la suspensión de la tarea está deshabilitada)

Devoluciones:

NUSE_SUCCESS - la llamada se completó con éxito

NUSE_INVALID_POOL - el índice del grupo de particiones no es válido

NUSE_INVALID_POINTER - uno o más de los parámetros del puntero no es válido

Implementación de Nucleus SE de la información del grupo de particiones

La implementación de esta llamada a la API es bastante sencilla:

La función devuelve el estado del grupo de particiones. Luego, si el bloqueo de llamadas a la API está habilitado, se devuelve el número de tareas en espera y el índice de la primera (de lo contrario, estos dos parámetros se establecen en 0).

Obtención del número de grupos de particiones

Esta llamada de servicio devuelve el número de grupos de particiones configurados en la aplicación. Mientras que en Nucleus RTOS esto variará con el tiempo y el valor devuelto representará el número actual de grupos, en Nucleus SE el valor devuelto se establece en el momento de la compilación y no puede cambiar.

Nucleus RTOS API Call for Number of Partition Pools

Esta llamada a la API admite la funcionalidad clave de la API Nucleus RTOS.

Prototipo de llamada de servicio:

UNSIGNED NU_Established_Partition_Pools (VOID);

Parámetros:

Ninguno

Devoluciones:

La cantidad de grupos de particiones creados en la aplicación

Llamada a la API de Nucleus SE para conocer el número de grupos de particiones

Esta llamada a la API admite la funcionalidad clave de la API Nucleus RTOS.

Prototipo de llamada de servicio:

U8 NUSE_Partition_Pool_Count (void);

Parámetros:

Ninguno

Devoluciones:

La cantidad de grupos de particiones configurados en la aplicación

Implementación

La implementación de esta llamada a la API es casi trivialmente simple:el valor de #define símbolo NUSE_PARTITION_POOL_NUMBER se devuelve.


Incrustado

  1. Ventajas y desventajas de los servicios en la nube frente a los servicios internos
  2. Servicios de gestión de datos y token de cadena de bloques de Microsoft Azure
  3. Términos y conceptos de la memoria digital
  4. Microprocesadores
  5. Estructuras y clases en C ++
  6. Buzones de correo:introducción y servicios básicos
  7. Semáforos:servicios públicos y estructuras de datos
  8. Semáforos:introducción y servicios básicos
  9. Grupos de indicadores de eventos:servicios públicos y estructuras de datos
  10. Grupos de indicadores de eventos:introducción y servicios básicos
  11. Colas:introducción y servicios básicos