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

 
 
> Linker script XPS9.2
tolik1
сообщение Jun 2 2008, 08:15
Сообщение #1


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

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Есть проект ISE - XPS9.2. До некоторого момента все шло хорошо. Но однажды при увеличении программного кода (добавление С функций) компилятор стал выдавать ошибку:
/TestApp_Memory/src/TestApp_Memory_LinkScr.ld:225 cannot move location counter backwards (from fffffc70 to 00000070)
collect2: ld returned 1 exit status
make: *** [TestApp_Memory/executable.elf] Error 1
Done!
В программу пытаюсь добавить код под прерывание. Хотя подобная ошибка появлялась и ранее, при добавлении обычных функций, но тогда просто перегенерил Linker script и всё ушло. В этот раз и так и эдак и всё никак.
Память 64к 0хFFFF0000 - 0xFFFFFFFFF
Вопрос:
1. Что и куда он пытается двинуть.?
2. Почему не может?
3. Как ему помочь?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Дмитрий Мазунин
сообщение Jun 2 2008, 11:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Скорее всего, мало памяти.
Когда генерите Linker script, посмотрите размеры сегментов - входят ли они все в Ваши 64К...

Как помочь -
1) увеличить размер блока памяти.
проанализировав размеры сегментов:
2) уменьшить код - например, пользуйтесь xil_printf, если что-то печатаете, printf очень велик.
3) также удалить ненужные массивы-переменные, если это возможно, также хип/стек.
Go to the top of the page
 
+Quote Post
tolik1
сообщение Jun 2 2008, 11:30
Сообщение #3


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

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Цитата(Дмитрий Мазунин @ Jun 2 2008, 15:17) *
Скорее всего, мало памяти.
Когда генерите Linker script, посмотрите размеры сегментов - входят ли они все в Ваши 64К...

Как помочь -
1) увеличить размер блока памяти.
проанализировав размеры сегментов:
2) уменьшить код - например, пользуйтесь xil_printf, если что-то печатаете, printf очень велик.
3) также удалить ненужные массивы-переменные, если это возможно, также хип/стек.

Памяти достаточно (размер программы - смехотворный). С linker scriptом сложнее он ведь показывает размеры секций в режиме Readonly Править в диалоге можно только размер стека и кучи. Размер памяти конечно увеличивал - не помогло help.gif
Go to the top of the page
 
+Quote Post
Дмитрий Мазунин
сообщение Jun 2 2008, 12:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Размеры секций Вы править, конечно, не можете - они зависят от Вашей программы и данных.
Я говорил - ПОСМОТРЕТЬ размеры, просуммировать их все - входят ли в память, какие из них (возможно) слишком большие ?
Правильно ли расположен сегмент .vectors (выровнен согласно требованиям Вашего процессора), сегмент .boot ?

PS Какой у Вас процессор ?
PPS Работаем в ЕДК (PowerPC) 2 года, собирали самые разные аппаратные платформы и программы, проблем на было...
Go to the top of the page
 
+Quote Post
tolik1
сообщение Jun 2 2008, 14:01
Сообщение #5


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

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Цитата(Дмитрий Мазунин @ Jun 2 2008, 16:12) *
Размеры секций Вы править, конечно, не можете - они зависят от Вашей программы и данных.
Я говорил - ПОСМОТРЕТЬ размеры, просуммировать их все - входят ли в память, какие из них (возможно) слишком большие ?
Правильно ли расположен сегмент .vectors (выровнен согласно требованиям Вашего процессора), сегмент .boot ?

PS Какой у Вас процессор ?
PPS Работаем в ЕДК (PowerPC) 2 года, собирали самые разные аппаратные платформы и программы, проблем на было...

Размеры секций показываютя на основе ELF файла. А его-то получить не получается.

Цитата(tolik1 @ Jun 2 2008, 17:53) *
Размеры секций показываютя на основе ELF файла. А его-то получить не получается.

Вы были правы насчет размера памяти сделал 128К начал компилиться. Однако начались другие чудеса. При включении в функции main процедур инициализации прерывания
XExc_Init
XExc_RegisterHandler
XExc_mEnableExceptions программа на кристале перестает грузиться вообще. Как только я их(вызовы) коментирую - работает
Go to the top of the page
 
+Quote Post
Дмитрий Мазунин
сообщение Jun 3 2008, 06:25
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Правильную настройку системы прерываний смотрите в примерах ЕДК EDK\sw\XilinxProcessorIPLib\drivers\intc_v1_10_c\examples\xintc_example.c

Также теперь для обработки прерывания Вам может не хватать размера стека - увеличьте его.

Далее, работоспособность Вашей программы может зависеть от характера прерывания (уровень или фронт), а также от устройства, генерирующего прерывание - возможно, устройство требует подтверждения для снятия прерывания.
Go to the top of the page
 
+Quote Post
tolik1
сообщение Jun 4 2008, 06:01
Сообщение #7


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

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Цитата(Дмитрий Мазунин @ Jun 3 2008, 10:25) *
Правильную настройку системы прерываний смотрите в примерах ЕДК EDK\sw\XilinxProcessorIPLib\drivers\intc_v1_10_c\examples\xintc_example.c

Также теперь для обработки прерывания Вам может не хватать размера стека - увеличьте его.

Далее, работоспособность Вашей программы может зависеть от характера прерывания (уровень или фронт), а также от устройства, генерирующего прерывание - возможно, устройство требует подтверждения для снятия прерывания.

Огромное СПАСИБО за ответы. Похоже разрулил. cheers.gif
Go to the top of the page
 
+Quote Post

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

 


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


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