Перейти к содержанию
    

где посмотреть сколько места занимает приложение под Nios

Доброго времени.

где в Eclipse можео увидеть размер кода и даных занимаемых написанной программой?

Заранее благодарю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...где в Eclipse можно увидеть размер кода и данных занимаемых написанной программой?...

После выполнения "Build Project" в окне "Console" будут строки типа:

Info: (YourProgram.elf) 25 KBytes program size (code + initialized data).
Info:             6620 Bytes free for stack + heap.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени.

где в Eclipse можео увидеть размер кода и даных занимаемых написанной программой?

Заранее благодарю...

 

В файле xxx.objdump много информации. Этот файл получается на основе elf-файла либо автоматически после build, либо вручную через "command shell" выполнением команды nios2-elf-objdump. Смотрите подробности в "software developers handbook"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени.

где в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После выполнения "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 Мбайт? Получается что этот вывод, после сборки - неправильный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В файле xxx.objdump много информации. Этот файл получается на основе elf-файла либо автоматически после build, либо вручную через "command shell" выполнением команды nios2-elf-objdump. Смотрите подробности в "software developers handbook"
А как посмотреть этой командой? в "software developers handbook" нету про размер прошивки. А nios2-elf-objdump --help выдал много чего, но нет там ни одного ключа типа

Display program size.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Display program size.

 

По простому - выведете все хедеры. Ключ -x.

 

 

nios2-elf-objdump -D -S -x <project>.elf > <project>.elf.objdump

-этот набор на все случаи жизни.

 

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ключ -х вывел 100500 строчек "матрицы". хрен посмотришь в терминале. пришлось вывод в файл отправлять. см аттач

 

 

набор на все случаи жизни
этот набор генерирует дамп <project>.elf.objdump файла <project>.elf >. Зачем мне дамп<project>.elf.objdump? И где размер программы?

matrix.txt

Изменено пользователем juvf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ключ -х вывел 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)байт. Эту секцию во флэш хранить не нужно, т.к. при запуске программы там будут одни нули.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так и сколько в итоге моя моя прошивка отжрёт у EPCS? Складывать размеры всех секций?

.text + .rodata + .rwdata + ... + .debug_info + .debug_abbrev + ...

 

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

 

 

 

наверно гораздо проще оценить размер программы можно с помощью команды nios2-elf-size

Изменено пользователем juvf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну так и сколько в итоге моя моя прошивка отжрёт у EPCS? Складывать размеры всех секций?

.text + .rodata + .rwdata + ... + .debug_info + .debug_abbrev + ...

 

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

 

Как и говорил, насчет служебных могу обмануть. Но, ЕМНИП, они во флэш не заливаются. Кто-нибудь может подскажет. Я же скажу один путь, как это можно выяснить :). Раз Вы пишете про EPCS, значить у Вас при заливке вызывается elf2flash, который создает файл xxx.flash. Формат этого файла известен. Отсюда определите непосредственно размер того, что пишется в EPCS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где располагаются те или иные секции - управляете Вы настройками линкера.

Подскажите где это место в котором я могу задавать расположение секций? Задавал кажись уже такой вопрос на форуме...

Есть настройки BSP-editor, в которых отображаются имена секций и регионы памяти. А как задать их место положение и размер, я так и не нашел

Судя по Вашему вложению - все они в области памяти с 08000000.

Откуда такой вывод?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите где это место в котором я могу задавать расположение секций? Задавал кажись уже такой вопрос на форуме...

Есть настройки BSP-editor, в которых отображаются имена секций и регионы памяти. А как задать их место положение и размер, я так и не нашел

 

Во вкладке linker script. Там Вы выставляете, куда, в какую физическую память поместить конкретную секцию. Размер - зачем он Вам нужен? Что Вы под этим подразумеваете? Как можно знать, допустим, какой будет размер у секции .text до завершения компиляции? Теоретически, конечно, можно :), и то при выключенной оптимизации. И зачем этот размер задавать? Скомпилировался проект, появились данные о размерах всех секций. Дальше линкер их распихивает. В простейшем случае при одной физической памяти подряд друг за другом, а остатки под кучу. В некоторых ситуациях можно делать дополнительные секции. В общем, непонятен контекст вопроса.

 

Откуда такой вывод?

 

Так в его файле все пользовательские секции идут одна за другой, начиная с адреса 0x08000000 секция exceptions.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Размер - зачем он Вам нужен? Что Вы под этим подразумеваете? Как можно знать, допустим, какой будет размер у секции .text до завершения компиляции? И зачем этот размер задавать? Скомпилировался проект, появились данные о размерах всех секций.

я неправильно понял вот это:

...Где располагаются те или иные секции - управляете Вы настройками линкера...

здесь "Где" - у Вас имелось ввиду в какой памяти, а я под "Где" понял как "в каком месте памяти" т.е по каким адресам.

 

Изменено пользователем Fynjisx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...