1. 变量绝对地址定位
在定义变量时使用 _at_ 关键字加上地址就可.
e.g.
unsigned char idata myvar _at_ 0x40;
把变量 myvar 定义在 idata 的 0x40 处, 在 map 文件中可以找到这麽一行
IDATA 0040H 0001H ABSOLUTE
表示有变量在 idata 的 0x0040 处绝对地址定位.
2. 函数绝对地址定位
使用 KeilC 编译器定位绝对地址的函数, 打开 Project -> Options for Target 菜单, 选中 BL51 Locate 选项卡, 在 Code: 中输入:
?PR?myTest?MAIN(0x4000)
把函数 myTest 定位到程序区的 0x4000 处(此函数在main.c文件中),再次编译就可以了.
3. 软堆栈指针定位
当函数被定义为reentrant时,程序将使用软堆栈。
?C?LIB_DATA(0x7f)
表示把软堆栈指针定位到RAM的data区0x7f处。
4.常量绝对地址定位
?CO?LIN_LINKLAYER(0x80)
表示把常量定位到CODE区0x80处。