On Fri, Mar 27, 2020 at 7:16 AM Nandor Han <[email protected]> wrote: > > FIT format is very versatile allowing various combination of booting > sequences. In the same time different U-Boot boot stages can use FIT > blobs to pack various binaries (e.g. SPL supports reading U-Boot from a > FIT blob). Because of the allowed level of customization, the generation > of a FIT blob using a fixed image tree source, becomes challenging and > increase the level of complexity where different configurations and > combinations are needed. > > This bbclass will know how to generate a FIT blob, leaving the mechanics > of the process (dependencies, task order...) to be handled by the users > of the bbclass. In the same time will allow to separate the knowledge of > the FIT format leaving the user code cleaner and more readable. > > Signed-off-by: Nandor Han <[email protected]> > --- > > Notes: > Testing > ------- > > 1. linux-yocto_5.4.bbappend was modified to have the following > configuration: > > ``` > inherit fit-image > > KERNEL_IMAGE_NODE[name] = "kernel" > KERNEL_IMAGE_NODE[description] = "${PF}" > KERNEL_IMAGE_NODE[data] = '/incbin/("./arch/${ARCH}/boot/zImage")' > KERNEL_IMAGE_NODE[type] = "kernel" > KERNEL_IMAGE_NODE[arch] = "${ARCH}" > KERNEL_IMAGE_NODE[os] = "linux" > KERNEL_IMAGE_NODE[compression] = "none" > KERNEL_IMAGE_NODE[load] = "${UBOOT_LOADADDRESS}" > KERNEL_IMAGE_NODE[entry] = "${UBOOT_ENTRYPOINT}" > KERNEL_IMAGE_NODE[hash] = "sha256" > > FDT_IMAGE_NODE[name] = "fdt" > FDT_IMAGE_NODE[description] = "FDT blob" > FDT_IMAGE_NODE[data] = > '/incbin/("./arch/${ARCH}/boot/dts/am335x-bone.dtb")' > FDT_IMAGE_NODE[type] = "flat_dt" > FDT_IMAGE_NODE[arch] = "${ARCH}" > FDT_IMAGE_NODE[compression] = "none" > FDT_IMAGE_NODE[hash] = "sha256" > > CONF1_CONF_NODE[name] = "conf" > CONF1_CONF_NODE[description] = "Linux kernel and FDT blob" > CONF1_CONF_NODE[kernel] = "kernel" > CONF1_CONF_NODE[fdt] = "fdt" > > FIT_IMAGES_NODE = "KERNEL_IMAGE_NODE FDT_IMAGE_NODE" > FIT_CONFIGURATIONS_NODE = "CONF1_CONF_NODE" > FIT_CONFIGURATIONS_NODE[default] = "${@d.getVarFlag('CONF1_CONF_NODE', > 'name') or ""}" > ``` > 2. Build the kernel: `bitbake virtual/kernel` > 3. Verify that `image-fit.itb` is present in the build directory: PASS > 4. Disassemble the image using the command: `dtc -I dtb -O dts > image-fit.itb` > 5. Verify that the FIT source contains the expected configuration: PASS >
Whilst I'm definitely interested in this, building the its file through dozens of variables is fragile and ugly... What I had in a class that I'd started, but hadn't got anything like this far was something like a .its.in file which got passed through bitbake's expand. -- Alex Kiernan
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#136803): https://lists.openembedded.org/g/openembedded-core/message/136803 Mute This Topic: https://lists.openembedded.org/mt/72582452/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
