Hi Ross, Adrian Sorry reply you late.
I successfully added users snippet ITS in the variable and my changes as following. 1. remove hook function uboot_fitimage_user_image 2. replace "UBOOT_FIT_USER_IMAGE" with "UBOOT_FIT_USER_SETTINGS" variable # User specific settings UBOOT_FIT_USER_SETTINGS ?= "" # Unit name containing a list of users additional binaries to be loaded. # It is a comma-separated list of strings. UBOOT_FIT_CONF_USER_LOADABLES ?= '' Create a ITS file for the U-boot FIT, for use when # we want to sign it so that the SPL can verify it uboot_fitimage_assemble() { --- if [ -n "${UBOOT_FIT_USER_SETTINGS}" ] ; then echo -e "${UBOOT_FIT_USER_SETTINGS}" >> ${UBOOT_ITS} fi if [ -n "${UBOOT_FIT_CONF_USER_LOADABLES}" ] ; then conf_loadables="${conf_loadables}${UBOOT_FIT_CONF_USER_LOADABLES}" fi --- 3. Set UBOOT_FIT_CONF_USER_LOADABLES to load users image UBOOT_FIT_CONF_USER_LOADABLES = ' \"sspfw\", \"tspfw\" ' 4. Users add their own snippet ITS into UBOOT_FIT_USER_SETTINGS variable. Ex: UBOOT_FIT_SSP_ITS = '\ sspfw {\n\ description = \"SSP Firmware\";\n\ data = /incbin/(\"${UBOOT_FIT_SSP_IMAGE}\");\n\ type = \"firmware\";\n\ arch = \"${UBOOT_FIT_SSP_ARCH}\";\n\ os = \"${UBOOT_FIT_SSP_OS}\";\n\ load = <${UBOOT_FIT_SSP_LOADADDRESS}>;\n\ entry = <${UBOOT_FIT_SSP_ENTRYPOINT}>;\n\ compression = \"none\";\n\ };\n\ ' UBOOT_FIT_TSP_ITS = '\ tspfw {\n\ description = \"TSP Firmware\";\n\ data = /incbin/(\"${UBOOT_FIT_TSP_IMAGE}\");\n\ type = \"firmware\";\n\ arch = \"${UBOOT_FIT_TSP_ARCH}\";\n\ os = \"${UBOOT_FIT_TSP_OS}\";\n\ load = <${UBOOT_FIT_TSP_LOADADDRESS}>;\n\ entry = <${UBOOT_FIT_TSP_ENTRYPOINT}>;\n\ compression = \"none\";\n\ };\n\ ' UBOOT_FIT_USER_SETTINGS = " ${UBOOT_FIT_SSP_ITS} ${UBOOT_FIT_TSP_ITS} " Then, I got the following generated ITS. ``` /dts-v1/; / { description = "U-Boot fitImage for Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro)/v2023.10+git/ast2700-default"; #address-cells = <1>; images { uboot { description = "U-Boot image"; data = /incbin/("u-boot-nodtb.bin"); type = "standalone"; os = "u-boot"; arch = ""; compression = "none"; load = <0x80000000>; entry = <0x80000000>; }; fdt { description = "U-Boot FDT"; data = /incbin/("u-boot.dtb"); type = "flat_dt"; arch = ""; compression = "none"; }; tee { description = "Trusted Execution Environment"; data = /incbin/("/home/jamin_lin/openbmc-ast2700/1206/build-ast2700/tmp/deploy/images/ast2700-default/optee/tee-raw.bin"); type = "tee"; arch = ""; os = "tee"; load = <0xb0080000>; entry = <0xb0080000>; compression = "none"; }; atf { description = "ARM Trusted Firmware"; data = /incbin/("/home/jamin_lin/openbmc-ast2700/1206/build-ast2700/tmp/deploy/images/ast2700-default/bl31.bin"); type = "firmware"; arch = ""; os = "arm-trusted-firmware"; load = <0xb0000000>; entry = <0xb0000000>; compression = "none"; }; sspfw { description = "SSP Firmware"; data = /incbin/("/home/jamin_lin/openbmc-ast2700/1206/build-ast2700/tmp/deploy/images/ast2700-default/ast2700-ssp.bin"); type = "firmware"; arch = "arm"; os = "zephyr"; load = <0xb2000000>; entry = <0xb2000000>; compression = "none"; }; tspfw { description = "TSP Firmware"; data = /incbin/("/home/jamin_lin/openbmc-ast2700/1206/build-ast2700/tmp/deploy/images/ast2700-default/ast2700-tsp.bin"); type = "firmware"; arch = "arm"; os = "zephyr"; load = <0xb4000000>; entry = <0xb4000000>; compression = "none"; }; }; configurations { default = "conf"; conf { description = "Boot with signed U-Boot FIT"; loadables = "atf", "tee", "uboot" ,"sspfw" ,"tspfw"; fdt = "fdt"; }; }; }; ``` If you agree, this new design, I will resend v4 patch. Do you have any concern or could you please give me any suggestion? Thanks-Jamin > Subject: Re: [OE-core] [PATCH v4 0/3] uboot-sign: support ATF and TFE ITS > generation > > Hi Adrian, Ross > > Thanks for your input. > Sorry, I am working on another task and will update you soon. > The following are my briefly answer about uboot_fitimage_user_image > function. > > > Subject: Re: [OE-core] [PATCH v4 0/3] uboot-sign: support ATF and TFE > > ITS generation > > > > Hi Jamin, hi Ross > > > > On Thu, 2024-11-28 at 13:51 +0000, Ross Burton via > > lists.openembedded.org > > wrote: > > > Hi Jamin, > > > > > > Thanks for the patches. > > > > > > However, I’m getting more convinced that as our FIT generation is > > > spread between uboot-sign and kernel-fitimage, maybe we should just > > > create a new class that is dedicated to creating a FIT image from > > > arbitrary inputs, so in this case you’d have dependencies on tf- > > > a/uboot/kernel and write a dts that describes the layout. I’m > > > unconvinced that the complexity of these classes is sustainable and > > > a truly generic class might be a more maintainable alternative. > > > > I apologize for digressing a bit now. But the complexity which > > requires a redesign of the ftiImage generation code only becomes clear > > when you look at the kernel and u-boot fitImage handling together. > > > > I think that the generation of its files, as done by kernel- > > fitimage.bbclass and uboot-sign.bbclass, is not generally wrong. > > Writing an its file is not something that a user can do quickly. It > > requires quite a lot of know-how, which is taken away from the user by > > the existing code. The code is also relatively well tested, which I > > can't imagine it can be achieved with handwritten its files. > > Standardizing how its files should be written looks helpful to me in > > general. > > > > Handling the task dependencies is not easy either. Many artifacts and > > keys must be provided by different recipes before the assembly of > > fitImages can take place. Simply leaving it up to the user certainly doesn't > make it any easier. > > > > But I agree, it ended up at an unmaintainable state. The main issue is > > that the generator code in the kernel-fitimage.bbclass currently gets > > executed from the kernel build folder and from the u-boot build folder > > and that the u-boot and the kernel recipes have many inter task > > dependencies. It does not properly work with the sstate-cache. For > > example building with empty temp means rebuilding from scratch at > > least when also an initramfs is involved. I tried to solve this with > > this series here > https://patchwork.yoctoproject.org/project/oe-core/list/?series=27108. > > It is also possible to end up with circular task dependencies by > > setting the > > UBOOT_* variables to SIGNED images, for example, and packing a > > boot.txt file into the fitImage. > > > > The idea that seems most promising to me to solve these problems ( > > sstate, maintainability, complexity, task dependencies) is to > > completely remove the fitimage code from the kernel and the u-boot > > recipes and create a linux-fitimage and an uboot-fitimage recipe that > > take the artifacts from the linux and the u-boot recipes and simply > > put them into a fit container. The fitimage_assemble and > uboot_fitimage_assemble functions would be reusable. > > All the rest would probably be rewritten from scratch. > > Some use cases in which, for example, the kernel Makefile (which can > > run from the kernel build tree only not from a setscene folder > > structure) generates the fitImage should simply be omitted in favor of > > simplification. > > > > Having for example a linux-yocto recipe which does not support > > building fitImages at all and a second recipe linux-yocto-fitimage > > which depends on the linux-yocto recipe would allow several improvements: > > - The kernel artifacts can be forwarded via sysroots from linux-yocto > > to the linux-yocto-fitimage. Currently it goes via deploy. > > - The kernel-yocto-fitImage class could also provide a kernel package. > > Currently this kernel artifact is only available from the deploy folder. > > - Standard sstate tasks (sysroot and deploy) can be used for building > > the kernel and for building the fitImage. Doing all these steps in the > > contecxt of one recipe leads to unusual sstated tasks which causes some > issues. > > - I hope the code would be much simpler. But I'm not set sure. I want > > to try this but did not find the time so far. > > > > > > > > What’s your opinion on this? The fact that you had to add custom > > > hooks in 2/3 seems to indicate that a more inherently flexible class > > > would be the right approach. > > > > I think the two new functions uboot_fitimage_atf and > > uboot_fitimage_tee look reasonable and are in line with the existing code. > > > > But the uboot_fitimage_user_image hook looks a little unusual. What's > > the use case for that? Would it be possible to pass the its snippet as > > a variable? Or even support the use case with a standard snippet? > > The reason is ASPEED want to add our images into u-boot FIT image which are > TSP and SSP. > Both images are ASPEED only and they are not generic images such as TEE and > ATF. > Therefore, I added this hook function to make users add their ITS for specific > need. > Our ITS looks like as following for ASPEED latest SOCs(AST2700) > > Thanks -Jamin > > /dts-v1/; > > / { > description = "U-Boot fitImage for Phosphor OpenBMC (Phosphor > OpenBMC Project Reference Distro)/v2023.10+git/ast2700-default"; > #address-cells = <1>; > > images { > uboot { > description = "U-Boot image"; > data = /incbin/("u-boot-nodtb.bin"); > type = "standalone"; > os = "u-boot"; > arch = ""; > compression = "none"; > load = <0x80000000>; > entry = <0x80000000>; > }; > fdt { > description = "U-Boot FDT"; > data = /incbin/("u-boot.dtb"); > type = "flat_dt"; > arch = ""; > compression = "none"; > }; > tee { > description = "Trusted Execution Environment"; > data = /incbin/("tee-raw.bin"); > type = "tee"; > arch = ""; > os = "tee"; > load = <0xb0080000>; > entry = <0xb0080000>; > compression = "none"; > }; > atf { > description = "ARM Trusted Firmware"; > data = /incbin/("bl31.bin"); > type = "firmware"; > arch = ""; > os = "arm-trusted-firmware"; > load = <0xb0000000>; > entry = <0xb0000000>; > compression = "none"; > }; > sspfw { > description = "SSP Firmware"; > data = /incbin/("ast2700-ssp.bin"); > type = "firmware"; > arch = "arm"; > os = "zephyr"; > load = <0xb2000000>; > entry = <0xb2000000>; > compression = "none"; > }; > tspfw { > description = "TSP Firmware"; > data = /incbin/("ast2700-tsp.bin"); > type = "firmware"; > arch = "arm"; > os = "zephyr"; > load = <0xb4000000>; > entry = <0xb4000000>; > compression = "none"; > }; > }; > > configurations { > default = "conf"; > conf { > description = "Boot with signed U-Boot FIT"; > loadables = "atf", "tee", "uboot" ,"sspfw" ,"tspfw"; > fdt = "fdt"; > }; > }; > }; > > > > > > All in all, I think these patches do not make it worse than it already > > is. Solving the issues with the fitImage is a different topic. > > > > Regards, > > Adrian > > > > > > > > > > > > > > Cheers, > > > Ross > > > > > > > > > > On 18 Nov 2024, at 06:32, Jamin Lin via lists.openembedded.org > > > > <jamin_lin=aspeedtech....@lists.openembedded.org> wrote: > > > > > > > > v0: > > > > 1. add variable to set load address and entrypoint. > > > > 2. Fix to install nonexistent dtb file. > > > > 3. support to verify signed FIT > > > > 4. support to load optee-os and TFA images > > > > v1: > > > > Fix patch for code review > > > > v2: > > > > created a series patch > > > > v3: > > > > add cover letter > > > > v4: > > > > Add oe-self testcases for reviewer suggestion > > > > Add documentation for reviewer suggestion. > > > > Link: > > > > https://patchwork.yoctoproject.org/project/docs/patch/202411180621 > > > > 13 .269253-1-jamin_...@aspeedtech.com/ > > > > > > > > The following patches had been applied from v0 changes. > > > > a. Fix to install nonexistent dtb file > > > > b. support to verify signed FIT > > > > c. add variable to set load address and entrypoint. > > > > > > > > Jamin Lin (3): > > > > uboot-sign: support to create TEE and ATF image tree source > > > > uboot-sign: support to create users specific image tree source > > > > oe-selftest: fitimage: add testcases to test ATF and TEE > > > > > > > > meta/classes-recipe/uboot-sign.bbclass | 100 +++++++- > > > > meta/lib/oeqa/selftest/cases/fitimage.py | 288 > > > > +++++++++++++++++++++++ > > > > 2 files changed, 387 insertions(+), 1 deletion(-) > > > > > > > > -- > > > > 2.25.1 > > > > > > > > > > > > > > > > > > > > > > > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#208520): https://lists.openembedded.org/g/openembedded-core/message/208520 Mute This Topic: https://lists.openembedded.org/mt/109640118/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-