[U-Boot] [PATCH 5/10] common/env: Point default environment for GD

Prabhakar Kushwaha prabhakar at freescale.com
Wed Apr 2 05:42:27 CEST 2014


On 4/2/2014 3:34 AM, Scott Wood wrote:
> On Mon, 2014-03-31 at 15:34 +0530, Prabhakar Kushwaha wrote:
>> GD(Global Data) structure has pointer to environment variable array.
>> but, it always point to default_environment assuming it is running from
>> final location.
>>
>> So update GD pointer with env variable array during SPL boot.
>>
>> Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com>
>> ---
>>   common/env_common.c |    3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/common/env_common.c b/common/env_common.c
>> index c0bfc2f..043150a 100644
>> --- a/common/env_common.c
>> +++ b/common/env_common.c
>> @@ -162,6 +162,9 @@ int env_import(const char *buf, int check)
>>   	if (himport_r(&env_htab, (char *)ep->data, ENV_SIZE, '\0', 0,
>>   			0, NULL)) {
>>   		gd->flags |= GD_FLG_ENV_READY;
>> +#ifdef CONFIG_SPL_BUILD
>> +		gd->env_addr = (unsigned long)ep->data;
>> +#endif
>>   		return 1;
>>   	}
>>   
> Could you explain a bit more about how the environment is being loaded
> during SPL, and how gd->env_addr gets set for non-SPL?
>
>

during SPL or NON- XIP boot (SD, SPI, NAND) in order to access env 
variables following 2 functions are called sequentially.
1. env_init() : Initialize gd->env_addr with default_environment array
2. env_relocate(). It copied data from flash to heap memory area and 
call env_import().
             here,  This env pointer *buf is used for importing.  but 
gd->env_addr never updated with new address of env variables.  It always 
remain pointed to default_environment array set in env_init().
It looks to be a issue for non-XIP boot.  As I was not confident about 
it. So limited to only SPL framework only.

for non-SPL i.e. XIP boot (NOR)
  env_init (): gd->env_addr always point to NOR address containing 
env_variables.  Because of XIP No need of copy from flash to buffer.  
Hence no problem.

Regards,
Prabhakar








More information about the U-Boot mailing list