[U-Boot] loading environment from SATA

Ben Hewson ben at frazer-nash.com
Thu Apr 30 14:57:58 CEST 2015


booting from SATA works very well on my iMX6 based board, however if I do


#define CONFIG_ENV_IS_IN_FAT 

#if defined(CONFIG_ENV_IS_IN_FAT)
    #define CONFIG_FAT_WRITE
    #define FAT_ENV_INTERFACE           "sata"
    #define FAT_ENV_DEVICE_AND_PART     "0:1"
    #define FAT_ENV_FILE                "u-boot.env"
#endif


nothing is loaded as the SATA has not been initialised.

Looking at board_r.c  I can see lots of inits, for mmc, nand and other stuff, 
but not sata.

Following the format I have added a function

#ifdef CONFIG_CMD_SATA
static int initr_sata(void)
{
	puts("SATA:   ");
        sata_initialize();
	return 0;
}
#endif
        
and inside init_fnc_t init_sequence_r[] = { after 

#ifdef CONFIG_GENERIC_MMC
	initr_mmc,
#endif

I have added 

#ifdef CONFIG_CMD_SATA
        initr_sata,
#endif


So this compiled and booted and to my surprise worked.
Is this the best way to achieve this. I can see potential problems if 
sata_inialize() depends on other sub-systems being initialized first. I am 
perhaps lucky that it works for me.

regards
Ben



More information about the U-Boot mailing list