c - 如何指定存储函数的内存位置?

标签 c embedded microcontroller

任何人都可以告诉我有哪些可能的方法可以将函数(C 语言)存储在固定的内存位置。

我正在使用适用于 ARM cortex m3 内核的 IAR IDE。

最佳答案

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

我认为将特定函数放置在特定地址的唯一方法是在内存中定义一个部分来放置此函数且仅放置此函数。 示例:

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

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

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

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

关于c - 如何指定存储函数的内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778323/

相关文章:

使用 frama-c 的值分析计算函数的可达性

c++ - 为什么以及何时应该在 C/C++ 中使用 goto?

c - sprintf 正在输出一些奇怪的数据

c++ - SAMD21如何使用TCC设置PWM?

c - 请求非结构或 union 中的成员 'isr_status'

c - 读取未知数量的整数并用文字打印

c# - pinvoke:如何释放 malloc 的字符串?

embedded - 在 ARM/Gumstix 上编译 tesseract-ocr?

c++ - 尝试使用 String 正确子串

c - C中的字节序独立性