OS の install 後に STM32 の開発環境を整えていたが, gdb が gdb-arm-none-eabi でなく gdb-multiarch に変更になっており, それを apt install した. それと同時に openocd の apt install をした. しかし, apt install した openocd は 0.10.0 で, かねてより開発していた STM32H743 はまだ support 状態でないので, "Ubuntu 17.10上で openocd と gdb で STM32H743 を debug する方法" で stm32h7x.cfg をテキトーに作成して使用を試みた. しかし openocd を stm32h7x.cfg を 指定して起動すると,
Info : device id = 0x00000000の様に error が出力され, 使用できない状態になってしまった.
Warn : Cannot identify target as a STM32 family.
Error: auto_probe failed
Error: Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'.
Error: attempted 'gdb' connection rejected
とりあえず, "gdb_memory_map disable したらどうですか" との事なので 15行目の "set _ENDIAN little" の下に "gdb_memory_map disable" 入れたら connect できた.
"Ubuntu 17.10上で openocd と gdb で STM32H743 を debug する方法" で言えば
"# 3. stm32h7x.cfg の 34行目の _CPUTAPID を 0x6ba02477 に変更 "と言うべきであろうか
普段 openocd 経由で flash の書き込みなどをしないので, これで良いと思われる.
ただ, これで終ってしまっては, 面白くないので, openocd の development 版は STM32H7 をすでに入れているのではないかと思うので, 入れてみようと考えた. 手順は以下の通り
- sudo apt install pkg-config automake libtool libhidapi-dev
- git clone git://git.code.sf.net/p/openocd/code openocd-code
- cd openocd-code
- ./bootstrap
- ./configure --enable-cmsis-dap
- make -j4
- sudo make install
今回は STM32H7 系に接続したい為,
openocd -f interface/stlink-v2-1.cfg -f target/stm32h7x.cfg
を実行すると,
Open On-Chip Debugger 0.10.0+dev-00546-g1afec4f5 (2018-10-02-08:58)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2-1.cfg is deprecated, please switch to interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1800 kHz
adapter_nsrst_delay: 100
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
/usr/local/bin/../share/openocd/scripts/target/stm32h7x.cfg:102: Error: invalid command name "stm32h7x.dap"
in procedure 'script'
at file "embedded:startup.tcl", line 60
at file "/usr/local/bin/../share/openocd/scripts/target/stm32h7x.cfg", line 102
と表示され,
"stlink-v2-1.cfg でなく stlink.cfg を使え" と, "stm32h7x.dap command がない" と言われる. stlink.cfg はこれを指定する事により特に問題なく切り替えられた, また "stm32h7x.dap どうこう" は色々調べてみると, STLINK でなく CMSIS-DAP を使用する場合に使える command だと理解できた. この事から, /usr/local/share/openocd/scripts/interface/stm32h7x.cfg の一番最後の行を
#$_CHIPNAME.dap apcsw 0x08000000 0x08000000
の様に行の先頭に "#" を追加して無効化した. その以下のcommand を実行した
openocd -f interface/stlink.cfg -f target/stm32h7x.cfg
無事 openocd を立ち上げる事ができ gdb-multiarch から openocd の 3333 ポート に接続できた.
0 件のコメント:
コメントを投稿