芯片:MK12DX256VLK5,内存 32k,SRAM_L 和 SRAM_H 都是16k
大家都知道,SRAM_L 和 SRAM_H 只能分开使用,即不能定义大于16k的变量,否则编译器会报错,只能小于16k。
但是,定义2个小于16k的也需要做一些处理,以IAR为例:
1、修改ICF文件,关键语句如下:
define symbol __ICFEDIT_region_RAM_start__ = 0x1FFFC410;
define symbol __ICFEDIT_region_RAM_end__ = 0x1FFFFFFF;
define symbol __region_RAM2_start__ = 0x20000000;
define symbol __region_RAM2_end__ = 0x20003FFF;
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define region RAM2_region = mem:[from __region_RAM2_start__ to __region_RAM2_end__];
place in RAM2_region {section MY_RAM2};
2、程序文件里定义的变量后面,加一个@“MY_RAM2”,(@是iar的关键字,用于变量地址的绝对定位)