1

任何人都可以让我知道我们可以将函数(在 C 中)存储在固定内存位置的可能方式是什么。

我正在为 ARM cortex m3 内核使用 IAR IDE。

4

1 回答 1

2

IAR 手册“IAR C/C++ 开发指南”的“控制数据和函数在内存中的放置”部分描述了如何将函数和数据放置在内存中。

我看到将特定函数放置在特定地址的唯一方法是在内存中定义一个部分来放置这个并且只有这个函数。例子:

void MyFunction( void ) @ "MyFunctionsSection"
{
...
}

在链接器文件中,您必须定义“MyFunctionsSection”部分。在那里您可以定义该部分的放置位置。然后您的函数将被放置在那里。

这种方法的缺点是你必须为这个函数预留内存。因此,您必须知道函数的大小,并且如果函数的大小增加并变得大于保留的内存,则必须调整此内存部分。另一个缺点是您只能在此部分中放置一个函数,以确保您的函数放置在所需的地址。

但除此之外:将函数放置在特定地址的想法通常很奇怪。最好定义一个指向该函数的指针,并将指针放在一个固定地址,就像在中断向量表中所做的那样。如果您有更多函数指针,则可以轻松扩展列表。

于 2013-09-13T07:25:49.777 回答