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

 
 
> Размер исполняемого файла не влез в отведённую память, что можно уменьшить?, Работаю в SDK от Xilinx, это допиленный Eclipse, как я понимаю
Krys
сообщение Dec 18 2014, 04:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Здравствуйте. Не уверен, что выбрал правильный раздел. Если что - поправьте пожалуйста. В этом разделе в основном обсуждаются аппаратные проблемы использования встраиваемых систем, чистых программистов там мало похоже, судя по отсутствию ответов на мои вопросы начинающего. А проблема у меня чисто програмерская, нужно глубоко понимать, как что компилится и линкуется.
Я новичок в программировании под Microblaze (ARM-ядро, если не путаю), работаю в SDK от Xilinx, это допиленный Eclipse, как я понимаю. Пользоваться толком не умею, поэтому, думаю, и проблемы.
Проблема такая. На этапе компиляции всего проекта вылазят такие ошибки:

Код
fft_sp605.elf section `.text' will not fit in region `microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl'    fft_sp605             C/C++ Problem

region `microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl' overflowed by 63912 bytes    fft_sp605             C/C++ Problem


Всего мне отведено 8кБ памяти в ПЛИС. Моя программа небольшая реально, на пару страниц кода. Библиотеки почти не используются, ёмкие функции не вызываются. Почти уверен, что должна влезть в отведённую память. Ну хотя бы даже не влезть, но не в 8 же раз ей не хватает...

Начал лазить по файлам, смотреть, кто чего сколько потребил. Вот тут накопал:

файл main.o:
CODE
architecture: MicroBlaze, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00000000 00000000 00000034 2**0
ALLOC
3 .rodata 00000298 00000000 00000000 00000034 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .text.main 00000f5c 00000000 00000000 000002cc 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
5 .debug_frame 00000040 00000000 00000000 00001228 2**2
CONTENTS, RELOC, READONLY, DEBUGGING
6 .debug_info 0000054d 00000000 00000000 00001268 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
7 .debug_abbrev 00000130 00000000 00000000 000017b5 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_loc 0000002e 00000000 00000000 000018e5 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
9 .debug_aranges 00000020 00000000 00000000 00001913 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
10 .debug_ranges 00000010 00000000 00000000 00001933 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
11 .debug_line 000006c4 00000000 00000000 00001943 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
12 .debug_macinfo 0000eb39 00000000 00000000 00002007 2**0
CONTENTS, READONLY, DEBUGGING

13 .debug_str 00000428 00000000 00000000 00010b40 2**0


Файл platform.o
CODE
architecture: MicroBlaze, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00000000 00000000 00000034 2**0
ALLOC
3 .text.enable_caches 00000040 00000000 00000000 00000034 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
4 .text.disable_caches 00000040 00000000 00000000 00000074 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
5 .text.init_uart 00000020 00000000 00000000 000000b4 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
6 .text.init_platform 00000040 00000000 00000000 000000d4 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
7 .text.cleanup_platform 00000034 00000000 00000000 00000114 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
8 .debug_frame 0000009c 00000000 00000000 00000148 2**2
CONTENTS, RELOC, READONLY, DEBUGGING
9 .debug_info 000000df 00000000 00000000 000001e4 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
10 .debug_abbrev 00000041 00000000 00000000 000002c3 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 000000dc 00000000 00000000 00000304 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
12 .debug_aranges 00000040 00000000 00000000 000003e0 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
13 .debug_ranges 00000030 00000000 00000000 00000420 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
14 .debug_line 000000f3 00000000 00000000 00000450 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
15 .debug_macinfo 000100c2 00000000 00000000 00000543 2**0
CONTENTS, READONLY, DEBUGGING

16 .debug_str 00000169 00000000 00000000 00010605 2**0
CONTENTS, READONLY, DEBUGGING


Тут видно, что секции debug слишком жирные.

Я честно говоря вообще толком не знаю, где что правильно посмотреть и как настроить какие размеры сегментов. Даже не знаю, как посмотреть, сколько моя программа занимает отдельно, а сколько переменные отдельно и т.п.

Логичным решением вроде является не использовать отладку, раз дебуг секция не лезет. Но, насколько я знаю, многие разработчики прекрасно отлаживаются с таким же объёмом памяти, так что проблема видимо, что я где-то что-то не так настроил.

Если нужны ещё какие-то файлы, что-то где-то глянуть - спросите, я посмотрю, просто сразу не знаю, что вам показать, чтобы было понятно, как мне можно помочь.

Заранее спасибо.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post



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

 


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


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