[U-Boot] Debugging why my kernel won't start

Gérald Kerma geraker at gmail.com
Mon Aug 16 10:34:12 CEST 2010


Dear Rogan,

I've you set the uboot env machid to the correct value ?
setenv machid <HexValue>
just replace HexValue with the correct MACH_TYPE.

You must then see something like :
Using machid 0xa76 from environment
after kernel loaded by uboot.

Best regards,

Le 16/08/2010 09:24, Rogan Dawes a écrit :
> Hi folks,
> 
> I'm trying to get mainline u-boot working on my DNS323 (Orion5x based). 
> Until I am confident in the config, I'm using a chainloaded approach, 
> wrapping my featureful u-boot in an image file:
> 
> $ mkimage -A arm -O u-boot -T kernel -C none -a 0x3000000 -e 0x3000000 
> -n "UBoot dns323" -d u-boot.bin uImage.bin
> 
> I am trying to boot the default kernel that is already flashed into the 
> device first. The first problem is that the DNS323 uses an incorrect 
> mach-type value of 526, while the registered value is 1542. See 
> <http://wiki.dns323.info/software:kernel>). I have modified 
> arch/arm/include/asm/mach-types.h to set MACH_TYPE_DNS323 to the 
> "correct" Dlink value, which should match what the default kernel is 
> expecting.
> 
> Unfortunately, all I get is:
> 
> DNS323B1> bootm FF820000
> ## Booting kernel from Legacy Image at ff820000 ...
>     Image Name:   Linux-2.6.12.6-arm1
>     Image Type:   ARM Linux Kernel Image (uncompressed)
>     Data Size:    1490204 Bytes = 1.4 MiB
>     Load Address: 00008000
>     Entry Point:  00008000
>     Verifying Checksum ... OK
>     Loading Kernel Image ...
> 
> and it hangs there.
> 
> That appears to be this code from cmd_bootm:
> 
>          case IH_COMP_NONE:
>                  if (load == blob_start) {
>                          printf ("   XIP %s ... ", type_name);
>                  } else {
>                          printf ("   Loading %s ... ", type_name);
>                          memmove_wd ((void *)load, (void *)image_start,
>                                          image_len, CHUNKSZ);
>                  }
>                  *load_end = load + image_len;
>                  puts("OK\n");
>                  break;
> 
> So, the memmove_wd never completes, it seems.
> 
> I added a debug statement at the top of memmove_wd, and got:
> 
> Moving memory from ff820040 to 00008000
> 
> Is that because the uImage header is 64 bytes?
> 
> Also, the following suggests that there may be something wrong with the 
> addresses that I am using:
> 
> DNS323B1> bootm FF820000 FF9A0000
> ## Booting kernel from Legacy Image at ff820000 ...
>     Image Name:   Linux-2.6.12.6-arm1
>     Image Type:   ARM Linux Kernel Image (uncompressed)
>     Data Size:    1490204 Bytes = 1.4 MiB
>     Load Address: 00008000
>     Entry Point:  00008000
>     Verifying Checksum ... OK
> ## Loading init Ramdisk from Legacy Image at ff9a0000 ...
>     Image Name:   Ramdisk
>     Image Type:   ARM Linux RAMDisk Image (gzip compressed)
>     Data Size:    5240600 Bytes = 5 MiB
>     Load Address: 00800000
>     Entry Point:  00800000
>     Verifying Checksum ... Bad Data CRC
> Ramdisk image is corrupt or invalid
> DNS323B1>
> 
> My chainloaded u-boot is configured in an image to load at 0x3000000, 
> and stay there (no relocation), if I have understood these parameters 
> correctly:
> 
> -a 0x3000000 -e 0x3000000
> 
> Can anyone see what I am doing wrong?
> 
> Many thanks!
> 
> Rogan
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


-- 
Gérald



More information about the U-Boot mailing list