This service is available only in Japanese-language.

bitbake レシピによるu-boot環境変数の追加方法はありますか?

yocto 2.6.1を使用してNXP社製8MMINILPD4-EVKボード用のディスクイメージ(4.14.78 sumo)を作成しているのですが、
件名の通り、レシピによるu-boot環境変数の追加ができません。

bbappendファイルでu-bootのソースを直接書き換えるパッチを適用していますが、
いざ生成されたディスクイメージを描いてみると書き換わっていません。

そもそもレシピファイルの書き方が悪いのか、u-bootの環境変数の書き換えは
レシピファイルではできないのか、が切り分けできない状態です。

以上、よろしくお願いします。
==

レシピファイルとしては、
meta-local/recipes-bsp/u-boot/u-boot-imx_2018.03.bbappend
を定義しています。

--
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI += "file://0001-add-run_m4_tcm-fdt_file.patch "
--

$ bitbake-layers show-appends の結果は以下の通りで、bbapendファイル自体は適用されているように見えます。
u-boot-imx_2018.03.bb:
/home/tkashi/imx-yocto-bsp/sources/meta-local/recipes-bsp/u-boot/u-boot-imx_2018.03.bbappend

env default -a
を実行して環境変数の初期化処理を行っても、変更が反映されていないという状況でしょうか?

> env default -a
> を実行して環境変数の初期化処理を行っても、変更が反映されていないという状況でしょうか?
はい。patchを適用する前の変数になっています。いまのところu-bootの”include/configs/imx8mm_evk.h”
にパッチを当てているですが、パッチを当てるファイルが違うのでしょうか?
(いまのところ、ディスクイメージを書き込んだ後に毎回手でsetenvしている状態です)

- 以下のファイルにパッチが正常に適用されているか?
tmp/work/imx8mmevk-poky-linux/u-boot-imx/2018.03-r0/git/include/configs/imx8mm_evk.h

- 以下のファイルで configs/imx8mm_evk.h をインクルードしているか?
(これが無い場合、パッチをあてるファイルの間違い)
tmp/work/imx8mmevk-poky-linux/u-boot-imx/2018.03-r0/build/include/config.h

- 起動メッセージの u-boot のタイムスタンプはビルド時のものになっているか?

また、変更箇所ですが#ifdef で囲まれている部分の多いファイルです。
実際のbuild時に有効となる場所に対して修正を行っているのかご確認下さい。

返信ありがとうございます。

> - 以下のファイルにパッチが正常に適用されているか?
> tmp/work/imx8mmevk-poky-linux/u-boot-imx/2018.03-r0/git/include/configs/imx8mm_evk.h
パッチは適用されていました。

> - 以下のファイルで configs/imx8mm_evk.h をインクルードしているか?
> (これが無い場合、パッチをあてるファイルの間違い)
> tmp/work/imx8mmevk-poky-linux/u-boot-imx/2018.03-r0/build/include/config.h
これもincludeされていました。

> - 起動メッセージの u-boot のタイムスタンプはビルド時のものになっているか?
なっていませんでした。

image/boot/u-boot-sd-2018.03-r0.binは生成されていましたが、
$bitbake fsl-iamge-qt5-validation-imx
を実行すると、違うu-boot.binが組み込まれているということでしょうか?

--
u-boot=> version
U-Boot 2018.03-imx_v2018.03_4.14.78_1.0.0_ga+g654088c (Nov 28 2018 - 19:15:55 +0000)
--

> また、変更箇所ですが#ifdef で囲まれている部分の多いファイルです。
> 実際のbuild時に有効となる場所に対して修正を行っているのかご確認下さい。
#ifdefで囲まれていない範囲であることを確認しました。

bitbake fsl-iamge-qt5-validation-imx -c clean を実施した後に
bitbake fsl-iamge-qt5-validation-imx を実行することで、sdcard.bz2
ファイルは再生成されますが、こちらのu-bootも古いままでしょうか? 

書き込みは、評価ボードのDIPSWでBOOT MODEをDOWNLOAD Modeにしたあとusbを接続、uuu.exeを使用して
fsl-image-qt5-validation-imx-imx8mmevk.sdcardをeMMCに書き込んでいます。
(もしかしてここが間違ってるでしょうか?)

> bitbake fsl-iamge-qt5-validation-imx -c clean を実施した後に
> bitbake fsl-iamge-qt5-validation-imx を実行することで、sdcard.bz2
> ファイルは再生成されますが、こちらのu-bootも古いままでしょうか?
tmp/deploy/images/imx8mmevk/ でu-bootに関係しそうなファイルは以下の通りです。
タイムスタンプとしてはビルドした日付になっています。

