OpenEdv-开源电子网

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

关于FreeRTOS动态方法创建任务后RAM占用情况

[复制链接]

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-9-12 18:03:59 | 显示全部楼层 |阅读模式
3金钱
FreeRTOS创建任务方法有两种,静态方法和动态方法,静态方法需要用户自己分配堆栈空间给每个任务,动态方法则根据内存管理文件动态分配堆栈空间。现在有一个疑问:用静态方法时可以发现,堆栈空间大小的设定会在程序编译后影响芯片RAM的使用率(和UCOS一样,这个很好理解,毕竟堆栈开辟在RAM),但是问题是当我用动态的方法来创建任务,无论我设定多大的任务堆栈,对芯片RAM的使用都没有影响(至少编译结果是这样的),这是为什么呢?而我实际测试出来,该任务使用了304*4byte的堆栈空间。
如下图所示:
微信图片_20180912175745.png

最佳答案

查看完整内容[请看2#楼]

#define configTOTAL_HEAP_SIZE ((size_t)(20*1024)) //系统所有总的堆大小 freertos用了20k不知道你的是103的啥有多大内存,还有你的malloc.h并没有上传不知道malloc占了多少,还是就没用malloc 说实话,对这样的大部分人基本都没兴趣回复,你的代码又不是机密,有啥不能上传的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-9-12 18:04:00 | 显示全部楼层
本帖最后由 275891381 于 2018-9-12 18:34 编辑
陈皮皮 发表于 2018-9-12 18:22
FreeRTOSConfig.h   malloc.h

#define configTOTAL_HEAP_SIZE                                        ((size_t)(20*1024))     //系统所有总的堆大小
freertos用了20k不知道你的是103的啥有多大内存,还有你的malloc.h并没有上传不知道malloc占了多少,还是就没用malloc
说实话,对这样的大部分人基本都没兴趣回复,你的代码又不是机密,有啥不能上传的
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-9-12 18:07:10 | 显示全部楼层
至少上传 FreeRTOSConfig.h   malloc.h这两个文件吧
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-12 18:19:06 | 显示全部楼层
275891381 发表于 2018-9-12 18:07
至少上传 FreeRTOSConfig.h   malloc.h这两个文件吧

好的,工程搭建参考的是 ALIENTEK STM32F103全系列开发板FreeRTOS开发手册和实验例程,内存管理用的heap_4.c
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-12 18:22:53 | 显示全部楼层
275891381 发表于 2018-9-12 18:07
至少上传 FreeRTOSConfig.h   malloc.h这两个文件吧
相关配置文件.rar (9.07 KB, 下载次数: 39)
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2018-9-13 08:28:57 | 显示全部楼层
275891381 发表于 2018-9-12 18:33
#define configTOTAL_HEAP_SIZE                                        ((size_t)(20*1024))     //系 ...

谢谢你的解答,正如你所说这就是出现这种状况的原因,之前一直用的Ucos,FreeRTOS是刚接触。至于内存管理用的就是上传的heap_4,里面就是内存分配管理的方法。还有就是确实不是什么很机密的代码,但是也是项目中的一部分,也面临着年底上线,没离职也不好上传在论坛上,请见谅。谢谢你的解答
回复

使用道具 举报

0

主题

109

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2018-9-2
在线时间
8 小时
发表于 2018-9-13 08:34:17 | 显示全部楼层
谢谢楼主们的解答
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2017-5-28
在线时间
23 小时
发表于 2019-5-16 16:51:39 | 显示全部楼层
什么原因啊,怎么没看到解答啊?
回复

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
 楼主| 发表于 2019-5-22 08:49:59 | 显示全部楼层
Deven 发表于 2019-5-16 16:51
什么原因啊,怎么没看到解答啊?

看最佳答案,配置文件里定死了开辟的堆栈大小
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 02:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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