任何人都可以告诉我们在固定内存位置存储函数(在C中)的可行方法。
我正在使用IAR IDE for ARM cortex m3 core。
答案 0 :(得分:2)
IAR手册“IAR C / C ++开发指南”中的“控制内存中的数据和功能放置”一节中介绍了如何将函数和数据放入内存中。
我看到将特定函数放置在特定地址的唯一方法是在内存中定义一个部分,在此处放置此函数并仅使用此函数。 例如:
void MyFunction( void ) @ "MyFunctionsSection"
{
...
}
在链接器文件中,您必须定义“MyFunctionsSection”部分。在那里,您可以定义此部分的放置位置。然后你的功能会放在那里。
此方法的缺点是您必须为此功能保留内存。因此,您必须知道函数的大小,并且如果函数的大小增加并且大于保留的内存,则必须调整此内存部分。另一个缺点是,您只能在此部分中放置一个函数,以确保您的函数位于希望的地址。
但除此之外:将函数放在特定地址的想法通常很奇怪。更好的方法是定义一个指向此函数的指针,并将指针放在一个修复地址,就像在中断向量表中一样。如果您有更多的函数指针,则可以轻松扩展列表。