WindowsでRaspberry Pi Picoの開発環境を設定します。Windowsの場合、アプリケーションを起動するだけで、環境を(ほとんど)設定することができます。 まず、 Githibのndabas/pico-setup-windows からpico-setup-windows-x64-standalone.exeをダウンロードします。以下のReadmeからクリックすることでダウンロードが始まります。
ダウンロードしましたpico-setup-windows-x64-standalone.exeをダブルクリックすると、 以下の注意喚起が表示されますので。詳細情報をクリックします。
以下の画面が表示されますので実行をクリックします。
SDKのインストールが始まりますので、NEXTを押します。
インストール先のフォルダは変更せず、Installを押します。
インストールが終わると、pico-exampleなどのインストールが行われますので、赤線のインストール先のフォルダーを指定します。 ここでは、Documents/picoとしています。Finishを押します。
pico-example.zipがDocuments/picoに展開されます。
ここまでで、Documents/picoに以下のようなフォルダーが展開されているはずです。
Documents |- pico |- pico-examples |- pico-extras |- pico-play-ground
Visual Studio 2022付属のnmakeを使いたいのでVisual Studio 2022 Communityをインストールします。 https://visualstudio.microsoft.com/ja/vs/community/から VisualStudioSetup.exeをダウンロードして、これを実行します。
「C++によるデスクトップ開発」にチェックを入れてインストールします、
pico-setup-windowsを使ってインストールした場合環境設定は必要ありません。 もし、これを使わなかった場合には環境変数の設定が必要となります。
SDKの場所を環境変数に設定します。
> SETX PICO_SDK_PATH "c:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk"
私はLinuxのコマンドを使いたいので、Pico-Developer PowerShellを使います。Windowsのコマンドを使いたい場合は Pico-Developer Command Promptを使います。
まず、pico-exampleをコンパイルしてみます。pico-exampleが以下のようにインストールされているとします。
コンパイルを行うにはcmakeとnmakeを使います。nmakeはVisual Studioに含まれているコマンドラインツールです。
ディレクトリをpico-exampleを保存した場所へ移動します。
C:cd C:\Users\Documents\pico\pico-example C:\Users\Documents\pico\pico-example >
pico-example のフォルダーに buildフォルダーを作成し、移動します。
C:\Users\Documents\pico\pico-example> mkdir build C:\Users\Documents\pico\pico-example> cd build
cmakeを実行します。
C:\Users\user\Documents\pico\pico-examples\build>cmake -G "NMake Makefiles" .. Using PICO_SDK_PATH from environment ('c:\Program Files\Raspberry Pi\Pico SDK v1.5.1\pico-sdk') PICO_SDK_PATH is C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk Defaulting PICO_PLATFORM to rp2040 since not specified. Defaulting PICO platform compiler to pico_arm_gcc since not specified. -- Defaulting build type to 'Release' since not specified. PICO compiler is pico_arm_gcc -- The C compiler identification is GNU 10.3.1 -- The CXX compiler identification is GNU 10.3.1 -- The ASM compiler identification is GNU -- Found assembler: C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gcc.exe -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gcc.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-g++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done Build type is Release Defaulting PICO target board to pico since not specified. Using board configuration from C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/src/boards/include/boards/pico.h -- Found Python3: C:/Users/user/AppData/Local/Programs/Python/Python38/python.exe (found version "3.8.10") found components: Interpreter TinyUSB available at C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB. BTstack available at C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/lib/btstack cyw43-driver available at C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/lib/cyw43-driver Pico W Bluetooth build support available. lwIP available at C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/lib/lwip mbedtls available at C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/lib/mbedtls -- Configuring done (27.2s) -- Generating done (39.9s) -- Build files have been written to: C:/Users/user/Documents/pico/pico-examples/build
nmakeでコンパイルが始まります。
C:\Users\user\Documents\pico\pico-examples\build>nmake Microsoft(R) Program Maintenance Utility Version 14.32.31332.0 Copyright (C) Microsoft Corporation. All rights reserved. [ 0%] Building ASM object pico-sdk/src/rp2_common/boot_stage2/CMakeFiles/bs2_default.dir/compile_time_choice.S.obj [ 0%] Linking ASM executable bs2_default.elf [ 0%] Built target bs2_default [ 0%] Generating bs2_default.bin [ 0%] Generating bs2_default_padded_checksummed.S [ 0%] Built target bs2_default_padded_checksummed_asm [ 0%] Building C object blink/CMakeFiles/blink.dir/blink.c.obj [ 0%] Building C object blink/CMakeFiles/blink.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.obj [ 0%] Building C object blink/CMakeFiles/blink.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.obj [ 0%] Building C object blink/CMakeFiles/blink.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_platform/platform.c.obj ... ... (略) ... ... [100%] Building ASM object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_float/float_v1_rom_shim.S.obj [100%] Building C object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_malloc/pico_malloc.c.obj [100%] Building ASM object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S.obj [100%] Building ASM object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_standard_link/crt0.S.obj [100%] Building CXX object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp.obj [100%] Building C object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_standard_link/binary_info.c.obj [100%] Building C object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_stdio/stdio.c.obj [100%] Building C object watchdog/hello_watchdog/CMakeFiles/hello_watchdog.dir/C_/Program_Files/Raspberry_Pi/Pico_SDK_v1.5.1/pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c.obj [100%] Linking CXX executable hello_watchdog.elf [100%] Built target hello_watchdog
コンパイルが終わるとbuildフォルダの下に、exampleをコンパイルした結果が書き込まれています。
buildフォルダーを、pico-examplesと同じディレクトリに作成したとします。
Documents |- pico |- pico-examples |- pico-extras |- pico-play-ground |- build
この場合、cmakeのコマンドは以下のようになります。
C:\Users\user\Documents\pico\build> cmake -G "NMake Makefiles" ..\pico-example*
PICOでMIDIを扱うサンプルプログラムは %PICO_SDK_PATH%¥lib¥tinyusb¥examples¥device¥midi_testにあります。 このmidi_testフォルダーをpico¥pico-workにコピーしています。
cd C:\Users\user\Documents\pico C:\Users\user\Documents\pico> mkdir pico-work C:\Users\user\Documents\pico> cd pico-work C:\Users\user\Documents\pico\pico-work> xcopy ”%PICO_SDK_PATH%¥lib¥tinyusb¥examples¥device¥midi_test" midi_test /s/i
もう1つ、pico-examplesからpico_sdk_import.cmakeをmidi_testの下にコピーします。
C:\Users\user\Documents\pico\pico-work> copy ../poco-examples/pico_sdk_import.cmake midi_test
midi_testのフォルダにある、CMakeLists.txtを以下に置き換えます。
cmake_minimum_required(VERSION 3.5) set(FAMILY rp2040) include($ENV{PICO_SDK_PATH}/lib/tinyusb/hw/bsp/family_support.cmake) include(pico_sdk_import.cmake) family_get_project_name(PROJECT ${CMAKE_CURRENT_LIST_DIR}) project(${PROJECT}) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) set(PICO_EXAMPLE_PATH $ENV{PICO_EXAMPLE_PATH}) add_executable(${PROJECT}) family_initialize_project(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}) target_sources(${PROJECT} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/main.c ${CMAKE_CURRENT_SOURCE_DIR}/src/usb_descriptors.c ) target_include_directories(${PROJECT} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src ) family_configure_device_example(${PROJECT})
midi_testフォルダーにディレクトリを移動し、buildフォルダを作成、buildフォルダへ移動します。cmake, nmakeでビルドします。
C:\Users\user\Documents\pico\pico-work> cd midi_test C:\Users\user\Documents\pico\pico-work\midi_test> mkdir build C:\Users\user\Documents\pico\pico-work\midi_test> cd build C:\Users\user\Documents\pico\pico-work\midi_test\build> cmake "NMake Makefiles" .. C:\Users\user\Documents\pico\pico-work\midi_test\build> nmake
コンパイルが終わるとbuildフォルダの下にmidi_test.uf2ファイルができています。 このファイルをPICO(RPI-RP2)へコピーします。PICOにリセットがかかり、PICOがMIDIデバイスとして認識できるようになります。
Send And Receiveで見てみるとTinyDeviceとして認識され、Note On/Offが繰り返し出力していることを見て取れます。