2022年7月9日土曜日

YoctoでSipeed Lichee RV Dock

 目的


前回のブログではYoctoのmeta-riscvmeta-tensorflow-liteをつかって、Sipeed Lichee RV DockでOSイメージのビルドとTensorFlow-Liteの動作確認を行った。
ただし、meta-riscvにLichee RV Dock向けの対応(DTSなど)がないためUSBは使えない。

今回は、meta-riscvをforkしてU-Bootやカーネルなどを追加してLichee RV Dock向けBSPを作成して、USBが動作するところまで確認する。


参照


もともと、meta-riscvにはnezha allwinner d1の対応が含まれている。
Yocto Project Summit 2022.05で詳細が発表されていた模様。

これをもとにlinux-sunxiの情報と、 Archlinux Image Builderの情報をもとにBSPを作成してみる。


レシピ(BSP)の作成


meta-riscvをforkして作成。

ブランチは「kirkstone_licheerv」。

コミットはこちら。

おおきくわけて
  • machine configuration
  • boot0
  • opensbi
  • u-boot
  • linux kernel
  • wis
のレシピを変更・追加している。


machine configuration


machine/nezha-allwinner-d1.conf を参考にLichee RV 向けに変更している。

machineは「licheerv」。


boot0


nezha-allwinner-d1向けのレシピに対して修正。
COMPATIBLE_MACHINEに「licheerv」を追加している。


OpenSBI


OpenSBIもnezha-allwinner-d1と同様のであるため、レシピにlicheerv向けの追加を行っているのみ。


U-Boot


こちらはlicheerv向けに作成。

U-Bootのコードはsmaeul/u-bootを利用(ブランチは「d1-wip」)。
他、uEnvやtoc.cfgはnezha-allwinner-d1と同じものを利用。


Linux kernel


こちらもsmaeul/linuxを利用(ブランチは「riscv/d1-wip」)。
defconfigはsehraf/riscv-arch-image-builderのものを利用した(スクリプトから生成)。


wis


nezha-allwinner-d1と同じものを利用。
ただし、いつも参考にしているブログにあるとおりnezha-allwinner-d1のwisではイメージのサイズが大きい(約14GB)。

なので、今回はイメージサイズを約8GB程度にした。

--fixed-size 8000の部分。


イメージ作成(Bitbake)


core-image-minimalでbitbakeしてみる。
まずは、必要なリポジトリをclone。
$ git clone -b kirkstone git://git.yoctoproject.org/poky.git
$ git clone -b kirkstone https://github.com/openembedded/openembedded-core.git
$ git clone -b kirkstone https://github.com/openembedded/meta-openembedded.git
$ git clone -b kirkstone_licheerv https://NobuoTsukamoto/riscv/meta-riscv.git
$ source poky/oe-init-build-env licheerv-build

$ bitbake-layers add-layer ../meta-openembedded/meta-oe/
$ bitbake-layers add-layer ../meta-openembedded/meta-python/
$ bitbake-layers add-layer ../meta-openembedded/meta-networking/
$ bitbake-layers add-layer ../meta-openembedded/meta-multimedia/
$ bitbake-layers add-layer ../meta-riscv/

あとは、bitbake。
MACHINE=licheerv bitbake core-image-minimal

成功したら、*.wic.gzファイルをSDカードに書き込んでブートさせてみる。


動作確認




core-image-westonもやってみる


bitbakeでcore-image-westonをビルドして動かしてみた。



最後に


今回はRISC-V SBCのSipeed Lichee RV Dock向けのBSPをmeta-riscvのnezha-allwinner-d1を参考にやってみた。


0 件のコメント:

コメントを投稿