CAT874_yocto_v106

本ページは ルネサスエレクトロニクス社の "RZ/G Verified Linux Package for 64bit kernel Version 1.0.6" をかみ砕いたものです。

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

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

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

基本ファイル

rzg2_bsp_eva_v106.tar.gz (Evaluation version) (65MB)
rzg2_bsp_pro_v106.tar.gz (Product version) (65MB)
oss_pkg_v106.7z (7.3GB)

オプション Basic packages for HTML5 (Gecko) environment

rzg2_bsp_gecko_v106.tar.gz (614KB)
oss_pkg_gecko_v106.7z (1.9GB)

ホストOS

Ubuntu 16.04 LTS 64bit 推奨
debian 9 (stretch) 64bit 利用可能
空きHDD容量 100GB必要 (仮想PC環境の場合注意)

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

$ 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

ロケールを作っておく

$ 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
$ tar xvzf ./rzg2_bsp_eva_v102.tar.gz

VLP64パッケージはLVDS出力となっている。HDMI出力に変更する場合はパッチを当てる

$ cd $WORK/meta-rzg2
$ patch -p1 < ../extra/0001-BSPv1.0.6-Add-HDMI-support-for-RZ-G2.patch

Renesasプロプラソフトのコピー

$ cd $WORK/meta-rzg2
$ sh docs/sample/copyscript/copy_proprietary_softwares.sh ../proprietary/

2回目以降はここから

環境変数の設定

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

confファイルのコピー

$ cd $WORK/build
$ cp ../meta-rzg2/docs/sample/conf/ek874/linaro-gcc/*.conf conf/

パッケージの展開 (oss_pkg_v106.7z を build/ ディレクトリにコピーしておく。展開後は消してよい)

$ cd $WORK/build
$ 7z x ./oss_pkg.7z.001

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

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

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

$WORK/build/conf/local.conf

ファイルを編集し

BB_NO_NETWORK = "1"

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

ビルド実行

$ cd $WORK/build
$ bitbake core-image-bsp
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/

で回避する

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 でマウントする

その他

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

カーネルソースの位置

./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

関連