Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

Partition Memory in Nucleus RTOS/SE: Utility Services und Data Structures

Partition Memory in Nucleus RTOS/SE: Utility Services und Data Structures
View the RTOS Revealed series

Aufbauend auf unserer vorherigen Exploration von RTOS Partition Memory, taucht dieser Artikel in die praktischen Utilities und underlying Data Structures ein, die effizientes Memory Management in Nucleus RTOS und seiner streamlined Edition, Nucleus SE, ermöglichen.

Partition Pool Utility Services

Nucleus RTOS bietet drei dedizierte API Calls, die essenzielle Information und Management Capabilities für Partition Pools bereitstellen: Retrieval detaillierter Pool Information, Bestimmung der Gesamtzahl Pools in einer Applikation, und Erwerb von Pointern zu allen Pool Structures. Die ersten zwei Funktionen sind in Nucleus SE voll supported, albeit mit einigen Feature Unterschieden aufgrund seines reduzierten Feature Sets.

Partition Pool Information erhalten

Der NU_Partition_Pool_Information Service returned einen comprehensive Snapshot eines spezifizierten Partition Pools. In Nucleus SE returned die Funktion ein pared-down Set an Data, reflektierend die Abwesenheit von Object Naming, Suspend Ordering, und Task Suspend Support.

Nucleus RTOS API Call für Partition Pool Information

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

Parameter:

pool – Pointer zum Partition Pool, für den Information requested ist.

name – Pointer zu 8-Character Buffer, der Pool Namen empfängt (inklusive Null Terminator).

start_address – Pointer zu Variable, die Base Address des Pool Data Area empfängt.

pool_size – Pointer zu Variable, die Total Pool Size in Bytes empfängt.

partition_size – Pointer zu Variable, die Size jedes Partitions empfängt.

available – Pointer zu Variable, die Count aktuell freier Partitions empfängt.

allocated – Pointer zu Variable, die Count in-use Partitions empfängt.

suspend_type – Pointer zu Variable, die Suspend Policy empfängt (valid values: NU_FIFO oder NU_PRIORITY).

tasks_waiting – Pointer zu Variable, die Anzahl Tasks suspended auf diesem Pool empfängt.

first_task – Pointer zu Variable, die Pointer zum ersten suspended Task empfängt.

Returns:

NU_SUCCESS – Operation succeeded.

NU_INVALID_POOL – Provided Pool Pointer ist invalid.

Nucleus SE API Call für Partition Pool Information

In Nucleus SE wird die gleiche Funktionalität via dem streamlined Interface unten bereitgestellt. Da SE Task Suspend nicht supported, werden related Fields omitted.

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)

Parameter:

pool – der Index des Partition Pools.

start_address – Pointer zu Variable, die Base Address des Pool Data Area empfängt.

pool_size – Pointer zu Variable, die Total Pool Size in Bytes empfängt.

partition_size – Pointer zu Variable, die Size jedes Partitions empfängt.

available – Pointer zu Variable, die Anzahl freier Partitions empfängt.

allocated – Pointer zu Variable, die Anzahl used Partitions empfängt.

tasks_waiting – Pointer zu Variable, die Anzahl wartender Tasks empfängt (Null falls Task Suspend disabled).

first_task – Pointer zu Variable, die Index des ersten suspended Tasks empfängt (Null falls Task Suspend disabled).

Returns:

NUSE_SUCCESS – Operation succeeded.

NUSE_INVALID_POOL – Pool Index ist invalid.

NUSE_INVALID_POINTER – Ein oder mehrere Pointer Argumente sind Null.

Nucleus SE Implementation of Partition Pool Information

Die SE Implementation ist concise: Die Routine populated die requested Fields und, wenn Blocking APIs enabled sind, setzt den Waiting-Task Count und den First Task Index (andernfalls werden diese Fields gezeroed).

Partition Memory in Nucleus RTOS/SE: Utility Services und Data Structures

Anzahl der Partition Pools erhalten

Dieser Service returned die Gesamtzahl der in der Applikation definierten Partition Pools. In Nucleus RTOS kann der Count dynamisch wechseln, wenn Pools created oder destroyed werden; in Nucleus SE ist der Count zur Build Time fixiert.

Nucleus RTOS API Call für Number of Partition Pools

Service Call Prototype:

UNSIGNED NU_Established_Partition_Pools(VOID);

Parameters: None.

Returns: Die aktuelle Anzahl aktiver Partition Pools.

Nucleus SE API Call für Number of Partition Pools

Service Call Prototype:

U8 NUSE_Partition_Pool_Count(void);

Parameters: None.

Returns: Die Anzahl der zur Compile Time konfigurierten Partition Pools.

Implementation

Die SE Routine returned einfach den Wert der Compile-Time Constant NUSE_PARTITION_POOL_NUMBER.

Eingebettet

  1. Cloud vs. In-House Server: Die richtige Hosting-Lösung wählen
  2. Microsoft Azure kündigt Blockchain-Tokenisierung & Data Management Services an
  3. Digitaler Speicher Grundlagen: Adressierung, Zugriff und Volatilität
  4. Mikroprozessoren: Die Evolution des Stored-Program-Computing
  5. C++ Structures vs. Classes: Praktischer Leitfaden für Embedded-Entwickler
  6. Mailboxes in Nucleus SE: Praktischer Guide zu Konfiguration und Nutzung
  7. Semaphores in Nucleus RTOS: Utility Services & Data Structures
  8. Semaphores in Nucleus SE: Überblick, Konfiguration und API Essentials
  9. Event Flag Groups meistern: Utility Services & Data Structures in Nucleus RTOS/SE
  10. Event Flag Groups in Nucleus SE: Einführender Guide zu Konfiguration und API Usage