Problem: I am getting “Warning: Neither atags nor dtb found” after i issue below commands.
# fatload mmc 0:1 0x80008000 zImage # fatload mmc 0:1 0x81000000 omap3-beagle-xm.dtb # bootz 0x80008000 - 0x81000000
VERSION = 4
SUBLEVEL = 5
uboot: latest version
Size of dtb/uboot/zimage:
-rw-rw-r-- 1 ralph ralph 62K Aug 28 16:48 omap3-beagle-xm.dtb
-rw-rw-r-- 1 ralph ralph 372K Aug 27 18:31 u-boot.img
-rwxrwxr-x 1 ralph ralph 7.2M Aug 28 16:48 zImage
I debugged and looked around the kernel code and found this happens because it couldn’t find the device tree nor ATAGS.
Understandably it will not find ATAG but why it is not able to find dtb is a mystery to me. Probably it could be overwritten
by the uncompressed kernel code?
I am using buildroot environment for my development and if i just do “$fatload mmc 0:1 0x80007fc0 uImage” and boot
then kernel boots up but mmc initialization fails in the end. Probably because of the buggy
mmc card or probably because mmc driver was not initialized to it’s default state as it couldn’t
find device tree.
I tried to use older uboot but i got “machine id doesn’t match” problem. So i downloaded latest
bootloader and it at least doesn’t complain about that.
http://permalink.gmane.org/gmane.linux.ports.arm.kernel/258992 according to this documentation
the kernel be placed under 128MiB and it recommends that the DTB be placed after the 128MiB boundary. I just wanted
to know the best way to debug if kernel decompression is overwriting to dtb address space or i am
looking in the wrong direction?
I think http://lxr.free-electrons.com/source/arch/arm/kernel/devtree.c#L215 this line is failing. I will add here and confirm but
by that time does anyone know what could be the problem?