任何人都可以让我知道将函数(以C形式)存储在固定内存位置的可能方式有哪些。
我将IAR IDE用于ARM cortex m3内核。
IAR手册“ IAR C / C ++开发指南”的“控制数据和函数在内存中的放置”一节中介绍了如何将函数和数据放置在内存中。
我看到将特定功能放置在特定地址的唯一方法是在内存中定义一个部分,仅在其中放置此功能。例子:
void MyFunction( void ) @ "MyFunctionsSection"
{
...
}
在链接器文件中,您必须定义“ MyFunctionsSection”部分。您可以在此处定义该部分的放置位置。然后,您的功能将放置在此处。
该方法的缺点是您必须为此功能保留内存。因此,您必须知道函数的大小,并且如果函数的大小增加并大于保留的内存,则必须调整此内存部分。另一个缺点是,您只能在此部分中放置一个功能,以确保将您的功能放置在所需的地址上。
但是除此之外:将函数放在特定地址的想法通常很奇怪。最好是定义一个指向该函数的指针,并将其放置在固定地址上,就像在中断向量表中所做的那样。如果您有更多的函数指针,则可以轻松地扩展列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句