はじめに
2026年6月27日、金沢駅東もてなしドーム地下で開催された NT金沢2026 の夜の部にて、ハードウェアハッカー bunnie(アンドリュー・ファン)氏 による Baochip のハンズオンが行われました。
- 当日の資料: Baochip をはじめよう(日本語)
- 使用するソースコード: https://github.com/betrusted-io/xous-core
資料に沿ってLチカとネオピクの点灯までやってきたのですが、本記事では 自分が実際に詰まったポイントと、最終的にデモまで動かせた手順 をまとめます。
Baochip / Dabao とは(おさらい)
概要の紹介 → https://medium.com/ecosystembymakers/baochip-1x-138c430acf6b
- Baochip-1x: TSMC 22nm で製造された、ほぼオープン RTL の RISC-V SoC
- Dabao: その評価ボード(Crowd Supply などで入手)
- Xous: 上で動く Rust 製マイクロカーネル OS(xous-core)
- BIO: 700MHz の PicoRV ベース I/O コプロセッサ。WS2812 のようなタイミングクリティカルな出力に使われる
Pico 2 や ESP32 と並べると MMU 搭載・オープンブートローダ・セキュリティ機能など個性的なチップです。詳しい比較表は 公式スライド にあります。
事前準備
wiki の指示どおり xous-core を clone して cargo xtask dabao dabao-console を実行したところ、自分の場合は Rust が未インストールでエラーに(それはそう)。
面倒だったので、お試しで Grok Build にリポジトリのURL(https://github.com/betrusted-io/xous-core ) を渡して、cargo xtask dabao dabao-console が通る用意して!と依頼して全部やってもらった。
結果、以下のような作業をしてくれたようだ。
# Rust のインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# PATH を通す(~/.zshrc に追記するのが確実)
. "$HOME/.cargo/env"
# 確認
rustc --version # 1.90 以上(当日は 1.96.0)
cargo --version
# 次に Xous 専用の RISC-V ツールチェーンが必要です。これも最初のビルドで怒られます。
cd xous-core
cargo xtask install-toolchain
# その後、本番のビルド
cargo xtask dabao dabao-console
target/riscv32imac-unknown-xous-elf/release/ に loader.uf2 / xous.uf2 / apps.uf2 が生成されれば準備完了です。
ハンズオン中にやったこと&補足
ハンズオン中にやったことのメモや、はまったポイントなど。
プログラムの書き込みと dabao-console の実行方法
ハンズオン資料だけだと書き込み方法や dabao-console の実行方法がぱっと見だとわからなかった。
これも Grok Build にリポジトリ読んでもらって、そもそもの使い方を解説してもらった。
| モード | 見え方 | やること |
|---|---|---|
| 書き込み | USB メモリ BAOCHIP
|
Finder で .uf2 をコピー |
| 実行後 | USB シリアル |
dabao-console のシェル操作 |
イメージとしては Raspberry Pi Pico に近く、
- PROG ボタンを押しながら USB 接続
- 2Finder に出た
BAOCHIPドライブへ UF2 をドラッグ - 取り出し
- PROG を押してRunモードで起動
という流れでした。
2のUF2の書き込みでは、初回は以下の3つをすべて書き込みます。
loader.uf2xous.uf2-
apps.uf2(dabao-consoleを含む)
書き込み後、USBシリアルで接続して screen コマンドで接続する。
# 繋がっているポートを確認
% ls /dev/cu.usbmodem*
/dev/cu.usbmodemXXXX
# screenコマンドで接続
screen /dev/cu.usbmodemXXXX 1000000
ボーレートは 1000000(1M baud)固定です。
screen立ち上がったら、boot を実行後、ver で動いているか確認。
この状態で、実行できるコマンド群が表示される。
dabao-console は対話式のプログラムなので、この状態で test blink を実行すると、後述のLチカのプログラムが実行できた。
ゴール1:LED の L チカ(test blink)
公式資料 では、dabao-console の test.rs に blink サブコマンドを追加し、PB4 と隣の GND の間に LED を1個挿して点滅させるのが最初のゴールです。
ハンズオンでは VSCode 拡張の Build-flash-monitor を使う方法も紹介されましたが、自分はコマンドラインでやっていたので、UF2 を書き換えて再フラッシュしました。
イメージ(資料どおりのコード)
"blink" => {
use std::time::Duration;
use bao1x_api::{IoGpio, IoxDir, IoxHal, IoxPort, IoxValue};
let iox = IoxHal::new();
iox.set_gpio_pin_dir(IoxPort::PB, 4, IoxDir::Output);
loop {
iox.set_gpio_pin_value(IoxPort::PB, 4, IoxValue::High);
std::thread::sleep(Duration::from_secs(1));
iox.set_gpio_pin_value(IoxPort::PB, 4, IoxValue::Low);
std::thread::sleep(Duration::from_secs(1));
}
}
screenコマンドで接続して、dabao-console のシェルから:
test blink
1秒間隔で LED がチカチカすれば成功です。ループに入るのでプロンプトは戻りません(想定どおりの動作)。
ゴール2:WS2812 を光らせる
組み込みコマンド ws2812 で BIO 経由の LED ストリップ制御ができます。デフォルトは データ PB5(BIO ピン 5)、6 個 想定ですが、そのままやってたらバニー・ファン氏から「lengthを変更しなよ!」とコメントいただいたので、10個に変更。
配線
GPIO は 3.3V・5V 非耐圧 なので、5V は GPIO ピンに入れないでください。電源はボードの VBUS から取ります。
| Dabao(物理ピン) | 接続先 |
|---|---|
| 40 (VBUS) | ストリップ +5V |
| 38 (GND) など | ストリップ GND |
| 35 (PB5) | ストリップ DIN |
ピン配置は 公式ピンアウト が便利です。
コマンド実行
ws2812 length 10
ws2812 rainbow
こちらはプログラム自体はサンプルに入っているので実行のみですが、手持ちのCOBのシリアルLEDでもちゃんと動きました!
遭遇したの罠:boot1 と dabao-console は別物
シリアル接続後、test や ws2812 を打つとこう返ってきました。
Command not recognized: test
Commands include: altboot, audit, boot, boardtype, bootwait, echo, ...
これは dabao-console ではなく boot1(工場出荷ブートローダ)のモニタ にいる状態です。bootwait が有効だと自動起動せず、ここで止まります。
対処
boot
を入力すると Xous が起動し、dabao-console のシェルに入れます。成功すると ver などが使え、未知のコマンドを打つと次のような一覧が出ます。
Commands: echo, ver, i2cdetect, test, ws2812, touch, bio
「コマンドがない」=配線やコードの問題ではなく、まだ boot1 にいる というのが当日の最大の学びでした。
感想
-
UF2 書き込み →
boot→ シェル という三段階を理解すると一気に進む - LED 1個の L チカで「GPIO + Xous + dabao-console」の経路が見える
- WS2812 で BIO コプロセッサ の存在を体感できる(メイン CPU がループでビットバンぐしない)
- 「ほぼオープンな 22nm チップ」を ジャンパ線とシリアル で触れるのは、なかなか贅沢な体験だった
- Rustの設計思想や理念 がちゃんと落とし込まれて実行されるマイコンとして、非常に面白いと思った
おわりに
「Rust を入れて clone して cargo xtask」から始まり、boot1 のコマンド一覧に困惑し、Finder で UF2 を書き、ようやく ws2812 rainbow で色が流れた——という流れでした。
まだ数が揃っていなくて大変貴重な Baochip に実際に触れる、しかもハードウェアハッカーのアンドリュー・"バニー"・ファン直伝で、というのが大変刺激的な体験でした。NT金沢のお手伝いさんの皆さん、ハンズオンのオーガナイザーの高須さん、そして、バニー・ファン氏に感謝。


