|
在XCL文件中不用IAR的空间分配,自己修改Constant data部分和 Code部分的分配空间,如原来的定义为:
// ---------------------------------------------------------
// Constant data
// ---------------------------------------------------------
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT=E000-FFDF
// ---------------------------------------------------------
// Code
// ---------------------------------------------------------
-Z(CODE)CSTART,ISR_CODE=F000-FFDF
-P(CODE)CODE=F000-FFDF
现在0xE000~0xE7FF空间自定义一个段BOOT_SEGMENT,定义改为:
// ---------------------------------------------------------
// Constant data
// ---------------------------------------------------------
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT=E800-FFDF
// ---------------------------------------------------------
// Code
// ---------------------------------------------------------
-Z(CODE)CSTART,ISR_CODE=E800-FFDF
-P(CODE)CODE=F000-FFDF
// ---------------------------------------------------------
// BOOT_SEGMENT
// ---------------------------------------------------------
-Z(CODE)BOOT_SEGMENT =E000-E7FF
用户自定义的BOOT_SEGMENT段的大小最好为512字节的倍数,开始地址为430中FLASH每一个segment的首地址,这样方便flash空间的擦写。
修改好XCL文件后,就在C文件中将boot用到的所有函数分配到BOOT_SEGMENT段中:
Void fun1( void ) @ ”BOOT_SEGMENT”
{
}
Void fun2( void ) @ ”BOOT_SEGMENT”
{
}
Void fun3( void ) @ ”BOOT_SEGMENT”
{
} |
|