Polyspace® анализ может интерпретировать подмножество простых конструкций языка C/C + + и расширенных ключевых слов по умолчанию. Для специфичных для компилятора ключевых слов необходимо указать свой выбор компилятора. Если вы задаете keil
или iar
для Compiler (-compiler)
, верификация Polyspace позволяет языковые расширения, характерные для Keil или IAR компиляторов.
Встроенные управляющие приложения часто читают и записывают данные портов, устанавливают регистры таймеров и считывают входные захваты. Чтобы справиться с этими требованиями без использования языка сборки, некоторые микропроцессорные компиляторы определяют специальные типы данных, такие как sfr
и sbit
. Типичными заявлениями являются:
sfr A0 = 0x80; sfr A1 = 0x81; sfr ADCUP = 0xDE; sbit EI = 0x80;
Объявления находятся в заголовочных файлах, таких как regxx.h
для основных 80Cxxx
микропроцессор. Объявления настраивают компилятор на целевой процессор.
Вы получаете доступ к регистру или порту при помощи sfr
и sbit
данные следующим образом. Однако эти типы данных не являются частью стандарта C99.
int status,P0; void main (void) { ADCUP = 0x08; /* Write data to register */ A1 = 0xFF; /* Write data to Port */ status = P0; /* Read data from Port */ EI = 1; /* Set a bit (enable all interrupts) */ }
Чтобы проанализировать этот тип кода, используйте следующие опции:
Compiler (-compiler)
: Задайте keil
или iar
.
Sfr type support (-sfr-types)
: Укажите тип и размер данных в битах.
Для примера в зависимости от того, как вы задаете sbit
тип данных, вы используете следующие опции:
sbit ADST = ADCUP^7;
Опции использования: -compiler keil -sfr-type sfr=8
sbit ADST = ADCUP.7;
Опции использования: -compiler iar -sfr-type sfr=8
Затем анализ поддерживает расширения языка Keil или IAR, даже если некоторые структуры, ключевые слова и синтаксис не являются частью C99 стандарта.
Если вы задаете компилятор Keil или IAR, анализ распознает ключевые слова, относящиеся к компилятору, в вашем коде. Если ключевое слово не относится к анализу, оно удаляется из исходного кода во время предварительной обработки.
Если отключить ключевое слово и использовать его в качестве идентификатора, можно столкнуться с ошибкой компиляции при компиляции кода с Polyspace. См. ошибки, связанные с Keil или IAR Compiler».
Эти ключевые слова удаляются во время предварительной обработки:
Кейл: bdata
, far
, idata
, huge
, sdata
IAR: saddr
, reentrant
, reentrant_idata
, non_banked
, plm
, bdata
, idata
, pdata
, code
, xdata
, xhuge
, interrupt
, __interrupt
, __intrinsic
The data
ключевое слово не удаляется.