みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

YoctoProject Radxa ROCK 4SEを動かしてみる

はじめに

以前から借りっぱなしで放置されている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本舗が日本語で製品仕様などを発信しているので、比較的使用しやすいかもしれない。