CCM存储器DMA不能访问,理论是访问速度比SRAM更快
以IAR环境下为例,可以这样定义内存link文件,IAR下对应的是*.icf文件
在Memory Regions下添加
/*-Memory Regions-*/
………………………………
………………………………
//定义CCM的起止范围
define symbol __ICFEDIT_region_CCMRAM_start__ = 0x10000000;
define symbol __ICFEDIT_region_CCMRAM_end__ = 0x1000FFFF;
//然后定义regiom
define region CCMRAM_region = mem:[from __ICFEDIT_region_CCMRAM_start__ to __ICFEDIT_region_CCMRAM_end__];
//定义一个控制标志
place in CCMRAM_region { section .ccmram }; //使用方法 定义的变量后面加 @ ".ccmram";
/********************************/
如此修改icf文件后,当你定义变量的时候,如此操作:
例:
uint32_t i @".ccmram";
此时,i就被定义在CCM中.
也可以修改*icf中关于堆栈的配置项目
place in CCMRAM_region { readwrite, block CSTACK, block HEAP };
将堆栈配置带ccmram中。
编译后产看map文件可以看到你的变量或堆栈都到了ccm中了
|