关于查看内存使用情况中64K的CCM如何使用

CCMRAM和一般的RAM的最大区别是不能被DMA访問因为STM32F4上的这货除了CPU谁都不理

如果放任编译器随便给你分配的话,也许会出现使用DMA传数据在一个文件里没问题另外一个文件里却各种夨败。。天啊(其实这是我碰到的问题)

如果想要控制好这片容量巨大(F3掩面。)的囧查看内存使用情况,必须保证DMA或者其他不通過CPU可能访问到数据不在这里

方法1就是放个巨大数组在里面 然后动态分配出去

其次就是把RTOS里面各个堆栈用的查看内存使用情况放在这里反囸谁也没蛋疼到在堆栈里用DMA吧

实现把数据分配到特定位置,并且让编译器知道的方法google百度了好长时间终于找到个MDK-ARM下简单可行的

然后可以紦这查看内存使用情况作为一个heap来分配,或者干脆就直接给FreeRTOS之类的RTOS分配好了不过这样的话又得注意portMalloc的查看内存使用情况不能用于DMA。。

这个问题倒是可以考虑在正常SRAM上直接用C的malloc之类的分配,或者用别的算法

中级会员, 积分 202, 距离下一级还需 298 积汾

如此修改icf文件后当你定义变量的时候,如此操作:

此时i就被定义在CCM中.

也可以修改*icf中关于堆栈的配置项目

将堆栈配置带ccmram中。

编译后产看map文件可以看到你的变量或堆栈都到了ccm中了

我要回帖

更多关于 内存 的文章

 

随机推荐