[U-Boot] Upgrading U-Boot stops Linux booting.

Hi,
I am having some trouble and wondered if anyone has any suggestions.
I have a iMX6 (Quad core, 1Gb Ram) based board by Digi.com. It follows pretty closely the Sabrelite reference design.
I am trying to boot Android from SATA on this board. Booting from the SD card works fine, using the u-boot supplied with Android, however booting from SATA hangs.
I get the following boot output when booting from SD
U-Boot 2013.04 - dub-2.3.0.3-git (Mar 20 2015 - 19:01:46)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz CPU: Temperature 22 C, calibration data: 0x57f4e869
reading uImage-ccimx6sbc.bin 4773736 bytes read in 233 ms (19.5 MiB/s) reading uImage-imx6q-ccimx6sbc.dtb ** Unable to read file uImage-imx6q-ccimx6sbc.dtb ** reading uramdisk.img 278888 bytes read in 30 ms (8.9 MiB/s) ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4773672 Bytes = 4.6 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 19000000 ... Image Name: Android u-boot ramdisk Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 278824 Bytes = 272.3 KiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel. Initializing cgroup subsys cpu Linux version 3.0.35 (ben@FNR-BEN-PC) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #6 SMP PREEMPT Thu Apr 23 10:35:09 BST 2015
However this version of u-boot hangs when trying to boot from SATA. For the same board I am also booting a version of Linux, with a newer u-boot.
U-Boot 2014.10-00573-g11ada92-dirty (Apr 08 2015 - 09:20:20)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz
Booting from mmc ... reading uImage 4213792 bytes read in 249 ms (16.1 MiB/s) reading imx6q-ccimx6sbc.dtb 51277 bytes read in 21 ms (2.3 MiB/s) ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.10.54-dey+gb1b3828 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4213728 Bytes = 4 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 18000000 Booting using the fdt blob at 0x18000000 Loading Kernel Image ... OK Using Device Tree in place at 18000000, end 1800f84c
Starting kernel ...
Booting Linux on physical CPU 0x0 Linux version 3.10.54-dey+gb1b3828 (ben@FNR-BEN-PC) (gcc version 4.8.3 (Buildroot 2014.11-rc2-00045-g3036252-dirty) ) #3 SMP Tue Jan 20 13:56:05 GMT 2015
Newer kernel and u-boot and everything boots.
Now if I try this newer version of u-boot with the Android kernel and do the following
U-Boot > sata device 0
SATA device 0: Model: ATP IG SlimSATA Firm: 20130702 Ser#: 99001140331004000001 Type: Hard Disk Capacity: 3775.5 MB = 3.6 GB (7732368 x 512) ... is now current device U-Boot > fatload sata 0:1 0x12000000 uimage-ccimx6sbc.bin reading uimage-ccimx6sbc.bin 4773736 bytes read in 91 ms (50 MiB/s) U-Boot > fatload sata 0:1 0x19000000 uramdisk.img reading uramdisk.img 278888 bytes read in 13 ms (20.5 MiB/s) U-Boot > bootm 0x12000000 0x19000000
## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4773672 Bytes = 4.6 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 19000000 ... Image Name: Android u-boot ramdisk Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 278824 Bytes = 272.3 KiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK
Starting kernel ...
and then the kernel just seems to hang.
The entry points and load addresses are the same, so I am not sure what is happening.
Is there something obvious I am missing ?
I would rather use a newer u-boot than try to retro fit and SATA changes to the older version.
many thanks for any help Ben

