ArtifactNoise合同会社所属の北神が、技術や研究にまつわる話題を書き出していくブログです。
お仕事に関しては kitagami@artifactnoise.com にて対応いたします。
RaspberryPi-PicoをWSL2で開発環境を作る|ArtifactNoise
WindowsでmingwやCygwinを使わずにWSL2のみで開発環境を構築します。
本記事はまだメモです。
どこかでまとめる予定ですが、分かる人やもう少しでわかる人向けの情報です。
たまにWSL2のアップデートで上手く行かない場合があります。
何かのexeをアップデートすると治るかも。
WSL2の基本コマンド
Ubuntuをインストールする
wsl --install -d Ubuntu
Linux カーネルのアップデート
wsl --update
シャットダウン
wsl --shutdown
登録されてるリストとバージョン
wsl -l -v
ディストロのアンインストール
wsl --unregister Ubuntu
WSL2上のUbuntuを最新にする
sudo apt update sudo apt upgrade
必要なライブラリをインストールする
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential -y sudo apt install libusb-1.0-0-dev libusb-dev gdb-multiarch libtool -y sudo apt install pkg-config -y sudo apt install --reinstall ca-certificates -y sudo apt install python-is-python3 python3-tk -y sudo apt install automake autoconf texinfo libtool libftdi-dev -y sudo apt install git -y sudo apt install linux-tools-5.4.0-77-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
先にPATHを通しておく
nano .bashrc の最後にパスを追加
export PICO_SDK_PATH=$HOME/pico/pico-sdk export PICO_EXAMPLES_PATH=$HOME/pico/pico-examples export PICO_EXTRAS_PATH=$HOME/pico/pico-extras export PICO_PLAYGROUND_PATH=$HOME/pico/pico-playground export PATH=$PATH:$HOME/pico/pico-sdk/tools/elf2uf2/build export PATH=$PATH:$HOME/pico/pico-sdk/tools/pioasm/build export PATH=$PATH:$HOME/pico/picotool/build export PATH=$PATH=:$HOME/pico/pico-project-generator
.bashrcの内容を再反映
source ~/.bashrc
PICOの開発環境を構築する
cd ~/ mkdir pico cd pico
※PATHの関係でホームディレクトリ直下にpicoというフォルダが出来ます。変更もできますが後述のPATHの変更が必要になります。
git clone -b master https://github.com/raspberrypi/pico-sdk.git git clone -b master https://github.com/raspberrypi/picotool.git git clone -b master https://github.com/raspberrypi/pico-examples.git
cd pico-sdk git submodule update --init cd ..
picotoolをビルドする
cd picotool mkdir build cd build cmake .. make cd ~/pico
picosdkをビルドする
- elf2uf2をビルド
cd ~/pico cd pico-sdk/tools/elf2uf2 mkdir build cd build cmake .. make
- pioasmをビルド
cd ~/pico cd pico-sdk/tools/pioasm mkdir build cd build cmake .. make
exampleをコンパイルすいる
cd ~/pico cd pico-examples mkdir build cd build cmake .. cd blink make -j4
picoprobeをコンパイルしてPicoに書き込む
git clone https://github.com/raspberrypi/picoprobe.git
mkdir build cd build/ cmake .. make -j4
picoをUSBメモリとして起動し、コンパイルしたデータをPicoに書き込む
※以下のコマンドはPICOがWindowsでEドライブとして認識した際の内容です。違う際は"e:"の所を変更してください
sudo mkdir /mnt/pico sudo mount -t drvfs e: /mnt/pico cp ~/pico/picoprobe/build/picoprobe.uf2 /mnt/pico
openocd
cd ~/pico git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1 --no-single-branch cd openocd ./bootstrap ./configure --enable-picoprobe make -j4 sudo make install
udevルールの追加
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE="0666"' | sudo tee /etc/udev/rules.d/60-rp2040.rules sudo service udev restart sudo udevadm trigger
WSL2 にUSB機能を接続
参考にしたサイト
https://devblogs.microsoft.com/commandline/connecting-usb-devices-to-wsl/
usbipd wsl list usbipd wsl attach --busid <busid>
OpenOCDを立ち上げ
sudo openocd -f interface/picoprobe.cfg -f target/rp2040.cfg
※ERRORの文字がなく起動したらCTL+Cで終了します
gdbを立ち上げ
gdb-multiarch blink.elf (gdb) target extended-remote localhost:3333
新規プロジェクトの作成
cd ~/pico mkdir MyProject cd MyProject pico_project.py <プロジェクト名> -p vscode 例) pico_project.py test01 -p vscode cd test01
VSCode環境で開発を行う
cd /home/ubuntu/pico/MyProject/test01 code .
以下 立ち上がったVSCode上で設定
拡張機能をインストールする .. code:
Cortex-Debug CMake Tools ※CMake という別のライブラリがありますが、それは入れない C/C++ C/C++ Themes C/C++ Extension Pack
左にある▷ボタンを押し、「実行とデバック」をクリック 選択画面で「Cortex-Debug」を選択 歯車マークをクリックし、
"configFiles": [ "interface/raspberrypi-swd.cfg", "target/rp2040.cfg" ], を "configFiles": [ "interface/picoprobe.cfg", "target/rp2040.cfg" ],
に変更。
pico_projectの使い方
git clone https://github.com/raspberrypi/pico-project-generator.git pico_project.py -h、-help このヘルプメッセージを表示して終了します -t TSV、-tsv TSV代替のpico_configs.tsvファイルを選択します -o OUTPUT、-output OUTPUT 代替のCMakeList.txtファイル名を設定します -x、-examples Pico標準ライブラリのサンプルコードを追加します -l、-list 利用可能な機能を一覧表示します -c、-configs 使用可能なプロジェクト構成アイテムを一覧表示します -f FEATURE、-feature FEATURE 生成されたプロジェクトに機能を追加する -over、-overwrite 既存のプロジェクトとファイルを上書きします -b、-build プロジェクトの作成後にビルド -g、-gui プロジェクトジェネレータのGUIバージョンを実行します -p PROJECT、-project PROJECT IDE用のプロジェクトファイルを生成します。オプションは次のとおりです。vscode -r、-runFrom RAMフラッシュではなくRAMからプログラムを実行します -uart、-uart UARTへのコンソール出力(デフォルト) -nouart、-nouart UARTへのコンソール出力を無効にします -usb、-usb USBへのコンソール出力(他のUSB機能を無効にします) cpp、-cpp C ++コードを生成します -d DEBUGGER、-debugger DEBUGGE spi SPI i2c I2C interface dma DMA support pio PIO interface interp HW interpolation timer HW timer watch HW watchdog clocks HW clocks pico_project.py test01 -x -f spi -f i2c -f pio -p vscodec -usb pico_project.py -p vscode