请选择 进入手机版 | 继续访问电脑版
搜索
查看: 813|回复: 0

[原创] 关于cube分发的FreeRTOS不包含memoeypool的问题

[复制链接]

该用户从未签到

52

主题

1122

帖子

67

蝴蝶豆

论坛元老

最后登录
2021-4-24
发表于 2020-6-3 18:47:55 | 显示全部楼层 |阅读模式
stm32cubemx或者对应的软件包再分发时一般带有一个FreeRTOS而且这个FreeRTOS经过CMSIS-OS封装之后,可以用统一接口访问。CMSIS-OS V1的osMemoryPool我记得时可以用的。最近切换到了CMSIS-OS V2之后发现memorypool不可用。
经过一番折腾之后,找到的解决方法是替换CMSIS接口文件。可以从http://github.com/ARM-software/CMSIS-FreeRTOS网站下载对用的FreeRTOS\Source\CMSIS_RTOS_V2下的文件cmsis_os2.c和cmsis_os2.h到和FreeRTOS对应的适配版本。并添加freertos_mpool.h文件。当然如果不放心,甚至可以将整个文件夹的文件都替换了。测试是可以使用的。
f2.png f1.png

顺便提一句,osMemoryPool很适合再ISR中使用。再ISR中尽量不要使用malloc/free,尽管有时测试可用。更不要使用pvPortMAlloc和vPortFree。
如果一定要使用,可考虑创建一个高优先级的线程去接收ISR中的内存分配任务。

如果要支持os_tick相关函数,还需要再cmsis下找到此文件。如果不想支持这项功能还需要对文件做一些修改。现在提供一个可以直接再10.2.1上使用的:
CMSIS_RTOS_V2.zip (24.16 KB, 下载次数: 0)

NewPack.zip

41.83 KB, 下载次数: 0, 下载积分: ST金币 -1

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-3-29 19:15 , Processed in 1.160843 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表