Fynjisx 0 29 февраля, 2012 Опубликовано 29 февраля, 2012 · Жалоба Доброго времени. где в Eclipse можео увидеть размер кода и даных занимаемых написанной программой? Заранее благодарю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 29 февраля, 2012 Опубликовано 29 февраля, 2012 · Жалоба ...где в Eclipse можно увидеть размер кода и данных занимаемых написанной программой?... После выполнения "Build Project" в окне "Console" будут строки типа: Info: (YourProgram.elf) 25 KBytes program size (code + initialized data). Info: 6620 Bytes free for stack + heap. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 1 марта, 2012 Опубликовано 1 марта, 2012 · Жалоба Доброго времени. где в Eclipse можео увидеть размер кода и даных занимаемых написанной программой? Заранее благодарю... В файле xxx.objdump много информации. Этот файл получается на основе elf-файла либо автоматически после build, либо вручную через "command shell" выполнением команды nios2-elf-objdump. Смотрите подробности в "software developers handbook" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 1 марта, 2012 Опубликовано 1 марта, 2012 · Жалоба Доброго времени. где в 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 18 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба После выполнения "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 Мбайт? Получается что этот вывод, после сборки - неправильный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба На 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 18 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба В файле xxx.objdump много информации. Этот файл получается на основе elf-файла либо автоматически после build, либо вручную через "command shell" выполнением команды nios2-elf-objdump. Смотрите подробности в "software developers handbook" А как посмотреть этой командой? в "software developers handbook" нету про размер прошивки. А nios2-elf-objdump --help выдал много чего, но нет там ни одного ключа типа Display program size. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба Display program size. По простому - выведете все хедеры. Ключ -x. nios2-elf-objdump -D -S -x <project>.elf > <project>.elf.objdump -этот набор на все случаи жизни. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 18 2 марта, 2012 Опубликовано 2 марта, 2012 (изменено) · Жалоба ключ -х вывел 100500 строчек "матрицы". хрен посмотришь в терминале. пришлось вывод в файл отправлять. см аттач набор на все случаи жизни этот набор генерирует дамп <project>.elf.objdump файла <project>.elf >. Зачем мне дамп<project>.elf.objdump? И где размер программы?matrix.txt Изменено 2 марта, 2012 пользователем juvf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба ключ -х вывел 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)байт. Эту секцию во флэш хранить не нужно, т.к. при запуске программы там будут одни нули. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 18 2 марта, 2012 Опубликовано 2 марта, 2012 (изменено) · Жалоба ну так и сколько в итоге моя моя прошивка отжрёт у EPCS? Складывать размеры всех секций? .text + .rodata + .rwdata + ... + .debug_info + .debug_abbrev + ... Не понятно. Нужно курить про каждую секцию, гуглить. Что складывать, а что нет. А возможно в прошивку что-то ляжет, чего в выводе -х нет. А потом появятся новые секции - опять гуглить. как-то всё сложно. (( наверно гораздо проще оценить размер программы можно с помощью команды nios2-elf-size Изменено 2 марта, 2012 пользователем juvf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба ну так и сколько в итоге моя моя прошивка отжрёт у EPCS? Складывать размеры всех секций? .text + .rodata + .rwdata + ... + .debug_info + .debug_abbrev + ... Не понятно. Нужно курить про каждую секцию, гуглить. Что складывать, а что нет. А возможно в прошивку что-то ляжет, чегочч в выводе -х нет. А потом появятся новые секции - опять гуглить. как-то всё сложно. (( Как и говорил, насчет служебных могу обмануть. Но, ЕМНИП, они во флэш не заливаются. Кто-нибудь может подскажет. Я же скажу один путь, как это можно выяснить :). Раз Вы пишете про EPCS, значить у Вас при заливке вызывается elf2flash, который создает файл xxx.flash. Формат этого файла известен. Отсюда определите непосредственно размер того, что пишется в EPCS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fynjisx 0 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба Где располагаются те или иные секции - управляете Вы настройками линкера. Подскажите где это место в котором я могу задавать расположение секций? Задавал кажись уже такой вопрос на форуме... Есть настройки BSP-editor, в которых отображаются имена секций и регионы памяти. А как задать их место положение и размер, я так и не нашел Судя по Вашему вложению - все они в области памяти с 08000000. Откуда такой вывод? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 2 марта, 2012 Опубликовано 2 марта, 2012 · Жалоба Подскажите где это место в котором я могу задавать расположение секций? Задавал кажись уже такой вопрос на форуме... Есть настройки BSP-editor, в которых отображаются имена секций и регионы памяти. А как задать их место положение и размер, я так и не нашел Во вкладке linker script. Там Вы выставляете, куда, в какую физическую память поместить конкретную секцию. Размер - зачем он Вам нужен? Что Вы под этим подразумеваете? Как можно знать, допустим, какой будет размер у секции .text до завершения компиляции? Теоретически, конечно, можно :), и то при выключенной оптимизации. И зачем этот размер задавать? Скомпилировался проект, появились данные о размерах всех секций. Дальше линкер их распихивает. В простейшем случае при одной физической памяти подряд друг за другом, а остатки под кучу. В некоторых ситуациях можно делать дополнительные секции. В общем, непонятен контекст вопроса. Откуда такой вывод? Так в его файле все пользовательские секции идут одна за другой, начиная с адреса 0x08000000 секция exceptions. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fynjisx 0 4 марта, 2012 Опубликовано 4 марта, 2012 (изменено) · Жалоба Размер - зачем он Вам нужен? Что Вы под этим подразумеваете? Как можно знать, допустим, какой будет размер у секции .text до завершения компиляции? И зачем этот размер задавать? Скомпилировался проект, появились данные о размерах всех секций. я неправильно понял вот это: ...Где располагаются те или иные секции - управляете Вы настройками линкера... здесь "Где" - у Вас имелось ввиду в какой памяти, а я под "Где" понял как "в каком месте памяти" т.е по каким адресам. Изменено 4 марта, 2012 пользователем Fynjisx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться