CAT874_yocto_v3.0.0

本ページは ルネサスエレクトロニクス社の "RZ/G Verified Linux Version 3.0.0-update1" をかみ砕いたものです。

ルネサスエレクトロニクス社のドキュメントを正として、本ページは参考資料として作業をお願いいたします。

ある程度の linux 及び yocto の知識を必要とします。

事前に Renesasからダウンロードしておくファイル

rzg_bsp_v3.0.0.tar.gz (33Mbyte)
v300-to-v300update1.patch (62kbyte)
RTK0EF0045Z0022AZJ-v1.0_JP.zip
oss_pkg_v3.0.0.7z

ホストOS

Ubuntu 20.04 LTS 64bit 推奨
debian 10 (buster) 64bit 利用可能
(debian 11 (bullseye) 64bit 利用不可能)
空きHDD容量 100GB必要 (仮想PC環境の場合 HDD容量に注意)

必要なソフトウェアのインストール

$ sudo apt-get update
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping libsdl1.2-dev xterm p7zip-full locales

ロケールを作っておく

$ sudo dpkg-reconfigure locales

[*] en_US.UTF-8 UTF-8
[*] ja_JP.UTF-8 UTF-8

環境変数

$ export LANG="ja_JP.UTF-8"

yoctoの準備

yoctoビルドの作業ディレクトリを作る

$ export WORK=~/user_work                    一般ユーザのホームディレクトリの ser_work を作業ディレクトリとする
$ mkdir -p $WORK

2回目以降は次の章を省略する

ファイルの展開

作業ディレクトリ作り移動する

$ cd $WORK

yocto基本パッケージの展開

$ tar xf <DOWNLOADDIR>/rzg_bsp_v3.0.0.tar.gz

Graphics and the video codec の展開

$ unzip <DOWNLOADDIR>/RTK0EF0045Z0022AZJ-v1.0_JP.zip
$ tar xf RTK0EF0045Z0022AZJ-v1.0_JP/meta-rz-features.tar.gz

デフォルトでは映像はLVDS出力となっている。HDMI出力に変更する場合はパッチを当てる

$ cd meta-renesas/
$ patch -p1 < ../extra/0001-Add-HDMI-support-for-RZ-G2.patch

2回目以降はここから

環境変数の設定

$ cd $WORK
$ source poky/oe-init-build-env

confファイルのコピー

