2016-10-11 3 views
0

Я хотел бы вывести количество вспышки, используемое, когда я создаю свой проект на C, написанный для ПОС, как Ардуино делает для своих эскизов.Есть ли равный эквивалент для ПОС?

Arduino binary sketch size

Я обнаружил, что Arduino IDE использует в на GitHubavr-size. Есть ли эквивалент для ПОС? Я заметил, что есть общая версия (это правильное слово?), Включенная в binutils GNU, называемую size. Могу ли я использовать that?

Я строю свой проект, используя sdcc и gputils.

EDIT: Если я прохожу -m к gplink в то время как ссылки, я получаю файл карты. В этом файле карты есть раздел «Использование памяти программы». В конце этого раздела указывается количество используемых адресов.

Program Memory Usage 
    Start   End 
--------- --------- 
0x005558 0x0055db 
0x0063e0 0x0063f5 
0x00663c 0x006643 
... 
0x006280 0x0062a7 
0x00662e 0x00663b 
26229 program addresses used 

Это соответствует выходному размеру GNU при запуске в выходном шестнадцатеричном файле.

$ size out.hex 
    text data  bss  dec  hex filename 
     0 26229  0 26229 6675 out.hex 
$ 

Означает ли это, что я могу просто использовать размер GNU? Это не похоже на то, что я вижу в программном обеспечении моего программиста. Для этого же самого файла используется самый старший адрес 0x6670, который будет 26224-м байтом.

+0

Размер программы и размер вспышки - это не одно и то же. Ваш .map-файл сохранит память программы, разделы .rodata и т. Д., Перечисленные отдельно. В то время как какой-либо инструмент для программирования вспышки будет видеть только вспышку, которая должна быть запрограммирована, не имея понятия о том, что делает содержимое. – Lundin

ответ

1

Более подробное резюме предоставлено size --format=berkeley a.hex. Формат Berkeley показывает размер каждой секции в скомпилированном файле Intel .hex и дает общее количество в конце.

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

Компиляция в формате ELF также даст информацию об использовании ОЗУ (текст + bss), но не все компиляторы поддерживают эту опцию.

Смежные вопросы