реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Объявить неприкасаемый регион памяти, в Keil uvision v3
axa09
сообщение Mar 17 2009, 06:15
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105



требуется объявить "неприкасаемый" регион памяти - тоесть чтоб линковщик не размещал там никаких функций/данных/стеков
для собственных нужд...

напишите плиз фрагмент объявления такого сегмента(секции)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 17 2009, 09:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Если хотите использовать какой-либо регион в своих целях, то просто опишите эти цели линкеру, ничего лишнего он туда не положит.
А если хотите совсем неприкасаемый регион, то линкеру можно просто не говорить о его существовании smile.gif
Go to the top of the page
 
+Quote Post
richie
сообщение Mar 17 2009, 10:46
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



smile.gif

Объяви массив нужной тебе длины и скажи линковщику куда его положить.
Обещаю, больше линковщик с ним ничего делать не будет.
Go to the top of the page
 
+Quote Post
axa09
сообщение Mar 18 2009, 03:22
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105



Цитата(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)
  }
}
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 18 2009, 12:06
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(axa09 @ Mar 18 2009, 06:22) *
языком скрипта реалвьюшного линкера не владею, посему прошу участников написать фрагмент sct-файла, чтоб зарезервировать к примеру адреса : 0x00201000...0x002010FF

Вот так просто выгрызать 256 посередине региона не лучшая идея - замучаетесь потом секции распихивать, и уж без владения линкерным скриптом никак.
А выделить кусок в начале или в конце памяти можно достаточно спокойно - нужно лишь исправить адрес и длину execution region'а RW_IRAM1. И инициализацию стека еще проверить, чтобы не было пересечений.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 18 2009, 12:29
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Вот и у меня возникала потребность сделать "дыру" в памяти. Помнится, линкер от IAR делал это без проблем: сам раскидывал секции по обе стороны "дыры". А вот у RealView такой фичи не вижу, только ручная сортировка секций. Или я плохо искал? Просьба знающим людям прокомментировать.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 18 2009, 12:54
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Нет, такой фичи нет.
Go to the top of the page
 
+Quote Post
AShurick
сообщение Oct 10 2009, 17:58
Сообщение #8





Группа: Участник
Сообщений: 5
Регистрация: 4-10-09
Из: Киев Украина
Пользователь №: 52 743



В Keil это сделать просто. Заходим в опции проекта, выбираем вкладку Target и корректируем поля в Read/Only Memory Areas. Таким образом сообщаем Линковщику где можно использовать FLASH и по каким адресам.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016