--
lrwxrwxrwx 2 tkashi tkashi 24 6月 18 11:25 u-boot-imx8mmevk.bin -> u-boot-sd-2018.03-r0.bin
lrwxrwxrwx 2 tkashi tkashi 24 6月 18 11:25 u-boot-imx8mmevk.bin-sd -> u-boot-sd-2018.03-r0.bin
-rw-r--r-- 2 tkashi tkashi 663909 6月 18 11:25 u-boot-sd-2018.03-r0.bin
lrwxrwxrwx 2 tkashi tkashi 49 6月 18 11:25 u-boot-spl.bin -> u-boot-spl.bin-imx8mmevk-2018.03-r0-sd-2018.03-r0
lrwxrwxrwx 2 tkashi tkashi 49 6月 18 11:25 u-boot-spl.bin-imx8mmevk -> u-boot-spl.bin-imx8mmevk-2018.03-r0-sd-2018.03-r0
-rw-r--r-- 2 tkashi tkashi 90600 6月 18 11:25 u-boot-spl.bin-imx8mmevk-2018.03-r0-sd-2018.03-r0
lrwxrwxrwx 2 tkashi tkashi 49 6月 18 11:25 u-boot-spl.bin-imx8mmevk-sd -> u-boot-spl.bin-imx8mmevk-2018.03-r0-sd-2018.03-r0
lrwxrwxrwx 2 tkashi tkashi 49 6月 18 11:25 u-boot-spl.bin-sd -> u-boot-spl.bin-imx8mmevk-2018.03-r0-sd-2018.03-r0
lrwxrwxrwx 2 tkashi tkashi 24 6月 18 11:25 u-boot.bin -> u-boot-sd-2018.03-r0.bin
lrwxrwxrwx 2 tkashi tkashi 24 6月 18 11:25 u-boot.bin-sd -> u-boot-sd-2018.03-r0.bin

--

以上、よろしくお願いします。

上記ファイルは、ddコマンドを使用してsdに書き込みを行うディスクイメージファイルとなります。
uuuで書き込みを行う場合はディスクイメージではなくファイルシステムイメージのu-boot-imx8mmevk.bin-sd
を使用して、ご確認ください。

返信ありがとうございます。

下記ようにuuu.autoを書き換えてu-boot-imx8mmevk.bin-sdを書き込んでみましたが、ブートしないようです。
(確かにbootloaderとして”imx-boot-imx8mmevk-sd.bin-flash_evk”を書いていました。おはずかしい。。。。)
----
uuu_version 1.0.1

SDP: boot -f imx-boot-imx8mmevk-sd.bin-flash_evk
# This command will be run when use SPL
SDPU: delay 1000
SDPU: write -f imx-boot-imx8mmevk-sd.bin-flash_evk -offset 0x57c00
SDPU: jump
# This command will be run when ROM support stream mode
SDPS: boot -f imx-boot-imx8mmevk-sd.bin-flash_evk

FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev ${emmc_dev}
FB: ucmd mmc dev ${emmc_dev}
FB: flash -raw2sparse all fsl-image-qt5-validation-imx-imx8mmevk.sdcard
FB: flash bootloader u-boot-imx8mmevk.bin
FB: ucmd mmc partconf ${emmc_dev} 0 1 0
FB: done
----

どうもimx-boot-imx8mmevk-sd.bin-flash_evkにu-bootが含まれているように見えます。

imx-boot-imx8mmevk-sd.bin-flash_evk自体はimx-bootで作られているようなので、
"./tmp/deploy/images/imx8mmevk/imx-boot-toolsmkimage_uboot"を使用して
imx-boot-imx8mmevk-sd.bin-flash_evkを作り直せということでしょうか?

以上、よろしくお願いします。

説明が不足して申し訳ないです。
4.14.78 の Linux User's Guide では uuu を使用して書き換えを行う手順として
uuu -b emmc_all <bootloader> <rootfs.sdcard>
uuu -b spl <bootloader>
が紹介されています。
最初の例は、emmc 全体の書き換えで第一パーティション/第二パーティションに書き込むrootfs.sdcard の指定の前に、
bootloaderファイルの指定が必要となります。
2番目の例は
The following command executes downloading and bootloader (SPL and U-Boot) by USB:
となっており、SPLとU-Boot を書き換える指定となっています。

今回のトライでeMMCの中身に不整合が発生している可能性もありますので
最初に1番目の例で全パーティションを書き換えを行い、ボードが正常に起動することをご確認下さい。

今後、u-boot に変更を行った場合は2番目の例でSPL/U-BOOT のみ書き換えが行えます。
ブートローダーのみの書き換えは、2番目の例で可能です。

返信ありがとうございます。

uuuを実行してみたところ[Can find validate IVT header]と表示されて書き込みできませんでした。
バイナリエディタで” imx-boot-imx8mmevk-sd.bin-flash_evk”と見比べたところ
確かにIVTヘッダ(Tag=0xD1, Len=0x0020, Ver=0x40)がありませんでした。

----
D:\L4.14.78_1.0.0_ga_images_MX8MMEVK>uuu -b emmc_all u-boot-imx8mmevk.bin fsl-image-qt5-validation-imx-imx8mmevk.sdcard
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.2.0-0-g194351b

Success 0 Failure 1

1:3 1/ 1 [Can find validate IVT header] SDP: boot -f u-boot-imx8mmevk.bin

D:\L4.14.78_1.0.0_ga_images_MX8MMEVK>uuu -b emmc_all imx-boot-imx8mmevk-sd.bin-flash_evk fsl-image-qt5-validation-imx-imx8mmevk.sdcard
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.2.0-0-g194351b

Success 1 Failure 0

1:3 7/ 7 [Done ] FB: done

D:\L4.14.78_1.0.0_ga_images_MX8MMEVK>uuu -b spl u-boot-imx8mmevk.bin
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.2.0-0-g194351b

Success 0 Failure 1

1:3 1/ 1 [Can find validate IVT header] SDP: boot -f u-boot-imx8mmevk.bin

D:\L4.14.78_1.0.0_ga_images_MX8MMEVK>
----

また、ファイルサイズもだいぶ違うようです。
imx-boot-imx8mmevk-sd.bin-flash_evk 1369KB
u-boot-imx8mmevk.bin 649KB

やはりbitbake u-boot-imx以外に実行すべきコマンドがあるのでしょうか?

以上、よろしくお願いします。