2022年2月5日土曜日

YoctoでTensorFlow Lite v2.8.0(Microchip PolarFire SoC Yocto BSP + meta-tensorflow-lite)

目的


meta-tensorflow-lite(python3-tensorflow-lite)でTensorFlow Lite v2.8.0のビルドにRISC-Vを対応する。
先日、v2.8.0がリリースされたので対応することと、こちらのissue(RISC-Vでビルドできない)であったBSPでビルド確認を行う。


Microchip PolarFire SoCって?


RISC-V CPU + FPGAのSoCのよう。
開発元はMicrochip Technology。

CPUはSiFive U54を5コア(セキュアブート用が1つとアプリケーション用が4コアとある)。
メモリはLPDDR4 2GB。

なお、私は実機を所持していない。
どれぐらいなんだろうとのぞいてみたら...リードタイム...

※2022年1月末のつぶやきなので最新の状況はチェックしてください。


環境&準備


ホスト環境および、事前にインストールするパッケージ等は前回のブログと同様。
の該当部分を参照。


リポジトリ


meta-tensorflow-liteおよび、Microchip PolarFire SoC Yocto BSPのリポジトリは以下。

meta-tensorflow-lite




meta-polarfire-soc-yocto-bsp




ビルド


さてここからはビルド。

Microchip PolarFire SoC Yocto BSPをClone、必要なリポジトリを取得する。
なお、このときのリビジョンは"02cb81741a5e1b37f89318d04ebc6b2854bfe736"である。
$ mkdir yocto-dev
$ cd yocto-dev
$ repo init -u https://github.com/polarfire-soc/meta-polarfire-soc-yocto-bsp.git -b master -m tools/manifests/riscv-yocto.xml
$ repo sync
$ repo rebase

meta-tensorflow-liteのCloneする。
v2.8.0対応のリビジョンでチェックアウトする。
$ git clone  https://github.com/NobuoTsukamoto/meta-tensorflow-lite.git
$ cd meta-tensorflow-lite/
$ git checkout b20bc554a30933a65648ee4557ebb48aacd4db54
$ cd ..

polarfire-soc_yocto_setup.shを実行(bitbake-layersやoe-init-build-envなど実行)。
$ . ./meta-polarfire-soc-yocto-bsp/polarfire-soc_yocto_setup.sh

meta-tensorflow-liteを追加する。
$ bitbake-layers add-layer ../meta-tensorflow-lite/

auto.confにpython3-tensorflow-liteを追加する。
$ vi conf/auto.conf
# 最終行に以下を追加
IMAGE_INSTALL:append = " python3-tensorflow-lite"

最後にbitbake!
MACHINE=qemuriscv64を指定するとエラーで怒られてしまう、、、
このため、実機向け(MACHINE=icicle-kit-es)でビルド。
$ MACHINE=icicle-kit-es bitbake mpfs-dev-cli
Loading cache: 100% |#########################################################################################################| Time: 0:00:00
Loaded 3774 entries from dependency cache.
Parsing recipes: 100% |#######################################################################################################| Time: 0:00:01
Parsing of 2437 .bb files complete (2434 cached, 3 parsed). 3777 targets, 169 skipped, 1 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.52.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "riscv64-oe-linux"
MACHINE              = "icicle-kit-es"
DISTRO               = "nodistro"
DISTRO_VERSION       = "nodistro.0"
TUNE_FEATURES        = "riscv64"
meta                 = "HEAD:63a235d86edb5ca628c8601ed06fb04da3186141"
meta-oe              
meta-python          
meta-multimedia      
meta-networking      = "HEAD:77718718cf0eec2c7119d101a353f343e2769b1b"
meta-riscv           = "HEAD:47faa008327abc388c52246b24a8a458b30b6f0d"
meta-polarfire-soc-yocto-bsp = "HEAD:02cb81741a5e1b37f89318d04ebc6b2854bfe736"
meta-tensorflow-lite = "HEAD:b20bc554a30933a65648ee4557ebb48aacd4db54"

Initialising tasks: 100% |####################################################################################################| Time: 0:00:05
Sstate summary: Wanted 1379 Local 0 Network 0 Missed 1379 Current 1506 (0% match, 52% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 6955 tasks of which 4502 didn't need to be rerun and all succeeded.
NOTE: Writing buildhistory
NOTE: Writing buildhistory took: 110 seconds
NOTE: Build completion summary:
NOTE:   do_populate_sysroot: 0.0% sstate reuse(0 setscene, 106 scratch)
NOTE:   do_package_qa: 0.0% sstate reuse(0 setscene, 351 scratch)
NOTE:   do_package: 0.0% sstate reuse(0 setscene, 281 scratch)
NOTE:   do_packagedata: 0.0% sstate reuse(0 setscene, 285 scratch)
NOTE:   do_package_write_ipk: 0.0% sstate reuse(0 setscene, 351 scratch)

ビルド完了!!!(実機がないのでここまで)


その他

auto.conf、site.conf


前回のブログあたりからYoctoの設定ファイルにauto.confがあることを知った。
いままではlocal.confを変更・修正だけ。
auto.confに設定すれば上書きされるので、複数のビルドとかに便利。

と、つぶやいたところ、site.confもあるということを教えていただいた。
なんと!Interface誌でYocto関連の「MyオリジナルLinuxの作り方」を連載されていたかた!!
(ありがとうございます!!)

site.confはProxyなど共通の設定を記載できるよう。
たしかにこれは便利である。

Yoctoまだまだ知らないことがありすぎる...


ビルドエラーについて


MACHINE=qemuriscv64を指定してビルドすると以下のビルドエラーが発生する。
OpenSBIのレシピがないように見えるけど、、、
今回はここまで。
$ MACHINE=qemuriscv64 bitbake mpfs-dev-cli
Loading cache: 100% |                                                                                                        | ETA:  --:--:--
Loaded 0 entries from dependency cache.
WARNING: /work/yocto-dev/openembedded-core/meta/recipes-bsp/u-boot/u-boot_2021.07.bb: Unable to get checksum for u-boot SRC_URI entry .txt: file could not be found
WARNING: /work/yocto-dev/meta-polarfire-soc-yocto-bsp/recipes-bsp/hss/hss.bb: Unable to get checksum for hss SRC_URI entry ${HSS_PAYLOAD}.yaml: file could not be found
Parsing recipes: 100% |#######################################################################################################| Time: 0:00:30
Parsing of 2437 .bb files complete (0 cached, 2437 parsed). 3777 targets, 168 skipped, 1 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing PROVIDES 'opensbi'. Close matches:
  opensc
  openssh
  openssl
ERROR: Required build target 'mpfs-dev-cli' has no buildable providers.
Missing or unbuildable dependency chain was: ['mpfs-dev-cli', 'opensbi']

Summary: There were 2 WARNING messages shown.
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

以上!

0 件のコメント:

コメントを投稿