Raspberry Pi Pico環境構築 on Windows 10
About
Windows 10上でRaspberry Pi Picoの開発環境を構築する
情報源
- getting-started-with-pico.pdfの「8.2. Building on MS Windows」
- https://zenn.dev/iwatake2222/scraps/8ace540ca04421
コマンドラインからのビルド
インストール
- Visual Studio 2019
- インストール時に、
Windows 10 SDK
もインストールする
- インストール時に、
-
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
- gcc-arm-none-eabi-10-2020-q4-major-win32.zip
-
arm-none-eabi-c++.exe
が格納されているbinディレクトリをパスに追加
- cmake
-
cmake.exe
が格納されているbinディレクトリをパスに追加 - 注意: msysなどの/usr/binにもパスが通っている場合には、無効にしておく
- msysのcmakeだと
cmake -G "NMake Makefiles" ..
したときに、Could not create named generator NMake Makefiles
エラーが発生
- msysのcmakeだと
-
- pythonは不要だった
手順
-
Developer Command Prompt for VS 2019
を開く -
setx PICO_SDK_PATH "..\..\pico-sdk" cd pico-examples mkdir build cd build cmake -G "NMake Makefiles" .. nmake
- ↑
PICO_SDK_PATH
の位置は、pco-sdkとpico-examplesが同じ階層にある場合の例
setx PICO_SDK_PATH "..\..\pico-sdk"
は手順書通りの方法。
自分のプロジェクトでやる場合は、PICO_SDK_PATHをcmake内に記載した方が楽
やり方を真似て試してるのですが、うまくいかないです。知識がゼロの状態からやっているのでもしよければご教授願いたいです
文字コードの問題でした。JISからutf8に変更するとできました
Visual Studio Codeからのビルド
インストール
- Visual Studio Code
- C/C++ Extension Pack, CMake Tools エクステンションをインストール
手順
-
Developer Command Prompt for VS 2019
を開くsetx PICO_SDK_PATH "..\..\pico-sdk"
code
- Manage (左下(ナビゲーションバーの左の歯車アイコン)) -> Settings -> Extensions -> CMake Tools configuration
- 1回だけ設定が必要。僕の環境ではここの設定は不要だった。
-
PICO_SDK_PATH
はコマンドプロンプトで事前にsetxすれば不要だった。環境によってはNMake Makefiles
の設定も不要
-
-
CMake: Configure Environment
-> Add Item- Item:
PICO_SDK_PATH
, Value:..\..\pico-sdk
- Item:
-
Cmake: Generator
NMake Makefiles
- 1回だけ設定が必要。僕の環境ではここの設定は不要だった。
- pico-examplesのフォルダを開く (ドラッグ&ドロップ)
- 右下に"Would you like to configure project 'pico-examples'?" と聞かれるので yesとする
- または、ctrl + shift + p -> CMake: Configure
- 画面右下の
Build
をクリック- または、ctrl + shift + p -> CMake: Build
- デフォルトだと全ターゲットがビルドされてしまうので、必要に応じてtargetを選択する
エラーが出たり何か変だと思ったら、大体VSCodeを直接起動してしまっていることが多い。
ちゃんとDeveloper Command Prompt for VS 2019
から開くこと
UART (USB CDC)
git submodule update --init --recursive
によってTinyUSBのコードも取得する必要がある。これが無いと、UART出力されない。
cmake時にwarningは出るど、ビルドエラーにはならない。
pico-examplesの場合は git submodule update --init
だけでOK。自分のオリジナルプロジェクトからpico-sdkをsubmoduleとして含めている場合は、 --recursive
も必要
git submodule update --init --recursive
だとダウンロードするコード量が多すぎるので、pico-sdk
にcd
してから git submodule update --init
した方が良いかも。
Picoprobeでデバッグする (準備)
getting-started-with-pico.pdfの「Appendix A: Using Picoprobe」
picoprobeをビルド
- ↑の方法でビルドする。Developer Command Prompt for VS2019を開いて以下コマンドを実行。
- 生成された
picoprobe.uf2
をデバッガ用のpicoに書き込む - ターミナル接続できるか確認する (USBシリアルデバイスとして認識されるはず)
- デバッグ対象のpicoがUARTからターミナル出力していたら、ここに表示されるはず
cd ~/pico
git clone https://github.com/raspberrypi/picoprobe.git
cd picoprobe
mkdir build
cd build
set PICO_SDK_PATH="../../../../pico-sdk"
cmake -G "NMake Makefiles" ..
nmake
ドライバインストール
- https://zadig.akeo.ie/
- 実行して、以下を選択してドライバをインストールする
- PicoProbe (Interface 2) -> Install Driver
接続する
OpenOCDをビルドする
Install environment
msysで以下を実行
pacman -Syu
pacman -Su
pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo mingw-w64-x86_64-libusb
# 全部default設定を選択 (Enter押すだけ)
OpenOCDをビルドする
git clone https://github.com/raspberrypi/openocd.git --branch picoprobe --depth=1
cd openocd
./bootstrap
./configure --enable-picoprobe --disable-werror
make -j4
src/openocd.exe
OpenOCDを起動しておく
msysで以下コマンドを実行。実行後放置。
cd openocd
src/openocd -f interface/picoprobe.cfg -f target/rp2040.cfg -s tcl
Picoprobeでデバッグする (ターミナルから)
Debug用ビルド
Developer Command Prompt for VS 2019で以下オプションでビルドする
cmake -G "NMake Makefiles" .. -DCMAKE_BUILD_TYPE=Debug -DPICO_DEOPTIMIZED_DEBUG=on
nmake
デバッグする
openocdとは別のmsysを開き以下コマンドを実行。
cd /c/iwatake/devel/pico-work/build/pj_base/
gdb-multiarch pj_base.elf
(gdb)
target remote localhost:3333
load
monitor reset init
b main
continue
n
n
n
quit
Picoprobeでデバッグする (VSCodeから)
mkdir .vscode
cp pico-examples/ide/vscode/launch-remote-openocd.json .vscode/launch.json
cp pico-examples/ide/vscode/settings.json .vscode/settings.json
- gdbPathのパスを修正
- gdbTargetのURLをlocalhostに修正
- svdFileのパスを修正
-
executable": "${command:cmake.launchTargetPath}
がうまくいかなかったのでelfファイルへのパスを直接指定。★要確認- トップレベルのCMakeListx.txt内で
add_executable
したらうまくいった
- トップレベルのCMakeListx.txt内で
{
"version": "0.2.0",
"configurations": [
{
"name": "Pico Debug",
"type":"cortex-debug",
"cwd": "${workspaceRoot}",
// "executable": "${command:cmake.launchTargetPath}",
"executable": "${workspaceRoot}/build/pj_base/pj_base.elf",
"request": "launch",
"servertype": "external",
// This may need to be arm-none-eabi-gdb depending on your system
"gdbPath" : "C:/msys64/mingw64/bin/gdb-multiarch.exe",
// Connect to an already running OpenOCD instance
"gdbTarget": "localhost:3333",
"svdFile": "pico-sdk/src/rp2040/hardware_regs/rp2040.svd",
"runToMain": true,
// Work around for stopping at main on restart
"postRestartCommands": [
"break main",
"continue"
]
}
]
}
VSCode上でcmake configureするときに、オプションの付け方が分からない★要確認
とりあえずデバッグ時はCMakeLists.txtに以下を直接記載
set(CMAKE_BUILD_TYPE Debug)
set(PICO_DEOPTIMIZED_DEBUG on)
VSCodeの準備
「Cortex-Debug」エクステンションをインストールしておく
デバッグがストールしたら、
- デバッグ画面でレジスタを表示していたら閉じる
- .vscodeの
.cortex-debug.peripherals.state.json
と.cortex-debug.registers.state.json
を削除
cmake configureして、2回目以降のビルドでエラーになる
文字化けしてて原因不明 ★要調査
とりあえずbuildフォルダを消して再度cmake configureしたらビルドできる
[proc] Executing command: C:\iwatake\tool\cmake-3.18.0-rc1-win64-x64\bin\cmake.EXE --build c:/iwatake/devel/pico-work/build --config Debug --target all -- -j 10
[build] ninja: error: FindFirstFileExA(c/:/iwatake/devel/pico-work/pico-sdk/src/boards/include/boards): �t�@�C�����A�f�B���N�g�����A�܂��̓{�����[�� ���x���̍\�����Ԉ���Ă��܂��B
VSCodeの設定で Cmake: Generator
に NMake Makefiles
を設定したらうまくいった。やはり、この設定は必要だった。
逆アセンブルコードの生成方法が不明。1回だけ作られたんだけど、どうやったか忘れた
CMAKE_BUILD_TYPE
で Debug
指定しないとmain.cdasmが開かれる。どこにあるのかは不明。
cmakeとbuildはターミナルからやって、VSCodeではコード編集とデバッグ(F5押し)だけにした方がよさそう
msysでビルドする
msysのcmakeを使えば、Visual Studioは不要。
ツールのインストール
pacman -S mingw-w64-x86_64-cmake
ビルド
export PATH=/c/iwatake/tool/gcc-arm-none-eabi-10-2020-q4-major/bin:${PATH}
cmake .. -G "MSYS Makefiles"
cmake .. -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DPICO_DEOPTIMIZED_DEBUG=on
make
デバッグするときに開くVSCodeは普通に開けばOK (Developer Command PromptからじゃなくてOK)
ここにまとめた