PCB上にピンヘッダ(未実装)がある。
- SWDIO
- SWCLK
- GND
- NRST
- VCC (使わない)
SWD (Serial Wire Debug) 用のもの。ここに ST-Link を繋ぐ。ST-Link といっても中華 ST-Link だけど、こういう感じになる。
VCC 以外を接続する。VCCは普通に電源をオンにして供給する。
事前条件
普通に make して build できる環境にしておく。arm-none-eabi-gcc が入っていればよい。
open-ocd は brew で入るデフォルトではなく、head を入れる必要がある。なぜか texinfo が要求されて死んだので前もって入れたほうがよさそう。
brew install texinfo brew install open-ocd --HEAD
VSCode
普段は vim を使っているが、CUI デバッガは個人的にはつらいので、こういうときは VSCode を使う。
VSCode を入れたのち Cortex-Debug extension を入れて使う。VSCode を開いて、Extensions から検索して Install するのが最速。
tasks.jsonを書く
make を呼ぶようにしておく
{
"tasks": [
{
"type": "shell",
"label": "build",
"command": "make",
"args": [
],
"options": {
"cwd": "${workspaceRoot}"
}
}
],
"version": "2.0.0"
} launch.json を書く
stlink を使って stm32f0x をデバッグするので以下のようにする。また、デバッグ前に build するようにする。
{
"version": "0.2.0",
"configurations": [
{
"type": "cortex-debug",
"servertype": "openocd",
"request": "launch",
"name": "OpenOCD-Debug",
"executable": "build/ch.elf",
"configFiles": [
"interface/stlink.cfg",
"target/stm32f0x.cfg"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "build",
}
]
} デバッグ開始する
Debug を開いて Start Debugging (F5) をする。ビルドしたのち、しばらくする (デバイス側にビルドしたファームが転送される) とデバイス側の画面は白くなり、リセットハンドラでブレークするので、適当な場所にブレークポイントを置いて resume する。
svd ファイルを指定する
追加で SVD (System View Description) ファイル (ST のサイトからダウンロードできる を指定しておく。
"svdFile": "./STM32F0x8.svd",
MCU のレジスタがわかりやすく表示される
備考
OpenOCD の cfg の場所
/usr/local/share/openocd/scripts/
にある。結構 deprecated になっているものも置いたままだったりする。stlink.cfg は ST-Link のバージョンに関係なく共通で使えるものになっている。
リソース






.png)