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

 
 
> Объявить неприкасаемый регион памяти, в 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
 
Start new topic
Ответов
richie
сообщение Mar 17 2009, 10:46
Сообщение #2


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

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



smile.gif

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


Участник
*

Группа: Новичок
Сообщений: 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
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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



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

 


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


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