はじめに
以前から借りっぱなしで放置されているROCK 4SEをYoctoProjectで動かしてみる。
meta-rockchipについて
YoctoProjectで管理されているmeta-rockchipはあまりメンテナンスされていないっぽく、新し目のボードはサポートしていないが、 githubでRadxaが管理しているmeta-rockchipでは新しいボードをサポートしている。
Radxaのリポジトリの方にはrockchip-rk3399-rock-4se
のマシン定義がある。
ROCK4 SE用のイメージを作成
Radxaのmeta-rockchipを使用してROCK4 SEを動かす。使用するブランチはkirkstone。
Pokyの取得
作業ディレクトリを作成し、pokyを取得する。
$ mkdir -p ~/yocto/rock4se $ cd ~/yocto/rock4se $ git clone git://git.yoctoproject.org/poky.git -b kirkstone
meta-rockchipの取得
Layer Indexで提供されているレイヤではないためbitbake-layers layerindex-fetch
は使用せずにgitで取得する。
$ pushd poky $ git clone https://github.com/radxa/meta-rockchip.git -b kirkstone-radxa $ popd
環境変数の設定
$ source poky/oe-init-build-env
依存レイヤの追加
meta-rockchipが依存するレイヤを追加する。
$ bitbake-layers layerindex-fetch meta-oe
レイヤの追加
$ bitbake-layers add-layer ../poky/meta-rockchip
local.confの修正
MACHINEにrockchip-rk3399-rock-4se
を設定する。
また、bmaptoolを使用できるようにするためにIMAGE_FSTYEPSを変更している。
MACHINE ?= "rockchip-rk3399-rock-4se" DL_DIR = "${TOPDIR}/../downloads" IMAGE_FSTYPES:append = " wic.gz wic.bmap"
ビルド
とりあえずcore-image-minimalをビルドしてみる。
$ bitbake core-image-minimal
書き込み
bmaptoolで書き込む。
$ pushd ./ $ sudo bmaptool copy ./tmp/deploy/images/rockchip-rk3399-rock-4se/core-image-minimal-rockchip-rk3399-rock-4se.wic.gz /dev/sdX
/dev/sdX
は環境に応じて適宜読み替える。
動作確認
USB-UARTの接続
Radxaのwikiにある接続方法
ピン | ROCK 4SE | ケーブル | 色 |
---|---|---|---|
10 | RXD | TXD | 緑 |
8 | TXD | RXD | 白 |
6 | GND | GND | 黒 |
ケーブルの色はものによるので参考程度に。
シリアルの設定
baudrate: 1500000 data bit: 8 stop bit: 1 parity : none flow control: none
上記のwikiにはminicomの設定方法まで親切に記載されている。
他のボードも使用する場合ここまでガチガチに設定すると不便なこともあるので、筆者がminicomを起動する場合下記のようにしている。
$ minicom -b 1500000 -D /dev/ttyUSB0
起動
Poky (Yocto Project Reference Distro) 4.0.12 rockchip-rk3399-rock-4se /dev/ttyFIQ0 rockchip-rk3399-rock-4se login: root root@rockchip-rk3399-rock-4se:~# uname -a Linux rockchip-rk3399-rock-4se 5.10.160-rockchip-standard #1 SMP Fri Aug 4 02:10:04 UTC 2023 aarch64 GNU/Linux
まとめ
githubでRadxaが管理しているmeta-rockchipでROCK 4SEを動かしてみた。 まだ、core-image-minimalを動かしただけだが、OSは問題なく動いているようだ。
YoctoProjectが同名のBSPレイヤを提供していて、使用したいボードがサポートされていない場合でもボードのベンダー(今回はRadxa)が提供している方を調べるとサポートされている場合がある。
Radxaのボードに関してはwikiなどもあり、ある程度しっかりとボードの情報が提供されているようだし、IoT本舗が日本語で製品仕様などを発信しているので、比較的使用しやすいかもしれない。