Everyday is Sunday !

趣味満載のブログ #電子工作 #東方 #アニメ #音楽

XIAO RP2040 + SWD + VSCode で発生した Unknown flash device (ID 0x00156085) を解決したかった

何故この記事を書いたのか

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