Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: XC32 определение региона внешней памяти.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
mse
Собственно, проблема в названии темы.
В мануале по ХС32 дана рекомендация. Описать внешний сегмент с помощью определения региона

CODE
#pragma region name="ext_mem" origin=0xC0000000 size=0x1000
...
int ext_array[256] __attribute__((region("ext_mem")));
оно, каг-бы, да. Но, при попытке компилить, выдаётся варнинг, что переменной не может быть присвоен атрибут и она будет расположена во внутренней памяти. Процессор 2048EFH144, т.е. регион отображается в нужную часть виртуальной памяти.
Если тупо обращаться по абсолютному адресу в этот кусок адресного пространства, опять-же, выдаётся варнинг, но обращение происходит. Жить можно, но горбато.
У компилера оптимизация на "0".
Биться за чистоту кода или забить?
mse
Цитата(mse @ Nov 24 2017, 20:47) *
Собственно, проблема в названии темы.
В мануале по ХС32 дана рекомендация. Описать внешний сегмент с помощью определения региона

CODE
#pragma region name="ext_mem" origin=0xC0000000 size=0x1000
...
int ext_array[256] __attribute__((region("ext_mem")));
оно, каг-бы, да. Но, при попытке компилить, выдаётся варнинг, что переменной не может быть присвоен атрибут и она будет расположена во внутренней памяти. Процессор 2048EFH144, т.е. регион отображается в нужную часть виртуальной памяти.
Если тупо обращаться по абсолютному адресу в этот кусок адресного пространства, опять-же, выдаётся варнинг, но обращение происходит. Жить можно, но горбато.
У компилера оптимизация на "0".
Биться за чистоту кода или забить?

В общем, оказалось все банально. По запарке объявлял переменную в функции. Стоило объявить переменную глобально, всё заработало.
Мораль: не надо запариваться.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.