Docker+RustのRasberryPiPico開発環境

ラズパイ
この記事は約4分で読めます。

組み込みもDockerで環境構築できる時代

開発環境の悩み

だいぶ前に買ったRaspberryPi Picoの無印や無線が付いたHW。

RaspberryPi Pico自体の開発環境はいくつかありますが、少し前からRustでできる事を確認していて、気になっていました。

遊んでみたい気持ちはぼちぼちありましたが、ネイティブな開発環境を用意する例が多く、実際様々なツールをPCに入れても良かったのですが、PCの入れ直しなどでまた環境構築をし直すとなるとめんどくさいですよね。

そこでDockerでどうにかできないかと調べてみたところちょうど良さげなプロジェクトがあったのでそれを採用することにしました。

Baker link. Env

以前よりよく使っているVSCodeの拡張機能のDevContainers機能(+Docker)とrustで書かれたデバッグツールキットのprobe-rsをセットアップするだけでRustの組み込み開発環境ができます

本来Rustの開発環境を構築する必要がありますが、テンプレートとDockerによりRasberryPi Picoの開発環境が簡単に手に入ります

また、ARMのデバッグプローブを採用しているマイコンも書き込みデバッグができます。

今回はこのツール群のセットアップとprobe-rsのサーバーを立ててくれるBaker link. Envを使うことにしました。

Baker link – [簡単]Rustの組込み開発ボード

これでセットアップすれば開発環境が手に入ります

 

Baker link. Dev

同じ作成者が開発したRaspberryPiPico互換のボードです

Type-Cを採用していたり、デバッグプローブの代わりにRS2040が搭載(Pico互換とデバッグプローブの2つ)されていたりと本家より機能が豊富です

今回はチュートリアルのサンプルを動かすために用意しました
(一応プローブデバイスとしても動作します)

Baker link. Dev Rev. 1
Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアのRP2040マイコンをベースに、デバッガを搭載したRust言語学習用開発ボードです。Rev.1版では、外部マイコンデバックをサポートしたファームウェアが標...

RasberryPiPico二つと追加のLEDがいくつか付いています

今回はテンプレートに内蔵されているチュートリアル通りに動かしてみます

信号機(光るだけ)

テンプレートで作成したプロジェクトのtraffic_light.rsをmain.rsにコピーして動かします

現時点だとDockerビルド=Dev Containerの起動ができないので修正します

FROM rust:1.79.0-bullseye

RUN rustup target install thumbv6m-none-eabi
RUN cargo install flip-link --version 0.1.9

現時点でflip-linkの最新バージョンが変更があったのか動かないのでバージョン指定しています(大体1ヶ月前ぐらいにアプデがあったらしい)

後はDev Containerを起動して、F5を2回押すだけで接続した Baker link. Dev が光りますヤッター

ところでRustである必要があるのか

しょーじきな話まだまだ情報が出てないのがなんとも言えない感じですが、Rust自体安定かつ安全な言語であるので、言語を理由にいろいろ環境を変えてきた身としては主要言語にしたい気持ちがほぼ占めています。

まぁもちろんC/C++で開発しても良いですが(情報も多いし)…何かねおもしろくないじゃん(?)

MicroPythonはなんか違う気がする(試したことはない)

参考

Baker link – [簡単]Rustの組込み開発ボード
目次 - Baker link. Tutorial
[簡単]Raspberry Pi PicoをRustでプログラミング🍞
Rust で Raspberry Pi Pico の組み込み開発 | あしたからがんばる
Rust で RP2040 の組み込み開発を行うためのメモ書きを残しています。

 

コメント