@“.intvec”在int const __vector_table [] @“。intvec”= {}的声明/初始化中的含义是什么

时间:2017-04-25 04:39:41

标签: c embedded

这行C代码来自微控制器矢量表的声明/初始化。 @“.intvec”必须有特殊含义。这背后的含义是什么?

注意:此过程在执行main()函数之前发生。

工具链是IAR,.intvec位于0x00000000。

2 个答案:

答案 0 :(得分:1)

这是非标准C代码。当您希望在特定内存位置声明变量时,@通常用作非标准扩展。在这种情况下,它指向一个段.intvec,它将在您的链接器文件中保留,该文件也是以一些自定义的,依赖于工具的方式编写的。

在这种特定情况下,他们希望确保在指定的地址处分配中断向量表。很可能MCU会将它放在某个地址,通常是在存储器映射的最开始或最后。

答案 1 :(得分:1)

在IAR @中是一个链接器指令扩展,用于在绝对地址,特定链接器部分或特定寄存器中定位对象。在您的目标上,毫无疑问中断向量表位于0x00000000。

请参阅控制内存中的数据和功能位置部分toolchain documentation

enter image description here