ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1107888
raw_board (09.06.2021 15:27, просмотров: 328) reZident
Добрый день! 

Столкнулся с вот такой проблемой:

Использую IAR ARM v8.32 для MSP432F411V.

Необходимо задать константу по определённому адресу с квалификатором volatile.

Код:

__root volatile conct uint8_t Data @ 0x00206000= 0x55;


Почему с квалификатором volatile - потому что я её перезаписываю в процессе работы.

А читаться она должна как константа.


Ошибка:

Линковщик не размещает данную константу в hex файле.


Если квалификатор volatile убрать, то линковщик разместит константу там, где надо.


Проблему должна решать директива __root, которая говорит компилятору и линковщику - не выкидывать код или данные, даже если они не используются.


Однако получается что квалификатор volatile пересиливает директиву __root. Компилятор(Линковщик) решает, что это не константа и не размещает её во FLASH.


Вопрос - как это победить?