puncover
puncover - Analyses C/C++ build output for code size, static variables, and stack usage
Tools for Firmware Code Size Optimizationを読んでいて見つけたツール
インストール
pipでインストールする
pip install puncover
以下の内容はpipでインストール可能になる前の話なので不要
記事にあるようにそのままpipでインストールしても動作しない.
仮想環境を作ってその上で実行したほうが良い.
Windws用のパッチを当てることと,Flask,Jinja2のバージョン依存を修正する必要がある.
このissue(Windows compatibility (.exe ARM tools) #37)にあるファイル(fixWindowsPaths.patch.txt
)を使ってGitでパッチを当てる.
2022年6月30日時点で,幸いにも7日前に来れに対応するPR(Support python3.10 #49)がある.
この2つを実行することで,puncoverがWindowsで動くようになる.
elfファイルの準備
.elf
ファイルに必要な情報が入っている必要がある。
-g
と-fdebug-prefix-map=/=
フラグを追加してビルドする
使い方
puncover --elf_file path_to_ele_file.elf
と打ち込めばブラウザが立ち上がるはず
> puncover -h usage: puncover [-h] [--gcc-tools-base GCC_TOOLS_BASE] --elf_file ELF_FILE [--src_root SRC_ROOT] [--build_dir BUILD_DIR] [--debug] [--port PORT] [--host HOST] [--no-open-browser] [--version] Analyses C/C++ build output for code size, static variables, and stack usage. optional arguments: -h, --help show this help message and exit --gcc-tools-base GCC_TOOLS_BASE, --gcc_tools_base GCC_TOOLS_BASE filename prefix for your gcc tools, e.g. ~/arm-cs-tools/bin/arm-none-eabi- (default: F:\ST\STM32CubeCLT_1.15.0\GNU-tools-for-STM32\bin/arm-none- eabi-) --elf_file ELF_FILE, --elf-file ELF_FILE location of an ELF file (default: None) --src_root SRC_ROOT, --src-root SRC_ROOT location of your sources (default: None) --build_dir BUILD_DIR, --build-dir BUILD_DIR location of your build output (default: None) --debug enable Flask debugger (default: False) --port PORT port the HTTP server runs on (default: 5000) --host HOST host IP the HTTP server runs on (default: 127.0.0.1) --no-open-browser don't automatically open a browser window (default: False) --version show program's version number and exit