|
|
  |
где посмотреть сколько места занимает приложение под Nios |
|
|
|
Feb 29 2012, 17:55
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(Fynjisx @ Feb 29 2012, 17:12)  ...где в Eclipse можно увидеть размер кода и данных занимаемых написанной программой?... После выполнения "Build Project" в окне "Console" будут строки типа: Код Info: (YourProgram.elf) 25 KBytes program size (code + initialized data). Info: 6620 Bytes free for stack + heap.
|
|
|
|
|
Mar 1 2012, 07:30
|
Местный
  
Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695

|
Цитата(Fynjisx @ Feb 29 2012, 17:12)  Доброго времени. где в Eclipse можео увидеть размер кода и даных занимаемых написанной программой? Заранее благодарю... В окошке CONSOLE в Eclipse по окончанию компиляции. Finished building target: test_rom.elf ' ' Invoking: MicroBlaze Print Size mb-size test_rom.elf |tee "test_rom.elf.size" text data bss dec hex filename 3710 456 2090 6256 1870 test_rom.elf Finished building: test_rom.elf.size
|
|
|
|
|
Mar 2 2012, 02:44
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(Konst_777 @ Feb 29 2012, 22:55)  После выполнения "Build Project" в окне "Console" будут строки типа: Код Info: (YourProgram.elf) 25 KBytes program size (code + initialized data). Info: 6620 Bytes free for stack + heap. На uC/OS проект был 200-300 кБ. После перехода на FreeRTOS у меня после выполнения "Build Project" в окне "Console" такое Код Info: (handlerFree.elf) 8523 KBytes program size (code + initialized data). Info: 122548 KBytes free for stack + heap. ВОСЕМЬ Мбайт!!! Сначала подумал - "ну и ОС! Прожорливая". Но потом залил флешпрограматором конфигурацию и прогу в epcs16. Всё работает. По даташиту epcs16 всего 2 Мбайта. Как могла туда уместиться программа в 8,5 Мбайт? Получается что этот вывод, после сборки - неправильный.
|
|
|
|
|
Mar 2 2012, 03:12
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(juvf @ Mar 2 2012, 12:44)  На uC/OS проект был 200-300 кБ. После перехода на FreeRTOS у меня после выполнения "Build Project" в окне "Console" такое Код Info: (handlerFree.elf) 8523 KBytes program size (code + initialized data). Info: 122548 KBytes free for stack + heap. ВОСЕМЬ Мбайт!!! Сначала подумал - "ну и ОС! Прожорливая". Но потом залил флешпрограматором конфигурацию и прогу в epcs16. Всё работает. По даташиту epcs16 всего 2 Мбайта. Как могла туда уместиться программа в 8,5 Мбайт? Получается что этот вывод, после сборки - неправильный. Это как раз тот случай, который нужно посмотреть в objdump-файле. У меня такая же ситуация была - по размерам код не должен был бы поместиться во флэш, но работало. И при прошивке programmer выдавал, что записал всего 94кБ, вместо 300кБ по отчету. Дело в том, что сюда же в 300кБ (или в 8М Ваших) входят неинициализируемые переменные. Например буферы. У меня один буфер был ~200кБ. В файле objdump все это расписано. Правда нужно не забывать, что объем и виды информации в objdump зависит от того, с какими ключами вызывается команда nios2-elf-objdump.
|
|
|
|
|
Mar 2 2012, 04:13
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(barabek @ Mar 1 2012, 07:18)  В файле xxx.objdump много информации. Этот файл получается на основе elf-файла либо автоматически после build, либо вручную через "command shell" выполнением команды nios2-elf-objdump. Смотрите подробности в "software developers handbook" А как посмотреть этой командой? в "software developers handbook" нету про размер прошивки. А nios2-elf-objdump --help выдал много чего, но нет там ни одного ключа типа Display program size.
|
|
|
|
|
Mar 2 2012, 04:39
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(juvf @ Mar 2 2012, 14:13)  Display program size. По простому - выведете все хедеры. Ключ -x. Код nios2-elf-objdump -D -S -x <project>.elf > <project>.elf.objdump -этот набор на все случаи жизни.
|
|
|
|
|
Mar 2 2012, 05:04
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
ключ -х вывел 100500 строчек "матрицы". хрен посмотришь в терминале. пришлось вывод в файл отправлять. см аттач Цитата набор на все случаи жизни этот набор генерирует дамп <project>.elf.objdump файла <project>.elf >. Зачем мне дамп<project>.elf.objdump? И где размер программы?
Сообщение отредактировал juvf - Mar 2 2012, 05:08
Прикрепленные файлы
matrix.txt ( 117.99 килобайт )
Кол-во скачиваний: 156
|
|
|
|
|
Mar 2 2012, 05:55
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(juvf @ Mar 2 2012, 15:04)  ключ -х вывел 100500 строчек "матрицы". хрен посмотришь в терминале. пришлось вывод в файл отправлять. см аттач
этот набор генерирует дамп <project>.elf.objdump файла <project>.elf >. Зачем мне дамп<project>.elf.objdump? И где размер программы? 1. Да, в консоли не посмотришь. 2. Давайте разбираться. Смотрим раздел sections. Вся информация, интересующая Вас, здесь. Видно, где располагается каждая секция и какой она занимает размер. Расположение это - VMA и LMA, т.е. виртуальный и логический адрес начала секции. Без использования мощных ОСей они одинаковы. Размер (size) - тут вообще все понятно. Теперь что касается самих секций. Есть основные, пользовательские. И есть служебные. Про них я молчу, ничего не знаю. А про пользовательские можете почитать. Вкратце опишу. Секция .text - основная Ваша программа, т.е. код написанных Вами функций. Rodata - readOnlyData - константы. rwdata - read/write data - переменные. bss - это тоже секция данных, инициализируемая нулями. exceptions - из названия понятно, что в ней располагается код исключений (в том числе и прерываний). entry - код "входа", если он есть, например, бутлоадера (но у Вас 0). Где располагаются те или иные секции - управляете Вы настройками линкера. Судя по Вашему вложению - все они в области памяти с 08000000. И Ваша секция bss занимает аж 0x00810a5f(8 456 799)байт. Эту секцию во флэш хранить не нужно, т.к. при запуске программы там будут одни нули.
|
|
|
|
|
Mar 2 2012, 06:42
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(juvf @ Mar 2 2012, 16:27)  ну так и сколько в итоге моя моя прошивка отжрёт у EPCS? Складывать размеры всех секций? .text + .rodata + .rwdata + ... + .debug_info + .debug_abbrev + ...
Не понятно. Нужно курить про каждую секцию, гуглить. Что складывать, а что нет. А возможно в прошивку что-то ляжет, чегочч в выводе -х нет. А потом появятся новые секции - опять гуглить. как-то всё сложно. (( Как и говорил, насчет служебных могу обмануть. Но, ЕМНИП, они во флэш не заливаются. Кто-нибудь может подскажет. Я же скажу один путь, как это можно выяснить  . Раз Вы пишете про EPCS, значить у Вас при заливке вызывается elf2flash, который создает файл xxx.flash. Формат этого файла известен. Отсюда определите непосредственно размер того, что пишется в EPCS
|
|
|
|
|
Mar 2 2012, 06:57
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(barabek @ Mar 2 2012, 08:55)  Где располагаются те или иные секции - управляете Вы настройками линкера. Подскажите где это место в котором я могу задавать расположение секций? Задавал кажись уже такой вопрос на форуме... Есть настройки BSP-editor, в которых отображаются имена секций и регионы памяти. А как задать их место положение и размер, я так и не нашел Цитата(barabek @ Mar 2 2012, 08:55)  Судя по Вашему вложению - все они в области памяти с 08000000. Откуда такой вывод?
--------------------
С Уважением...
|
|
|
|
|
Mar 2 2012, 07:15
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Fynjisx @ Mar 2 2012, 16:57)  Подскажите где это место в котором я могу задавать расположение секций? Задавал кажись уже такой вопрос на форуме... Есть настройки BSP-editor, в которых отображаются имена секций и регионы памяти. А как задать их место положение и размер, я так и не нашел Во вкладке linker script. Там Вы выставляете, куда, в какую физическую память поместить конкретную секцию. Размер - зачем он Вам нужен? Что Вы под этим подразумеваете? Как можно знать, допустим, какой будет размер у секции .text до завершения компиляции? Теоретически, конечно, можно  , и то при выключенной оптимизации. И зачем этот размер задавать? Скомпилировался проект, появились данные о размерах всех секций. Дальше линкер их распихивает. В простейшем случае при одной физической памяти подряд друг за другом, а остатки под кучу. В некоторых ситуациях можно делать дополнительные секции. В общем, непонятен контекст вопроса. Цитата Откуда такой вывод? Так в его файле все пользовательские секции идут одна за другой, начиная с адреса 0x08000000 секция exceptions.
|
|
|
|
|
Mar 4 2012, 14:50
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(barabek @ Mar 2 2012, 10:15)  Размер - зачем он Вам нужен? Что Вы под этим подразумеваете? Как можно знать, допустим, какой будет размер у секции .text до завершения компиляции? И зачем этот размер задавать? Скомпилировался проект, появились данные о размерах всех секций. я неправильно понял вот это: Цитата(barabek @ Mar 2 2012, 10:15)  ...Где располагаются те или иные секции - управляете Вы настройками линкера... здесь "Где" - у Вас имелось ввиду в какой памяти, а я под "Где" понял как "в каком месте памяти" т.е по каким адресам.
Сообщение отредактировал Fynjisx - Mar 4 2012, 14:56
--------------------
С Уважением...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|