Hi Ben,
On 27 Apr 2015 8:09 am, "Ben Hewson" ben@frazer-nash.com wrote:
Hi,
I am having some trouble and wondered if anyone has any suggestions.
I have a iMX6 (Quad core, 1Gb Ram) based board by Digi.com. It follows
pretty
closely the Sabrelite reference design.
I am trying to boot Android from SATA on this board. Booting from the SD
card
works fine, using the u-boot supplied with Android, however booting from
SATA
hangs.
I get the following boot output when booting from SD
U-Boot 2013.04 - dub-2.3.0.3-git (Mar 20 2015 - 19:01:46)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz CPU: Temperature 22 C, calibration data: 0x57f4e869
reading uImage-ccimx6sbc.bin 4773736 bytes read in 233 ms (19.5 MiB/s) reading uImage-imx6q-ccimx6sbc.dtb ** Unable to read file uImage-imx6q-ccimx6sbc.dtb ** reading uramdisk.img 278888 bytes read in 30 ms (8.9 MiB/s) ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4773672 Bytes = 4.6 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 19000000 ... Image Name: Android u-boot ramdisk Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 278824 Bytes = 272.3 KiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel. Initializing cgroup subsys cpu Linux version 3.0.35 (ben@FNR-BEN-PC) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #6 SMP PREEMPT Thu Apr 23 10:35:09 BST 2015
However this version of u-boot hangs when trying to boot from SATA. For the same board I am also booting a version of Linux, with a newer
u-boot.
U-Boot 2014.10-00573-g11ada92-dirty (Apr 08 2015 - 09:20:20)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz
Booting from mmc ... reading uImage 4213792 bytes read in 249 ms (16.1 MiB/s) reading imx6q-ccimx6sbc.dtb 51277 bytes read in 21 ms (2.3 MiB/s) ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.10.54-dey+gb1b3828 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4213728 Bytes = 4 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 18000000 Booting using the fdt blob at 0x18000000 Loading Kernel Image ... OK Using Device Tree in place at 18000000, end 1800f84c
Starting kernel ...
Booting Linux on physical CPU 0x0 Linux version 3.10.54-dey+gb1b3828 (ben@FNR-BEN-PC) (gcc version 4.8.3 (Buildroot 2014.11-rc2-00045-g3036252-dirty) ) #3 SMP Tue Jan 20 13:56:05
GMT
2015
Newer kernel and u-boot and everything boots.
Now if I try this newer version of u-boot with the Android kernel and do
the
following
U-Boot > sata device 0
SATA device 0: Model: ATP IG SlimSATA Firm: 20130702 Ser#: 99001140331004000001 Type: Hard Disk Capacity: 3775.5 MB = 3.6 GB (7732368 x 512) ... is now current device U-Boot > fatload sata 0:1 0x12000000 uimage-ccimx6sbc.bin reading uimage-ccimx6sbc.bin 4773736 bytes read in 91 ms (50 MiB/s) U-Boot > fatload sata 0:1 0x19000000 uramdisk.img reading uramdisk.img 278888 bytes read in 13 ms (20.5 MiB/s) U-Boot > bootm 0x12000000 0x19000000
## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4773672 Bytes = 4.6 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 19000000 ... Image Name: Android u-boot ramdisk Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 278824 Bytes = 272.3 KiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK
Starting kernel ...
and then the kernel just seems to hang.
The entry points and load addresses are the same, so I am not sure what is happening.
Is there something obvious I am missing ?
I would rather use a newer u-boot than try to retro fit and SATA changes
to
the older version.
many thanks for any help
Missing device tree?
Regards, Simon
Ben
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Simon,
Thanks for the suggestion. I actually sorted it out late yesterday. A stupid error I suppose, but one that I completely over looked.
I turned on CONFIG_DEBUG_LL in the kernel, tried again and it complained about the machine id not matching.
I just needed to change CONFIG_MACH_TYPE to the correct number in U-Boot.
I didn't realise until after some googling that this was done. I just assumed U-Boot did a jump to the kernel start and that was it. Still live and learn !
The only issue I have now, is that if I enable CONFIG_ENV_IS_IN_FAT U-Boot tries to load the environment before the SATA is initialised and fails. If I do sata init at the U-Boot prompt, I can save the environment, but that is not much use if it isnt loaded at boot.
I can probably live without being able to save the environment, but would be nice to have the option. I did notice after having a quick look through the code that there appears to be a late load option for the environment. Can't remember exactly what it was.
many thanks Ben
On Wednesday 29 Apr 2015 23:09:34 Simon Glass wrote:
Hi Ben,
On 27 Apr 2015 8:09 am, "Ben Hewson" ben@frazer-nash.com wrote:
Hi,
I am having some trouble and wondered if anyone has any suggestions.
I have a iMX6 (Quad core, 1Gb Ram) based board by Digi.com. It follows
pretty
closely the Sabrelite reference design.
I am trying to boot Android from SATA on this board. Booting from the SD
card
works fine, using the u-boot supplied with Android, however booting from
SATA
hangs.
I get the following boot output when booting from SD
U-Boot 2013.04 - dub-2.3.0.3-git (Mar 20 2015 - 19:01:46)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz CPU: Temperature 22 C, calibration data: 0x57f4e869
reading uImage-ccimx6sbc.bin 4773736 bytes read in 233 ms (19.5 MiB/s) reading uImage-imx6q-ccimx6sbc.dtb ** Unable to read file uImage-imx6q-ccimx6sbc.dtb ** reading uramdisk.img 278888 bytes read in 30 ms (8.9 MiB/s) ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4773672 Bytes = 4.6 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 19000000 ... Image Name: Android u-boot ramdisk Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 278824 Bytes = 272.3 KiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel. Initializing cgroup subsys cpu Linux version 3.0.35 (ben@FNR-BEN-PC) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #6 SMP PREEMPT Thu Apr 23 10:35:09 BST 2015
However this version of u-boot hangs when trying to boot from SATA. For the same board I am also booting a version of Linux, with a newer
u-boot.
U-Boot 2014.10-00573-g11ada92-dirty (Apr 08 2015 - 09:20:20)
CPU: Freescale i.MX6Q rev1.5 at 792 MHz
Booting from mmc ... reading uImage 4213792 bytes read in 249 ms (16.1 MiB/s) reading imx6q-ccimx6sbc.dtb 51277 bytes read in 21 ms (2.3 MiB/s) ## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.10.54-dey+gb1b3828 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4213728 Bytes = 4 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 18000000 Booting using the fdt blob at 0x18000000 Loading Kernel Image ... OK Using Device Tree in place at 18000000, end 1800f84c
Starting kernel ...
Booting Linux on physical CPU 0x0 Linux version 3.10.54-dey+gb1b3828 (ben@FNR-BEN-PC) (gcc version 4.8.3 (Buildroot 2014.11-rc2-00045-g3036252-dirty) ) #3 SMP Tue Jan 20 13:56:05
GMT
2015
Newer kernel and u-boot and everything boots.
Now if I try this newer version of u-boot with the Android kernel and do
the
following
U-Boot > sata device 0
SATA device 0: Model: ATP IG SlimSATA Firm: 20130702 Ser#: 99001140331004000001 Type: Hard Disk Capacity: 3775.5 MB = 3.6 GB (7732368 x 512) ... is now current device U-Boot > fatload sata 0:1 0x12000000 uimage-ccimx6sbc.bin reading uimage-ccimx6sbc.bin 4773736 bytes read in 91 ms (50 MiB/s) U-Boot > fatload sata 0:1 0x19000000 uramdisk.img reading uramdisk.img 278888 bytes read in 13 ms (20.5 MiB/s) U-Boot > bootm 0x12000000 0x19000000
## Booting kernel from Legacy Image at 12000000 ... Image Name: Linux-3.0.35 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4773672 Bytes = 4.6 MiB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 19000000 ... Image Name: Android u-boot ramdisk Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 278824 Bytes = 272.3 KiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK
Starting kernel ...
and then the kernel just seems to hang.
The entry points and load addresses are the same, so I am not sure what is happening.
Is there something obvious I am missing ?
I would rather use a newer u-boot than try to retro fit and SATA changes
to
the older version.
many thanks for any help
Missing device tree?
Regards, Simon
Ben
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Ben,
On 30 April 2015 at 00:27, Ben Hewson ben@frazer-nash.com wrote:
Hi Simon,
Thanks for the suggestion. I actually sorted it out late yesterday. A stupid error I suppose, but one that I completely over looked.
I turned on CONFIG_DEBUG_LL in the kernel, tried again and it complained about the machine id not matching.
I just needed to change CONFIG_MACH_TYPE to the correct number in U-Boot.
I didn't realise until after some googling that this was done. I just assumed U-Boot did a jump to the kernel start and that was it. Still live and learn !
The only issue I have now, is that if I enable CONFIG_ENV_IS_IN_FAT U-Boot tries to load the environment before the SATA is initialised and fails. If I do sata init at the U-Boot prompt, I can save the environment, but that is not much use if it isnt loaded at boot.
I can probably live without being able to save the environment, but would be nice to have the option. I did notice after having a quick look through the code that there appears to be a late load option for the environment. Can't remember exactly what it was.
OK, I'm not sure about environment on SATA. It looks like initr_env() is called before initr_pci() and initr_scsi() so you might be out of luck for now.
Regards, Simon
[snip]
participants (2)
-
Ben Hewson
-
Simon Glass