Hi there
I have been using kernel 3.0.35_4.0.0 without any problem but after upgrading to 3.10.17_1.0.0_beta the kernel refuses to stop because of invalid machine ID.
The startup is like:
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Error: unrecognized/unsupported machine ID (r1 = 0x00000eb9).
Available machine support:
ID (hex) NAME
ffffffff Generic DT based system
ffffffff Freescale i.MX6 Quad/DualLite (Device Tree)
ffffffff Freescale i.MX6 SoloLite (Device Tree)
Please check your kernel config and/or bootloader.
Is this missing ? or am I missing some config option for this ?
regards
Einar
已解决! 转到解答。
Hi Einar,
First, make sure your U-boot is a recent one, such as 2013.04 from FSL BSP. The old 2009.08 does not allow device tree booting.
You can check the values for loading the dtb and uImage in
uboot-imx.git - Freescale i.MX u-boot Tree
loadaddr = 0x12000000
fdt_addr = 0x18000000
bootm ${loadaddr} - ${fdt_addr}
You could simply use the default scripts and the dtb and uImage will be loaded to the correct place into RAM and then it will boot.
Also, in your bootm example you passed the same address twice.
Regards,
Fabio Estevam
Now using yocto I added the freesclae-release-bsp so I can compile the 3.10.17, also for sabrelite. (adding PREFERRED_VERSION and PREFERREd PROVIDER to local.conf).
But when i configure MACHINE=imx6qsabrelite then i try to bit bake any image. I try to compile several packets (e.g uboot) but when it try tp compile uboot i have an error:
soc.c: In function 'v7_outer_cache_enable':
| soc.c:527:24: error: 'CONFIG_SYS_PL310_BASE' undeclared (first use in this function)
| (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
| ^
| soc.c:527:24: note: each undeclared identifier is reported only once for each function it appears in
| soc.c: In function 'v7_outer_cache_disable':
| soc.c:535:24: error: 'CONFIG_SYS_PL310_BASE' undeclared (first use in this function)
| (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
| ^
| make[1]: *** [soc.o] Error 1
but when i bitbake the same but with MACHINE = imx6qsabresd it compiles with no error... something wrong on some CONFIGDEFINES I think... Any ideas?
Thanks
Omar
Hi Fabio and thanks for the answer
I must admit I forgot to add in by bootm command to load the device tree.
After doing so It always fails with:
ERROR: image is not a fdt - must RESET the board to recover.
FDT creation failed! hanging...### ERROR ### Please RESET the board ###
The .dtb file was created during kernel build which is executed like:
CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm make uImage modules dtbs LOADADDR=10008000 -j4
In Uboot I do these commands to start the kernel:
#> ext2load mmc 1:1 10800000 /uImage
#> ext2load mmc 1:1 10700000 /board.dtb
#> bootm 10700000 - 10700000
Any suggestions on what I'm doing wrong here ?
regards
Einar
Hi Einar,
First, make sure your U-boot is a recent one, such as 2013.04 from FSL BSP. The old 2009.08 does not allow device tree booting.
You can check the values for loading the dtb and uImage in
uboot-imx.git - Freescale i.MX u-boot Tree
loadaddr = 0x12000000
fdt_addr = 0x18000000
bootm ${loadaddr} - ${fdt_addr}
You could simply use the default scripts and the dtb and uImage will be loaded to the correct place into RAM and then it will boot.
Also, in your bootm example you passed the same address twice.
Regards,
Fabio Estevam
Hi Einar, and thanks Fabio,
There are some additional notes here:
http://boundarydevices.com/mx6-linux-kernel-3-10-17-beta/
A boot script which loads the DTB is here: