CAT874_yocto_v3.0.3

本ページは ルネサスエレクトロニクス社の

RZ/G Verified Linux Package Version 3.0.3  (R01US0553EJ0107) Apr 21, 2023

をかみ砕いたものです。

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

ある程度の linux 及び yocto の知識を必要とします。ノーサポートでお願いします。

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

RTK0EF0045Z0021AZJ-v3.0.3.zip
  このzipの中に rzg_bsp_v3.0.3.tar.gz (34Mbyte) が含まれている
oss_pkg_v3.0.3.7z (約1.6Gbyte)
RTK0EF0045Z0022AZJ-v1.0.2_JP.zip  (evaluation version. time limitation. It stops in a few hours after start running)
または
RTK0EF0045Z0023AZJ-v1.0.2_JP.zip  (production version)

これらパッケージをダウンロードして保存したディレクトリを 環境変数 $DOWNLAOD とする。

ホスト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 \
flex bison u-boot-tools bc libncurses-dev  libssl-dev

ロケールを作っておく

$ 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 $DOWNLOAD/rzg_bsp_v3.0.1.tar.gz

Graphics and the video codec の展開

$ unzip $DOWNLOAD/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

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

$ cd $WORK
$ mkdir build
$ cd build
$ 7z x $DOWNLOAD/oss_pkg_rzg_v3.0.3.7z

2回目以降はここから

環境変数の設定

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

confファイルのコピー

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

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

$ vi $WORK/build/conf/local.conf

ファイルを編集し

BB_NO_NETWORK = "1"

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

レイヤの追加

必要に応じてレイヤを追加してください

Graphics グラフィックスライブラリが必要な場合

$ bitbake-layers add-layer ../meta-rz-features/meta-rz-graphics

Video Codec:

$ bitbake-layers add-layer ../meta-rz-features/meta-rz-codecs

Qt:

$ bitbake-layers add-layer ../meta-qt5
$ bitbake-layers add-layer ../meta-rz-features/meta-rz-graphics
$ bitbake-layers add-layer ../meta-rz-features/meta-rz-codecs

Docker:

$ bitbake-layers add-layer ../meta-openembedded/meta-filesystems
$ bitbake-layers add-layer ../meta-openembedded/meta-networking
$ bitbake-layers add-layer ../meta-virtualization
$ cd ../meta-renesas
$ patch -p1 < ../extra/0001-dynamic-layers-virtualization-layer-add-WA-to-remove.patch
$ cd ../build

ビルド実行

$ cd $WORK/build
$ bitbake core-image-weston
i5-8400 CPU @ 2.80GHz (6 core)で
real    125m8.777s
user    0m16.808s
sys     0m1.765s

他の選択肢

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

成果物は

$WORK/build/tmp/deploy/images/ek874

に出来上がります。

kernel

  • $WORK/build/tmp/deploy/images/ek874/Image

dtb

  • $WORK/build/tmp/deploy/images/ek874 (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-weston-ek874.tar.bz2 -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-revc.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.dtb; booti 0x48080000 - 0x48000000'
=> setenv bootargs 'root=/dev/mmcblk0p2 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)である
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_v2021.10+gitAUTOINC+711334a179-r0/git

yoctoを使わずに u-boot をビルドするなら、先にSDK を通しておいてから

$ make -j4 CROSS_COMPILE=aarch64-poky-linux- silinux_ek874_defconfig
$ make -j4 CROSS_COMPILE=aarch64-poky-linux- 

生成物 ls -ltr で確認

u-boot.bin   バイナリ
u-boot.elf   JTAGデバッガではこちらをロード

ATF (arm trusted firmware)だけ作り直すには

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

ソースのパス

$WORK/build/tmp/work/ek874-poky-linux/trusted-firmware-a/v2.7+git-r0/git

SDK

$ bitbake core-image-minimal -c populate_sdk
$ cd $WORK/build/tmp/deploy/sdk/
$ su 
# ./poky-glibc-x86_64-core-image-minimal-aarch64-ek874-toolchain-3.1.21.sh
Enter target directory for SDK (default: /opt/poky/3.1.21):  [Enterを押す]
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /opt/poky/3.1.17/environment-setup-aarch64-poky-linux
$ . /opt/poky/3.1.17/environment-setup-armv7vet2hf-neon-vfpv4-pokymllib32-linux-gnueabi

関連

Last-modified: 2023-10-06 (金) 16:48:55 (204d)