1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アンドリュー・"バニー"・ファン直伝の22nmオープンシリコンを触ってみた(NT金沢2026)

1
Posted at

はじめに

2026年6月27日、金沢駅東もてなしドーム地下で開催された NT金沢2026 の夜の部にて、ハードウェアハッカー bunnie(アンドリュー・ファン)氏 による Baochip のハンズオンが行われました。

資料に沿って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 に近く、

  1. PROG ボタンを押しながら USB 接続
  2. 2Finder に出た BAOCHIP ドライブへ UF2 をドラッグ
  3. 取り出し
  4. PROG を押してRunモードで起動

という流れでした。

2のUF2の書き込みでは、初回は以下の3つをすべて書き込みます。

  • loader.uf2
  • xous.uf2
  • apps.uf2dabao-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チカのプログラムが実行できた。

スクリーンショット 2026-06-28 7.24.40.png

ゴール1:LED の L チカ(test blink

公式資料 では、dabao-consoletest.rsblink サブコマンドを追加し、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 がチカチカすれば成功です。ループに入るのでプロンプトは戻りません(想定どおりの動作)。

IMG_8304.gif

スクリーンショット 2026-06-28 7.24.40.png

ゴール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でもちゃんと動きました!

256494A4-8AB6-427B-BEF9-57A93C5EDB99_1_105_c.jpeg

遭遇したの罠:boot1 と dabao-console は別物

シリアル接続後、testws2812 を打つとこう返ってきました。

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金沢のお手伝いさんの皆さん、ハンズオンのオーガナイザーの高須さん、そして、バニー・ファン氏に感謝。

参考リンク

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?