Использование командного файла TI Linker с Clang

При использовании компилятора TI (Texas Instrument) я могу установить область памяти встроенного микроконтроллера с помощью C ++, просто ADC12IFG = 50;, 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 распознавал командный файл компоновщика и не вызывал ложных срабатываний?

1

Решение

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_);

(Для этого не требуется командный файл компоновщика.)

0

Другие решения


По вопросам рекламы [email protected]