中级会员
 
- 积分
- 214
- 金钱
- 214
- 注册时间
- 2014-12-29
- 在线时间
- 36 小时
|
发表于 2015-6-11 19:48:14
|
显示全部楼层
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中了 |
|