- 何故この記事を書いたのか
- Unknown flash device (ID 0x00156085) とは
- MINGW2 のインストール
- openocd_code を git から clone する
- spi.c のソースコードを修正する
- configre & make する
- src/openocd.exe を使用している opeocd ディレクトリにコピー
- 参考 git
何故この記事を書いたのか
XIAO RP2040 を VSCode 上で行うためのデバッグ環境構築していたら、 openocd 関連のエラーに詰まって解決に時間を有したので、方法を残しておきます。 同じように困っている人の役に立ってくれ... cmake などの環境構築は、終えている前提です。
Unknown flash device (ID 0x00156085) とは
そもそもですが、このエラーは、XIAO RP2040 に実装されている Flash ROM が、 SDK v1.5.1 内の openocd.exe に対応していないことが原因になります。 エラーを解消させるには、openocd のソースコードを持ってきて、 spi.c に上記の device を記載し、再ビルドしたできた openocd.exe を使用する必要があります。 解消するための手順を順番に記載していきます。
MINGW2 のインストール
openocd の再ビルドするため、mingw64 をインストールします。 https://www.msys2.org/
openocd_code を git から clone する
MSYS2 MINGW64 を管理者権限で実行します。
端末が起動するので、次のコマンドを順番に実行します。 もし、コマンド実行時にエラーが発生したら、一度端末を終了して、 再度、管理者権限で起動し、コマンドを実行します。
pacman -Syu pacman -Su pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo mingw-w64-x86_64-libusb git clone git://git.code.sf.net/p/openocd/code openocd-code
spi.c のソースコードを修正する
ディレクトリを移動し、spi.c を何かしらのエディタで開きます。
cd openocd-code/src/flash/nor notepad.exe spi.c
ソースには各デバイス・メーカーの Flash ROM が記載されています。 FLASH ID の最後に次のコードを追記し、保存します。
FLASH_ID("puya p25q16", 0x03, 0x6b, 0x02, 0xd8, 0xc7, 0x00156085, 0x100, 0x10000, 0x1000000),
configre & make する
openocd clone したディレクトリ直下で次のコマンドを実行します。 完了すると src ディレクトリに opecocd.exe ができるので、気長に待ちます。
./bootstrap ./configure --disable-werror make -j4
src/openocd.exe を使用している opeocd ディレクトリにコピー
出来上がった opecocd.exe を rp2040 で使用している opecocd.exe があるディレクトリに上書きします。 これで他の設定が間違っていなければ、デバッグが行えるはずです。
参考 git
筆者の環境を載せておきます。 上記の手順でうまくできない場合、リンク先の opecocd/openocd.exe をダウンロードして使用してください。
https://github.com/koutakimura0510/ProjectFolder/tree/master/Efinix/Trion/TryPad_v1/RP2040