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

 
 
> AT91SAM7x, проблемы с распределением памяти
Daria
сообщение Apr 27 2010, 17:43
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Здравствуйте. Такая проблема - Во время очередного компилирования кода, IAR вдруг стал выдавать ошибку
Error[lp011]:section placement failed: unable to allocate space for section with a total bytes in [0x00200100 - 0x20ffff].
Программу гружу в режиме Debuge. правильно ли понимаю, что ругается на слишком длинный код для RAM? Код занимает уже 61кВ, RAM в at91sam7x256 - 64 кВ.
Пробую прошить вo flash - iar зависает и ругается Prefect Handler: SWI_Handler///+1 symbol not displayed: 0x10a6b8:0xeafffffe Abort Handler.
Во время работы когда-то правила линковочные файлы, может, дело не в размере кода, а просто что-то неправильно написала?
Вот линковочные файлы. laughing.gif
Подскажите, кто-нибудь! help.gif
Прикрепленные файлы
Прикрепленный файл  flash.txt ( 2.84 килобайт ) Кол-во скачиваний: 102
Прикрепленный файл  sram.txt ( 2.21 килобайт ) Кол-во скачиваний: 66
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение May 6 2010, 08:46
Сообщение #2


Гуру
******

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



Уложить функцию в отдельную секцию, саму секцию в скрипте линкера определить в RAM. Точную последовательность не напишу, ибо IAR'ом не пользуюсь, но уверен, что данный пласт проблем не обойден в мануале.
Go to the top of the page
 
+Quote Post
Daria
сообщение May 6 2010, 08:50
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(aaarrr @ May 6 2010, 11:46) *
Уложить функцию в отдельную секцию, саму секцию в скрипте линкера определить в RAM. Точную последовательность не напишу, ибо IAR'ом не пользуюсь, но уверен, что данный пласт проблем не обойден в мануале.

Никак не могу найтиsad.gif А методом тыка не получаетсяsad.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 6 2010, 09:46
Сообщение #4


Гуру
******

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



Цитата(Daria @ May 6 2010, 11:50) *
Никак не могу найтиsad.gif А методом тыка не получаетсяsad.gif
Раньше было ключевое слово __ramfunc, поищите его в описании компилятора. А тут пример, какую минимально необходимую часть кода надо выносить в ОЗУ.


--------------------
На любой вопрос даю любой ответ
"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
Daria
сообщение May 10 2010, 09:04
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(Сергей Борщ @ May 6 2010, 13:46) *
Раньше было ключевое слово __ramfunc, поищите его в описании компилятора. А тут пример, какую минимально необходимую часть кода надо выносить в ОЗУ.

Спасибо, это мне поможет.
Но вот такой еще вопрос - раньше я располагала константные массивы данных во flash следующим образом - в icf фале
Код
define symbol __ICFEDIT_region_ROM_end__     = 0x13FFFF;

define region MYINFOSEG1_region    = mem:[from  0x13EBFF  to  0x13FFFF];

place in MYINFOSEG1_region   {section .MYINFOSEG1_section};

в своем сишном файле
Код
_Pragma(location= "/.MYINFOSEG1_section/")
const unsigned int massive A={55,6,6,9... и т.д.}

все вроде было нормально. Теперь припрошивке проекта во flash. массив стал располагаться в ОЗУ, а во flash не помещается unsure.gif
Что нужно изменить?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 2nd September 2025 - 08:42
Рейтинг@Mail.ru


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