来自另一个项目

时间:2017-05-19 12:43:24

标签: c pointers gcc linker coocox

大家好,这是我的问题。

我有两个区别项目,第一个是链接文件,映射如下:

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)它不起作用。我还在试图解决这个问题。

1 个答案:

答案 0 :(得分:0)

你试过这个: Linker script: insert absolute address of the function to the generated code

我认为最后的答案可能就是你想要的。