考えてもわかりそうな気がしないので、まずはYoctoが提供しているシステムで環境を作ることにした。
ZYBO用confファイルのどこかがよくなかったせいじゃないかと考えたのだ。
build$ MACHINE=zcu102-zynqmp bitbake petalinux-image-minimal
初回はいつも時間がかかるのだな。。。
昼寝して起きたら、エラーが発生していた。
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: fsbl-2017.2+gitAUTOINC+122565ec40-r0 do_deploy: Function failed: do_deploy (log file is located at /xxx/yocto/build/tmp/work/zcu102_zynqmp-xilinx-linux/fsbl/2017.2+gitAUTOINC+122565ec40-r0/temp/log.do_deploy.15315)
ERROR: Logfile of failure stored in: /xxx/yocto/build/tmp/work/zcu102_zynqmp-xilinx-linux/fsbl/2017.2+gitAUTOINC+122565ec40-r0/temp/log.do_deploy.15315
Log data follows:
| DEBUG: Executing python function sstate_task_prefunc
| DEBUG: Python function sstate_task_prefunc finished
| DEBUG: Executing shell function do_deploy
| install: cannot stat '/xxx/yocto/build/tmp/work/zcu102_zynqmp-xilinx-linux/fsbl/2017.2+gitAUTOINC+122565ec40-r0/build/fsbl/Release/fsbl.elf': No such file or directory
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_deploy (log file is located at /xxx/yocto/build/tmp/work/zcu102_zynqmp-xilinx-linux/fsbl/2017.2+gitAUTOINC+122565ec40-r0/temp/log.do_deploy.15315)
ERROR: Task (/xxx/yocto/sources/core/../meta-xilinx-tools/recipes-bsp/fsbl/fsbl_git.bb:do_deploy) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2047 tasks of which 824 didn't need to be rerun and 1 failed.Summary: 1 task failed:
/xxx/yocto/sources/core/../meta-xilinx-tools/recipes-bsp/fsbl/fsbl_git.bb:do_deploy
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
fsbl.elfができていないので終わったようだ。
しかし、fsbl.elfができていないことについてのエラーメッセージが出ていない。
ZYBOも同じようにできていないからエラーになったのかと思ったが、こちらにはfsbl.elfができていた。
うーん、参考にならん。。。
初心に帰って、Yoctoの環境を作るところからやっておこう。
repoだけしかやってなかったのだ。
Yocto Project Quick Start
ここのUbuntuをみてapt installした(今回は、Xubuntu 16.04を使っている)。
そして、repo initからやり直そう。
前のは消した方が良いのかもしれんが、めんどうなのでそのままやる。
だめだったら、全部消そう。
$ repo init -u git://github.com/Xilinx/yocto-manifests.git -b rel-v2017.2
$ repo sync
$ repo start rel-v2017.2 --all
$ source setupsdk
$ MACHINE=zybo-zynq7 bitbake petalinux-minimal
なんか、特に処理が行われた感じがしないから、cleanみたいなことをしたい。
bitbake の clean
-c cleanしてからやり直すそうだ。
やってみたが、やはりFITファイルはできなかった。
Yocto BSP · socnix-lab/PetaLinux_BSPs Wiki
こちらは1年くらい前の更新だが、FITファイルができているようだ。
MACHINEは"zybo-linux-bd-zynq7"だし、branchは"jethro"だ。
"jethro"は表を見ると、rel-v2016.2くらいのようだ。
ああ、meta-xilinxのrel-v2017.2にZYBOのconfファイルがないのが
https://github.com/Xilinx/meta-xilinx/tree/rel-v2017.2/conf/machine
jethroのような名前が付いたブランチにはZYBOのconfファイルが入っているけど、relのついた名前の方には入っていないようだ。
relじゃない方の名前は、XilinxではなくYoctoの名前らしい。
私がrel-v2017.2を使ったのは、インストールしたVivadoが2017.2だからというだけだ。
そして、ここまでビルドしてきて、Vivadoのバージョンに依存しそうなところが見えていないので、気にしなくてよいのだろうか?
そう思って、mortyくらいをrepo initしようとしたが失敗した。
そういえば、meta-xilinxではなく、yocto-manifestsだった。
こっちはrelのついたブランチしかない。
どうも、やり方が変わったようだ。
rel-v2016.4まではmeta-petalinux.xmlのような名前だが、rel-v2017.1からはdefault.xmlになっているし、XMLファイルの中身も少し変わっている。
ビルドのやりかたも、rel-v2017.1以降とそれ以前で分かれていたな。
そういえば、最初にビルドしたとき、エラーが出てconfファイルを適当に変更したのを思い出した。
そもそも、そこで出るエラーを何とかしないといけなかったんじゃなかろうか?
confファイルのこの行をコメントアウトして逃げたのだ。
EXTRA_IMAGEDEPENDS += "u-boot-zynq-uenv"
これで検索すると、どうもmeta-xilinxのmasterには入っているが、ブランチにはないようだった。
じゃあ、このファイルをコピーしてやればよいかと思ったが、他にもファイルがいりそうだった。
では、meta-xilinxだけmasterにしてしまえばよいか。
yocto-manifest.gitをforkして書き換えてpushしたものを用意したのだが、id_rsaのpassphraseを入力すると止まってしまう。
わからんので、yocto-manifest.gitでrepo initして、.repo/manifest.xmlを書き換えることにした。
$ repo init -u git://github.com/Xilinx/yocto-manifests.git -b rel-v2017.2
$ vi .repo/manifest.xml
(meta-xilinxのrevisionだけmasterにする)
$ repo sync
$ repo start rel-v2017.2-zybo --all
$ source setupsdk
$ MACHINE=zybo-zynq7 bitbake petalinux-minimal
だめか。。。
ExpansionError during parsing /xxx/meta-xilinx/recipes-devtools/qemu/qemu-xilinx-helper-native_1.0.bb
bb.data_smart.ExpansionError: Failure expanding variable FILESEXTRAPATHS_prepend[:=], expression was ${@get_filespath_extra(d, 'recipes-devtools/qemu/qemu-helper')} which triggered exception TypeError: getVar() missing 1 required positional argument: 'expand'
masterって、ダメなこと多いよね。。
こういうときは、1つ前のバージョンだ!
ただ、relがついたブランチにZYBOのconfファイルはないので、そこはコピーして、"u-boot-zynq-uenv"の行をコメントアウトした。
そして今回は、MACHINEをなんとなくzybo-linux-bd-zynq7にしてみた。
はあ、なんで私はこういう変更をいっぺんでやってしまうんだろうねぇ。。。
$ repo init -u git://github.com/Xilinx/yocto-manifests.git -b rel-v2017.1
$ repo sync
$ repo start rel-v2017.1-zybo --all
$ source setupsdk
$ MACHINE=zybo-linux-bd-zynq7 bitbake petalinux-minimal
だめね。
ERROR: Nothing RPROVIDES 'device-tree' (以下略)
では、zybo-zynq7に戻してみよう。
さっきよりは進んでいるので、rel-v2017.1ではなくzybo-linux-bd-zynq7のconfファイルによるものか。
TARGETとしてpetalinux-minimalを使っているが、ここも見直した方が良いのかもしれない。
こちらの人はcore-image-minimalやcore-image-satoでやっているようだ。
これでダメだったら、単にFITファイルができればよいだけなので、自分でそこだけつくる方向がよいのかもしれん。
あるいは、Yocto Projectについてちゃんと調べるか。
2017/07/02 23:46
ダメだった。
meta-xilinxではなく、meta-xilinx-toolsの方で、HDFファイルがないとか何とか。
ZYBOもそんなに新しいボードではないので、Xilinxでサポートするのを止めたのだろうか。
Xilinxにおんぶされるのではなく、使わないといけないところだけXilinxのものを使い、あとは他のところから持ってきた方が良いのかもしれん。
ここなんかは、core-image-minimalを少ない手順で構築している。
そういうのを真似した方がよいかもしれん。
Build An Embeded Linux using Yocto project for Zybo | CharlieShao's Blog
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。