CMSIS-RTOS2 文档翻译 之 RTX v5 实现(技术数据)

技术数据

支持的工具链

Keil RTX5 是使用常用工具链和开发环境开发和测试的。

Arm 编译器(Arm/Keil MDK,uVision5)

RTX5 的主要部分是使用 Arm 编译器和 Arm/Keil MDK 开发和优化的。当前版本已经过以下版本的测试:

  • Arm Compiler 5.06 Update 6
  • Arm Compiler 6.6.2 (长期维护)
  • Arm Compiler 6.9
  • 使用 uVision 5.24 进行 RTOS 调试

IAR 嵌入式开发平台

RTX5 已被移植到全面支持 IAR 嵌入式开发平台。以下版本已知可用:

  • IAR Embedded Workbench 7.7 (社区报告)
  • IAR Embedded Workbench 7.80.4
  • IAR Embedded Workbench 8.20.1

GNU 编译器集合

RTX5 也被移植到支持 GCC,维护主要是继承社区贡献。积极的开发目前正在测试:

  • GNU Tools for Arm Embedded 6.3.1 20170620

控制块大小

在 RTX5 头文件中定义 Keil RTX5 特定的控制块定义(包括大小)以及内存池和消息队列内存要求:

/// Control Block sizes
#define osRtxThreadCbSize sizeof(osRtxThread_t)
#define osRtxTimerCbSize sizeof(osRtxTimer_t)
#define osRtxEventFlagsCbSize sizeof(osRtxEventFlags_t)
#define osRtxMutexCbSize sizeof(osRtxMutex_t)
#define osRtxSemaphoreCbSize sizeof(osRtxSemaphore_t)
#define osRtxMemoryPoolCbSize sizeof(osRtxMemoryPool_t)
#define osRtxMessageQueueCbSize sizeof(osRtxMessageQueue_t)
/// Memory size in bytes for Memory Pool storage.
/// \param block_count maximum number of memory blocks in memory pool.
/// \param block_size memory block size in bytes.
#define osRtxMemoryPoolMemSize(block_count, block_size) \
(4*(block_count)*(((block_size)+3)/4))
/// Memory size in bytes for Message Queue storage.
/// \param msg_count maximum number of messages in queue.
/// \param msg_size maximum message size in bytes.
#define osRtxMessageQueueMemSize(msg_count, msg_size) \
(4*(msg_count)*(3+(((msg_size)+3)/4)))

如果使用全局内存池为 RTOS 对象分配内存,则需要知道每个对象在出现错误时所需的大小。目前,控制块大小如下(如有更改,恕不另行通知):

类型以字节为单位控制块大小
线程68
定时器32
事件标志16
互斥锁28
信号量16
内存池36
消息队列52

内存池和消息队列数据存储所需的内存大小可以从上述宏中确定。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值