IAR встроен Workbench - Установка Endian-Ness переменной
-
05-10-2019 - |
Вопрос
Я использую IAR встроенный верстак для ARM (ARM7TDMI-S), и большинство моей работы осуществляется с использованием малоцентного формата. Тем не менее, я видел в руководстве, что могу сделать что-то вроде:
__big_endian int i, j;
объявить эти две переменные как большие Endian (в то время как остальная часть приложения как маленький Endian). Это похоже на фантастическую особенность, но когда я пытаюсь компилировать, я всегда получаю ошибку:
Error[Pa002]: the type attribute "__big_endian" is not allowed on this declaration.
Большая эндин линейна выше скопирована непосредственно из руководства, но она не работает. Это отличная особенность компилятора и облегчит жизнь большим проще. Любые идеи, как это заставить работать?
У меня есть соответствие моего языка «Разрешить расширения IAR» на вкладке «Параметры компилятора C / C ++» на параметрах IDE.
Решение
Из Документов IAR:
То
__big_endian
Ключевое слово доступен, когда вы компилируете ARMV6 или выше.
ARMV6 добавил SETEND
Инструкция, которая манипует битом состояния, чтобы настроить, какой Endianess процессор будет использовать при выполнении операции нагрузки / магазина. Выглядит как Яар __big_endian
Сертинавский просто заставляет процессор манипулировать этим битом при доступе к переменной с меткой этого атрибута.
ARM7TDMI - это архитектура архитектуры ARMV4 (или, может быть, ARMV5) (если я вспомню правильно).
Другие советы
Это функция расширения в компиляторе IAR и поэтому должна быть включена либо с использованием параметра командной строки, либо путем включения расширений IAR на странице параметров компилятора. Это ключевое слово не совместимо с опцией компилятора --strict_ansi.