Baker link. DevでRaspberry Pi Picoに書き込み(組み込み開発、Rust、外部マイコン書き込み)
先日、外部マイコン書き込み対応ファームウェアを標準搭載したBaker link. Dev(Rev.1)をリリースしました。
この外部マイコン書き込み機能を利用して、Raspberry Pi PicoにRustのプログラムを書き込んで見ました。
開発環境
- Docker ( Rancher Desktop by SUSE )
- Visual Studio Code
- probe-rs
- Baker link. Env
書き込みツール
書き込み対象のマイコン
- Raspberry Pi Pico
実践
1. Baker link. Devのチュートリアルに沿って、必要なソフトウェアを事前にインストールします。
Baker link. Devチュートリアル
Zennにも環境構築の記事を載せています。
RustとRP2040マイコンでLチカしてみた-環境構築編-
-
Baker link. Envを起動し、プロジェクト名、createクリック、プロジェクト保存先を選択すると、数秒後にVisual Studio Codeが開きます。
-
Visual Studio Codeの左下に表示される「コンテナ―で再度開く」をクリックしてください。すると、Dockerイメージのダウンロード&ビルド処理が開始されます。この処理が数分程度かかりますので、しばらくお待ちください。
-
src/main.rsを開き、以下のプログラムに書き換えてください。
このプログラムは、Raspberry Pi PicoのUSB付近のLED(GPIO25)をON/OFFするプログラムです。
#![no_std]
#![no_main]
use defmt::*;
use defmt_rtt as _;
use panic_probe as _;
use rp2040_hal as hal;
use hal::pac;
use embedded_hal::delay::DelayNs;
use embedded_hal::digital::OutputPin;
#[link_section = ".boot2"]
#[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER_GENERIC_03H;
const XTAL_FREQ_HZ: u32 = 12_000_000u32;
#[rp2040_hal::entry]
fn main() -> ! {
info!("Program start!");
let mut pac = pac::Peripherals::take().unwrap();
let mut watchdog = hal::Watchdog::new(pac.WATCHDOG);
let clocks = hal::clocks::init_clocks_and_plls(
XTAL_FREQ_HZ,
pac.XOSC,
pac.CLOCKS,
pac.PLL_SYS,
pac.PLL_USB,
&mut pac.RESETS,
&mut watchdog,
)
.ok()
.unwrap();
let mut timer = rp2040_hal::Timer::new(pac.TIMER, &mut pac.RESETS, &clocks);
let sio = hal::Sio::new(pac.SIO);
let pins = hal::gpio::Pins::new(
pac.IO_BANK0,
pac.PADS_BANK0,
sio.gpio_bank0,
&mut pac.RESETS,
);
let mut led = pins.gpio25.into_push_pull_output();
loop {
info!("LED on");
led.set_high().unwrap();
timer.delay_ms(2000);
info!("LED off");
led.set_low().unwrap();
timer.delay_ms(2000);
}
}
-
Baker link. EnvのRunをクリックしてください。するとバックグラウンドで、probe-rsのDAP Serverが起動します。
-
Baker link. DevとRasberry Pi PicoをJST-SH型3ピンコネクタケーブルで接続してください。
-
Raspberry Pi Picoに電源を供給するために、Raspberry Pi PicoとPCをUSBケーブルで接続します。
-
次のBaker link. Devを外部マイコン書き込みモードで接続するために、真ん中のボタンを押しながら、Baker link. DevとPCをUSBケーブルで接続してください。
外部マイコン書き込みモードで接続されると緑のLEDが点灯します。
-
Visual Studio CodeでF5キーを押してください。すると、以下のようなアイコンが表示されます。
-
もう一度、F5キーを押すと、プログラムが動作します。
info!(...)のログが下の画面に表示されます。
LEDも点灯されます。
最後に
以上の手順で、Baker link. Dev Rev.1を利用しRaspberry Pi PicoにRustのプログラムを書き込むことができました。この方法は、SWDデバックに対応している他のARM系CPUでも対応可能なので是非別のCPUでも試してみてください!
Discussion