3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

windowsでのraspipicoの開発環境の構築 その1

Last updated at Posted at 2022-02-08

下記の手順に関してまとめる。

開発環境の構築

WSLのセットアップ

WSLのセットアップは、公式ページを参考にセットアップを行う。

Windows 10 バージョン 2004 以降 (ビルド 19041 以降) または Windows 11 を実行している必要がある。

管理者の PowerShell または Windows コマンド プロンプトを起動して、下記のコマンドを実行する。

wsl --install

Ubuntuがインストールされたので次に、Linux ユーザー情報を設定する。

[スタート] メニューを使用してディストリビューション (既定では Ubuntu) を開き、Linux ディストリビューションのユーザー名とパスワードの作成をする。

パッケージの更新とアップグレードを行う。

sudo apt update && sudo apt upgrade

ここまで出来たら、WSLのセットアップは完了。

WSLは2もあり、バージョンを変更する場合は下記を参照。

VScodeのセットアップ

エディタにはVScodeを使用する。
下記からダウンロードとインストールを行う。

インストールまで行ったら、初めにリモート接続用の拡張機能を追加する。
日本語化は、Japanese Language Pack for Visual Studio Codeをインストールした。
ローカル環境に対して拡張機能タブで**c/c++**と検索して c/c++ extention packをインストールする。

拡張機能タブ

次に、リモートエクスプローラーから、WSLへ接続を行う。

リモートエクスプローラータブ

接続を行った後から、リモート先へ拡張機能を追加する。
下記の拡張をインストールした。

  • C/C++ Extension Pack (必須)
  • Japanese Language Pack for Visual Studio Code (任意)

上記でエディタの環境構築は終了。

必要なツールのセットアップ

WSL上のUbuntuの環境を構築する。
VScode上から、WSLに接続してUbuntuを操作する。
下記の図のwindow+マークを選択し、wslに接続する。

WSLの選択

WSLへの接続が正しくされると下記のように表示される。

WSL接続完了

ctrl + @を押すとVScode上でターミナルが起動する。

最初に、パッケージのアップデート・アップグレードを行う。

sudo apt update && sudo apt upgrade

次に必要なパッケージをインストールする。

 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential git

下記の資料を参考にした。
基本的なことは下記に書いてあり、Raspberry Piからプログラムするのが一般的だが、
現在、とても値上がりしていたり、入手しにくい状況のため、今回は、windowsからの入門にすることとした。

LEDチカチカまでのプロジェクト作成ビルドまで

手順としては、下記のように行う。

  • pico-sdkをクローンする。
  • CmakeList.txtにインクルード、編集する。
  • C/C++のソースを編集する。
  • ビルドする。
  • Raspberry Pi Picoへ送る
pico-sdkをクローンする。

下記のコマンドを使用して、pico-sdkをクローンする。

git clone https://github.com/raspberrypi/pico-sdk.git

