2017/07/02

[zybo]ZYBO向けのLinux (4)

考えてもわかりそうな気がしないので、まずは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 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。