[英]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.