Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

Partitiegeheugen:hulpprogramma's en gegevensstructuren


Bekijk de RTOS Revealed-serie

Dit artikel gaat verder met het bekijken van RTOS-partitiegeheugen.

Partition Pool Utility Services

Nucleus RTOS heeft drie API-aanroepen die hulpprogrammafuncties bieden die zijn gekoppeld aan partitiepools:informatie over een partitiepool retourneren, het aantal partitiepools in de toepassing retourneren en verwijzingen naar alle partitiepools in de toepassing retourneren. De eerste twee hiervan zijn geïmplementeerd in Nucleus SE.

Informatie over partitiepool verkrijgen

Deze serviceaanroep verkrijgt een selectie van informatie over een partitiepool. De Nucleus SE-implementatie verschilt van Nucleus RTOS doordat deze minder informatie retourneert, omdat objectnaamgeving en volgorde opschorten niet worden ondersteund en taakonderbreking mogelijk niet is ingeschakeld.

Nucleus RTOS API-aanroep voor informatie over partitiepool

Serviceoproep prototype:

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 *); /sterk>

Parameters:

zwembad – pointer naar de partitiepool waarover informatie wordt gevraagd

naam – verwijzing naar een bestemmingsgebied van 8 tekens voor de naam van de partitiepool; dit is inclusief ruimte voor de nulterminator.

start_address – een verwijzing naar een variabele, die een verwijzing naar het begin van het gegevensgebied van de partitiepool zal ontvangen

pool_size – een verwijzing naar een variabele, die de grootte van de partitiepool (in bytes) zal ontvangen

partition_size – een verwijzing naar een variabele, die de grootte van partities in deze pool zal ontvangen

beschikbaar – een verwijzing naar een variabele, die het aantal partities zal ontvangen dat momenteel beschikbaar is in deze pool

toegewezen – een verwijzing naar een variabele, die het aantal partities zal ontvangen dat momenteel in gebruik is in deze pool

suspend_type – pointer naar een variabele voor het vasthouden van het type taakonderbreking; geldige typen taakonderbreking zijn NU_FIFO en NU_PRIORITY .

tasks_waiting – een verwijzing naar een variabele die het aantal taken zal ontvangen die op deze partitiepool zijn onderbroken

first_task – een aanwijzer naar een taakaanwijzer waarin de aanwijzer van de eerste onderbroken taak is geplaatst

Retourneren:

NU_SUCCESS – het gesprek is succesvol afgerond

NU_INVALID_POOL – de aanwijzer van de partitiepool is niet geldig

Nucleus SE API-aanroep voor informatie over partitiepool

Deze API-aanroep ondersteunt de belangrijkste functionaliteit van de Nucleus RTOS API.

Serviceoproep prototype:

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)

Parameters:

zwembad – de index van de partitiepool waarover informatie wordt gevraagd

start_address – een verwijzing naar een variabele, die een verwijzing naar het begin van het gegevensgebied van de partitiepool zal ontvangen

pool_size – een verwijzing naar een variabele, die de grootte van de partitiepool (in bytes) zal ontvangen

partition_size – een verwijzing naar een variabele, die de grootte van partities in deze pool zal ontvangen

beschikbaar – een verwijzing naar een variabele, die het aantal partities zal ontvangen dat momenteel beschikbaar is in deze pool

toegewezen – een verwijzing naar een variabele, die het aantal partities zal ontvangen dat momenteel in gebruik is in deze pool

tasks_waiting – een verwijzing naar een variabele die het aantal taken zal ontvangen die op deze partitiepool zijn onderbroken (niets geretourneerd als taakonderbreking is uitgeschakeld)

first_task – een verwijzing naar een variabele van het type NUSE_TASK die de index van de eerste onderbroken taak zal ontvangen (niets geretourneerd als taakonderbreking is uitgeschakeld)

Retourneren:

NUSE_SUCCESS – het gesprek is succesvol afgerond

NUSE_INVALID_POOL – de partitiepoolindex is niet geldig

NUSE_INVALID_POINTER – een of meer van de aanwijzerparameters is ongeldig

Nucleus SE-implementatie van partitiepoolinformatie

De implementatie van deze API-aanroep is vrij eenvoudig:

De functie retourneert de status van de partitiepool. Als het blokkeren van API-aanroepen is ingeschakeld, wordt het aantal wachtende taken en de index van de eerste geretourneerd (anders worden deze twee parameters op 0 gezet).

Het aantal partitiepools verkrijgen

Deze serviceaanroep retourneert het aantal partitiepools dat in de toepassing is geconfigureerd. Terwijl dit in Nucleus RTOS in de loop van de tijd zal variëren en de geretourneerde waarde het huidige aantal pools vertegenwoordigt, wordt in Nucleus SE de geretourneerde waarde ingesteld tijdens de build en kan deze niet veranderen.

Nucleus RTOS API-oproep voor aantal partitiepools

Deze API-aanroep ondersteunt de belangrijkste functionaliteit van de Nucleus RTOS API.

Serviceoproep prototype:

UNSIGNED NU_Established_Partition_Pools(VOID);

Parameters:

Geen

Retourneren:

Het aantal aangemaakte partitiepools in de applicatie

Nucleus SE API-oproep voor aantal partitiepools

Deze API-aanroep ondersteunt de belangrijkste functionaliteit van de Nucleus RTOS API.

Serviceoproep prototype:

U8 NUSE_Partition_Pool_Count(void);

Parameters:

Geen

Retourneren:

Het aantal geconfigureerde partitiepools in de applicatie

Implementatie

De implementatie van deze API-aanroep is bijna triviaal eenvoudig:de waarde van de #define symbool NUSE_PARTITION_POOL_NUMBER wordt geretourneerd.


Ingebed

  1. De voor- en nadelen van cloud versus interne services
  2. Microsoft Azure' Blockchain Token en Data Management Services
  3. termen en concepten voor digitaal geheugen
  4. Microprocessors
  5. Structuren en klassen in C++
  6. Mailboxen:introductie en basisservices
  7. Semaphores:nutsvoorzieningen en datastructuren
  8. Semaphores:introductie en basisdiensten
  9. Event flag-groepen:nutsvoorzieningen en datastructuren
  10. Event flag-groepen:introductie en basisservices
  11. Wachtrijen:introductie en basisservices