我想在位置0x3FF802放置一個函數void loadableSW(void)。在另一個函數residentMain()中,我將使用指向函數的指針跳轉到此位置。如何聲明函數 loadableSW來完成此操作。爲了清楚起見,我附上了residentMain的骨架。如何在C中的特定地址放置一個函數?
更新:目標硬件是TMS320C620xDSP。由於這是一個航空航天項目,確定性行爲是一個理想的設計目標。理想情況下,他們想知道什麼部分的內存包含特定時間的內容。我剛纔知道的解決方案是在鏈接器文件的內存中定義一個節。該部分應從0x3FF802(放置函數的位置)開始。由於loadableSW函數的大小是已知的,因此也可以確定內存部分的大小。然後指令#pragma CODESECTION ("function_name", "section_name")
可以將該函數放置在指定的部分。
由於編譯指示不允許在測試腳本中使用,所以我想知道是否有其他方法可以在不使用任何鏈接器指令的情況下執行此操作。
除了我很好奇。 C++中是否有函數的放置語法?我知道有一個對象,但功能?
void residentMain (void)
{
void (*loadable_p) (void) = (void (*) (void)) 0x3FF802;
int hardwareOK = 0;
/*Code to check hardware integrity. hardwareOK = 1 if success*/
if (hardwareOK)
{
loadable_p(); /*Jump to Loadable Software*/
}
else
{
dspHalt();
}
}
您需要將功能置於預定地址的原因是什麼? – Agentlien
您將不得不使用地圖文件。你在做什麼嵌入式系統? – RedX
你在哪個平臺上? – texasbruce