Nucleus RTOS/SE分区内存:实用服务与数据结构
查看RTOS Revealed系列
基于我们早前对RTOS分区内存的探索,本文深入实用工具和底层数据结构,实现Nucleus RTOS及其精简版Nucleus SE中的高效内存管理。
分区池实用服务
Nucleus RTOS提供三个专用API调用,为分区池提供基本信息和管理能力:检索详细池信息、确定应用中池总数、获取所有池结构指针。前两功能在Nucleus SE全支持,因功能集减少有所差异。
获取分区池信息
NU_Partition_Pool_Information服务返回指定分区池综合快照。在Nucleus SE中,函数返回精简数据集,反映无对象命名、挂起排序、任务挂起支持。
Nucleus RTOS分区池信息API调用
服务调用原型:
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);
参数:
pool – 请求信息的分区池指针。
name – 接收池名称(含空终止符)的8字符缓冲区指针。
start_address – 接收池数据区基址的变量指针。
pool_size – 接收池总大小(字节)的变量指针。
partition_size – 接收每分区大小的变量指针。
available – 接收当前空闲分区计数的变量指针。
allocated – 接收使用中分区计数的变量指针。
suspend_type – 接收挂起策略(有效值:NU_FIFO或NU_PRIORITY)的变量指针。
tasks_waiting – 接收挂起在该池任务数的变量指针。
first_task – 接收首个挂起任务指针的变量指针。
返回:
NU_SUCCESS – 操作成功。
NU_INVALID_POOL – 提供的池指针无效。
Nucleus SE分区池信息API调用
Nucleus SE通过下方精简接口提供相同功能。因SE不支持任务挂起,相关字段省略。
服务调用原型:
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)
参数:
pool – 分区池索引。
start_address – 接收池数据区基址的变量指针。
pool_size – 接收池总大小(字节)的变量指针。
partition_size – 接收每分区大小的变量指针。
available – 接收空闲分区数的变量指针。
allocated – 接收使用中分区数的变量指针。
tasks_waiting – 接收等待任务数的变量指针(任务挂起禁用时为零)。
first_task – 接收首个挂起任务索引的变量指针(任务挂起禁用时为零)。
返回:
NUSE_SUCCESS – 操作成功。
NUSE_INVALID_POOL – 池索引无效。
NUSE_INVALID_POINTER – 一个或多个指针参数为空。
Nucleus SE分区池信息实现
SE实现简洁:例程填充请求字段,启用阻塞API时设置等待任务计数和首个任务索引(否则置零)。

获取分区池数量
此服务返回应用中定义的分区池总数。在Nucleus RTOS中计数可随池创建/销毁动态变化;在Nucleus SE中构建时固定。
Nucleus RTOS分区池数量API调用
服务调用原型:
UNSIGNED NU_Established_Partition_Pools(VOID);
参数:无。
返回:活动分区池当前数量。
Nucleus SE分区池数量API调用
服务调用原型:
U8 NUSE_Partition_Pool_Count(void);
参数:无。
返回:编译时配置的分区池数量。
实现
SE例程仅返回编译时常量NUSE_PARTITION_POOL_NUMBER的值。
嵌入式
- 数字存储器基础:寻址、访问与易失性
- 微处理器:存储程序计算的演进
- C++结构体与类:嵌入式开发者实战指南
- Nucleus SE邮箱:配置与使用实战指南
- Nucleus RTOS信号量:实用服务与数据结构
- Nucleus SE信号量:概览、配置与API要点
- 掌握事件标志组:Nucleus RTOS/SE实用服务与数据结构
- Nucleus SE事件标志组:配置与API使用入门指南
- Nucleus SE队列:介绍与核心服务调用
- 云托管 vs 自建服务器:如何选择适合的数据托管方案
- Microsoft Azure推出区块链代币化与数据管理服务:重塑数据安全新范式
- 构建负责任可信AI:可解释性、问责制与伦理三大支柱实战指南