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

 
 
 
Reply to this topicStart new topic
> Динамическое выделение памяти в IAR, Возникает ошибка
Alexandr
сообщение Feb 15 2009, 15:22
Сообщение #1


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Начинаю осваивать IAR. Использую макетку с LPC2148. Попытался динамически выделить память на 20 байт и получил ошибку линкера

Инструкция:
temp = (char *) calloc(20, sizeof(char));

Ошибка:
Linking
Error[e16]: Segment HEAP (size: 0x8000 align: 0x2) is too long for segment definition. At least 0x2310 more bytes needed. The problem occurred while
processing the segment placement command "-Z(DATA)HEAP+8000=40000000-40007FFF", where at the moment of placement the available memory
ranges were "CODE:40002310-40007fff"
Reserved ranges relevant to this placement:
40000000-4000020f DATA_Z
40000210-4000220f CSTACK
40002210-4000230f IRQ_STACK
40002310-40007fff HEAP

Видимо я что-то не правильно настроил. Подскажите где смотреть.


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Feb 15 2009, 16:01
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Alexandr @ Feb 15 2009, 20:22) *
Error[e16]: Segment HEAP (size: 0x8000 align: 0x2) is too long for segment definition. At least 0x2310 more bytes needed. The problem occurred while
processing the segment placement command "-Z(DATA)HEAP+8000=40000000-40007FFF", where at the moment of placement the available memory

У вас запрашиваемый размер под heap 0x8000 не вмещается в RAM контроллера.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Alexandr
сообщение Feb 19 2009, 12:57
Сообщение #3


Знающий
****

Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283



Прошу прощения за задержку. Про Heap я понял. Я просто не понял почему он такой большой размер запросил. Это видимо где-то настраиваться должно, но я не знаю где.


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Feb 19 2009, 13:17
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Alexandr @ Feb 19 2009, 18:57) *
Прошу прощения за задержку. Про Heap я понял. Я просто не понял почему он такой большой размер запросил. Это видимо где-то настраиваться должно, но я не знаю где.

Одно из двух: В xcl файле или в командной строке линкеру определен сегмент heap как "-Z(DATA)HEAP+8000=40000000-40007FFF"
Там и нужно его поправить.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 19 2009, 13:22
Сообщение #5


Гуру
******

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



Цитата(Alexandr @ Feb 19 2009, 14:57) *
Это видимо где-то настраиваться должно, но я не знаю где.
Project->OPtions->Linker->Configuration->Linker command file под ним неприметная иконка "Command file configuration tool" в ней вкладка "Stacks & Heap". Или в xcl-файле. Зависит от того, использует или нет xcl-файл те данные, которые оболочка передает при вызове линкера.


--------------------
На любой вопрос даю любой ответ
"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

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

 


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


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