[英]How to set the address of a function in C in a specific memory location
由於我使用的是嵌入式系統,因此需要將特定功能存儲在地址為0x840140的外部存儲位置中
這是函數:
//The function that I want to set its address to 0x840140
float myfunction(float x,float y) {
float z;
z=x+y;
return z;
}
void main() {
float w;
//Calling the function
w=myfunction(5.5,10.5);
}
Xilinx“ MicroBlaze”似乎正在使用基於GNU CC的編譯器,這意味着(可能)使用了gnu ld鏈接器。 它具有相當廣泛的腳本語言 ,因此,例如,不同的代碼段可以位於不同的位置。
如果您不希望所有代碼都放在一個塊中,則需要為有問題的函數“設置”一個部分,例如:
void myfunction (void) __attribute__ ((section ("at840000.text")));
然后使用text.at840000
告訴鏈接器您要將代碼放置在何處。
像這樣:
SECTIONS {
at840000.text 0x840000 { * }
}
(我不確定這里的確切語法是100%,但是有些類似的地方)
您確定要將功能存儲在特定的存儲位置嗎? 您可能只需要函數結果。
void main() {
float *w = (float*)0x840140;
//Calling the function
*w=myfunction(5.5,10.5);
}
這會將myFunction()返回的浮點數放置在正確的內存位置。
免責聲明:我從來沒有嘗試過。
使用鏈接腳本可能是可能的。 本文將代碼放置在用於構建內核的特定地址處。 檢查有關“鏈接部分”的部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.