大家好,这是我的问题。
我有两个区别项目,第一个是链接文件,映射如下:
MEMORY
{
rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x0000C400
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
}
其次是链接器文件,如下所示:
MEMORY
{
rom (rx) : ORIGIN = 0x0800C400, LENGTH = 0x00019CFC
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
}
这两个项目都在同一个MCU上运行,并分别在闪存中刻录。在我的第二个项目中,我想映射关于第一个项目中声明的函数的指针。我尝试下面的代码,但它不起作用,执行调试器告诉我无法找到符号,但根据第一个项目的.map文件,地址(0x0800458C)映射到我想要使用的函数
uint32_t (*Myfunction)(void);
int main(void)
{
Myfunction = ((uint32_t(*) (void)) 0x0800458C); // address in the first project
Myfunction();
}
有没有人经历过这个? 谢谢!!
编辑:在项目中直接包含.symbols文件时,似乎与Keil IDE一起使用。但是使用CoIDE(基于eclipse)它不起作用。我还在试图解决这个问题。答案 0 :(得分:0)
你试过这个: Linker script: insert absolute address of the function to the generated code
我认为最后的答案可能就是你想要的。