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.

[参考译文] 编译器/ARM-CGT:_c_int00所需的 pragma

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/931517/compiler-arm-cgt-required-pragmas-for-_c_int00

器件型号:ARM-CGT
主题中讨论的其他器件:HALCOGEN

工具/软件:TI C/C++编译器

默认_c_int00 weak、我们使用该功能、因为我们有自己的启动序列。

我们实现了我们自己的_c_int00 (因此是弱的)、这可以正常工作。 今天我进行一些代码审阅、发现 HALCoGen 生成的 weak _c_int00是这样创建的

#pragma CODE_STATE (_c_int00、32)
#pragma INTERRUPT (_c_int00、RESET)
#pragma weak (_c_int00)
void _c_int00 (void){
//一些代码*}

在我们的实施中、我们只是这样做的

void _c_int00 (void){
/*我们的代码*}
  • 我们使用--code_state=32进行编译、因此我想省略 #pragma CODE_STATE (_c_int00、32)不是一个(实际)问题。
  • 当然、我们忽略弱、因为我们要覆盖它
  • 我们没有使用 #pragma interrupt (_c_int00、reset)。 目前为止、我们没有遇到任何不良行为、但是否 允许/建议忽略#pragma INTERRUPT (_c_int00、reset)? 编译器是否以某种方式知道_c_int00需要复位中断、这就是为什么它起作用的原因?

如果能对此有一些了解、那将会很好。

谢谢、致以诚挚的问候

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

    [引用 user6135372"]我们使用--code_state=32进行编译,因此我想省略 #pragma CODE_STATE (_c_int00、32)不是一个(实际)问题。

    没错。  但是、无论如何都需要使用该 pragma。  如果代码是使用--code_state=16编译的,会出现什么情况?  一个函数最好能自行记录其假设。

    [引用 USER="user6135372"]是否忽略 了#pragma INTERRUPT (_c_int00、RESET)、甚至允许/建议?

    使用此 pragma 编译的函数根本没有返回指令。  我怀疑这对您的复位功能有很大影响。  但是、如果确实如此、现在您知道如何避免该返回指令。

    谢谢、此致、

    乔治