Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ PIC _ XC32 определение региона внешней памяти.

Автор: mse Nov 24 2017, 17:47

Собственно, проблема в названии темы.
В мануале по ХС32 дана рекомендация. Описать внешний сегмент с помощью определения региона

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

Автор: mse Nov 30 2017, 19:08

Цитата(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 (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)