我想在特定位置放置一个函数 void loadableSW (void)
:0x3FF802
。在另一个函数 residentMain()
中,我将使用指向函数的指针跳转到该位置。如何声明函数
loadableSW
来完成这个。为了清楚起见,我附上了 residentMain
的框架。
更新:目标硬件是 TMS320C620xDSP。由于这是一个航空项目,确定性
行为是理想的设计目标。理想情况下,他们想知道在特定时间内存的哪一部分包含什么。我刚刚知道的解决方案是在链接器文件的内存中定义一个部分。该部分应从 0x3FF802
(放置函数的位置)开始。由于 loadableSW
函数的大小已知,因此内存部分的大小也可以确定。然后指令 #pragma CODESECTION ("function_name", "section_name")
可以将该函数放在指定的部分。
由于 pragma
指令在测试脚本中是不允许的,我想知道是否有任何其他方法可以在不使用任何链接器指令的情况下执行此操作。
此外,我很好奇。 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 ();
}
}
最佳答案
我不确定您的操作系统/工具链/IDE,但以下答案应该有效:
How to specify a memory location at which function will get stored?
我只知道一种方法,它显示在第一个答案中。
更新
如何在 gcc 中定义段:
变量: http://mcuoneclipse.com/2012/11/01/defining-variables-at-absolute-addresses-with-gcc/
方法(部分(“部分名称”)):http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Function-Attributes.html#Function%20Attributes
关于c++ - 如何将函数放置在 C 中的特定地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701424/