STM32H7 - IAR, помещающий локальные переменные в «зарезервированную память» (0x1FF20000 - 0x1FFFFFFF) - PullRequest
0 голосов
/ 13 января 2019

Я начал новый проект с использованием STM32H7, в настоящее время использую IAR EWARM V8, использовал STM32CUBEMX для генерации кода конфигурации и начала начального проекта.

Я работал над несколькими проектами CUBEMX eval, чтобы проверить и проверить работоспособность некоторого аппаратного обеспечения, и теперь я могу нормально выполнять код.

Но происходит нечто странное, в частности, с переменными, если вы назначаете их как локальные переменные внутри функции, как-то IAR помещает их в диапазон памяти 'System Reserved' ...

т.е. в пределах 0x1FF20000 - 0x1FFFFFFF

Например ... пример проекта 'FMC_NOR', который предоставляет STM, - это тестовый код для тестирования нашей флэш-памяти NOR и т. Д.

они создали эти два небольших массива как глобальные переменные в верхней части файла main.c. (buffer_size равно 0x1000)

uint16_t aTxBuffer[BUFFER_SIZE] = {0};
uint16_t aRxBuffer[BUFFER_SIZE] = {0};

Находясь в глобальном пространстве, они размещаются в области DTCM (0x2000: 0000)

При перемещении в качестве локальных переменных они затем выделяются в «зарезервированное пространство» ...

Что происходит, когда IAR обнаруживает какие-либо массивы, подобные этому, процессор выходит из строя с аппаратной ошибкой «неточного доступа к данным».

Эта же ошибка возникает с кодом для инициализации модуля JPEG, поскольку он пытается загрузить массивы таблиц Хаффмана и т. Д. *

При использовании TrueStudio эта проблема не возникает ... CubeMX автоматически создает файлы компоновщика для любого используемого компилятора.

Я ничего не видел в файлах компоновщика, указывающих на зарезервированный адрес памяти.

Так не уверен, что может происходить? Я новичок в использовании этого процессора, поэтому я только начинаю понимать, что это отображение памяти.

Спасибо за любую помощь или предложения, я хотел бы выяснить IAR, так как до сих пор он мне немного больше нравится TrueStudio.

1 Ответ

0 голосов
/ 13 января 2019

Я решил свой вопрос ... так что мне больше не нужна помощь ...

Это файл 'stm32h743xx_flash.icf', сгенерированный STM CUBEMX для STM32H7 ...

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x200;
/**** End of ICF editor section. ###ICF###*/

Увеличил size_cstack до 2k (0x800) и все в порядке ...

...