c - 通过另一个项目的映射文件中的地址调用函数



嗨,这里的每个人都是我的问题。

我有两个不同的项目,第一个有一个链接器文件映射如下:

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(基于日食(,它不起作用。我仍在努力解决这个问题。

你试过这个吗:链接器脚本:将函数的绝对地址插入到生成的代码中

我认为最后一个答案可能是你要找的。

最新更新