iMX6qsabresd - fdt interaction between kernel and u-boot

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

iMX6qsabresd - fdt interaction between kernel and u-boot

跳至解决方案
5,658 次查看
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

标签 (3)
标记 (4)
0 项奖励
回复
1 解答
2,804 次查看
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.

在原帖中查看解决方案

0 项奖励
回复
3 回复数
2,804 次查看
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

2,804 次查看
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 项奖励
回复
2,805 次查看
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.

0 项奖励
回复