簡體   English   中英

通過地址從另一個項目的地圖文件中調用函數

[英]Function call by address from map file of another project

大家好,這是我的問題。

我有兩個不同的項目,第一個有一個鏈接器文件,映射如下:

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上運行,並分別在Flash中刻錄。 在第二個項目中,我想將指針映射到第一個項目中聲明的函數上。 我嘗試了下面的代碼,但是它不起作用,在執行調試器時告訴我找不到該符號,但是根據第一個項目的.map文件,地址(0x0800458C)映射到了我要使用的函數上。

uint32_t (*Myfunction)(void);

int main(void)
{
    Myfunction = ((uint32_t(*) (void)) 0x0800458C); // address in the first project
    Myfunction();
} 

有人經歷過嗎? 謝謝 !!

編輯:在項目中直接包含.symbols文件時,它似乎可以與Keil IDE一起使用。 但是使用CoIDE(基於日食)無法正常工作。 我仍在嘗試找出此問題。

您是否嘗試過: 鏈接程序腳本:將函數的絕對地址插入到生成的代碼中

我認為最后的答案可能是您要尋找的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM