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

 
 
 
Reply to this topicStart new topic
> IAR 4.20: Всю оставшуюся память - хипу
meister
сообщение Jan 31 2009, 10:20
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Как написать в xcl файле, чтобы все оставшиеся адреса из диапазона отдавались указанному сегменту (HEAP)?

Спасибо.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 31 2009, 15:24
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(meister @ Jan 31 2009, 12:20) *
Как написать в xcl файле, чтобы все оставшиеся адреса из диапазона отдавались указанному сегменту (HEAP)?
Боюсь, что с библиотечной реализацией поддержки кучи - никак. Линкеру можно задать только максимальный размер сегмента (указанием доступных адресов) и минимальный (тем методом, которым задаются размеры стеков). Реализовать ваше желание можно объявив два сегмента, с привязкой к началу и концу свободной памяти, и заставив менеджер кучи брать память по началу первого и концу второго сегментов, а не по началу и размеру сегмента HEAP. В скрипте это может выглядеть примерно так:
Код
было:

-D_CSTACK_SIZE=(1024)
-D_IRQ_STACK_SIZE=(.1024)
-D_HEAP_SIZE=(.1024*8)

-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND

-Z(DATA)CSTACK+_CSTACK_SIZE#RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE#RAMSTART-RAMEND
будет:

-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND
-Z(DATA)HEAP_START=RAMSTART-RAMEND

-Z(DATA)CSTACK+_CSTACK_SIZE#RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE#RAMSTART-RAMEND
-Z(DATA)HEAP_END#RAMSTART-RAMEND
А вот как исправить библиотечный менеджер, не имея его исходников - даже и не подскажу. Можете поискать на форуме, zltigo выкладывал свой менеджер, его вполне можно подточить.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 31 2009, 22:00
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(meister @ Jan 31 2009, 16:20) *
Как написать в xcl файле, чтобы все оставшиеся адреса из диапазона отдавались указанному сегменту (HEAP)?

На 100% не уверен, но кажется последнему сегменту в линкере можно задать всю оставшуюся память, например в раме. Вот такой вот строчкой
Код
-Z(DATA)HEAP=RAMSTART-RAMEND

Однако это не мешает задать строчку -D_HEAP_SIZE. Как на это будет реагировать менеджер кучи не знаю. Возможно если вообще не задавать -D_HEAP_SIZE, то он сам вычислит размер по началу и концу сегмента.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 31 2009, 22:21
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(GetSmart @ Feb 1 2009, 00:00) *
Вот такой вот строчкой
Код
-Z(DATA)HEAP=RAMSTART-RAMEND
Она задает размер сегмента, определяемый его содержимым. Так же объявлены сегменты кода и данных. Поскольку содержимое сегмента HEAP равно нулю, то и размер самого сегмента будет нулевым.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 31 2009, 22:24
Сообщение #5


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А вот как исправить библиотечный менеджер, не имея его исходников - даже и не подскажу.


Кто мешает вытащить из закромов про-версию и покурить исходники?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 11:09
Рейтинг@Mail.ru


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