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

Partition Memory in Nucleus RTOS/SE: Utility Services en Datastructuren

Partition Memory in Nucleus RTOS/SE: Utility Services en Datastructuren
Bekijk de RTOS Revealed serie

Opbouwend op onze eerdere verkenning van RTOS partition memory, duikt dit artikel in de praktische utilities en onderliggende datastructuren die efficiënt geheugenbeheer mogelijk maken in Nucleus RTOS en de gestroomlijnde editie, Nucleus SE.

Partition Pool Utility Services

Nucleus RTOS biedt drie dedicated API-calls die essentiële informatie- en beheercapaciteiten bieden voor partition pools: gedetailleerde pool-informatie ophalen, het totale aantal pools in een applicatie bepalen, en pointers naar alle pool-structuren verkrijgen. De eerste twee functies worden volledig ondersteund in Nucleus SE, althans met enkele feature-verschillen door de gereduceerde feature-set.

Partition Pool Informatie Verkrijgen

De NU_Partition_Pool_Information service returned een uitgebreide snapshot van een gespecificeerde partition pool. In Nucleus SE returned de functie een afgestutte set data, reflechterend de afwezigheid van object-naming, suspend-ordering, en task-suspend-ondersteuning.

Nucleus RTOS API Call voor Partition Pool Informatie

Service call 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 *tasks_waiting, NU_TASK **first_task);

Parameters:

pool – pointer naar de partition pool waarvoor informatie gevraagd wordt.

name – pointer naar een 8-karakter-buffer die de pool-naam ontvangt (inclusief null-terminator).

start_address – pointer naar een variabele die het basisadres van de pool's data-area ontvangt.

pool_size – pointer naar een variabele die de totale pool-grootte in bytes ontvangt.

partition_size – pointer naar een variabele die de grootte van elke partitie ontvangt.

available – pointer naar een variabele die het aantal momenteel vrije partities ontvangt.

allocated – pointer naar een variabele die het aantal partities in gebruik ontvangt.

suspend_type – pointer naar een variabele die het suspend-beleid ontvangt (geldige waarden: NU_FIFO of NU_PRIORITY).

tasks_waiting – pointer naar een variabele die het aantal taken ontvangt dat gesuspendeerd is op deze pool.

first_task – pointer naar een variabele die de pointer naar de eerste gesuspendeerde taak ontvangt.

Returns:

NU_SUCCESS – operatie geslaagd.

NU_INVALID_POOL – de geleverde pool-pointer is ongeldig.

Nucleus SE API Call voor Partition Pool Informatie

In Nucleus SE wordt dezelfde functionaliteit geboden via de gestroomlijnde interface hieronder. Omdat SE geen task-suspend ondersteunt, worden gerelateerde velden weggelaten.

Service call 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:

pool – de index van de partition pool.

start_address – pointer naar een variabele die het basisadres van de pool's data-area ontvangt.

pool_size – pointer naar een variabele die de totale pool-grootte in bytes ontvangt.

partition_size – pointer naar een variabele die de grootte van elke partitie ontvangt.

available – pointer naar een variabele die het aantal vrije partities ontvangt.

allocated – pointer naar een variabele die het aantal gebruikte partities ontvangt.

tasks_waiting – pointer naar een variabele die het aantal wachtende taken ontvangt (nul als task-suspend uitgeschakeld).

first_task – pointer naar een variabele die de index van de eerste gesuspendeerde taak ontvangt (nul als task-suspend uitgeschakeld).

Returns:

NUSE_SUCCESS – operatie geslaagd.

NUSE_INVALID_POOL – de pool-index is ongeldig.

NUSE_INVALID_POINTER – een of meer pointer-argumenten zijn null.

Nucleus SE Implementatie van Partition Pool Informatie

De SE-implementatie is beknopt: de routine vult de gevraagde velden en, wanneer blocking-API's ingeschakeld zijn, zet de wachtende-taak-count en de eerste-taak-index (anders worden deze velden genuld).

Partition Memory in Nucleus RTOS/SE: Utility Services en Datastructuren

Het Aantal Partition Pools Verkrijgen

Deze service returned het totale aantal partition pools gedefinieerd in de applicatie. In Nucleus RTOS kan de count dynamisch veranderen als pools gecreëerd of vernietigd worden; in Nucleus SE is de count fixed op build-time.

Nucleus RTOS API Call voor Aantal Partition Pools

Service call prototype:

UNSIGNED NU_Established_Partition_Pools(VOID);

Parameters: Geen.

Returns: Het huidige aantal actieve partition pools.

Nucleus SE API Call voor Aantal Partition Pools

Service call prototype:

U8 NUSE_Partition_Pool_Count(void);

Parameters: Geen.

Returns: Het aantal partition pools geconfigureerd op compile-time.

Implementatie

De SE-routine returned simpelweg de waarde van de compile-time constant NUSE_PARTITION_POOL_NUMBER.

Ingebed

  1. Fundamenten van digitaal geheugen: adressering, toegang en volatiliteit
  2. Microprocessoren: de evolutie van stored-program computing
  3. C++ Structuren vs Classes: Een praktische gids voor embedded-ontwikkelaars
  4. Mailboxes in Nucleus SE: Een Practische Gids voor Configuratie en Gebruik
  5. Semaphores in Nucleus RTOS: Utility Services & Datastructuren
  6. Semaphores in Nucleus SE: Overzicht, Configuratie en API-Essenties
  7. Event Flag Groups in Nucleus RTOS/SE Beheersen: Utility Services & Datastructuren
  8. Event Flag Groups in Nucleus SE: Een Introductie tot Configuratie en API-Gebruik
  9. Queues in Nucleus SE: Introductie en Kern-Service-Calls
  10. Cloud vs. On-Premises Servers: De Juiste Hostingoplossing Kiezen
  11. Microsoft Azure Kondigt Blockchain Tokenisatie & Datamanagement Services Aan