いままであまり debugger に頼らず soft を書いていたが, こればかりはどうしようもない.
そこで, opencd で ST-LINK を使い ST32H743 に接続し, debugger として gdb を使用できる様に環境を整えた.
環境について
環境は以下の通りUbuntu 17.10
openocd (apt installしたもの 0.10.0)
stm32f7x.cfg (openocd を apt install して install されているもの)
stm32h7x.cfg (stm32f7x.cfg を copy して STM32H7 系に変更したもの)
gdb (apt install したもの)
connection
gdb -----(localhost:3333)---- openocd -----(USB)------ STLINK ------(SWD)----- STM32H743
Install
# 1. apt get するsudo apt install openocd gdb-arm-none-eabi# 2. stm32f の設定 file を stm32h 用に copy する
sudo cp /usr/share/openocd/scripts/target/stm32f7x.cfg /usr/share/openocd/scripts/target/stm32h7x.cfg
# 3. stm32h7x.cfg の 34行目の _CPUTAPID を 0x6ba02477 に変更
sudo vi /usr/share/openocd/scripts/target/stm32h7x.cfg# 4. usb の rule file を作成
sudo vi /etc/udev/rules.d/99-stlink.rules# 以下を追加
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="374b", GROUP="plugdev", MODE="666", SYMLINK+="stlinkv2_%n"# 5. udev を更新
sudo udevadm control --reload-rules# 6. gdb_memory_map disable を stlink-v2-1.cfg に追加
sudo echo "gdb_memory_map disable" >> /usr/share/openocd/scripts/interface/stlink-v2-1.cfg
Exec for Debugging
# 11. openocd を起動し, STM32H743 に接続 (openocd の port#3333 が gdb 接続待ちになる)openocd -f interface/stlink-v2-1.cfg -f target/stm32h7x.cfg# 12. gdb を起動
arm-none-eabi-gdb binary.elf
Debugging (gdb上での操作)
target remote :3333 # openocd に接続monitor reset halt # STM32H743 を reset
load # symbol情報 elfから取得
b FunctionName # breakpoint の設定、 必要であれば
continue # 起動
[Ctrl-C] # 停止, もしくは breakpoint で自動停止
bt # trace 情報を表示
print ValiableName # 変数名 "ValiableName" の値を表示
info break # 設定されている breakpoint の表示
delete breakp n # n 番の breakpoint を削除
delete # breakpoint 全削除
continue # 再起動
0 件のコメント:
コメントを投稿