工具/软件:TI C/C++编译器
您好!
为了在软件版本之间保持相同的 BSL 密码(32字节中断矢量表)、我决定将所有中断例程放置在闪存中的固定地址。 因此、除了复位处理程序之外、我对所有例程都执行了该操作。 我无法强制链接器将其放置在特定地址。 我是如何做到的:
-复位例程的地址实际上是启动代码、此函数: _c_int00_noargs_noexit。
-如果我将这个函数放置在闪存中的一个固定地址上、那么复位例程将一直是那个地址:
-在文件 boot_special .c 中、我强制将函数放置在"MYSEGMENT"段中:
pragma CLINK (_c_int00_noargs_noexit)
#pragma CODE_SECTION (_c_int00_noargs_noexit、"MYSEGMENT")
CSTART_DECL _c_int00_noargs_noexit ()
{
stack_init();
如果(_system_pre_init()!= 0)_auto_init();
MAIN (0);
abort();
}
-在链接器指令文件中、我创建了存储器部分:
SEG:origin = 0xC000,length = 0x0100
-然后部分:
MYSEGMENT:{}> SEG
为什么不将其放置在0xC000上,而是放置在不同的随机地址上,如0xD44A?:
0000d44a _c_int00_noargs_noexit