OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6751|回复: 11

关于freeRTOS内存管理 堆和栈的使用心得

[复制链接]

22

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2012-3-11
在线时间
31 小时
发表于 2021-10-14 13:30:55 | 显示全部楼层 |阅读模式
本帖最后由 ma_hao123 于 2021-10-14 13:47 编辑

由于一些原因,最近从UCOS转入到freeRTOS学习,今天不聊别的,主要现在跟大家聊一些freeRTOS内存管理知识,因为关于OS和内存管理是可以分别展开,都是超级深奥的话题,


此处仅限于使用STM32Cube创建的freeRTOS工程,版本为 * FreeRTOS Kernel V10.3.1,
至于其他版本是否不一样,笔者没有去测试,这里讲一下在stm32g030平台下的freeRTOS内存管理。

至于freeRTOS中heap_1,heap_2,heap_3,heap_4,heap_5,5种内存管理方法,此处不再赘述,这里主要以heap_4
为例讲解,也是STM32Cube推荐的管理方法。

这里先抛出一个问题:
你的FreeRTOS工程中的start_up文件中的堆栈大小定义都是怎么计算确定的?


Stack_Size                EQU     0x200
Heap_Size      EQU     0x200
栈空间的作用详细大家都比我理解的透彻,
但是堆空间呢?
这里抛出第二个问题:
你的FreeRTOS工程中的start_up文件中定义的堆空间都给谁使用了?
内存管理文件中,申请的内存是从堆空间中申请的吗?


审明一下,笔者水平有限,所有心得仅局限于自己理解,但是都经过测试证明,
若有高手发现问题,或者误导情况,欢迎指正。

笔者的研究心得见附件。
请下载查阅。
费了九牛二虎之力 ,终于把附件传上来了,顺便说一下,附件上传插件在IE和360里面都是灰色的,
论坛是否可以更新一下上传文件的插件。

FreeRTOS内存管理心得.pdf

196.21 KB, 下载次数: 211

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2012-3-11
在线时间
31 小时
 楼主| 发表于 2021-10-14 13:31:47 | 显示全部楼层
本帖最后由 ma_hao123 于 2021-10-14 13:48 编辑

自己顶一下
回复 支持 反对

使用道具 举报

0

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2538
金钱
2538
注册时间
2019-10-18
在线时间
403 小时
发表于 2021-10-14 17:19:58 | 显示全部楼层
学习了,谢谢分享,又涨了一波知识.
回复 支持 反对

使用道具 举报

7

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2019-4-25
在线时间
74 小时
发表于 2021-10-14 19:39:31 | 显示全部楼层
感谢,学习中
回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2021-10-15 16:07:46 | 显示全部楼层
谢谢分享~
回复 支持 反对

使用道具 举报

32

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
617
金钱
617
注册时间
2013-1-16
在线时间
131 小时
发表于 2021-11-1 16:44:03 | 显示全部楼层
像大佬学习
回复 支持 反对

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-11-2 12:32:34 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-1-16
在线时间
4 小时
发表于 2022-1-2 15:05:05 | 显示全部楼层
刚开始学习写了一个LED闪灯的系统,你这问题问题完全搞不懂?但用cube生成系统很方便。
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-1-16
在线时间
4 小时
发表于 2022-1-2 15:06:34 | 显示全部楼层
问个问题,这种进任务亮哥灯的,啥也不做,堆栈空间要用大,正点原子的视频都是用的128,想弄清楚这种啥也不干的任务最低给多少空间合适?
回复 支持 反对

使用道具 举报

0

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
734
金钱
734
注册时间
2019-9-26
在线时间
90 小时
发表于 2022-1-18 22:44:12 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

2

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2018-9-14
在线时间
51 小时
发表于 2022-3-18 11:00:54 | 显示全部楼层
yeshuyu 发表于 2022-1-2 15:06
问个问题,这种进任务亮哥灯的,啥也不做,堆栈空间要用大,正点原子的视频都是用的128,想弄清楚这种啥也 ...

是不是可以用uxTaskGetStackHighWaterMark() API获取任务堆栈历史剩余最小值,算出任务运行过程中用到的最大空间,根据这个值调整你的任务堆栈大小?设置的稍微大点,留些余量?
回复 支持 反对

使用道具 举报

0

主题

451

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3316
金钱
3316
注册时间
2016-3-19
在线时间
815 小时
发表于 2022-3-18 14:19:47 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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