Перейти к содержанию

    

XC32 определение региона внешней памяти.

Собственно, проблема в названии темы.

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

 

#pragma region name="ext_mem" origin=0xC0000000 size=0x1000
...
int ext_array[256] __attribute__((region("ext_mem")));

оно, каг-бы, да. Но, при попытке компилить, выдаётся варнинг, что переменной не может быть присвоен атрибут и она будет расположена во внутренней памяти. Процессор 2048EFH144, т.е. регион отображается в нужную часть виртуальной памяти.

Если тупо обращаться по абсолютному адресу в этот кусок адресного пространства, опять-же, выдаётся варнинг, но обращение происходит. Жить можно, но горбато.

У компилера оптимизация на "0".

Биться за чистоту кода или забить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Собственно, проблема в названии темы.

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

 

#pragma region name="ext_mem" origin=0xC0000000 size=0x1000
...
int ext_array[256] __attribute__((region("ext_mem")));

оно, каг-бы, да. Но, при попытке компилить, выдаётся варнинг, что переменной не может быть присвоен атрибут и она будет расположена во внутренней памяти. Процессор 2048EFH144, т.е. регион отображается в нужную часть виртуальной памяти.

Если тупо обращаться по абсолютному адресу в этот кусок адресного пространства, опять-же, выдаётся варнинг, но обращение происходит. Жить можно, но горбато.

У компилера оптимизация на "0".

Биться за чистоту кода или забить?

В общем, оказалось все банально. По запарке объявлял переменную в функции. Стоило объявить переменную глобально, всё заработало.

Мораль: не надо запариваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация