RZBoard V2Lでyocto

Renesas RZ/V2Lを積んだRZBOARD V2L(Avnet製)が一部で盛り上がっているような気がします。
https://www.avnet.com/wps/portal/us/products/avnet-boards/avnet-board-families/rzboard-v2l/
ルネ純正の評価ボードではなくアヴネット供給ということで、ワールドワイドに個人でも入手性が安定しており使いやすいです。(すぐ在庫切れ、EOLになるRCar H3/H3eはなんなの・・・)
ここではTTYにコマンドラインを出すまでの最低限の手順を再現するメモを残してみます。

## 手始めに
### RZBoard-Linux-Yocto-Development-Guide-v2.3を読もう
https://www.avnet.me/rzboard
中ほどTechnical Documentsの項目にガイドが載っています。困る前に一通りは目を通しておくべき。

### 作業環境は20.04LTS
Ubuntuは64-bit版の20.04 LTSを迷わず使いましょう。**22はどっかで躓きます。**

## Yoctoビルドして生成したLinuxをeMMCなりmSDに書き込んでそこから起動する
とまあ簡単に言うものの、初見ではその一言がなかなか厄介。
コンテナ上での作業でも行けるそうですので、ここではWSL2にストア経由でUbuntu20.04LTSをインストールしたUbuntu環境を使用します。

https://www.avnet.com/wps/wcm/connect/onesite/463da618-000a-4989-aad6-785cf45bb84d/RZBoard-Linux-Yocto-Development-Guide-v2.3.pdf

ビルドはChapter 1 Build Instructionsの言うとおりにすればよいのですが、これ、本来はYoctoが必要とするパッケージの導入のことですから、過去にYocto Project Quick Buildの指示に従って一度でもパッケージ追加作業を済ませてあれば改めて行う必要ありませんし、なんならやり直しても悪影響もありません。
~~~
$ sudo apt-get update
$ sudo sudo apt install -y 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 libyaml-dev \
rsync curl locales bash-completion
~~~
https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html#build-host-packages

それよりもちゃんとapt updateしてから使う、更新が見つかったならfull-upgradeしておこう。
~~~
$ sudo su
# apt update
# apt full-upgrade -y
# apt install  gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
# ^D
$
~~~

:::note info
言うまでもありませんが、bitbakeはSuperuserでは実行できないのでアーカイブの展開を始める前に(横着せんように)一般ユーザーに戻しておきます。
:::

### Pokyをcloneしないで代わりにVLPを取ってくる
poky込みでソースコード配布されていますので、次の操作は不必要です。
~~~
$ git clone git://git.yoctoproject.org/poky
~~~
:::note info
相変わらずルネサスはユーザー登録されている必要(悪癖)が止められないようなので、あらかじめ個人名でユーザー登録しましょう。
:::
https://www.renesas.com/us/en/document/gde/rzv2l-easy-downloadguide?r=1496691 

RZV2L Easy Download_Guide [Supplementary information] Renesas recommnds using latest Verified Linux Package (Linux Kernel v5.10)にリンクが掲載されているSoftware、VLPを含み6個ダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/5893217c-0470-6d9d-d64e-b4b931520673.png)
- RZ/V Verified Linux Package v3.0.2(RTK0EF0045Z0024AZJ-v3.0.2.zip) 
- RZ MPU Graphics Library Evaluation Version for RZ/V2L (RTK0EF0045Z13001ZJ-v1.0.5_EN.zip)
- RZ MPU Video Codec Library Evaluation Version for RZ/G2L and RZ/V2L (RTK0EF0045Z15001ZJ-v1.1.0_JP.zip)
- RZ/V2L CM33 Multi-OS Package (r01an6238ej0102-rzv2l-cm33-multi-os-pkg.zip)
- RZ/V2L DRP-AI Support Package (r11an0549ej0720-rzv2l-drpai-sp.zip)
- RZ/V2L ISP Support Package (r11an0561ej0121-rzv2l-isp-sp.zip)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/f9f1c97b-bc94-d39c-c0d0-0615b481921b.png)
:::note warn
yoctoビルドする時点ではソースコードの配布パッケージは要りません。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/669285ce-30b9-cf33-9f2c-698b4cbe5d31.png)
:::
:::note info
非制限ライブラリは知りません。代理店にでもお尋ねください。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/5f5afc40-e4e7-9248-c04e-2c5904c54d05.png)
:::

### tar-ballを展開
自力で展開せず、create_yocto_rz_src.shスクリプトを使い展開します。
取ってきたものをhome directory ( ~/ ) に置けと書かれていますが、作業ディレクトリを掘ってそこで作業しても一向に構いません。



~~~
~$ mkdir rz
~$ cd rz
~/rz$ wget https://raw.githubusercontent.com/Avnet/meta-rzboard/rzboard_dunfell_5.10/tools/create_yocto_rz_src.sh
~~~
~~~
~/rz$ ls
RTK0EF0045Z0024AZJ-v3.0.2.zip     create_yocto_rz_src.sh                       r11an0561ej0121-rzv2l-isp-sp.zip
RTK0EF0045Z13001ZJ-v1.0.5_EN.zip  r01an6238ej0102-rzv2l-cm33-multi-os-pkg.zip  yocto_rzboard
RTK0EF0045Z15001ZJ-v1.1.0_JP.zip  r11an0549ej0720-rzv2l-drpai-sp.zip
~/rz$ chmod +x create_yocto_rz_src.sh
~/rz$ ./create_yocto_rz_src.sh
~~~
取ってきたパッケージは細かくバージョンが新しくなっており、2022年12月現在、そのままでは展開に失敗します。
nanoなどのエディタでcreate_yocto_rz_src.shを開いてREN_で始まるファイル名を実際のファイル名に修正してから使いましょう。
~~~
~/rz$ ./create_yocto_rz_src.sh
 This is an Evaluation Version package RTK0EF0045Z13001ZJ-v1.0.5_EN.zip
 It is recommended to download 'MPU Graphics Library Unrestricted Version' from Renesas Website

 This is an Evaluation Version package RTK0EF0045Z15001ZJ-v1.1.0_JP.zip
 It is recommended to download 'MPU Video Codec Library Unrestricted Version' from Renesas Website


/home/toor/rz/RTK0EF0045Z0024AZJ-v3.0.2.zip REN_LINUX_BSP
rzv*_bsp_v*.tar.gz /home/toor/rz/yocto_rzboard
/home/toor/rz
Extract zip file to REN_LINUX_BSP and then untar rzv*_bsp_v*.tar.gz file
Archive:  /home/toor/rz/RTK0EF0045Z0024AZJ-v3.0.2.zip
   creating: REN_LINUX_BSP/RTK0EF0045Z0024AZJ-v3.0.2/
  inflating: REN_LINUX_BSP/RTK0EF0045Z0024AZJ-v3.0.2/r01us0565ej0103-rz-v(Release Note).pdf
  inflating: REN_LINUX_BSP/RTK0EF0045Z0024AZJ-v3.0.2/rzv_bsp_v3.0.2.tar.gz
  inflating: REN_LINUX_BSP/RTK0EF0045Z0024AZJ-v3.0.2/r01us0566ej0102-rz-v(Component List).pdf
  inflating: REN_LINUX_BSP/RTK0EF0045Z0024AZJ-v3.0.2/r01us0556ej0103-rz-g(Board_StartUp_Guide_smarcEVK).pdf
TAR: REN_LINUX_BSP/RTK0EF0045Z0024AZJ-v3.0.2/rzv_bsp_v3.0.2.tar.gz

/home/toor/rz/RTK0EF0045Z13001ZJ-v1.0.5_EN.zip REN_GPU_MALI
meta-rz-features*.tar.gz /home/toor/rz/yocto_rzboard
/home/toor/rz
Extract zip file to REN_GPU_MALI and then untar meta-rz-features*.tar.gz file
Archive:  /home/toor/rz/RTK0EF0045Z13001ZJ-v1.0.5_EN.zip
   creating: REN_GPU_MALI/RTK0EF0045Z13001ZJ-v1.0.5_EN/
  inflating: REN_GPU_MALI/RTK0EF0045Z13001ZJ-v1.0.5_EN/L-234(Rev1.5)_RZ Graphics Software License Agreement - Evaluation_20220307.pdf
  inflating: REN_GPU_MALI/RTK0EF0045Z13001ZJ-v1.0.5_EN/meta-rz-features_graphics_v1.0.5.tar.gz
  inflating: REN_GPU_MALI/RTK0EF0045Z13001ZJ-v1.0.5_EN/r01us0470ej0103-rz-g.pdf
TAR: REN_GPU_MALI/RTK0EF0045Z13001ZJ-v1.0.5_EN/meta-rz-features_graphics_v1.0.5.tar.gz

/home/toor/rz/RTK0EF0045Z15001ZJ-v1.1.0_JP.zip REN_VEDIO_CODEC
meta-rz-features*.tar.gz /home/toor/rz/yocto_rzboard
/home/toor/rz
Extract zip file to REN_VEDIO_CODEC and then untar meta-rz-features*.tar.gz file
Archive:  /home/toor/rz/RTK0EF0045Z15001ZJ-v1.1.0_JP.zip
   creating: REN_VEDIO_CODEC/RTK0EF0045Z15001ZJ-v1.1.0_JP/
  inflating: REN_VEDIO_CODEC/RTK0EF0045Z15001ZJ-v1.1.0_JP/L-233(Rev1.5)_RZG Codecライセンス契約書(評価版)_20220307.pdf
  inflating: REN_VEDIO_CODEC/RTK0EF0045Z15001ZJ-v1.1.0_JP/meta-rz-features_codec_v1.1.0.tar.gz
  inflating: REN_VEDIO_CODEC/RTK0EF0045Z15001ZJ-v1.1.0_JP/r01us0531ej0100-rz-g.pdf
TAR: REN_VEDIO_CODEC/RTK0EF0045Z15001ZJ-v1.1.0_JP/meta-rz-features_codec_v1.1.0.tar.gz

/home/toor/rz/r11an0549ej0720-rzv2l-drpai-sp.zip REN_V2L_DRPAI
meta-rz-features*.tar.gz /home/toor/rz/yocto_rzboard
/home/toor/rz
Extract zip file to REN_V2L_DRPAI and then untar meta-rz-features*.tar.gz file
Archive:  /home/toor/rz/r11an0549ej0720-rzv2l-drpai-sp.zip
  inflating: REN_V2L_DRPAI/r11an0549ej0720-rzv2l-drpai-sp.pdf
   creating: REN_V2L_DRPAI/rzv2l_drpai-driver/
  inflating: REN_V2L_DRPAI/rzv2l_drpai-driver/meta-rz-features.tar.gz
  inflating: REN_V2L_DRPAI/rzv2l_drpai-driver/r01us0595ej0120-rzv-linux-drpai.pdf
   creating: REN_V2L_DRPAI/rzv2l_drpai-sample-application/
  inflating: REN_V2L_DRPAI/rzv2l_drpai-sample-application/r11an0573ej0720-rzv2l-drpai-application-note.pdf
  inflating: REN_V2L_DRPAI/rzv2l_drpai-sample-application/rzv2l_drpai-sample-application_ver7.20.tar.gz
   creating: REN_V2L_DRPAI/rzv_ai-evaluation-software/
  inflating: REN_V2L_DRPAI/rzv_ai-evaluation-software/r11an0624ej0721-rzv-ai-eva-soft-guide.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-evaluation-software/r11an0624jj0721-rzv-ai-eva-soft-guide.pdf
 extracting: REN_V2L_DRPAI/rzv_ai-evaluation-software/rzv2l_ai-evaluation-software_ver7.20.tar.gz
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/appendix/
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/appendix/r11an0622ej0721-rzv-ai-imp-appendix.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/appendix/r11an0622jj0721-rzv-ai-imp-appendix.pdf
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/darknet_yolo/
 extracting: REN_V2L_DRPAI/rzv_ai-implementation-guide/darknet_yolo/darknet_yolo_ver7.20.tar.gz
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/darknet_yolo/r11an0620ej0721-rzv-ai-imp-yolo.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/darknet_yolo/r11an0620jj0721-rzv-ai-imp-yolo.pdf
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/mmpose_hrnet/
 extracting: REN_V2L_DRPAI/rzv_ai-implementation-guide/mmpose_hrnet/mmpose_hrnet_ver7.20.tar.gz
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/mmpose_hrnet/r11an0621ej0721-rzv-ai-imp-hrnet.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/mmpose_hrnet/r11an0621jj0721-rzv-ai-imp-hrnet.pdf
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_deeplabv3/
 extracting: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_deeplabv3/pytorch_deeplabv3_ver7.20.tar.gz
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_deeplabv3/r11an0619ej0721-rzv-ai-imp-deeplabv3.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_deeplabv3/r11an0619jj0721-rzv-ai-imp-deeplabv3.pdf
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_mobilenet/
 extracting: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_mobilenet/pytorch_mobilenet_ver7.20.tar.gz
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_mobilenet/r11an0618ej0721-rzv-ai-imp-mobilenet.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_mobilenet/r11an0618jj0721-rzv-ai-imp-mobilenet.pdf
   creating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_resnet/
 extracting: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_resnet/pytorch_resnet_ver7.20.tar.gz
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_resnet/r11an0617ej0721-rzv-ai-imp-resnet.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/pytorch_resnet/r11an0617jj0721-rzv-ai-imp-resnet.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/r11an0616ej0721-rzv-ai-imp-getstarted.pdf
  inflating: REN_V2L_DRPAI/rzv_ai-implementation-guide/r11an0616jj0721-rzv-ai-imp-getstarted.pdf
 extracting: REN_V2L_DRPAI/rzv_ai-implementation-guide/rzv_ai-implementation-guide_ver7.20.tar.gz
   creating: REN_V2L_DRPAI/rzv_drpai-report/
  inflating: REN_V2L_DRPAI/rzv_drpai-report/r11an0628ej0720-rzv-drpai-accuracy-report.pdf
  inflating: REN_V2L_DRPAI/rzv_drpai-report/r11an0657ej0720-rzv-drpai-performance-report.pdf
TAR: REN_V2L_DRPAI/rzv2l_drpai-driver/meta-rz-features.tar.gz

/home/toor/rz/r11an0561ej0121-rzv2l-isp-sp.zip REN_V2L_ISP
meta-rz-features*.tar.gz /home/toor/rz/yocto_rzboard
/home/toor/rz
Extract zip file to REN_V2L_ISP and then untar meta-rz-features*.tar.gz file
Archive:  /home/toor/rz/r11an0561ej0121-rzv2l-isp-sp.zip
  inflating: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/meta-rz-features.tar.gz
  inflating: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/r11an0561ej0121-rzv2l-isp-sp.pdf
  inflating: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/r11an0563ej0121-rzv2l-simple-isp.pdf
  inflating: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/r11uz0105ej0121-rzv2l-simple-isp.pdf
  inflating: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/rzv2l_isp-adjustment-tool_ver1.21.tar.gz
  inflating: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/rzv2l_isp-sample-application_ver1.21.tar.gz
TAR: REN_V2L_ISP/r11an0561ej0121-rzv2l-isp-sp/meta-rz-features.tar.gz

/home/toor/rz/r01an6238ej0102-rzv2l-cm33-multi-os-pkg.zip REN_MULTI_OS
meta-rz-features*.tar.gz REN_MULTI_OS
/home/toor/rz
Extract zip file to REN_MULTI_OS and then untar meta-rz-features*.tar.gz file
Archive:  /home/toor/rz/r01an6238ej0102-rzv2l-cm33-multi-os-pkg.zip
   creating: REN_MULTI_OS/r01an6238ej0102-rzv2l-cm33-multi-os-pkg/
  inflating: REN_MULTI_OS/r01an6238ej0102-rzv2l-cm33-multi-os-pkg/License.txt
 extracting: REN_MULTI_OS/r01an6238ej0102-rzv2l-cm33-multi-os-pkg/meta-rz-features.tar.gz
  inflating: REN_MULTI_OS/r01an6238ej0102-rzv2l-cm33-multi-os-pkg/r01an6238ej0102-rzv2l-cm33-multi-os-pkg.pdf
  inflating: REN_MULTI_OS/r01an6238ej0102-rzv2l-cm33-multi-os-pkg/rzv2l_cm33_rpmsg_demo.zip
TAR: REN_MULTI_OS/r01an6238ej0102-rzv2l-cm33-multi-os-pkg/meta-rz-features.tar.gz
/home/toor/rz/yocto_rzboard/meta-rz-features/recipes-isp/recipes-linux/linux/linux-renesas_5.10.bbappend
/home/toor/rz/yocto_rzboard/meta-rz-features/meta-rz-graphics/recipes-graphics/mali/linux-renesas_5.10.bbappend
/home/toor/rz/yocto_rzboard/meta-rz-features/recipes-drpai/recipes-kernel/linux/linux-renesas_5.10.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzg2l/recipes-kernel/linux/linux-renesas_5.10.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzg2h/recipes-kernel/linux/linux-renesas_5.10.bbappend
/home/toor/rz/yocto_rzboard/meta-multi-os/recipes-kernel/linux/linux-renesas_5.10.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzfive/recipes-bsp/u-boot/u-boot_2021.10.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzg2l/recipes-bsp/u-boot/u-boot_2021.10.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzg2h/recipes-bsp/u-boot/u-boot_2021.10.bbappend
/home/toor/rz/yocto_rzboard/meta-multi-os/recipes-bsp/u-boot/u-boot_2021.10.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzg2l/recipes-bsp/trusted-firmware-a/trusted-firmware-a.bbappend
/home/toor/rz/yocto_rzboard/meta-renesas/recipes-rzg2h/recipes-bsp/trusted-firmware-a/trusted-firmware-a.bbappend

ls /home/toor/rz/yocto_rzboard
meta-gplv2  meta-multi-os  meta-openembedded  meta-qt5  meta-renesas  meta-rz-features  meta-virtualization  poky

---Finished---
~/rz$
~~~

:::note warn
2023年1月現在、RTK0EF0045Z0024AZJ-v3.0.0-update2より新しいRTK0EF0045Z0024AZJ-v3.0.2が配布されていますが、ルネ製ライブラリが全部対応しきれていないようで正しくビルドできませんでした。
readmeなどに3.0.0update2用と書かれているライブラリは3.0.2と組み合わせないことを推奨します
:::
:::note info
2023年2月14日現在、RTK0EF0045Z0024AZJ-v3.0.2で動くライブラリが配布されていることを確認しました。
下記のリストは bitbake avnet-core-imageが通った当時のものですが、お手元のファイルとはもう一致しないでしょう。適宜ファイル名は修正してください。
:::
~~~
~/rz$ nano create_yocto_rz_src.sh
~/rz$ cat create_yocto_rz_src.sh
#!/bin/bash

VERSION=0.2.0

# Make sure that the following packages have been downloaded from the official website
# RZ/V Verified Linux Package [5.10-CIP]  V3.0.0-update2
#REN_LINUX_BSP_PKG="RTK0EF0045Z0024AZJ-v3.0.0-update2"
REN_LINUX_BSP_PKG="RTK0EF0045Z0024AZJ-v3.0.2"
SUFFIX_ZIP=".zip"

# RZ MPU Graphics Library V1.21 Unrestricted Version
REN_GPU_MALI_LIB_PKG="RTK0EF0045Z14001ZJ-v1.21_EN"
# RZ MPU Graphics Library Evaluation Version V1.2
##REN_GPU_MALI_LIB_PKG_EVAL="RTK0EF0045Z13001ZJ-v1.21_EN"
REN_GPU_MALI_LIB_PKG_EVAL="RTK0EF0045Z13001ZJ-v1.0.5_EN"

# RZ MPU Video Codec Library v1.0 Unrestricted Version
REN_VEDIO_CODEC_LIB_PKG="RTK0EF0045Z16001ZJ-v1.0_rzg_EN"
# RZ MPU Video Codec Library Evaluation Version V1.0
##REN_VEDIO_CODEC_LIB_PKG_EVAL="RTK0EF0045Z15001ZJ-v1.0_EN"
REN_VEDIO_CODEC_LIB_PKG_EVAL="RTK0EF0045Z15001ZJ-v1.1.0_JP"

# RZ/V2L DRP-AI Support Package Version 7.20
REN_V2L_DRPAI_PKG="r11an0549ej0720-rzv2l-drpai-sp"

# RZ/V2L ISP Support Package Version 1.20
##REN_V2L_ISP_PKG="r11an0561ej0120-rzv2l-isp-sp"
REN_V2L_ISP_PKG="r11an0561ej0121-rzv2l-isp-sp"

# RZ/V2L Multi-OS Package V1.02
REN_V2L_MULTI_OS_PKG="r01an6238ej0102-rzv2l-cm33-multi-os-pkg"

# ----------------------------------------------------------------
…
~~~

### avnetのレシピを追加
https://www.avnet.com/wps/wcm/connect/onesite/463da618-000a-4989-aad6-785cf45bb84d/RZBoard-Linux-Yocto-Development-Guide-v2.3.pdf

1.2.3 Download meta-rzboardで触れられているAvnet配布のレシピを取ってきます。
git clone後にmeta-rzboardディレクトリが増えていることが確認できます。
~~~
$ cd ~/rz/yocto_rzboard
~/rz/yocto_rzboard$ ls
meta-gplv2 meta-openembedded meta-renesas meta-virtualization
meta-multi-os meta-qt5 meta-rz-features poky
~/rz/yocto_rzboard$ git clone https://github.com/Avnet/meta-rzboard.git -b rzboard_dunfell_5.10
Cloning into 'meta-rzboard'...
remote: Enumerating objects: 508, done.
remote: Counting objects: 100% (508/508), done.
remote: Compressing objects: 100% (251/251), done.
remote: Total 508 (delta 192), reused 489 (delta 175), pack-reused 0
Receiving objects: 100% (508/508), 2.18 MiB | 131.00 KiB/s, done.
Resolving deltas: 100% (192/192), done.
~/rz/yocto_rzboard$ ls 
meta-gplv2 meta-openembedded meta-renesas meta-rz-features poky
meta-multi-os meta-qt5 meta-rzboard meta-virtualization
~~~
### local.confを修正
作業ディレクトリが掘られていませんので、ついでにbuild/conf/を掘ってサンプルのlocal.confをbuild/confディレクトリにコピーします。
~~~
$ mkdir -p ~/rz/yocto_rzboard/build/conf
$ cp meta-rzboard/conf/rzboard/* build/conf/
$ ls build/conf/
bblayers.conf local.conf
~~~

再利用されることのあるダウンロードキャッシュは、(デカいですし)置き場所を外に出しましょう。local.confのコメントアウトされているDL_DIRを修正します。
また、マシンにもよりますがビルド並列数を適切に指定しないとYoctoは現実的な時間でビルドが完了しませんので、PARALLEL_MAKE, BB_NUMBER_THREADSの設定を追加します。
~~~
~/rz$ cat ~/rz/yocto_rzboard/build/conf/local.conf
…
# Source code download options
DL_DIR = "${HOME}/downloads"
BB_NUMBER_THREADS = '8'
PARALLEL_MAKE = '-j 4'
~~~

### bitbake avnet-core-imageでビルド
実行前にbitbake-layers show-layersなどとして使用されるレシピを確認してみるのもよいと思います。
手元の貧弱なWindows11最底辺スペックのノートパソコンだと12hくらいかかります。

:::note info
シェルコマンドのsourceは `.`に省略する記法が使えます

:::
~~~
~$ cd ~/rz/yocto_rzboard/
~/rz/yocto_rzboard$ . poky/oe-init-build-env build

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

Other commonly useful commands are:
 - 'devtool' and 'recipetool' handle common recipe tasks
 - 'bitbake-layers' handles common layer tasks
 - 'oe-pkgdata-util' handles common target package tasks
~/rz/yocto_rzboard/build$
~/rz/yocto_rzboard/build$ bitbake avnet-core-image
WARNING: Layer qt5-layer should set LAYERSERIES_COMPAT_qt5-layer in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer multi-os should set LAYERSERIES_COMPAT_multi-os in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer qt5-layer should set LAYERSERIES_COMPAT_qt5-layer in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: Layer multi-os should set LAYERSERIES_COMPAT_multi-os in its conf/layer.conf file to list the core layer names it is compatible with.
WARNING: You have included the meta-virtualization layer, but 'virtualization' has not been enabled in your DISTRO_FEATURES. Some bbappend files may not take effect. See the meta-virtualization README for details on enabling virtualization support.
WARNING: You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space
Parsing recipes: 100% |##################################################################################| Time: 0:03:22
Parsing of 2451 .bb files complete (0 cached, 2451 parsed). 6050 targets, 697 skipped, 21 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.46.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "ubuntu-20.04"
TARGET_SYS           = "aarch64-poky-linux"
MACHINE              = "rzboard"
DISTRO               = "poky"
DISTRO_VERSION       = "3.1.17"
TUNE_FEATURES        = "aarch64 cortexa55"
TARGET_FPU           = ""
SOC_FAMILY           = "rzv2l:r9a07g054l"
meta-gplv2
meta
meta-poky
meta-yocto-bsp
meta-renesas         = "<unknown>:<unknown>"
meta-rzboard         = "rzboard_dunfell_5.10:c80d836c8e0e0067d7e542e1b9c182a2916ff764"
meta-oe
meta-python
meta-multimedia
meta-qt5
meta-rz-features
meta-multi-os
meta-filesystems
meta-networking
meta-virtualization  = "<unknown>:<unknown>"

NOTE: Fetching uninative binary shim http://downloads.yoctoproject.org/releases/uninative/3.6/x86_64-nativesdk-libc-3.6.tar.xz;sha256sum=9bfc4c970495b3716b2f9e52c4df9f968c02463a9a95000f6657fbc3fde1f098 (will check PREMIRRORS first)
…
~~~
:::note info
WSL2環境だと常に仮想ディスクファイルの大きさについて警告されるようです。
>WARNING: You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space
:::

### 生成物の確認
build/tmp/deploy/images/rzboard/に必要なものが出力されているはずです。
- avnet-core-image-rzboard-YYYYMMDDTTTTTT.rootfs.wic
確認したら起動ディスクイメージをmSDに書き出します。
https://sourceforge.net/projects/win32diskimager/
~~~
~/rz$ ls ~/rz/yocto_rzboard/build/tmp/deploy/images/rzboard/
Flash_Writer_SCIF_rzboard.mot
Image
Image--5.10.83+gitAUTOINC+51ea568d6d-r1-rzboard-20230214153243.bin
Image-rzboard.bin
avnet-core-image-rzboard-20230214153243.rootfs.ext4
avnet-core-image-rzboard-20230214153243.rootfs.manifest
avnet-core-image-rzboard-20230214153243.rootfs.tar.bz2
avnet-core-image-rzboard-20230214153243.rootfs.tar.gz
avnet-core-image-rzboard-20230214153243.rootfs.wic
avnet-core-image-rzboard-20230214153243.rootfs.wic.bz2
avnet-core-image-rzboard-20230214153243.testdata.json
avnet-core-image-rzboard.ext4
avnet-core-image-rzboard.manifest
avnet-core-image-rzboard.tar.bz2
avnet-core-image-rzboard.tar.gz
avnet-core-image-rzboard.testdata.json
avnet-core-image-rzboard.wic
avnet-core-image-rzboard.wic.bz2
avnet-core-image.env
bl2-rzboard.bin
bl2-rzboard.elf
bl2_bp-rzboard.bin
bl2_bp-rzboard.srec
bl31-rzboard.bin
bl31-rzboard.elf
cm33
fip-rzboard.bin
fip-rzboard.srec
modules--5.10.83+gitAUTOINC+51ea568d6d-r1-rzboard-20230214153243.tgz
modules-rzboard.tgz
overlays
readme.txt
rzboard--5.10.83+gitAUTOINC+51ea568d6d-r1-rzboard-20230214153243.dtb
rzboard-rzboard.dtb
rzboard.dtb
u-boot-elf-rzboard-v2021.10+gitAUTOINC+477248973c-r0.srec
u-boot-elf-rzboard.srec
u-boot-rzboard-v2021.10+gitAUTOINC+477248973c-r0.bin
u-boot-rzboard.bin
u-boot-rzboard.bin-rzboard
u-boot.bin
u-boot.bin-rzboard
uEnv.txt
~/rz$
~~~
## RZBoardの準備
Hardware User Guideを参照して、起動ディスクをmSDに設定します。SW1.1をOFFに切り替えます。(J19へのCable_5Vのジャンパは接続しません)
DIPスイッチの操作には先の尖った工具などが便利ですが、金属製のピンセットやマイナスドライバといった手が滑ると短絡させやすいものを避けると幸せになれると思います。電源を外している状態であれば大丈夫という指摘もありますが。

:::note warn
鉛筆やシャープペンシルはやめましょう。基板上にグラファイトを含む導電性の材料を落とす恐れが高いです。
:::

![SW1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/b335103b-7fe2-ebec-6ee2-05b9c9d41a20.png)
TTYはデバッグシリアルに出ていますので、お手元の端末PCからUSBシリアル変換ケーブル(3.3V)を経由して接続します。

:::note warn
USBシリアル変換は信号電圧が3.3Vのものを使用します。5V系ロジック電圧のものやRS-232-C変換(9～20V)のものを接続するとrzboardが破損します。
:::

ボード上の角付近に4極のピンヘッダ(U19)が出ています。そのうち3つを接続します。
- GND シリアル変換ケーブルのSG/GNDに**確実に接続してください**。動作中に外れると壊しかねません。
- RXD シリアル変換ケーブルのTxDに接続。
- TXD シリアル変換ケーブルのRxDに接続。

![J19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/a737a5b9-530f-dbeb-664c-7b109598105b.png)

:::note info
(BOOT2)5V入力端子は未使用です。 **確実に絶縁してください**。
:::
## TeraTerm
設定 - シリアルポートのメニューを開きます。
下図のスクリーンショットは、USBシリアル変換ケーブルを端末PC(Windows)に接続してTeraTermを起動したところです。COMxの値xは環境依存で変化しますがUSB SerialなどといったUSBシリアル変換ケーブルを意味するポートがあるはずで、これを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/d5bb2b31-e4bc-adc5-4a04-ac3550d13064.png)

:::note info
COMポート(USBシリアル変換)が出現しない場合はTeraTermをいったん終了しましょう。TeraTerm起動後にドライバがインストールされるなどした場合、COMxが存在しても選択できないようです。
:::
設定 - シリアルポートのメニューを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/38fe0b62-e5c8-fc81-d965-8cc097adc58a.png)
スピードを115200b/sに修正して再設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/7e4c63d4-78a1-3dbc-5df3-7e4801a90c77.png)

## 起動確認
Quick-Start Guideなどを参照しつつ先に書き出ししたmSDブートディスクを取り付けてUSB-Cに電源を供給し、ボタンS1を長押しすると起動。
![20boot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/049d7fa5-2932-2b24-f548-9ccbce0ba48b.png)
![21loginroot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376652/f60f4da4-ffda-bf02-9854-95d95d211059.png)
初期状態では3色LEDが青色のheartbeartで点滅しているようです。消灯するにはとりあえず以下の通り。
~~~ 
root@rzboard:~# echo 0 > /sys/class/leds/led_blue/brightness
~~~
赤色でLチカ
~~~
root@rzboard:~# echo default-on > /sys/class/leds/led_red/trigger
root@rzboard:~# echo heartbeat > /sys/class/leds/led_red/trigger
~~~
## とりあえずここまで。