将 TI 链接器命令文件与 Clang 一起使用

Using TI Linker Command File with Clang

本文关键字:Clang 一起 文件 TI 链接 命令      更新时间:2023-10-16

使用 TI(德州仪器)编译器时,我可以通过简单的ADC12IFG = 50; C++设置嵌入式微控制器的内存位置。 Clang 将此代码标记为错误:indirection requires pointer operand ('int' invalid) 。 因此,当我深入研究它时,TI 有一个头文件 msp430f5335.h,其中包含以下行:

#define SFR_16BIT(address)  extern volatile unsigned int address
SFR_16BIT(ADC12IFG);                          /* ADC12+ Interrupt Flag */

然后有一个链接器命令文件 msp430f5335.cmd,其中包含以下行:

ADC12IFG           = 0x070A;

所以看起来链接器命令文件指定了address. 那么,是否有可能让 clang 分析工具识别链接器命令文件而不导致误报?

Clang 旨在与 GCC 兼容。

TI 的头文件 (msp430-gcc-support-files ) 使用以下机制来定义内存映射寄存器变量:

#define sfrw_(x,x_) extern volatile unsigned int x asm(#x_)
#define sfrw(x,x_) sfrw_(x,x_)
#define ADC12IFG_             0x070A    /* ADC12+ Interrupt Flag */
sfrw(ADC12IFG, ADC12IFG_);

(这不需要链接器命令文件。