2017/07/30

[zybo]PetaLinuxでDigilentのチュートリアルが動かん (12)

前回(11)のminorを32から24に書き換えるというのが変だということに気付いた。
32で動いていたのだから、そこは書き換えたらいかんだろう。

よくわからんが、class登録するときだけ24にして、他は32のままに変更した。
そうすると、/devにも作成されたし、echoすると成功した。

GISTに置いておこう。
https://gist.github.com/hirokuma/1bda2e783813412c4df16b8027f5480c


まだ、32だの24だのが何なのか理解していないので、次回からはそこを調べていこう。
Linux/Zynqのつながりを見ていくことになるはずだ。


あとは、おまけだ。


image.ubの効率的な作り方を知っておきたい。

全体をビルドするときは petalinux-build だけでやっているが、けっこう時間がかかる。
今回だと、koファイルだけビルドして、image.ubの元になる場所にコピーして、image.ubを作り直す、というだけでよいはずだ。
事前のチェックとか、そういうのはすっ飛ばせないだろうか。


まず、--helpを見る。
使えそうなのは、この辺りか。

Deploy kernel forcefully:
   $ petalinux-build -c kernel -x deploy -f

Build kernel and update the bootable images:
   $ petalinux-build -c kernel
   $ petalinux-build -x package

Build rootfs only:
   $ petalinux-build -c rootfs

Build myapp of rootfs only:
   $ petalinux-build -c rootfs/myapp

以前ダメだったスラッシュでの方法も書かれている。
が、これはmyappなので、moduleだと使えないんじゃなかろうか?
試しにgpio-demoでやってみたが、やっぱりエラーだ。


PetaLinuxのユーザーズガイドを見る。
v2017.2はUG1144(pdf)だが、内容はv2017.1と同じらしい。
コマンドラインリファレンスUG1157(pdf)もある。
ネットから探しているけど、DocNavを使うのがよいだろうね。

気になっていたこのコマンド。

$ petalinux-build -x package

これは、今のdeployエリアに入っているものからFIT imageを作るものらしい。
だから、koファイルを作って、deployエリアにコピーさえすれば、最後に -x packageでimage.ubができるはず。
rootfs/myappではなく、myappを直接指定すればよいのかな?

$ petalinux-build -c myapp
$ petalinux-build -x package

やってみた。

$ petalinux-build -c led8drv
[INFO] building led8drv
[INFO] sourcing bitbake
INFO: bitbake led8drv
Loading cache: 100% |############################################| Time: 0:00:00
Loaded 3236 entries from dependency cache.
Parsing recipes: 100% |##########################################| Time: 0:00:02
Parsing of 2447 .bb files complete (2415 cached, 32 parsed). 3237 targets, 224 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |#######################################| Time: 0:00:06
Checking sstate mirror object availability: 100% |###############| Time: 0:00:13
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 2430 tasks of which 2389 didn't need to be rerun and all succeeded.
INFO: Copying Images from deploy to images
[INFO] successfully built led8drv

lsでimage/linuxのタイムスタンプを見ると、rootfs.cpioやvmlinuxは更新されているが、image.ubは同じだ。

$ petalinux-build -x package
[INFO] building project
[INFO] sourcing bitbake
INFO: generating FIT Image
INFO: bitbake petalinux-user-image -R /home/xxx/build/conf/fit-image.conf
Loading cache: 100% |############################################| Time: 0:00:00
Loaded 3236 entries from dependency cache.
Parsing recipes: 100% |##########################################| Time: 0:00:02
Parsing of 2447 .bb files complete (2415 cached, 32 parsed). 3237 targets, 224 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |#######################################| Time: 0:00:05
Checking sstate mirror object availability: 100% |###############| Time: 0:00:11
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 2431 tasks of which 2402 didn't need to be rerun and all succeeded.
INFO: Copying Images from deploy to images
[INFO] successfully built project

こっちは、image.ubのタイムスタンプが更新された。


しかし、それぞれ時間かかるのよねぇ。

$ time petalinux-build -c led8drv
real	1m23.720s
user	1m10.616s
sys	0m11.788s

$ time petalinux-build -x package
real	1m20.351s
user	1m7.700s
sys	0m10.048s

いっそのこと、petalinux-buildでやった方が早いんじゃないだろうか?

$ time petalinux-build
real	2m34.151s
user	2m10.356s
sys	0m19.984s

微妙やね。。。
コマンドを2回打ち込まなくてよい分、この方が楽かもしれん。

0 件のコメント:

コメントを投稿

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