硬汉嵌入式论坛

 找回密码
 立即注册
查看: 376|回复: 7
收起左侧

[有问必答] 硬汉哥,关于freertos的configTOTAL_HEAP_SIZE设置大于23k会导致程序全都不运行

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2024-2-29 16:56:33 | 显示全部楼层 |阅读模式
本帖最后由 binss 于 2024-2-29 16:57 编辑

大佬求助,我在stm32f407用freertos,configTOTAL_HEAP_SIZE不能设置23*1024以上,设置就会整个程序不跑,这是为啥啊?
download.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2024-2-29 17:45:32 | 显示全部楼层

回帖奖励 +1 个金币

F407是128KB通用SRAM + 64KB CCM RAM

特别注意CCM RAM不支持DMA,你看看是不是这个地方出错了。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-2-29 18:33:23 | 显示全部楼层
eric2013 发表于 2024-2-29 17:45
F407是128KB通用SRAM + 64KB CCM RAM

特别注意CCM RAM不支持DMA,你看看是不是这个地方出错了。

我接手别人的代码中内存malloc是用正点原子的,但是用到的都是内部ram申请内存,没用到CCM的,虽然我用了DMA,不过怎么知道DMA涉及到了CCM RAM呢?
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-2-29 18:44:21 | 显示全部楼层
这是我的启动文件设置和keil5iram1的设置
1709203390131.jpg
回复

使用道具 举报

3

主题

122

回帖

131

积分

初级会员

积分
131
发表于 2024-3-1 08:39:28 | 显示全部楼层
你的使用RAM已经超过128k了,超过128k部分就是分到CCRAM这里,看map文件看一下具体哪些变量分到CCRAM和SRAM里,把一部分变量提前分配到CCRAM这里
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118883
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-3-1 14:54:19 | 显示全部楼层
skyshine 发表于 2024-3-1 08:39
你的使用RAM已经超过128k了,超过128k部分就是分到CCRAM这里,看map文件看一下具体哪些变量分到CCRAM和SRAM ...

好的谢谢,请问能把freertos的内存分配到ccram吗?
回复

使用道具 举报

3

主题

122

回帖

131

积分

初级会员

积分
131
发表于 2024-3-1 16:04:52 | 显示全部楼层
binss 发表于 2024-3-1 14:54
好的谢谢,请问能把freertos的内存分配到ccram吗?

完全可以,CCRAM就是适合做RTOS的堆栈,论坛里有教程,如果是AC6可能要改一下,在论坛里再搜下分散加载相关的就行:
https://www.armbbs.cn/forum.php?mod=viewthread&tid=3462
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-3-4 10:16:43 | 显示全部楼层
谢谢大佬们,结贴了,原因是malloc.c分配了很大的数组,导致128k的sram都快满了,所以才设置不了24k以上的rtos堆栈
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 05:06 , Processed in 0.302984 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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