$ cd $WORK/build
$ cp ../meta-renesas/docs/template/conf/ek874/*.conf conf/

オプション ossを展開しておく(これを行うとビルドが早い)

$ cd $WORK/build
$ 7z x ./oss_pkg.7z.001
$ 7z x <DOWNLOADDIR>/oss_pkg_v3.0.0.7z

ここまでの作業の結果、オフラインビルドが出来るようになっています。

$WORK/build/conf/local.conf

ファイルを編集し

BB_NO_NETWORK = "1"

に編集してください。↑ ネットワークを使用しない=True 設定

ビルド実行

$ cd $WORK/build
$ bitbake core-image-weston
i5-8400 CPU @ 2.80GHz (6 core)で
real    82m8.935s
user    0m11.972s
sys     0m1.232s

他の選択肢

core-image-minimal      Minimal set of components 
core-image-bsp          Minimal set of components plus audio support and some  useful tools
core-image-weston       Standard image with graphics support
core-image-qt           Enable Qt LGPL version

エラー

openssl のビルド中に

Can't locate find.pl

エラーが出るので

# cp ./meta-rzg2/recipes-cip-core/openssl/files/find.pl /etc/perl/

で回避する

dtb

device tree blob

EK874 Rev.C

Image-r8a774c0-cat874-revc.dtbMain board only
Image-r8a774c0-ek874-revc.dtbMain board + Sub board
Image-r8a774c0-ek874-revc-idk-2121wr.dtbMain board + Sub board + LVDS panel
Image-r8a774c0-ek874-revc-mipi-2.1.dtbMain board + Sub board + MIPI/CSI2 cameras

EK874 Rev.E

Image-r8a774c0-cat874.dtbMain board only
Image-r8a774c0-ek874.dtbMain board + Sub board
Image-r8a774c0-ek874-idk-2121wr.dtbMain board + Sub board + LVDS panel
Image-r8a774c0-ek874-mipi-2.1.dtbMain board + Sub board + MIPI/CSI2 cameras

EK874 Rev.C ES1

初期のEK874 で CPUが ES1品の場合。識別方法としてはu-bootにて rev 1.0 と表示されます。

CPU: Renesas Electronics R8A774C0 rev 1.0
Image-r8a774c0-es10-cat874.dtbmain board only
Image-r8a774c0-es10-ek874.dtbmain + sub board
Image-r8a774c0-es10-ek874-idk-2121wr.dtbmain + sub board + LVDS panel
Image-r8a774c0-es10-ek874-mipi-2.1.dtbmain + sub board + MIPI/CSI2 cameras

microSDカードへの書き込み

cfdiskでmicroSD カードに2つのパーティションを作る

# cfdisk /dev/microSDのデバイス名
partitionPartition IDformatsize
p10x0bfat最低32M 推奨512Mカーネルとデバイスツリーファイル置き場
p20x83ext4最低1Gyocto rootfs

フォーマット

# mkfs.vfat /dev/microsd_p1のデバイス名
# mkfs.ext4 /dev/microsd_p2のデバイス名

p1(第1パーティション)にカーネル(Image)とデバイスツリー(拡張子dtb)をコピー

$ sudo cp build/tmp/deploy/images/ek874/Image  /microsd_p1のマウント先
$ sudo cp build/tmp/deploy/images/ek874/Image-r8a774c0-ek874.dtb  /microsd_p1のマウント先

CAT874リビジョンと CPUバージョンについて

CAT874 Rev.A Rev.BCPU Ver 1.0 (初期ES品)
CAT874 Rev.C Rev.D Rev.ECPU Ver 1.1

u-bootの起動メッセージからも判定できます

U-Boot 2018.09 (Dec 09 2019 - 08:01:25 +0000)

CPU: Renesas Electronics R8A774C0 rev 1.1
Model: Silicon Linux EK874 RZ/G2E board

CPU Ver1.0 (初期ES品)を使用する場合は Image-r8a774c0-es10-ek874.dtb を使用してください。

p2にrootfsを展開

$ sudo tar xf  build/tmp/deploy/images/ek874/core-image-bsp-ek874.tar.gz -C  /microsd_p2のマウント先

CAT874の起動

u-bootにて

Rev.A, Rev.B, Rev.C の場合

=> setenv bootcmd 'fatload mmc 0:1 0x48080000 Image; fatload mmc 0:1 0x48000000 Image-r8a774c0-ek874.dtb; booti 0x48080000 - 0x48000000'
=> setenv bootargs 'root=/dev/mmcblk0p2 rootwait ro'
=> saveenv
=> reset

Rev.D, Rev.E の場合

=> setenv bootcmd 'fatload mmc 0:1 0x48080000 Image; fatload mmc 0:1 0x48000000 Image-r8a774c0-ek874.e.dtb; booti 0x48080000 - 0x48000000'
=> setenv bootargs 'root=/dev/mmcblk1p2 rootwait ro'
=> saveenv
=> reset

解説

bootcmd は u-boot起動時に自動実行するコマンドを記述する。コマンドは ; で区切る。

fatload mmc 0:1 0x48080000 Image                     mmcblk0p1 の Image をロード
fatload mmc 0:1 0x48000000 Image-r8a774c0-ek874.dtb  mmcblk0p1 の Image-r8a774c0-ek874.dtb をロード
booti 0x48080000 - 0x48000000                        メモリにジャンプして起動

bootargs はカーネルに渡す起動時引数(カーネルパラメータとも言う)

root=/dev/mmcblk0p2            rootfsは /dev/mmcblk0p2 (microSD0の第2 Partition)である (Rev.C)
root=/dev/mmcblk1p2            rootfsは /dev/mmcblk0p2 (microSD1の第2 Partition)である (Rev.E)
rootwait                       rootデバイスの準備ができるまで待機する
ro                             read-only でマウントする

その他

カーネルだけ作り直すには

カーネルソースコードのダウンロード

$ cd $WORK/build
$ export LANG=en_US.UTF-8
$ bitbake linux-renesas -c fetch

カーネルソースの位置

./build/tmp/work-shared/ek874/kernel-source

準備

$ sudo apt-get install libncurses5-dev libevent-dev tmux
$ cd $WORK
$ source poky/oe-init-build-env
$ export LANG=en_US.UTF-8
$ bitbake linux-renesas -c clean              クリーン(必要に応じて)
$ bitbake linux-renesas -c menuconfig        config
$ bitbake linux-renesas -f -c do_compile     -f を付けて強制再コンパイル
$ bitbake linux-renesas -f -c deploy
$ ls ./tmp/deploy/images/ek874/

u-bootだけ作り直すには

$ cd $WORK
$ source poky/oe-init-build-env
$ export LANG=en_US.UTF-8
$ bitbake u-boot -c clean              クリーン(必要に応じて)
$ bitbake u-boot -f -c do_compile     -f を付けて強制再コンパイル
$ bitbake u-boot -f -c deploy

ソースのパス

$WORK/build/tmp/work/ek874-poky-linux/u-boot/1_v2018.09+gitAUTOINC+d867a25a9e-r0/git

関連

Last-modified: 2022-07-05 (火) 22:07:21 (660d)