首先需要知道:在KEIL中修改地址比较方便,在KEIL的Target中直接分配; 在MRS中无法这样修改,MRS中定义数组之后是由程序主动分配地址的,而无法达到程序员去手动分配的效果,这时候我们需要手动修改LD文件。
修改的办法是开辟一段空间,然后将数组放进去。例如:现在定义一个数组的大小为8K,那么我可以将原来的FLASH分区为FLASH1(440K)和FLASH2(8K),把数组放在FLASH2中。注意:如果FLASH2定义为8K,数组定义为9K,那么将该定义放入FLASH2中程序会报错。
具体修改(3个地方)见下图:
修改之后编译,此时FLASH空间已成功分配。
如果报错,1、请检查一下分配地址时是否有断开,如448K的FLASH,只分配了200K;
2、是否有重叠,如分配RAM时,首地址从0开始,抢占了FLASH的区域。