由于我使用的是嵌入式系统,我需要在地址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);
}
答案 0 :(得分:1)
Xilinx" MicroBlaze"似乎是使用基于GNU CC的编译器,这意味着它(可能)使用gnu ld链接器。它具有相当广泛的scripting language,因此不同的代码段可以位于不同的位置。
如果您不希望将所有代码定位为一个整体,则需要设置"设置"有关功能的部分,例如:
void myfunction (void) __attribute__ ((section ("at840000.text")));
然后使用text.at840000
告诉链接器您希望代码放在哪里。
这样的事情:
SECTIONS {
at840000.text 0x840000 { * }
}
(我对此处的确切语法并非100%肯定,但这些内容也是如此)
答案 1 :(得分:0)
您确定要将功能存储在特定的存储位置吗?你可能只想要功能结果。
void main() {
float *w = (float*)0x840140;
//Calling the function
*w=myfunction(5.5,10.5);
}
这会将myFunction()返回的float放在正确的内存位置。
答案 2 :(得分:0)
免责声明:我从来没有尝试过这个。
可能使用链接描述文件。 This article将代码放在特定地址以构建内核。查看“链接部分”部分。