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

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部