[U-Boot] Question about FIT images with uboot 1.3.4
Grant Erickson
gerickson at nuovations.com
Sat Aug 23 21:49:02 CEST 2008
On 8/23/08 3:31 AM, Remy Bohmer wrote:
> Which version of DTC must be used to get a working FIT image?
> Release 1.2.0 understands the example doc/uImage.FIT/kernel.its, but
> delivers an unbootable image. It fails on line 2285 ("Wrong FIT
> format: no description\n") in common/image.c at
>
> int fit_check_format (const void *fit)
> {
> /* mandatory / node 'description' property */
> if (fdt_getprop (fit, 0, FIT_DESC_PROP, NULL) == NULL) {
> debug ("Wrong FIT format: no description\n");
> return 0;
> }
>
> Version 1.1.0 of DTC complains about the format of the
> doc/uImage.FIT/kernel.its file at the line:
> data = /incbin/("./vmlinux.bin.gz");
>
> So, at this moment FIT does not work at all...
>
> So, does anybody knows what I need to do to get FIT images working on 1.3.4 ?
> (Except debugging and patching the bug, which I can do later on when I
> at least have something working to begin with)
Remy:
An unpatched v1.1.0 of DTC will not work since it does not understand the
'/incbin/' grammar. You'll need to either patch v1.1.0 or, better yet, just
grab v1.2.0 from http://www.jdl.com/software/dtc-v1.2.0.tgz.
While I cannot speak to v1.3.4, I've had this successfully working for
several months now against u-boot v1.3.3 with both a patched v1.1.0 of DTC
to allow binary includes as well as with the aforementioned release v1.2.0
of DTC:
% make
${BuildRoot}/src/tools/host/i686-pc-linux-gnu/bin/dtc -b 0 -S 0x3000 -I
dts -O dtb -o
${BuildRoot}/src/results/haleakala/denx/eldk/4.1/boot/haleakala.dtb
${BuildRoot}/src/results/haleakala/denx/eldk/4.1/linux/haleakala.dts
DTC: dts->dtb on file
"${BuildRoot}/src/results/haleakala/denx/eldk/4.1/linux/haleakala.dts"
Translating (ppc_4xx-objcopy denx/eldk/4.1)
"${BuildRoot}/src/results/haleakala/denx/eldk/4.1/linux/vmlinux"
${ToolRoot}/eldk/4.1/usr/bin/ppc_4xx-objcopy -O binary
${BuildRoot}/src/results/haleakala/denx/eldk/4.1/linux/vmlinux
build/haleakala/denx/eldk/4.1/vmlinux.bin
Compressing (gzip) "build/haleakala/denx/eldk/4.1/vmlinux.bin"
gzip -f -9 -c build/haleakala/denx/eldk/4.1/vmlinux.bin >
${BuildRoot}/src/results/haleakala/denx/eldk/4.1/boot/vmlinux.bin.gz
sed \
-e s, at ARCH@,powerpc,g \
-e
s, at FDT@,${BuildRoot}/src/results/haleakala/denx/eldk/4.1/boot/haleakala.dtb,
g \
-e
s, at KERNEL@,${BuildRoot}/src/results/haleakala/denx/eldk/4.1/boot/vmlinux.bin
.gz,g \
-e s, at OS@,linux,g \
< boot.its.in > build/haleakala/denx/eldk/4.1/boot.its
${BuildRoot}/src/u-boot/build/haleakala/denx/eldk/4.1/tools/mkimage -f
build/haleakala/denx/eldk/4.1/boot.its
${BuildRoot}/src/results/haleakala/denx/eldk/4.1/boot/boot.itb
FIT format handling
Trying to execute "dtc -I dts -O dtb -p 500
build/haleakala/denx/eldk/4.1/boot.its >
${BuildRoot}/src/results/haleakala/denx/eldk/4.1/boot/boot.itb.tmp"
DTC: dts->dtb on file "build/haleakala/denx/eldk/4.1/boot.its"
Added timestamp successfully
rm build/haleakala/denx/eldk/4.1/boot.its
The contents of boot.its.in are:
/ {
description = "Linux Kernel with Device Tree";
#address-cells = <1>;
images {
kernel at 1 {
description = "Kernel";
data = /incbin/("@KERNEL@");
type = "kernel";
arch = "@ARCH@";
os = "@OS@";
compression = "gzip";
load = <00000000>;
entry = <00000000>;
hash at 1 {
algo = "crc32";
};
};
fdt at 1 {
description = "Device Tree";
data = /incbin/("@FDT@");
type = "flat_dt";
arch = "@ARCH@";
compression = "none";
hash at 1 {
algo = "crc32";
};
};
};
configurations {
default = "config at 1";
config at 1 {
description = "Kernel with Device Tree";
kernel = "kernel at 1";
fdt = "fdt at 1";
};
};
};
Back on the target board:
=> version
U-Boot 1.3.3 (Jul 18 2008 - 13:09:15)
=> run boot0
Loading from NAND 64MiB 3,3V 8-bit, offset 0x0
Fit image detected...
FIT description: Linux Kernel with Device Tree
Image 0 (kernel at 1)
Description: Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x008000c8
Data Size: 1295427 Bytes = 1.2 MB
Architecture: PowerPC
OS: Linux
Load Address: 0x00000000
Entry Point: 0x00000000
Hash algo: crc32
Hash value: 403f3fdd
Image 1 (fdt at 1)
Description: Device Tree
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x0093c5e4
Data Size: 12288 Bytes = 12 kB
Architecture: PowerPC
Hash algo: crc32
Hash value: d726e662
Default Configuration: 'config at 1'
Configuration 0 (config at 1)
Description: Kernel with Device Tree
Kernel: kernel at 1
FDT: fdt at 1
## Booting kernel from FIT Image at 00800000 ...
Using 'config at 1' configuration
Trying 'kernel at 1' kernel subimage
Description: Kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x008000c8
Data Size: 1295427 Bytes = 1.2 MB
Architecture: PowerPC
OS: Linux
Load Address: 0x00000000
Entry Point: 0x00000000
Hash algo: crc32
Hash value: 403f3fdd
Verifying Hash Integrity ... crc32+ OK
Uncompressing Kernel Image ... OK
## Flattened Device Tree from FIT Image at 00800000
Using 'config at 1' configuration
Trying 'fdt at 1' FDT blob subimage
Description: Device Tree
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x0093c5e4
Data Size: 12288 Bytes = 12 kB
Architecture: PowerPC
Hash algo: crc32
Hash value: d726e662
Verifying Hash Integrity ... crc32+ OK
Booting using the fdt blob at 0x93c5e4
Loading Device Tree to 007fd000, end 007fffff ... OK
Regards,
Grant Erickson
--
Principal
Nuovation System Designs, LLC
More information about the U-Boot
mailing list