有谁能告诉我在固定的内存位置存储一个函数(在C中)的可能方法吗。
我在用IAR IDE做手臂皮层m3核心。
最佳答案
IAR手册“IAR C/C++开发指南”中的“控制数据和内存中的函数放置”一节中描述了如何将函数和数据放置在内存中。
我看到的在特定地址放置特定函数的唯一方法是在内存中定义一个节,在其中放置这个函数,并且只放置这个函数。
例子:
void MyFunction( void ) @ "MyFunctionsSection"
{
...
}
在链接器文件中,必须定义“MyFunctionsSection”部分。在那里你可以定义这个部分应该放在哪里。你的功能将被放在那里。
此方法的缺点是必须为此函数保留内存。因此,您必须知道函数的大小,如果函数的大小增加并大于保留内存,则必须调整此内存部分。另一个缺点是,您只能在本节中放置一个函数,以确保您的函数位于所需的地址。
但除此之外:将函数放在特定地址的想法通常很奇怪。最好是定义一个指向该函数的指针,并将该指针放在一个固定地址,就像在中断向量表中那样。如果有更多的函数指针,则可以轻松展开列表。