On Fri, Mar 27, 2020 at 07:33:24PM +0200, Nandor Han wrote:
> On 2020-03-27 17:11, Zach Booth wrote:
> >On Fri, Mar 27, 2020 at 3:29 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]>
> >
> >This class looks very useful, but I did have a question. How would you
> >account for creating nodes dynamically? One use case of this would be
> >adding a DT node for each reference in KERNEL_DEVICETREE. Would that
> >functionality be expected to go in the recipe including this class or
> >the class itself?
> >
> 
> Thanks Zack for feedback. Like I mentioned in one of Rickard's
> answer, I'm planning to update the `kernel-fitimage.bbclass` to use
> this class.
> 
> In my local repo I have already a class that does what you're saying.
> 
> e.g
> ```
> ...
> 24 python do_generate_fit_image() {
>  25     import os.path
>  26
>  27     device_trees = (d.getVar("KERNEL_DEVICETREE").split())
>  28     kernel_key_path =
> '{path}'.format(path=d.getVar("SECURITY_DIR_KEYS_RD") or "")
>  29     conf_signature = (d.getVar("CONF_NODE_CONF1") or "")
>  30     image_name = ""
>  31     mkimage_opts = ""
>  32
>  33     for dtb in device_trees:
>  34         d.setVarFlag("IMAGE_NODE_FDT", "data",
> '/incbin/("./arch/{arch}/boot/dts/{dtb}")'.format(
>  35          arch=d.getVar("ARCH"), dtb=dtb))
>  36         d.setVarFlag("IMAGE_NODE_FDT", "description", dtb)
>  37
>  38         if os.path.exists(kernel_key_path):
>  39             image_name =
> "kernel-{dtb_name}{suffix}".format(dtb_name=os.path.splitext(dtb)[0],
> suffix=".rdkeys")
>  40             mkimage_opts = d.getVar("FIT_IMAGE_MKIMAGE_OPTS_SIGNED")
>  41             d.setVar("FIT_IMAGE_UBOOT_MKIMAGE_OPTS", ("-k {key}
> -r {extra}".format(
>  42              key=kernel_key_path, extra=mkimage_opts)))
>  43             generate_fit_image(image_name, d)
>  44
>  45         if not conf_signature:
>  46             d.delVarFlag("CONF_NODE_CONF1", "signature")
>  47
>  48         mkimage_opts = d.getVar("FIT_IMAGE_MKIMAGE_OPTS_UNSIGNED")
>  49         d.setVar("FIT_IMAGE_UBOOT_MKIMAGE_OPTS",
> "{extra}".format(extra=mkimage_opts))
>  50         image_name =
> "kernel-{dtb_name}{suffix}".format(dtb_name=os.path.splitext(dtb)[0],
> suffix=".unsigned")
>  51         generate_fit_image(image_name, d)
>  52
>  53         if not conf_signature:
>  54             d.setVarFlag("CONF_NODE_CONF1", "signature",
> conf_signature)
>  55 }
> ...
> ```
> 
> The code above will generate a separate FIT blob for every device
> tree declared in KERNEL_DEVICETREE. However this functionality

So, no multiple device trees in a single FIT image? No multiple 
configurations, ramdisks, etc?


> overlaps with `kernel-fitimage` and my target is to keep this class
> as simple as possible and refactor `kernel-fitimage` to use the
> `fit_image` class. The code above will go in `kernel-fitimage`.
> 
> Later on I'm planning to add a different class that can be use to
> generate U-Boot FIT blobs, which can be used by SPL.
> 
> So this is only the first step :)
> 
> >Thanks,
> >Zach
> >
> 
> <snip>
> 
> Nandor

> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#136820): 
https://lists.openembedded.org/g/openembedded-core/message/136820
Mute This Topic: https://lists.openembedded.org/mt/72583032/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to