在STM32CubeIDE中配置FreeRTOS中间层时需要选择interface,其中有三个选项:Disable、CMSIS_V1和CMSIS_V2。
在ARM提供的部件列表中我们可以看到RTOS v1以及RTOS v2两个有关RTOS的部件。
RTOS v1:
Common API for real-time operating systems along with a reference implementation based on RTX. It enables software components that can work across multiple RTOS systems.
用于实时操作系统的通用API以及基于RTX的参考实现。它使软件组件能够跨多个RTOS系统工作。
RTOS v2
Extends CMSIS-RTOS v1 with Armv8-M support, dynamic object creation, provisions for multi-core systems, binary compatible interface.
扩展CMSIS-RTOS v1,支持Armv8-M,动态对象创建,提供多核系统,二进制兼容接口。
上面描述已经很清楚:RTOS v1使得软件能够在不同的实时操作系统下运行(屏蔽不同RTOS提供的API的差别),而RTOS
v2则是拓展了RTOS v1,兼容更多的CPU架构和实时操作系统。
在只用stm32cubemx生成freertos代码的情况下,其中:
CMSIS_V1:
Program Size: Code=5160 RO-data=476 RW-data=116 ZI-data=4940
CMSIS_V2:
Program Size: Code=8544 RO-data=484 RW-data=140 ZI-data=7388
正常CMSIS_V1够用了,普通功能选CMSIS_V1,高级功能选CMSIS_V2
本文参考
https://blog.csdn.net/xtqbp/article/details/121786231 和 https://blog.csdn.net/weixin_43879311/article/details/109958651?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-5-109958651-blog-125812216.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source 两位博主的内容