為什麼那個二進位檔這麼大?
What
CodeSizer 是一個靜態程式碼大小分析工具。
在注重大小的嵌入式韌體開發中,最終的二進位檔經過大量內聯與連結時期最佳化。一個函式符號可能涵蓋數十個內聯函式。CodeSizer 使用 objdump 與 addr2line 針對每個指令位址還原內聯呼叫堆疊,讓程式碼大小能歸屬到各函式內正確的內聯呼叫樹節點。
輸出結果為一個靜態 HTML 報告檔,內含少量 JavaScript 以提供樹狀檢視的展開/收合等 UI 功能。
How
來自互動式說明:
usage: codesizer.py [-h] [--cross-prefix CROSS_PREFIX] [--section SECTION]
elf output
Analyse static code size of an ELF file. Disassemble via objdump, unwind inline
call stacks via addr2line, and emit a static HTML report.
positional arguments:
elf input ELF file
output output HTML file
options:
-h, --help show this help message and exit
--cross-prefix CROSS_PREFIX
prefix for objdump and addr2line (default: riscv32-unknown-
elf-)
--section, -j SECTION
Specify ELF section. Pass multiple times for multiple
sections. If unspecified, .text is used.
正確的工具鏈必須存在於您的 $PATH 且具有指定的前綴,或您必須指定工具鏈二進位檔的完整路徑。例如:
-
若您已在 Ubuntu 上安裝
gcc-arm-none-eabi套件,請使用--cross-prefix=arm-none-eabi-。 -
若您已在
/opt/riscv/gcc15安裝riscv-gnu-toolchain建置版本,請使用--cross-prefix=/opt/riscv/gcc15/bin/riscv32-unknown-elf-。
Example Output
這個 HTML 報告 是由下列指令產生:
./codesizer.py --cross-prefix arm-none-eabi- arm-bootrom.elf arm-bootrom.html -j .text -j .secure_gateways
該 ELF 檔來自 RP2350 A4 bootrom 版本。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.