iMX6qsabresd - fdt interaction between kernel and u-boot

cancel
Showing results for 
Search instead for 
Did you mean: 

iMX6qsabresd - fdt interaction between kernel and u-boot

Jump to solution
3,040 Views
matthiasniederm
Contributor II

Hello,


I have a Problem with u-boot and my Kernel. And i didn't found a howto about FDT, which explains it understandable.

Here is the output during the bootprocess:

U-Boot 2013.04-rc2 (Apr 16 2013 - 09:20:24)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: MX6Q-SabreSD
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Warning: FEC using MAC address from net device

Hit any key to stop autoboot:  0 
mmc1 is current device
mmc - MMC sub system

Usage:
mmc read addr blk# cnt
mmc write addr blk# cnt
mmc erase blk# cnt
mmc rescan
mmc part - lists available partition on current mmc device
mmc dev [dev] [part] - show or set current mmc device [partition]
mmc list - lists available devices
Booting from net ...
FEC Waiting for PHY auto negotiation to complete. done
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 192.168.1.103
Using FEC device
TFTP from server 192.168.1.100; our IP address is 192.168.1.103
Filename 'uImage'.
Load address: 0x12000000
Loading: #################################################################
         #################################################################
         #################################################################
         ##############################################################
         3.7 MiB/s
done
Bytes transferred = 3761024 (396380 hex)
BOOTP broadcast 1
DHCP client bound to address 192.168.1.103
Using FEC device
TFTP from server 192.168.1.100; our IP address is 192.168.1.103
Filename 'uImage'.
Load address: 0x11000000
Loading: #################################################################
         #################################################################
         #################################################################
         ##############################################################
         3.7 MiB/s
done
Bytes transferred = 3761024 (396380 hex)
## Booting kernel from Legacy Image at 12000000 ...
   Image Name:   Linux-3.0.35-2026-geaaf30e
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3760960 Bytes = 3.6 MiB
   Load Address: 10008000
   Entry Point:  10008000
   Verifying Checksum ... OK
## Flattened Device Tree from Legacy Image at 11000000
   Image Name:   Linux-3.0.35-2026-geaaf30e
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3760960 Bytes = 3.6 MiB
   Load Address: 10008000
   Entry Point:  10008000
   Verifying Checksum ... OK
ERROR: uImage is not a fdt - must RESET the board to recover.
Could not find a valid device tree
U-Boot >

The Kernel starts after I type in:
bootm

My Hardware: im6qsabresd

Can someone give me a hint how to configure it the right way?

Regards

MaTT

Labels (3)
Tags (4)
0 Kudos
1 Solution
186 Views
fabio_estevam
NXP Employee
NXP Employee

imx6q-sabresd.dtb needs to be used only when you run a mainline kernel.

If you are using 3.0.35 you do not need it.

In this case, in the U-boot prompt you need to do:

set boot_fdt no

And then U-boot will only load uImage into RAM and boot it via bootm.

View solution in original post

0 Kudos
3 Replies
186 Views
fabio_estevam
NXP Employee
NXP Employee

If you look at the default scripts (env -f -a default) they will load it correctly.

In your logs, you load uImage at 0x12000000, which is correct.

Then you load uImage again at 0x11000000, which is incorrect.

At 0x11000000 you must load imx6q-sabresd.dtb file instead.

In order to generate it, go to your Linux source and do a:

make imx6q-sabresd.dtb

Regards,

Fabio Estevam

186 Views
matthiasniederm
Contributor II

Hello,

yes you are right! But there is no rule to do that even no similiar..

I am using:

  • linux-imx6-imx_3.0.35_1.1.1
  • gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux

$ export ARCH=arm
$ export CROSS_COMPILE=/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/arm-linux-gnueabi-
$ make imx6_defconfig
#
# configuration written to .config
#
$ make imx6q-sabresd.dtb
scripts/kconfig/conf --silentoldconfig Kconfig
make: *** No rule to make target `imx6q-sabresd.dtb'.  Stop.

Regards

MaTT

0 Kudos
187 Views
fabio_estevam
NXP Employee
NXP Employee

imx6q-sabresd.dtb needs to be used only when you run a mainline kernel.

If you are using 3.0.35 you do not need it.

In this case, in the U-boot prompt you need to do:

set boot_fdt no

And then U-boot will only load uImage into RAM and boot it via bootm.

View solution in original post

0 Kudos