目的
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。
なお、私は実機を所持していない。
どれぐらいなんだろうとのぞいてみたら...リードタイム...
https://t.co/aKPbQR5B0U
— nb.o (@Nextremer_nb_o) January 30, 2022
Microchip Technology PolarFire® SoC FPGA Icicleキット
ほーん。6万弱。
リードタイム34週間って...
※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に設定すれば上書きされるので、複数のビルドとかに便利。
Yocto、conf/auto.confに設定をかけるのか。conf/local.confだけだと思っていた。知らないことありすぎる。
— nb.o (@Nextremer_nb_o) January 31, 2022
と、つぶやいたところ、site.confもあるということを教えていただいた。
なんと!Interface誌でYocto関連の「MyオリジナルLinuxの作り方」を連載されていたかた!!
conf/site.confってのもありますね
— みつきん (@yusuke_mitsuki) February 1, 2022
(ありがとうございます!!)
site.confはProxyなど共通の設定を記載できるよう。
たしかにこれは便利である。
あ!
— nb.o (@Nextremer_nb_o) February 1, 2022
site.conf、こんな使い方(Proxyの設定)があるんですね。これもっと前に知りたかった内容です(過去の自分に教えたい)。なるほど、これは便利ですね。
(今は必要ないんですがね😅)https://t.co/xJEJ3nY826https://t.co/GZGnJVFK9w
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 件のコメント:
コメントを投稿