This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430-GCC-opensource:属性"interrupt"Official GNU Doc 和 Mitto GCC 之间存在差异:

Guru**** 2188815 points
Other Parts Discussed in Thread: MSP430G2553
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/922013/msp430-gcc-opensource-discrepancy-of-attribute-interrupt-between-official-gnu-doc-and-mitto-gcc

器件型号:MSP430-GCC-opensource
主题中讨论的其他器件:MSP430G2553

GNU GCC 官方文档指示属性"interrupt"将向量时隙编号作为参数、而 Mitto GCC 获取向量偏移。  以 NMI 和 MSP430G2553为例:官方 GNU doc 建议__attribute__((interrupt (30))),而 SLAU646F 建议__attribute__(interrupt (NMI_vector)),而 msp430g2553.h 中的 NMI_vector = 15

是否可以将 Mitto GCC 转换为主线版本并重写官方 GCC 文档?


https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/MSP430-Function-Attributes.html#MSP430-Function-Attributes

"。。 如果参数是一个数字,则表示中断矢量表中的时隙(0 - 31)... nmi矢量30。"


SLAU646F 和 MSP430x2xx (MSP430G2553)头文件和 SLAU144J

SLAU646F MSP430 GCC 用户指南(修订版 F)- TI.com


中断(x)

使该函数成为中断"x"的中断服务例程。

MSP430g2553.h
*中断矢量(相对于0xFFE0的偏移)
#define NMI_Vector             (15)                    /* 0xFFFC 不可屏蔽*/

SLAU144J - MSP430x2xx 系列用户指南(修订版 J)


[已编辑] SLAU646E -> SLAU646F (故障搜索引擎)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定您的担忧是什么。 "时隙编号"(索引)和"偏移量"之间是否存在差异?

    我不确定"offset"是否完全不正确、但我认为它可以这样读取。 NMI_Vector 的定义显然是一个索引。 我会说、如果要选择、"插槽编号"(索引)会更正确。

    在我的 SLAU646F 副本中不会出现"offset"字样(我没有修订版 E)。 第5.1.1节不使用任何一个术语。

    [编辑:我想我明白你的意思-- nmi "对于向量30"是文本的一部分,而不是你的评论。 本节不应尝试提供任何示例、因为每个器件上的矢量编号(通常)不同。 NMI 是向量30开启、例如 F2619、但在 F2012上是向量14。 我将投票赞成整句话。]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 SLAU144J (针对整个 MSP430x2xx 系列、由 F2619和 F2012组成)中、NMI 优先级= 30、偏移(来自0xFFE0)= 15。 SLAU646F 没有提到参数"interrupt"实际上采用的是什么、而是在头文件 NMI_Vector = 15中。

    官方 GNU doc 建议用于 NMI 的__attribute__((interrupt (30))),而 SLAU646E 和头文件建议的是__attribute__(interrupt (15)))。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您指出这一点、实际上由于每个器件上的矢量表编号不同、因此文档不应尝试指定任何默认值。

    我将更新该文档。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很明显、对 MSP430的官方/主线 GCC 支持已经非常过时。 请考虑修补主线 GCC。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SLAU646F 的第9章建议读者"请参考  https://gcc.gnu.org/onlinedocs/gcc.pdf 的 MSP430选项部分" 、但它已经过时。 -minrt 已被弃用,属性“interrupt”不再采用插槽编号,...