STM32F407 CCRAM 使用方法
STM32F407ZET6 有192Kb的 RAM,其中64Kb是CCRAM,只供内核使用,剩下的128Kb可供所有外设使用请教大家,我串口接收与发送定义的buff缓冲区,能否使用ccram来提供? 串口不使用DMA外设进行读写,串口接收使用中断+空闲中断,发送使用阻塞发送
如果大家有用过,能否分享一下使用方法?小弟在此感谢大家了~
本帖最后由 caicaptain2 于 2023-4-20 15:36 编辑
串口的DMA用起来很香,就算现在不用,后续优化可能也会用到DMA。 CCM不能参与DMA,所以一般给纯数据缓存用比较好, 比如RTOS的堆栈,emwin的图形缓存什么的。
使用ccm,可以直接用语法来固定变量的地址,还可以使用分散文件定义,mdk项目设置等方式来指定给变量或者c代码。
1. 先开启CCRAM的时钟
2.
3.
4.
当然也可以手动修改分散加载文件,上面的做法是KEIL会帮你修改分散加载文件
供参考。
像使用内部SRAM一样定义使用SDRAM和CCM RAM,可以随意定义到指定的RAM区域且无需具体地址
https://www.armbbs.cn/forum.php?mod=viewthread&tid=89275&fromuid=58
(出处: 硬汉嵌入式论坛)
tovinz 发表于 2023-4-20 16:37
1. 先开启CCRAM的时钟
2.
CCRAM也有时钟,不是默认可以使用的吗?我x,这哪都要注意开时钟 snakeemail 发表于 2023-8-27 17:40
CCRAM也有时钟,不是默认可以使用的吗?我x,这哪都要注意开时钟
其实是我的一个通用的用法,因为根据硬汉老师的教程,在bootloader跳转前,会关闭所有外设的时钟,所以到APP里的时候都打开一遍 snakeemail 发表于 2023-8-27 17:40
CCRAM也有时钟,不是默认可以使用的吗?我x,这哪都要注意开时钟
ccram没有时钟选项。。。。不要被误导了。 caicaptain2 发表于 2023-8-28 08:40
ccram没有时钟选项。。。。不要被误导了。
我用的GD32的{:16:} 看看AN4296可能有用。其想法是,内核可以从CCM获取代码,同时从另一个SRAM获取数据。并行使用不同的“总线”,提供最佳性能。如果从同一内存(任一)获取代码和数据,则由于争用,速度会变慢。
http://www.st.com/resource/en/application_note/dm00083249.pdf
页:
[1]