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