返回> 网站首页
Keil RAM配置 - STM32 CCM内存
yoours2021-11-18 17:38:15
简介一边听听音乐,一边写写文章。
1. STM32F40x的keil工程配置
All STM32F40xxx products embed:
Up to 192 Kbytes of system SRAM including 64 Kbytes of CCM (core coupled memory) data RAM
STM32F407有192K RAM,其中192K被分成了128K IRAM1和64K IRAM2。
RAM分为: SRAM1(112kbyte) + SRAM2(16kbyte) + CCM (16kbyte) = 192kbyte
2. CCM
CCM共64KB,是直接挂在D-bus上的,除了CPU(即Cortex-M核)之外,谁都无法访问。此外,由于CCM不属于BusMatrix的一部分,所有也就不能被其他组件访问,例如DMA控制器。
对于CCM,CPU能以最大的系统时钟和最小的等待时间从CCM中读取数据或者代码。官方文档说明了使用CCM的一些优势:比如将频繁读取的数据放到CCM,将中断函数放到CCM,这都能加快程序的执行速度。
3. 使用CCM
// 0x10000000 为CCM地址区间
uint8_t BUF[LEN] __attribute__ ((at(0x10000000)));
UINT32 EventNum __attribute__((at(0x10000000))) = 0;
4. 分散加载文件(.sct)进行分配
第一步:
打钩后编译,打钩后Keil后自动优先使用ccram。
第二步:
第三步:
修改sct文件
第四步:
// 变量
u8 test __attribute__((section("ccmram")));
#define CCMRAM __attribute__((section("ccmram")))
//数组
CCMRAM const char buf[10] = "\r\n!";
//函数
CCMRAM void LED_Init(void)
{
}