[OE-core] [PATCH] u-boot: Add {gen|deploy}_default_envs tasks to generate environment images

Marek Vasut marex at denx.de
Sun Apr 29 14:07:06 UTC 2018


On 04/29/2018 03:53 PM, Lukasz Majewski wrote:
> Hi Marek,

Hello Lukasz,

>> On 04/27/2018 06:15 PM, Lukasz Majewski wrote:
>>> Hi Marek,
>>>
>>> Thanks for prompt feedback.
>>>   
>>>> On 04/27/2018 04:51 PM, Lukasz Majewski wrote:  
>>>>> This commit provides the ability to generate u-boot environment(s)
>>>>> as images, which afterwards can be used to produce image (with
>>>>> wic) for flashing (eMMC or SPI-NOR).
>>>>>
>>>>> This change removes the need to run "env default" during
>>>>> production phase, as proper environment (including redundant one)
>>>>> is already stored on persistent memory (the CRC is also correct).
>>>>>
>>>>> Signed-off-by: Lukasz Majewski <lukma at denx.de>    
>>>>
>>>> If your default env is correct, why do you need this ?   
>>>
>>> Some users wants to have the working board (i.e. without any
>>> warnings that CRC for envs is bad) after flashing the SPI-NOR/eMMC  
>>
>> And the board is not working when it tells you your env is not
>> populated? 
> 
> It complains that CRC is wrong, which is true as without this patch
> (and some wic adjustments) we don't have proper envs in expected
> non-volatile area.

This is NOT an error, this is warning and a correct behavior. If your
default U-Boot environment is not correct, that is a bug in your U-Boot
port.

If you need to adjust that environment later in the product life cycle,
that's a different topic.

>> Then maybe the board port is broken.
> 
> Then it proceeds with default envs - and boots.

I think I might not quite understand the problem anymore. Is the issue
here that U-Boot informs you that it's using default environment which
you do not like ?

[...]

>>>>> +# Generate default environment
>>>>> +do_gen_default_envs[doc] = "Generate image with default U-Boot
>>>>> environment(s)" +do_gen_default_envs () {
>>>>> +	${B}/source/scripts/get_default_envs.sh ${B} >
>>>>> ${B}/${DEFAULT_ENVS} +
>>>>> +	# Generate env image
>>>>> +	${B}/tools/mkenvimage -s ${DEFAULT_ENVS_SIZE} -o
>>>>> ${B}/${UBOOT_ENVS_DEFAULT} ${B}/${DEFAULT_ENVS}    
>>>>
>>>> Does this actually work during cross build , when mkenvimage
>>>> architecture is different than host architecture ?  
>>>
>>> Yes. This was tested.  
>>
>> How can it work if this binary cannot be executed ? :)
> 
> Could you be more specific here?
> 
> I do follow normal u-boot recipe build. If mkenvimage is build in a
> wrong way (as other tools) - then I suppose that the whole u-boot recipe
> is broken.
> 
> The get_default_envs.sh script is prepared to use either native or
> cross-compiled set of binutils (that thought I had in mind when I said
> that it was tested).

Consider you crosscompile mkenvimage for ARM and try to run it on x86 host.

>>>>> +	# Generate redundant env image
>>>>> +	${B}/tools/mkenvimage -r -s ${DEFAULT_ENVS_SIZE} -o
>>>>> ${B}/${UBOOT_ENVS_DEFAULT}_r ${B}/${DEFAULT_ENVS}    
>>>>
>>>> Is redundant env always needed on all systems ?  
>>>
>>> No, they are not. However, it shall not be a problem if it is build
>>> anyway - user can adjust wic to only put primary env image.  
>>
>> So many wasted CPU cycles for a feature barely anyone needs. Nope :)
> 
> I will try to craft some OE magic to make it not build when not
> needed... :-)

Can't you just patch a correct default env into the U-Boot port ?

-- 
Best regards,
Marek Vasut



More information about the Openembedded-core mailing list