[https://github.com/raspberrypi/pico-sdk.git:embed:cite]

今回は下記のようなフォルダ構成とする。

$ tree -L 1 ./
./
├── LEDblink
└── pico-sdk
CmakeList.txtにインクルード、編集する。

LEDblinkフォルダ下には下記のようなフォルダ構成とする。

$ tree -L 1 ./LEDblink
./LEDblink
├── CMakeLists.txt
└── src

$ tree ./src
./src
└── pico-display
    ├── CMakeLists.txt
    └── main.c

LEDblink/CMakeLists.txtは下記のようにした。

cmake_minimum_required(VERSION 3.12)

set(ENV{PICO_SDK_PATH} "${HOME}/src/repo/pico/pico-sdk/" )

# Pull in SDK (must be before project)
include(../pico-sdk/external/pico_sdk_import.cmake)

project(pico_examples C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

if (PICO_SDK_VERSION_STRING VERSION_LESS "1.3.0")
    message(FATAL_ERROR "Raspberry Pi Pico SDK version 1.3.0 (or later) required. Your version is ${PICO_SDK_VERSION_STRING}")
endif()

# Initialize the SDK
pico_sdk_init()

add_compile_options(-Wall
        -Wno-format          # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int
        -Wno-unused-function # we have some for the docs that aren't called
        -Wno-maybe-uninitialized
        )

add_subdirectory(src/pico-ledblink)

基本的には、サンプルプログラムから引用した。

注目点は、下記の通り。

  • set(ENV{PICO_SDK_PATH} "${HOME}/src/repo/pico/pico-sdk/" )
  • include(../pico-sdk/external/pico_sdk_import.cmake)
  • add_subdirectory(src/pico-ledblink)

set(ENV{PICO_SDK_PATH} "${HOME}/src/repo/pico/pico-sdk/" )およびinclude(../pico-sdk/external/pico_sdk_import.cmake)は、サンプルを参考にPico-SDK使用するために設定する。

add_subdirectory(src/pico-ledblink)をして、プロジェクトを追加する。

LEDblink/src/CMakeLists.txt下は下記の通り。

add_executable(pico_ledblink
    main.c
    )

# pull in common dependencies
target_link_libraries(pico_ledblink pico_stdlib)

pico_ledblinkのビルドとpico_ledblinkにライブラリをリンクする。

C/C++のソースを編集する。
/**
 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include "pico/stdlib.h"

#define BACK_LIGHT_PIN 

int main() {
    const uint LED_PIN = PICO_DEFAULT_LED_PIN;
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
    while (true) {
        gpio_put(LED_PIN, 1);
        sleep_ms(250);
        gpio_put(LED_PIN, 0);
        sleep_ms(250);
    }
}

0.25秒おきに点滅するプログラムの完成。

ビルドする。

gcc-arm-none-eabiを使用してビルドを行う。

キットのスキャン

キットのスキャンを行い、gcc-arm-none-eabiを選択する。

キットとビルド

VScodeのウィンドウ下方に上記のように表示されていればいざ、ビルドする。

ビルドがされるとpico-ledblink.elf.build/src/pico-display/pico_display.elfに生成される。
このまま送っても動作しないため、.uf2に変換する。
変換するには、pico-sdk内にelf2uf2というツールがあるため、このツールを使用して変換する。

pico-sdkのプロジェクトを開き、プロジェクトをビルドする。
キットのスキャンを行い、gcc-arm-none-eabiを選択する。
そしてビルドすると、./pico-sdk/build/elf2uf2/elf2uf2が生成される。

そして、下記のコマンドを使用し.uf2に変換する。

../pico-sdk/build/elf2uf2/elf2uf2 build/src/pico-display/pico_ledblink.elf build/src/pico-display/pico_ledblink.uf2

この変換は、下記のサイトを参考にした。

Raspberry Pi Picoへ送る。

Raspberry Pi Picoをパソコンに接続し、linux内でマウントを行うことで転送する。

上記のサイトを参考にマウントを行った。

Raspberry Pi Picoをマウントするには、bootボタンを押したままUSBを接続する。
その後、下記のコマンドを実行する。今回は、windows上でDドライブにRaspberry Pi Picoがマウントされたことを前提としている。

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

上記によって下記のようにlinuxにRaspberry Pi Picoがマウントされる。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        251G  4.6G  234G   2% /
tmpfs           3.1G     0  3.1G   0% /mnt/wsl
tools           238G  201G   38G  85% /init
none            3.1G     0  3.1G   0% /dev
none            3.1G  8.0K  3.1G   1% /run
none            3.1G     0  3.1G   0% /run/lock
none            3.1G     0  3.1G   0% /run/shm
none            3.1G     0  3.1G   0% /run/user
tmpfs           3.1G     0  3.1G   0% /sys/fs/cgroup
drivers         238G  201G   38G  85% /usr/lib/wsl/drivers
lib             238G  201G   38G  85% /usr/lib/wsl/lib
C:\             238G  201G   38G  85% /mnt/c
D:              128M   20K  128M   1% /mnt/d

最後に、$ cp build/src/pico-display/pico_display.uf2 /mnt/d/を行うとPicoにコピーされる。

コピーされたのち、一回Picoを抜いて再度挿すとコピーした実行ファイルが実行される。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?