Closed23

Raspberry Pi Pico環境構築 on Windows 10

iwatakeiwatake

コマンドラインからのビルド

インストール

  • 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 エラーが発生
  • 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が同じ階層にある場合の例
iwatakeiwatake

setx PICO_SDK_PATH "..\..\pico-sdk" は手順書通りの方法。
自分のプロジェクトでやる場合は、PICO_SDK_PATHをcmake内に記載した方が楽

maitake4211maitake4211

やり方を真似て試してるのですが、うまくいかないです。知識がゼロの状態からやっているのでもしよければご教授願いたいです

iwatakeiwatake

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
    • Cmake: Generator
      • NMake Makefiles
  • pico-examplesのフォルダを開く (ドラッグ&ドロップ)
    • 右下に"Would you like to configure project 'pico-examples'?" と聞かれるので yesとする
    • または、ctrl + shift + p -> CMake: Configure
  • 画面右下のBuild をクリック
    • または、ctrl + shift + p -> CMake: Build
    • デフォルトだと全ターゲットがビルドされてしまうので、必要に応じてtargetを選択する
iwatakeiwatake

エラーが出たり何か変だと思ったら、大体VSCodeを直接起動してしまっていることが多い。
ちゃんとDeveloper Command Prompt for VS 2019 から開くこと

iwatakeiwatake

UART (USB CDC)

git submodule update --init --recursive
によってTinyUSBのコードも取得する必要がある。これが無いと、UART出力されない。
cmake時にwarningは出るど、ビルドエラーにはならない。

pico-examplesの場合は git submodule update --init だけでOK。自分のオリジナルプロジェクトからpico-sdkをsubmoduleとして含めている場合は、 --recursive も必要

iwatakeiwatake

git submodule update --init --recursive だとダウンロードするコード量が多すぎるので、pico-sdkcd してから git submodule update --init した方が良いかも。

iwatakeiwatake

Picoprobeでデバッグする (準備)

getting-started-with-pico.pdfの「Appendix A: Using Picoprobe」

picoprobeをビルド

  • ↑の方法でビルドする。Developer Command Prompt for VS2019を開いて以下コマンドを実行。
  • 生成されたpicoprobe.uf2 をデバッガ用のpicoに書き込む
  • ターミナル接続できるか確認する (USBシリアルデバイスとして認識されるはず)
    • デバッグ対象のpicoがUARTからターミナル出力していたら、ここに表示されるはず
VSCommandPrompt
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

ドライバインストール

接続する

OpenOCDをビルドする

Install environment

msysで以下を実行

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をビルドする

msys
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で以下コマンドを実行。実行後放置。

msys
cd openocd
src/openocd -f interface/picoprobe.cfg -f target/rp2040.cfg -s tcl
iwatakeiwatake

Picoprobeでデバッグする (ターミナルから)

Debug用ビルド

Developer Command Prompt for VS 2019で以下オプションでビルドする

VSCommandPrompt
cmake -G "NMake Makefiles" .. -DCMAKE_BUILD_TYPE=Debug -DPICO_DEOPTIMIZED_DEBUG=on
nmake

デバッグする

openocdとは別のmsysを開き以下コマンドを実行。

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
iwatakeiwatake
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 したらうまくいった
launch.json
{
    "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"
            ]
        }
    ]
}

iwatakeiwatake

VSCode上でcmake configureするときに、オプションの付け方が分からない★要確認

とりあえずデバッグ時はCMakeLists.txtに以下を直接記載

set(CMAKE_BUILD_TYPE Debug)
set(PICO_DEOPTIMIZED_DEBUG on)
iwatakeiwatake

VSCodeの準備
「Cortex-Debug」エクステンションをインストールしておく

iwatakeiwatake

デバッグがストールしたら、

  • デバッグ画面でレジスタを表示していたら閉じる
  • .vscodeの.cortex-debug.peripherals.state.json.cortex-debug.registers.state.json を削除
iwatakeiwatake

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
iwatakeiwatake

VSCodeの設定で Cmake: GeneratorNMake Makefiles を設定したらうまくいった。やはり、この設定は必要だった。

iwatakeiwatake

逆アセンブルコードの生成方法が不明。1回だけ作られたんだけど、どうやったか忘れた

iwatakeiwatake

CMAKE_BUILD_TYPEDebug 指定しないとmain.cdasmが開かれる。どこにあるのかは不明。

iwatakeiwatake

cmakeとbuildはターミナルからやって、VSCodeではコード編集とデバッグ(F5押し)だけにした方がよさそう

iwatakeiwatake

msysでビルドする

msysのcmakeを使えば、Visual Studioは不要。

ツールのインストール

msys
pacman -S mingw-w64-x86_64-cmake

ビルド

msys
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)

このスクラップは2021/02/10にクローズされました