Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объявить неприкасаемый регион памяти
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
axa09
требуется объявить "неприкасаемый" регион памяти - тоесть чтоб линковщик не размещал там никаких функций/данных/стеков
для собственных нужд...

напишите плиз фрагмент объявления такого сегмента(секции)
aaarrr
Если хотите использовать какой-либо регион в своих целях, то просто опишите эти цели линкеру, ничего лишнего он туда не положит.
А если хотите совсем неприкасаемый регион, то линкеру можно просто не говорить о его существовании smile.gif
richie
smile.gif

Объяви массив нужной тебе длины и скажи линковщику куда его положить.
Обещаю, больше линковщик с ним ничего делать не будет.
axa09
Цитата(richie @ Mar 17 2009, 01:46) *
Объяви массив нужной тебе длины и скажи линковщику куда его положить.


у меня Keil uv 3.3 там директива __at не работает: char P[0x1000] __at 0x00201000 - выдаёт ошибку!

языком скрипта реалвьюшного линкера не владею, посему прошу участников написать фрагмент sct-файла, чтоб зарезервировать к примеру адреса : 0x00201000...0x002010FF

для арм7 прошу дописать Sct-файл:

Код
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x00100000 0x00010000  { ; load region
  ER_IROM1 0x00100000  {      ; load address = execution address
   *.o (RESET, +First)
   * (+RO)
  }
  RW_IRAM1 0x00200000 0x00004000  { ; RW data
   * (+RW +ZI)
  }
}
aaarrr
Цитата(axa09 @ Mar 18 2009, 06:22) *
языком скрипта реалвьюшного линкера не владею, посему прошу участников написать фрагмент sct-файла, чтоб зарезервировать к примеру адреса : 0x00201000...0x002010FF

Вот так просто выгрызать 256 посередине региона не лучшая идея - замучаетесь потом секции распихивать, и уж без владения линкерным скриптом никак.
А выделить кусок в начале или в конце памяти можно достаточно спокойно - нужно лишь исправить адрес и длину execution region'а RW_IRAM1. И инициализацию стека еще проверить, чтобы не было пересечений.
scifi
Цитата(aaarrr @ Mar 18 2009, 15:06) *
Вот так просто выгрызать 256 посередине региона не лучшая идея - замучаетесь потом секции распихивать, и уж без владения линкерным скриптом никак.

Вот и у меня возникала потребность сделать "дыру" в памяти. Помнится, линкер от IAR делал это без проблем: сам раскидывал секции по обе стороны "дыры". А вот у RealView такой фичи не вижу, только ручная сортировка секций. Или я плохо искал? Просьба знающим людям прокомментировать.
aaarrr
Нет, такой фичи нет.
AShurick
В Keil это сделать просто. Заходим в опции проекта, выбираем вкладку Target и корректируем поля в Read/Only Memory Areas. Таким образом сообщаем Линковщику где можно использовать FLASH и по каким адресам.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.