Merge git://git.denx.de/u-boot-dm
This commit is contained in:
commit
da54e7e5a9
15
.travis.yml
15
.travis.yml
@ -118,6 +118,20 @@ script:
|
|||||||
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
|
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
|
||||||
-k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}"
|
-k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}"
|
||||||
--build-dir "$UBOOT_TRAVIS_BUILD_DIR";
|
--build-dir "$UBOOT_TRAVIS_BUILD_DIR";
|
||||||
|
ret=$?;
|
||||||
|
if [[ $ret -ne 0 ]]; then
|
||||||
|
exit $ret;
|
||||||
|
fi;
|
||||||
|
fi;
|
||||||
|
if [[ -n "${TEST_PY_TOOLS}" ]]; then
|
||||||
|
PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
|
||||||
|
PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"
|
||||||
|
./tools/binman/binman -t &&
|
||||||
|
./tools/patman/patman --test &&
|
||||||
|
./tools/buildman/buildman -t &&
|
||||||
|
PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
|
||||||
|
PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"
|
||||||
|
./tools/dtoc/dtoc -t;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
@ -295,6 +309,7 @@ matrix:
|
|||||||
TEST_PY_TEST_SPEC="test_ofplatdata"
|
TEST_PY_TEST_SPEC="test_ofplatdata"
|
||||||
BUILDMAN="^sandbox$"
|
BUILDMAN="^sandbox$"
|
||||||
TOOLCHAIN="x86_64"
|
TOOLCHAIN="x86_64"
|
||||||
|
TEST_PY_TOOLS="yes"
|
||||||
- env:
|
- env:
|
||||||
- TEST_PY_BD="sandbox_flattree"
|
- TEST_PY_BD="sandbox_flattree"
|
||||||
BUILDMAN="^sandbox_flattree$"
|
BUILDMAN="^sandbox_flattree$"
|
||||||
|
@ -86,7 +86,7 @@ Example:
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
description = "ARM64 Linux kernel";
|
description = "ARM64 Linux kernel";
|
||||||
data = /incbin/("./arch/arm64/boot/Image.gz");
|
data = /incbin/("./arch/arm64/boot/Image.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -96,7 +96,7 @@ Example:
|
|||||||
load = <0x80080000>;
|
load = <0x80080000>;
|
||||||
entry = <0x80080000>;
|
entry = <0x80080000>;
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "Flattened Device Tree blob";
|
description = "Flattened Device Tree blob";
|
||||||
data = /incbin/("./fsl-ls1043ardb-static.dtb");
|
data = /incbin/("./fsl-ls1043ardb-static.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
@ -104,7 +104,7 @@ Example:
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0x90000000>;
|
load = <0x90000000>;
|
||||||
};
|
};
|
||||||
ramdisk@1 {
|
ramdisk {
|
||||||
description = "LS1043 Ramdisk";
|
description = "LS1043 Ramdisk";
|
||||||
data = /incbin/("./rootfs.cpio.gz");
|
data = /incbin/("./rootfs.cpio.gz");
|
||||||
type = "ramdisk";
|
type = "ramdisk";
|
||||||
@ -116,12 +116,12 @@ Example:
|
|||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Boot Linux kernel";
|
description = "Boot Linux kernel";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
ramdisk = "ramdisk@1";
|
ramdisk = "ramdisk";
|
||||||
loadables = "fdt", "ramdisk";
|
loadables = "fdt", "ramdisk";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -30,7 +30,7 @@ phys_addr_t sec_firmware_addr;
|
|||||||
#define SEC_FIRMWARE_FIT_IMAGE "firmware"
|
#define SEC_FIRMWARE_FIT_IMAGE "firmware"
|
||||||
#endif
|
#endif
|
||||||
#ifndef SEC_FIRMEWARE_FIT_CNF_NAME
|
#ifndef SEC_FIRMEWARE_FIT_CNF_NAME
|
||||||
#define SEC_FIRMEWARE_FIT_CNF_NAME "config@1"
|
#define SEC_FIRMEWARE_FIT_CNF_NAME "config-1"
|
||||||
#endif
|
#endif
|
||||||
#ifndef SEC_FIRMWARE_TARGET_EL
|
#ifndef SEC_FIRMWARE_TARGET_EL
|
||||||
#define SEC_FIRMWARE_TARGET_EL 2
|
#define SEC_FIRMWARE_TARGET_EL 2
|
||||||
|
@ -21,7 +21,7 @@ cat << __HEADER_EOF
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
uboot@1 {
|
uboot {
|
||||||
description = "U-Boot (64-bit)";
|
description = "U-Boot (64-bit)";
|
||||||
data = /incbin/("u-boot-nodtb.bin");
|
data = /incbin/("u-boot-nodtb.bin");
|
||||||
type = "standalone";
|
type = "standalone";
|
||||||
@ -29,7 +29,7 @@ cat << __HEADER_EOF
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0x4a000000>;
|
load = <0x4a000000>;
|
||||||
};
|
};
|
||||||
atf@1 {
|
atf {
|
||||||
description = "ARM Trusted Firmware";
|
description = "ARM Trusted Firmware";
|
||||||
data = /incbin/("$BL31");
|
data = /incbin/("$BL31");
|
||||||
type = "firmware";
|
type = "firmware";
|
||||||
@ -44,7 +44,7 @@ cnt=1
|
|||||||
for dtname in $*
|
for dtname in $*
|
||||||
do
|
do
|
||||||
cat << __FDT_IMAGE_EOF
|
cat << __FDT_IMAGE_EOF
|
||||||
fdt@$cnt {
|
fdt_$cnt {
|
||||||
description = "$(basename $dtname .dtb)";
|
description = "$(basename $dtname .dtb)";
|
||||||
data = /incbin/("$dtname");
|
data = /incbin/("$dtname");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
@ -57,7 +57,7 @@ done
|
|||||||
cat << __CONF_HEADER_EOF
|
cat << __CONF_HEADER_EOF
|
||||||
};
|
};
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config_1";
|
||||||
|
|
||||||
__CONF_HEADER_EOF
|
__CONF_HEADER_EOF
|
||||||
|
|
||||||
@ -65,11 +65,11 @@ cnt=1
|
|||||||
for dtname in $*
|
for dtname in $*
|
||||||
do
|
do
|
||||||
cat << __CONF_SECTION_EOF
|
cat << __CONF_SECTION_EOF
|
||||||
config@$cnt {
|
config_$cnt {
|
||||||
description = "$(basename $dtname .dtb)";
|
description = "$(basename $dtname .dtb)";
|
||||||
firmware = "uboot@1";
|
firmware = "uboot";
|
||||||
loadables = "atf@1";
|
loadables = "atf";
|
||||||
fdt = "fdt@$cnt";
|
fdt = "fdt_$cnt";
|
||||||
};
|
};
|
||||||
__CONF_SECTION_EOF
|
__CONF_SECTION_EOF
|
||||||
cnt=$((cnt+1))
|
cnt=$((cnt+1))
|
||||||
|
@ -330,7 +330,7 @@ static void fit_image_print_verification_data(const void *fit, int noffset,
|
|||||||
/*
|
/*
|
||||||
* Check subnode name, must be equal to "hash" or "signature".
|
* Check subnode name, must be equal to "hash" or "signature".
|
||||||
* Multiple hash/signature nodes require unique unit node
|
* Multiple hash/signature nodes require unique unit node
|
||||||
* names, e.g. hash@1, hash@2, signature@1, signature@2, etc.
|
* names, e.g. hash-1, hash-2, signature-1, signature-2, etc.
|
||||||
*/
|
*/
|
||||||
name = fit_get_name(fit, noffset, NULL);
|
name = fit_get_name(fit, noffset, NULL);
|
||||||
if (!strncmp(name, FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME))) {
|
if (!strncmp(name, FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME))) {
|
||||||
@ -1111,7 +1111,7 @@ int fit_image_verify(const void *fit, int image_noffset)
|
|||||||
/*
|
/*
|
||||||
* Check subnode name, must be equal to "hash".
|
* Check subnode name, must be equal to "hash".
|
||||||
* Multiple hash nodes require unique unit node
|
* Multiple hash nodes require unique unit node
|
||||||
* names, e.g. hash@1, hash@2, etc.
|
* names, e.g. hash-1, hash-2, etc.
|
||||||
*/
|
*/
|
||||||
if (!strncmp(name, FIT_HASH_NODENAME,
|
if (!strncmp(name, FIT_HASH_NODENAME,
|
||||||
strlen(FIT_HASH_NODENAME))) {
|
strlen(FIT_HASH_NODENAME))) {
|
||||||
@ -1348,15 +1348,15 @@ int fit_check_format(const void *fit)
|
|||||||
*
|
*
|
||||||
* / o image-tree
|
* / o image-tree
|
||||||
* |-o images
|
* |-o images
|
||||||
* | |-o fdt@1
|
* | |-o fdt-1
|
||||||
* | |-o fdt@2
|
* | |-o fdt-2
|
||||||
* |
|
* |
|
||||||
* |-o configurations
|
* |-o configurations
|
||||||
* |-o config@1
|
* |-o config-1
|
||||||
* | |-fdt = fdt@1
|
* | |-fdt = fdt-1
|
||||||
* |
|
* |
|
||||||
* |-o config@2
|
* |-o config-2
|
||||||
* |-fdt = fdt@2
|
* |-fdt = fdt-2
|
||||||
*
|
*
|
||||||
* / o U-Boot fdt
|
* / o U-Boot fdt
|
||||||
* |-compatible = "foo,bar", "bim,bam"
|
* |-compatible = "foo,bar", "bim,bam"
|
||||||
|
@ -347,7 +347,7 @@ int fit_config_check_sig(const void *fit, int noffset, int required_keynode,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Each node can generate one region for each sub-node. Allow for
|
* Each node can generate one region for each sub-node. Allow for
|
||||||
* 7 sub-nodes (hash@1, signature@1, etc.) and some extra.
|
* 7 sub-nodes (hash-1, signature-1, etc.) and some extra.
|
||||||
*/
|
*/
|
||||||
max_regions = 20 + count * 7;
|
max_regions = 20 + count * 7;
|
||||||
struct fdt_region fdt_regions[max_regions];
|
struct fdt_region fdt_regions[max_regions];
|
||||||
|
@ -142,7 +142,7 @@ The following is an example for a simple usecase:
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@0 {
|
kernel {
|
||||||
description = "linux";
|
description = "linux";
|
||||||
data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/Image.gz");
|
data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/Image.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -151,44 +151,44 @@ The following is an example for a simple usecase:
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <0x82080000>;
|
load = <0x82080000>;
|
||||||
entry = <0x82080000>;
|
entry = <0x82080000>;
|
||||||
hash@0 {
|
hash-1 {
|
||||||
algo = "sha256";
|
algo = "sha256";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@0 {
|
fdt-1 {
|
||||||
description = "fdt";
|
description = "fdt";
|
||||||
data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/dts/socionext/uniphier-ld20-ref.dtb");
|
data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/dts/socionext/uniphier-ld20-ref.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm64";
|
arch = "arm64";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@0 {
|
hash-1 {
|
||||||
algo = "sha256";
|
algo = "sha256";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ramdisk@0 {
|
ramdisk {
|
||||||
description = "ramdisk";
|
description = "ramdisk";
|
||||||
data = /incbin/("PATH/TO/YOUR/ROOTFS/DIR/rootfs.cpio");
|
data = /incbin/("PATH/TO/YOUR/ROOTFS/DIR/rootfs.cpio");
|
||||||
type = "ramdisk";
|
type = "ramdisk";
|
||||||
arch = "arm64";
|
arch = "arm64";
|
||||||
os = "linux";
|
os = "linux";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@0 {
|
hash-1 {
|
||||||
algo = "sha256";
|
algo = "sha256";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@0";
|
default = "config-1";
|
||||||
|
|
||||||
config@0 {
|
config-1 {
|
||||||
description = "Configuration0";
|
description = "Configuration0";
|
||||||
kernel = "kernel@0";
|
kernel = "kernel";
|
||||||
fdt = "fdt@0";
|
fdt = "fdt-1";
|
||||||
ramdisk = "ramdisk@0";
|
ramdisk = "ramdisk";
|
||||||
signature@0 {
|
signature-1 {
|
||||||
algo = "sha256,rsa2048";
|
algo = "sha256,rsa2048";
|
||||||
key-name-hint = "dev";
|
key-name-hint = "dev";
|
||||||
sign-images = "kernel", "fdt", "ramdisk";
|
sign-images = "kernel", "fdt", "ramdisk";
|
||||||
@ -268,9 +268,9 @@ If it is successful, you will see messages like follows:
|
|||||||
|
|
||||||
---------------------------------------->8----------------------------------------
|
---------------------------------------->8----------------------------------------
|
||||||
## Loading kernel from FIT Image at 84100000 ...
|
## Loading kernel from FIT Image at 84100000 ...
|
||||||
Using 'config@0' configuration
|
Using 'config-1' configuration
|
||||||
Verifying Hash Integrity ... sha256,rsa2048:dev+ OK
|
Verifying Hash Integrity ... sha256,rsa2048:dev+ OK
|
||||||
Trying 'kernel@0' kernel subimage
|
Trying 'kernel' kernel subimage
|
||||||
Description: linux
|
Description: linux
|
||||||
Created: 2017-10-20 14:32:29 UTC
|
Created: 2017-10-20 14:32:29 UTC
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
@ -285,8 +285,8 @@ If it is successful, you will see messages like follows:
|
|||||||
Hash value: 82a37b7f11ae55f4e07aa25bf77e4067cb9dc1014d52d6cd4d588f92eee3aaad
|
Hash value: 82a37b7f11ae55f4e07aa25bf77e4067cb9dc1014d52d6cd4d588f92eee3aaad
|
||||||
Verifying Hash Integrity ... sha256+ OK
|
Verifying Hash Integrity ... sha256+ OK
|
||||||
## Loading ramdisk from FIT Image at 84100000 ...
|
## Loading ramdisk from FIT Image at 84100000 ...
|
||||||
Using 'config@0' configuration
|
Using 'config-1' configuration
|
||||||
Trying 'ramdisk@0' ramdisk subimage
|
Trying 'ramdisk' ramdisk subimage
|
||||||
Description: ramdisk
|
Description: ramdisk
|
||||||
Created: 2017-10-20 14:32:29 UTC
|
Created: 2017-10-20 14:32:29 UTC
|
||||||
Type: RAMDisk Image
|
Type: RAMDisk Image
|
||||||
@ -301,8 +301,8 @@ If it is successful, you will see messages like follows:
|
|||||||
Hash value: 44980a2874154a2e31ed59222c9f8ea968867637f35c81e4107a984de7014deb
|
Hash value: 44980a2874154a2e31ed59222c9f8ea968867637f35c81e4107a984de7014deb
|
||||||
Verifying Hash Integrity ... sha256+ OK
|
Verifying Hash Integrity ... sha256+ OK
|
||||||
## Loading fdt from FIT Image at 84100000 ...
|
## Loading fdt from FIT Image at 84100000 ...
|
||||||
Using 'config@0' configuration
|
Using 'config-1' configuration
|
||||||
Trying 'fdt@0' fdt subimage
|
Trying 'fdt-1' fdt subimage
|
||||||
Description: fdt
|
Description: fdt
|
||||||
Created: 2017-10-20 14:32:29 UTC
|
Created: 2017-10-20 14:32:29 UTC
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
description = "U-Boot mainline";
|
description = "U-Boot mainline";
|
||||||
type = "kernel_noload";
|
type = "kernel_noload";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -14,29 +14,29 @@
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0>;
|
load = <0>;
|
||||||
entry = <0>;
|
entry = <0>;
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@1{
|
fdt-1{
|
||||||
description = "rk3288-veryron-jerry.dtb";
|
description = "rk3288-veryron-jerry.dtb";
|
||||||
data = /incbin/("../../b/chromebook_jerry/u-boot.dtb");
|
data = /incbin/("../../b/chromebook_jerry/u-boot.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@1{
|
hash-1{
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Boot U-Boot";
|
description = "Boot U-Boot";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
description = "U-Boot mainline";
|
description = "U-Boot mainline";
|
||||||
type = "kernel_noload";
|
type = "kernel_noload";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -14,29 +14,29 @@
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0>;
|
load = <0>;
|
||||||
entry = <0>;
|
entry = <0>;
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@1{
|
fdt-1{
|
||||||
description = "tegra124-nyan-big.dtb";
|
description = "tegra124-nyan-big.dtb";
|
||||||
data = /incbin/("../.././b/nyan-big/u-boot.dtb");
|
data = /incbin/("../.././b/nyan-big/u-boot.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@1{
|
hash-1{
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Boot U-Boot";
|
description = "Boot U-Boot";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -130,7 +130,7 @@ Put this into a file in that directory called sign.its:
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
data = /incbin/("Image.lzo");
|
data = /incbin/("Image.lzo");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -138,27 +138,27 @@ Put this into a file in that directory called sign.its:
|
|||||||
compression = "lzo";
|
compression = "lzo";
|
||||||
load = <0x80008000>;
|
load = <0x80008000>;
|
||||||
entry = <0x80008000>;
|
entry = <0x80008000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "beaglebone-black";
|
description = "beaglebone-black";
|
||||||
data = /incbin/("am335x-boneblack.dtb");
|
data = /incbin/("am335x-boneblack.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
key-name-hint = "dev";
|
key-name-hint = "dev";
|
||||||
sign-images = "fdt", "kernel";
|
sign-images = "fdt", "kernel";
|
||||||
@ -211,7 +211,7 @@ You should see something like this:
|
|||||||
|
|
||||||
FIT description: Beaglebone black
|
FIT description: Beaglebone black
|
||||||
Created: Sun Jun 1 12:50:30 2014
|
Created: Sun Jun 1 12:50:30 2014
|
||||||
Image 0 (kernel@1)
|
Image 0 (kernel)
|
||||||
Description: unavailable
|
Description: unavailable
|
||||||
Created: Sun Jun 1 12:50:30 2014
|
Created: Sun Jun 1 12:50:30 2014
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
@ -223,7 +223,7 @@ Created: Sun Jun 1 12:50:30 2014
|
|||||||
Entry Point: 0x80008000
|
Entry Point: 0x80008000
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: c94364646427e10f423837e559898ef02c97b988
|
Hash value: c94364646427e10f423837e559898ef02c97b988
|
||||||
Image 1 (fdt@1)
|
Image 1 (fdt-1)
|
||||||
Description: beaglebone-black
|
Description: beaglebone-black
|
||||||
Created: Sun Jun 1 12:50:30 2014
|
Created: Sun Jun 1 12:50:30 2014
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
@ -232,11 +232,11 @@ Created: Sun Jun 1 12:50:30 2014
|
|||||||
Architecture: ARM
|
Architecture: ARM
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: cb09202f889d824f23b8e4404b781be5ad38a68d
|
Hash value: cb09202f889d824f23b8e4404b781be5ad38a68d
|
||||||
Default Configuration: 'conf@1'
|
Default Configuration: 'conf-1'
|
||||||
Configuration 0 (conf@1)
|
Configuration 0 (conf-1)
|
||||||
Description: unavailable
|
Description: unavailable
|
||||||
Kernel: kernel@1
|
Kernel: kernel
|
||||||
FDT: fdt@1
|
FDT: fdt-1
|
||||||
|
|
||||||
|
|
||||||
Now am335x-boneblack-pubkey.dtb contains the public key and image.fit contains
|
Now am335x-boneblack-pubkey.dtb contains the public key and image.fit contains
|
||||||
@ -251,12 +251,12 @@ which results in:
|
|||||||
|
|
||||||
Verifying Hash Integrity ... sha1,rsa2048:dev+
|
Verifying Hash Integrity ... sha1,rsa2048:dev+
|
||||||
## Loading kernel from FIT Image at 7fc6ee469000 ...
|
## Loading kernel from FIT Image at 7fc6ee469000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Verifying Hash Integrity ...
|
Verifying Hash Integrity ...
|
||||||
sha1,rsa2048:dev+
|
sha1,rsa2048:dev+
|
||||||
OK
|
OK
|
||||||
|
|
||||||
Trying 'kernel@1' kernel subimage
|
Trying 'kernel' kernel subimage
|
||||||
Description: unavailable
|
Description: unavailable
|
||||||
Created: Sun Jun 1 12:50:30 2014
|
Created: Sun Jun 1 12:50:30 2014
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
@ -274,8 +274,8 @@ OK
|
|||||||
|
|
||||||
Unimplemented compression type 4
|
Unimplemented compression type 4
|
||||||
## Loading fdt from FIT Image at 7fc6ee469000 ...
|
## Loading fdt from FIT Image at 7fc6ee469000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Trying 'fdt@1' fdt subimage
|
Trying 'fdt-1' fdt subimage
|
||||||
Description: beaglebone-black
|
Description: beaglebone-black
|
||||||
Created: Sun Jun 1 12:50:30 2014
|
Created: Sun Jun 1 12:50:30 2014
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
@ -291,7 +291,7 @@ OK
|
|||||||
Loading Flat Device Tree ... OK
|
Loading Flat Device Tree ... OK
|
||||||
|
|
||||||
## Loading ramdisk from FIT Image at 7fc6ee469000 ...
|
## Loading ramdisk from FIT Image at 7fc6ee469000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Could not find subimage node
|
Could not find subimage node
|
||||||
|
|
||||||
Signature check OK
|
Signature check OK
|
||||||
@ -313,8 +313,8 @@ the above flow works.
|
|||||||
But it is fun to do this by hand, so you can load image.fit into a hex editor
|
But it is fun to do this by hand, so you can load image.fit into a hex editor
|
||||||
like ghex, and change a byte in the kernel:
|
like ghex, and change a byte in the kernel:
|
||||||
|
|
||||||
$UOUT/tools/fit_info -f image.fit -n /images/kernel@1 -p data
|
$UOUT/tools/fit_info -f image.fit -n /images/kernel -p data
|
||||||
NAME: kernel@1
|
NAME: kernel
|
||||||
LEN: 7790938
|
LEN: 7790938
|
||||||
OFF: 168
|
OFF: 168
|
||||||
|
|
||||||
@ -324,12 +324,12 @@ fit_check_sign again. You should see something like:
|
|||||||
|
|
||||||
Verifying Hash Integrity ... sha1,rsa2048:dev+
|
Verifying Hash Integrity ... sha1,rsa2048:dev+
|
||||||
## Loading kernel from FIT Image at 7f5a39571000 ...
|
## Loading kernel from FIT Image at 7f5a39571000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Verifying Hash Integrity ...
|
Verifying Hash Integrity ...
|
||||||
sha1,rsa2048:dev+
|
sha1,rsa2048:dev+
|
||||||
OK
|
OK
|
||||||
|
|
||||||
Trying 'kernel@1' kernel subimage
|
Trying 'kernel' kernel subimage
|
||||||
Description: unavailable
|
Description: unavailable
|
||||||
Created: Sun Jun 1 13:09:21 2014
|
Created: Sun Jun 1 13:09:21 2014
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
@ -343,12 +343,12 @@ OK
|
|||||||
Hash value: c94364646427e10f423837e559898ef02c97b988
|
Hash value: c94364646427e10f423837e559898ef02c97b988
|
||||||
Verifying Hash Integrity ...
|
Verifying Hash Integrity ...
|
||||||
sha1 error
|
sha1 error
|
||||||
Bad hash value for 'hash@1' hash node in 'kernel@1' image node
|
Bad hash value for 'hash-1' hash node in 'kernel' image node
|
||||||
Bad Data Hash
|
Bad Data Hash
|
||||||
|
|
||||||
## Loading fdt from FIT Image at 7f5a39571000 ...
|
## Loading fdt from FIT Image at 7f5a39571000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Trying 'fdt@1' fdt subimage
|
Trying 'fdt-1' fdt subimage
|
||||||
Description: beaglebone-black
|
Description: beaglebone-black
|
||||||
Created: Sun Jun 1 13:09:21 2014
|
Created: Sun Jun 1 13:09:21 2014
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
@ -364,7 +364,7 @@ OK
|
|||||||
Loading Flat Device Tree ... OK
|
Loading Flat Device Tree ... OK
|
||||||
|
|
||||||
## Loading ramdisk from FIT Image at 7f5a39571000 ...
|
## Loading ramdisk from FIT Image at 7f5a39571000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Could not find subimage node
|
Could not find subimage node
|
||||||
|
|
||||||
Signature check Bad (error 1)
|
Signature check Bad (error 1)
|
||||||
@ -386,11 +386,11 @@ images
|
|||||||
configurations
|
configurations
|
||||||
|
|
||||||
fdtget -l image.fit /configurations
|
fdtget -l image.fit /configurations
|
||||||
conf@1
|
conf-1
|
||||||
fdtget -l image.fit /configurations/conf@1
|
fdtget -l image.fit /configurations/conf-1
|
||||||
signature@1
|
signature-1
|
||||||
|
|
||||||
fdtget -p image.fit /configurations/conf@1/signature@1
|
fdtget -p image.fit /configurations/conf-1/signature-1
|
||||||
hashed-strings
|
hashed-strings
|
||||||
hashed-nodes
|
hashed-nodes
|
||||||
timestamp
|
timestamp
|
||||||
@ -401,20 +401,20 @@ algo
|
|||||||
key-name-hint
|
key-name-hint
|
||||||
sign-images
|
sign-images
|
||||||
|
|
||||||
fdtget image.fit /configurations/conf@1/signature@1 hashed-nodes
|
fdtget image.fit /configurations/conf-1/signature-1 hashed-nodes
|
||||||
/ /configurations/conf@1 /images/fdt@1 /images/fdt@1/hash@1 /images/kernel@1 /images/kernel@1/hash@1
|
/ /configurations/conf-1 /images/fdt-1 /images/fdt-1/hash /images/kernel /images/kernel/hash-1
|
||||||
|
|
||||||
This gives us a bit of a look into the signature that mkimage added. Note you
|
This gives us a bit of a look into the signature that mkimage added. Note you
|
||||||
can also use fdtdump to list the entire device tree.
|
can also use fdtdump to list the entire device tree.
|
||||||
|
|
||||||
Say we want to change the kernel that this configuration uses
|
Say we want to change the kernel that this configuration uses
|
||||||
(/images/kernel@1). We could just put a new kernel in the image, but we will
|
(/images/kernel). We could just put a new kernel in the image, but we will
|
||||||
need to change the hash to match. Let's simulate that by changing a byte of
|
need to change the hash to match. Let's simulate that by changing a byte of
|
||||||
the hash:
|
the hash:
|
||||||
|
|
||||||
fdtget -tx image.fit /images/kernel@1/hash@1 value
|
fdtget -tx image.fit /images/kernel/hash-1 value
|
||||||
c9436464 6427e10f 423837e5 59898ef0 2c97b988
|
c9436464 6427e10f 423837e5 59898ef0 2c97b988
|
||||||
fdtput -tx image.fit /images/kernel@1/hash@1 value c9436464 6427e10f 423837e5 59898ef0 2c97b981
|
fdtput -tx image.fit /images/kernel/hash-1 value c9436464 6427e10f 423837e5 59898ef0 2c97b981
|
||||||
|
|
||||||
Now check it again:
|
Now check it again:
|
||||||
|
|
||||||
@ -437,7 +437,7 @@ configuration. But that won't work since you are not allowed to change the
|
|||||||
configuration in any way. Try it with a fresh (valid) image if you like by
|
configuration in any way. Try it with a fresh (valid) image if you like by
|
||||||
running the mkimage link again. Then:
|
running the mkimage link again. Then:
|
||||||
|
|
||||||
fdtput -p image.fit /configurations/conf@1/signature@2 value fred
|
fdtput -p image.fit /configurations/conf-1/signature-1 value fred
|
||||||
$UOUT/tools/fit_check_sign -f image.fit -k am335x-boneblack-pubkey.dtb
|
$UOUT/tools/fit_check_sign -f image.fit -k am335x-boneblack-pubkey.dtb
|
||||||
Verifying Hash Integrity ... -
|
Verifying Hash Integrity ... -
|
||||||
sha1,rsa2048:devrsa_verify_with_keynode: RSA failed to verify: -13
|
sha1,rsa2048:devrsa_verify_with_keynode: RSA failed to verify: -13
|
||||||
@ -521,9 +521,9 @@ U-Boot# ext2load mmc 0:2 82000000 /boot/image.fit
|
|||||||
7824930 bytes read in 589 ms (12.7 MiB/s)
|
7824930 bytes read in 589 ms (12.7 MiB/s)
|
||||||
U-Boot# bootm 82000000
|
U-Boot# bootm 82000000
|
||||||
## Loading kernel from FIT Image at 82000000 ...
|
## Loading kernel from FIT Image at 82000000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Verifying Hash Integrity ... sha1,rsa2048:dev+ OK
|
Verifying Hash Integrity ... sha1,rsa2048:dev+ OK
|
||||||
Trying 'kernel@1' kernel subimage
|
Trying 'kernel' kernel subimage
|
||||||
Description: unavailable
|
Description: unavailable
|
||||||
Created: 2014-06-01 19:32:54 UTC
|
Created: 2014-06-01 19:32:54 UTC
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
@ -538,8 +538,8 @@ U-Boot# bootm 82000000
|
|||||||
Hash value: c94364646427e10f423837e559898ef02c97b988
|
Hash value: c94364646427e10f423837e559898ef02c97b988
|
||||||
Verifying Hash Integrity ... sha1+ OK
|
Verifying Hash Integrity ... sha1+ OK
|
||||||
## Loading fdt from FIT Image at 82000000 ...
|
## Loading fdt from FIT Image at 82000000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Trying 'fdt@1' fdt subimage
|
Trying 'fdt-1' fdt subimage
|
||||||
Description: beaglebone-black
|
Description: beaglebone-black
|
||||||
Created: 2014-06-01 19:32:54 UTC
|
Created: 2014-06-01 19:32:54 UTC
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
|
@ -138,31 +138,31 @@ unit.
|
|||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
- boot kernel "kernel@1" stored in a new uImage located at 200000:
|
- boot kernel "kernel-1" stored in a new uImage located at 200000:
|
||||||
bootm 200000:kernel@1
|
bootm 200000:kernel-1
|
||||||
|
|
||||||
- boot configuration "cfg@1" from a new uImage located at 200000:
|
- boot configuration "cfg-1" from a new uImage located at 200000:
|
||||||
bootm 200000#cfg@1
|
bootm 200000#cfg-1
|
||||||
|
|
||||||
- boot configuration "cfg@1" with extra "cfg@2" from a new uImage located
|
- boot configuration "cfg-1" with extra "cfg-2" from a new uImage located
|
||||||
at 200000:
|
at 200000:
|
||||||
bootm 200000#cfg@1#cfg@2
|
bootm 200000#cfg-1#cfg-2
|
||||||
|
|
||||||
- boot "kernel@1" from a new uImage at 200000 with initrd "ramdisk@2" found in
|
- boot "kernel-1" from a new uImage at 200000 with initrd "ramdisk-2" found in
|
||||||
some other new uImage stored at address 800000:
|
some other new uImage stored at address 800000:
|
||||||
bootm 200000:kernel@1 800000:ramdisk@2
|
bootm 200000:kernel-1 800000:ramdisk-2
|
||||||
|
|
||||||
- boot "kernel@2" from a new uImage at 200000, with initrd "ramdisk@1" and FDT
|
- boot "kernel-2" from a new uImage at 200000, with initrd "ramdisk-1" and FDT
|
||||||
"fdt@1", both stored in some other new uImage located at 800000:
|
"fdt-1", both stored in some other new uImage located at 800000:
|
||||||
bootm 200000:kernel@1 800000:ramdisk@1 800000:fdt@1
|
bootm 200000:kernel-1 800000:ramdisk-1 800000:fdt-1
|
||||||
|
|
||||||
- boot kernel "kernel@2" with initrd "ramdisk@2", both stored in a new uImage
|
- boot kernel "kernel-2" with initrd "ramdisk-2", both stored in a new uImage
|
||||||
at address 200000, with a raw FDT blob stored at address 600000:
|
at address 200000, with a raw FDT blob stored at address 600000:
|
||||||
bootm 200000:kernel@2 200000:ramdisk@2 600000
|
bootm 200000:kernel-2 200000:ramdisk-2 600000
|
||||||
|
|
||||||
- boot kernel "kernel@2" from new uImage at 200000 with FDT "fdt@1" from the
|
- boot kernel "kernel-2" from new uImage at 200000 with FDT "fdt-1" from the
|
||||||
same new uImage:
|
same new uImage:
|
||||||
bootm 200000:kernel@2 - 200000:fdt@1
|
bootm 200000:kernel-2 - 200000:fdt-1
|
||||||
|
|
||||||
|
|
||||||
Note on current image address
|
Note on current image address
|
||||||
@ -186,16 +186,16 @@ current image address is to be used. For example, consider the following
|
|||||||
commands:
|
commands:
|
||||||
|
|
||||||
tftp 200000 /tftpboot/uImage
|
tftp 200000 /tftpboot/uImage
|
||||||
bootm :kernel@1
|
bootm :kernel-1
|
||||||
Last command is equivalent to:
|
Last command is equivalent to:
|
||||||
bootm 200000:kernel@1
|
bootm 200000:kernel-1
|
||||||
|
|
||||||
tftp 200000 /tftpboot/uImage
|
tftp 200000 /tftpboot/uImage
|
||||||
bootm 400000:kernel@1 :ramdisk@1
|
bootm 400000:kernel-1 :ramdisk-1
|
||||||
Last command is equivalent to:
|
Last command is equivalent to:
|
||||||
bootm 400000:kernel@1 400000:ramdisk@1
|
bootm 400000:kernel-1 400000:ramdisk-1
|
||||||
|
|
||||||
tftp 200000 /tftpboot/uImage
|
tftp 200000 /tftpboot/uImage
|
||||||
bootm :kernel@1 400000:ramdisk@1 :fdt@1
|
bootm :kernel-1 400000:ramdisk-1 :fdt-1
|
||||||
Last command is equivalent to:
|
Last command is equivalent to:
|
||||||
bootm 200000:kernel@1 400000:ramdisk@1 400000:fdt@1
|
bootm 200000:kernel-1 400000:ramdisk-1 400000:fdt-1
|
||||||
|
@ -86,7 +86,7 @@ $
|
|||||||
$ mkimage -l kernel.itb
|
$ mkimage -l kernel.itb
|
||||||
FIT description: Simple image with single Linux kernel
|
FIT description: Simple image with single Linux kernel
|
||||||
Created: Tue Mar 11 17:26:15 2008
|
Created: Tue Mar 11 17:26:15 2008
|
||||||
Image 0 (kernel@1)
|
Image 0 (kernel)
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
Compression: gzip compressed
|
Compression: gzip compressed
|
||||||
@ -99,10 +99,10 @@ Created: Tue Mar 11 17:26:15 2008
|
|||||||
Hash value: 2ae2bb40
|
Hash value: 2ae2bb40
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 3c200f34e2c226ddc789240cca0c59fc54a67cf4
|
Hash value: 3c200f34e2c226ddc789240cca0c59fc54a67cf4
|
||||||
Default Configuration: 'config@1'
|
Default Configuration: 'config-1'
|
||||||
Configuration 0 (config@1)
|
Configuration 0 (config-1)
|
||||||
Description: Boot Linux kernel
|
Description: Boot Linux kernel
|
||||||
Kernel: kernel@1
|
Kernel: kernel
|
||||||
|
|
||||||
|
|
||||||
The resulting image file kernel.itb can be now transferred to the target,
|
The resulting image file kernel.itb can be now transferred to the target,
|
||||||
@ -130,7 +130,7 @@ Bytes transferred = 944464 (e6950 hex)
|
|||||||
FIT image found
|
FIT image found
|
||||||
FIT description: Simple image with single Linux kernel
|
FIT description: Simple image with single Linux kernel
|
||||||
Created: 2008-03-11 16:26:15 UTC
|
Created: 2008-03-11 16:26:15 UTC
|
||||||
Image 0 (kernel@1)
|
Image 0 (kernel)
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
Compression: gzip compressed
|
Compression: gzip compressed
|
||||||
@ -144,15 +144,15 @@ Bytes transferred = 944464 (e6950 hex)
|
|||||||
Hash value: 2ae2bb40
|
Hash value: 2ae2bb40
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 3c200f34e2c226ddc789240cca0c59fc54a67cf4
|
Hash value: 3c200f34e2c226ddc789240cca0c59fc54a67cf4
|
||||||
Default Configuration: 'config@1'
|
Default Configuration: 'config-1'
|
||||||
Configuration 0 (config@1)
|
Configuration 0 (config-1)
|
||||||
Description: Boot Linux kernel
|
Description: Boot Linux kernel
|
||||||
Kernel: kernel@1
|
Kernel: kernel
|
||||||
|
|
||||||
=> bootm
|
=> bootm
|
||||||
## Booting kernel from FIT Image at 00900000 ...
|
## Booting kernel from FIT Image at 00900000 ...
|
||||||
Using 'config@1' configuration
|
Using 'config-1' configuration
|
||||||
Trying 'kernel@1' kernel subimage
|
Trying 'kernel' kernel subimage
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
Compression: gzip compressed
|
Compression: gzip compressed
|
||||||
@ -196,7 +196,7 @@ $
|
|||||||
$ mkimage -l kernel_fdt.itb
|
$ mkimage -l kernel_fdt.itb
|
||||||
FIT description: Simple image with single Linux kernel and FDT blob
|
FIT description: Simple image with single Linux kernel and FDT blob
|
||||||
Created: Tue Mar 11 16:29:22 2008
|
Created: Tue Mar 11 16:29:22 2008
|
||||||
Image 0 (kernel@1)
|
Image 0 (kernel)
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
Compression: gzip compressed
|
Compression: gzip compressed
|
||||||
@ -209,7 +209,7 @@ Created: Tue Mar 11 16:29:22 2008
|
|||||||
Hash value: 2c0cc807
|
Hash value: 2c0cc807
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 264b59935470e42c418744f83935d44cdf59a3bb
|
Hash value: 264b59935470e42c418744f83935d44cdf59a3bb
|
||||||
Image 1 (fdt@1)
|
Image 1 (fdt-1)
|
||||||
Description: Flattened Device Tree blob
|
Description: Flattened Device Tree blob
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
Compression: uncompressed
|
Compression: uncompressed
|
||||||
@ -219,11 +219,11 @@ Created: Tue Mar 11 16:29:22 2008
|
|||||||
Hash value: 0d655d71
|
Hash value: 0d655d71
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 25ab4e15cd4b8a5144610394560d9c318ce52def
|
Hash value: 25ab4e15cd4b8a5144610394560d9c318ce52def
|
||||||
Default Configuration: 'conf@1'
|
Default Configuration: 'conf-1'
|
||||||
Configuration 0 (conf@1)
|
Configuration 0 (conf-1)
|
||||||
Description: Boot Linux kernel with FDT blob
|
Description: Boot Linux kernel with FDT blob
|
||||||
Kernel: kernel@1
|
Kernel: kernel
|
||||||
FDT: fdt@1
|
FDT: fdt-1
|
||||||
|
|
||||||
|
|
||||||
The resulting image file kernel_fdt.itb can be now transferred to the target,
|
The resulting image file kernel_fdt.itb can be now transferred to the target,
|
||||||
@ -245,7 +245,7 @@ Bytes transferred = 1109776 (10ef10 hex)
|
|||||||
FIT image found
|
FIT image found
|
||||||
FIT description: Simple image with single Linux kernel and FDT blob
|
FIT description: Simple image with single Linux kernel and FDT blob
|
||||||
Created: 2008-03-11 15:29:22 UTC
|
Created: 2008-03-11 15:29:22 UTC
|
||||||
Image 0 (kernel@1)
|
Image 0 (kernel)
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
Compression: gzip compressed
|
Compression: gzip compressed
|
||||||
@ -259,7 +259,7 @@ Bytes transferred = 1109776 (10ef10 hex)
|
|||||||
Hash value: 2c0cc807
|
Hash value: 2c0cc807
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 264b59935470e42c418744f83935d44cdf59a3bb
|
Hash value: 264b59935470e42c418744f83935d44cdf59a3bb
|
||||||
Image 1 (fdt@1)
|
Image 1 (fdt-1)
|
||||||
Description: Flattened Device Tree blob
|
Description: Flattened Device Tree blob
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
Compression: uncompressed
|
Compression: uncompressed
|
||||||
@ -270,15 +270,15 @@ Bytes transferred = 1109776 (10ef10 hex)
|
|||||||
Hash value: 0d655d71
|
Hash value: 0d655d71
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 25ab4e15cd4b8a5144610394560d9c318ce52def
|
Hash value: 25ab4e15cd4b8a5144610394560d9c318ce52def
|
||||||
Default Configuration: 'conf@1'
|
Default Configuration: 'conf-1'
|
||||||
Configuration 0 (conf@1)
|
Configuration 0 (conf-1)
|
||||||
Description: Boot Linux kernel with FDT blob
|
Description: Boot Linux kernel with FDT blob
|
||||||
Kernel: kernel@1
|
Kernel: kernel
|
||||||
FDT: fdt@1
|
FDT: fdt-1
|
||||||
=> bootm
|
=> bootm
|
||||||
## Booting kernel from FIT Image at 00900000 ...
|
## Booting kernel from FIT Image at 00900000 ...
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Trying 'kernel@1' kernel subimage
|
Trying 'kernel' kernel subimage
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
Compression: gzip compressed
|
Compression: gzip compressed
|
||||||
@ -295,8 +295,8 @@ Bytes transferred = 1109776 (10ef10 hex)
|
|||||||
Verifying Hash Integrity ... crc32+ sha1+ OK
|
Verifying Hash Integrity ... crc32+ sha1+ OK
|
||||||
Uncompressing Kernel Image ... OK
|
Uncompressing Kernel Image ... OK
|
||||||
## Flattened Device Tree from FIT Image at 00900000
|
## Flattened Device Tree from FIT Image at 00900000
|
||||||
Using 'conf@1' configuration
|
Using 'conf-1' configuration
|
||||||
Trying 'fdt@1' FDT blob subimage
|
Trying 'fdt-1' FDT blob subimage
|
||||||
Description: Flattened Device Tree blob
|
Description: Flattened Device Tree blob
|
||||||
Type: Flat Device Tree
|
Type: Flat Device Tree
|
||||||
Compression: uncompressed
|
Compression: uncompressed
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
description = "Vanilla Linux kernel";
|
description = "Vanilla Linux kernel";
|
||||||
data = /incbin/("./vmlinux.bin.gz");
|
data = /incbin/("./vmlinux.bin.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -18,20 +18,20 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "crc32";
|
algo = "crc32";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Boot Linux kernel";
|
description = "Boot Linux kernel";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -47,7 +47,7 @@ For x86 a setup node is also required: see x86-fit-boot.txt.
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
description = "Vanilla Linux kernel";
|
description = "Vanilla Linux kernel";
|
||||||
data = /incbin/("./image.bin.lzo");
|
data = /incbin/("./image.bin.lzo");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -56,12 +56,12 @@ For x86 a setup node is also required: see x86-fit-boot.txt.
|
|||||||
compression = "lzo";
|
compression = "lzo";
|
||||||
load = <0x01000000>;
|
load = <0x01000000>;
|
||||||
entry = <0x00000000>;
|
entry = <0x00000000>;
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
setup@1 {
|
setup {
|
||||||
description = "Linux setup.bin";
|
description = "Linux setup.bin";
|
||||||
data = /incbin/("./setup.bin");
|
data = /incbin/("./setup.bin");
|
||||||
type = "x86_setup";
|
type = "x86_setup";
|
||||||
@ -70,18 +70,18 @@ For x86 a setup node is also required: see x86-fit-boot.txt.
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0x00090000>;
|
load = <0x00090000>;
|
||||||
entry = <0x00090000>;
|
entry = <0x00090000>;
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Boot Linux kernel";
|
description = "Boot Linux kernel";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
setup = "setup@1";
|
setup = "setup";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
description = "Vanilla Linux kernel";
|
description = "Vanilla Linux kernel";
|
||||||
data = /incbin/("./vmlinux.bin.gz");
|
data = /incbin/("./vmlinux.bin.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -18,34 +18,34 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "crc32";
|
algo = "crc32";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "Flattened Device Tree blob";
|
description = "Flattened Device Tree blob";
|
||||||
data = /incbin/("./target.dtb");
|
data = /incbin/("./target.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "ppc";
|
arch = "ppc";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "crc32";
|
algo = "crc32";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
description = "Boot Linux kernel with FDT blob";
|
description = "Boot Linux kernel with FDT blob";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -10,31 +10,31 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "zc706";
|
description = "zc706";
|
||||||
data = /incbin/("/tftpboot/devicetree.dtb");
|
data = /incbin/("/tftpboot/devicetree.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0x10000000>;
|
load = <0x10000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fpga@1 {
|
fpga {
|
||||||
description = "FPGA";
|
description = "FPGA";
|
||||||
data = /incbin/("/tftpboot/download.bit");
|
data = /incbin/("/tftpboot/download.bit");
|
||||||
type = "fpga";
|
type = "fpga";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0x30000000>;
|
load = <0x30000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
linux_kernel@1 {
|
linux_kernel {
|
||||||
description = "Linux";
|
description = "Linux";
|
||||||
data = /incbin/("/tftpboot/zImage");
|
data = /incbin/("/tftpboot/zImage");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -43,25 +43,25 @@
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0x8000>;
|
load = <0x8000>;
|
||||||
entry = <0x8000>;
|
entry = <0x8000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@2";
|
default = "config-2";
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Linux";
|
description = "Linux";
|
||||||
kernel = "linux_kernel@1";
|
kernel = "linux_kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
|
|
||||||
config@2 {
|
config-2 {
|
||||||
description = "Linux with fpga";
|
description = "Linux with fpga";
|
||||||
kernel = "linux_kernel@1";
|
kernel = "linux_kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
fpga = "fpga@1";
|
fpga = "fpga";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
xen_kernel@1 {
|
xen_kernel {
|
||||||
description = "xen binary";
|
description = "xen binary";
|
||||||
data = /incbin/("./xen");
|
data = /incbin/("./xen");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -19,36 +19,36 @@
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0xa0000000>;
|
load = <0xa0000000>;
|
||||||
entry = <0xa0000000>;
|
entry = <0xa0000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "xexpress-ca15 tree blob";
|
description = "xexpress-ca15 tree blob";
|
||||||
data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
|
data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0xb0000000>;
|
load = <0xb0000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
description = "xexpress-ca15 tree blob";
|
description = "xexpress-ca15 tree blob";
|
||||||
data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
|
data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0xb0400000>;
|
load = <0xb0400000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
linux_kernel@1 {
|
linux_kernel {
|
||||||
description = "Linux Image";
|
description = "Linux Image";
|
||||||
data = /incbin/("./Image");
|
data = /incbin/("./Image");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -57,33 +57,33 @@
|
|||||||
compression = "none";
|
compression = "none";
|
||||||
load = <0xa0000000>;
|
load = <0xa0000000>;
|
||||||
entry = <0xa0000000>;
|
entry = <0xa0000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@2";
|
default = "config-2";
|
||||||
|
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "Just plain Linux";
|
description = "Just plain Linux";
|
||||||
kernel = "linux_kernel@1";
|
kernel = "linux_kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
|
|
||||||
config@2 {
|
config-2 {
|
||||||
description = "Xen one loadable";
|
description = "Xen one loadable";
|
||||||
kernel = "xen_kernel@1";
|
kernel = "xen_kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
loadables = "linux_kernel@1";
|
loadables = "linux_kernel";
|
||||||
};
|
};
|
||||||
|
|
||||||
config@3 {
|
config-3 {
|
||||||
description = "Xen two loadables";
|
description = "Xen two loadables";
|
||||||
kernel = "xen_kernel@1";
|
kernel = "xen_kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
loadables = "linux_kernel@1", "fdt@2";
|
loadables = "linux_kernel", "fdt-2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel-1 {
|
||||||
description = "vanilla-2.6.23";
|
description = "vanilla-2.6.23";
|
||||||
data = /incbin/("./vmlinux.bin.gz");
|
data = /incbin/("./vmlinux.bin.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -18,15 +18,15 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
hash@2 {
|
hash-2 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
kernel@2 {
|
kernel-2 {
|
||||||
description = "2.6.23-denx";
|
description = "2.6.23-denx";
|
||||||
data = /incbin/("./2.6.23-denx.bin.gz");
|
data = /incbin/("./2.6.23-denx.bin.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -35,12 +35,12 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
kernel@3 {
|
kernel-3 {
|
||||||
description = "2.4.25-denx";
|
description = "2.4.25-denx";
|
||||||
data = /incbin/("./2.4.25-denx.bin.gz");
|
data = /incbin/("./2.4.25-denx.bin.gz");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
@ -49,12 +49,12 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "md5";
|
algo = "md5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ramdisk@1 {
|
ramdisk-1 {
|
||||||
description = "eldk-4.2-ramdisk";
|
description = "eldk-4.2-ramdisk";
|
||||||
data = /incbin/("./eldk-4.2-ramdisk");
|
data = /incbin/("./eldk-4.2-ramdisk");
|
||||||
type = "ramdisk";
|
type = "ramdisk";
|
||||||
@ -63,12 +63,12 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ramdisk@2 {
|
ramdisk-2 {
|
||||||
description = "eldk-3.1-ramdisk";
|
description = "eldk-3.1-ramdisk";
|
||||||
data = /incbin/("./eldk-3.1-ramdisk");
|
data = /incbin/("./eldk-3.1-ramdisk");
|
||||||
type = "ramdisk";
|
type = "ramdisk";
|
||||||
@ -77,30 +77,30 @@
|
|||||||
compression = "gzip";
|
compression = "gzip";
|
||||||
load = <00000000>;
|
load = <00000000>;
|
||||||
entry = <00000000>;
|
entry = <00000000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "crc32";
|
algo = "crc32";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "tqm5200-fdt";
|
description = "tqm5200-fdt";
|
||||||
data = /incbin/("./tqm5200.dtb");
|
data = /incbin/("./tqm5200.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "ppc";
|
arch = "ppc";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "crc32";
|
algo = "crc32";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
description = "tqm5200s-fdt";
|
description = "tqm5200s-fdt";
|
||||||
data = /incbin/("./tqm5200s.dtb");
|
data = /incbin/("./tqm5200s.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "ppc";
|
arch = "ppc";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
load = <00700000>;
|
load = <00700000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -108,26 +108,26 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
|
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "tqm5200 vanilla-2.6.23 configuration";
|
description = "tqm5200 vanilla-2.6.23 configuration";
|
||||||
kernel = "kernel@1";
|
kernel = "kernel-1";
|
||||||
ramdisk = "ramdisk@1";
|
ramdisk = "ramdisk-1";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
|
|
||||||
config@2 {
|
config-2 {
|
||||||
description = "tqm5200s denx-2.6.23 configuration";
|
description = "tqm5200s denx-2.6.23 configuration";
|
||||||
kernel = "kernel@2";
|
kernel = "kernel-2";
|
||||||
ramdisk = "ramdisk@1";
|
ramdisk = "ramdisk-1";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
};
|
};
|
||||||
|
|
||||||
config@3 {
|
config-3 {
|
||||||
description = "tqm5200s denx-2.4.25 configuration";
|
description = "tqm5200s denx-2.4.25 configuration";
|
||||||
kernel = "kernel@3";
|
kernel = "kernel-3";
|
||||||
ramdisk = "ramdisk@2";
|
ramdisk = "ramdisk-2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
load = <0x40000>;
|
load = <0x40000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "Pine64+ DT";
|
description = "Pine64+ DT";
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
@ -53,7 +53,7 @@
|
|||||||
arch = "arm64";
|
arch = "arm64";
|
||||||
};
|
};
|
||||||
|
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
description = "Pine64 DT";
|
description = "Pine64 DT";
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
@ -79,18 +79,18 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "config@1";
|
default = "config-1";
|
||||||
|
|
||||||
config@1 {
|
config-1 {
|
||||||
description = "sun50i-a64-pine64-plus";
|
description = "sun50i-a64-pine64-plus";
|
||||||
loadables = "uboot", "atf", "kernel", "initrd";
|
loadables = "uboot", "atf", "kernel", "initrd";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
|
|
||||||
config@2 {
|
config-2 {
|
||||||
description = "sun50i-a64-pine64";
|
description = "sun50i-a64-pine64";
|
||||||
loadables = "uboot", "atf", "mgmt-firmware";
|
loadables = "uboot", "atf", "mgmt-firmware";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -24,7 +24,7 @@ Without using overlays the configuration would be as follows for every case.
|
|||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
/ {
|
/ {
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
data = /incbin/("./zImage");
|
data = /incbin/("./zImage");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -32,32 +32,32 @@ Without using overlays the configuration would be as follows for every case.
|
|||||||
load = <0x82000000>;
|
load = <0x82000000>;
|
||||||
entry = <0x82000000>;
|
entry = <0x82000000>;
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
data = /incbin/("./foo-reva.dtb");
|
data = /incbin/("./foo-reva.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
};
|
};
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
data = /incbin/("./foo-revb.dtb");
|
data = /incbin/("./foo-revb.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
};
|
};
|
||||||
fdt@3 {
|
fdt-3 {
|
||||||
data = /incbin/("./foo-reva-bar.dtb");
|
data = /incbin/("./foo-reva-bar.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
};
|
};
|
||||||
fdt@4 {
|
fdt-4 {
|
||||||
data = /incbin/("./foo-revb-bar.dtb");
|
data = /incbin/("./foo-revb-bar.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
};
|
};
|
||||||
fdt@5 {
|
fdt-5 {
|
||||||
data = /incbin/("./foo-revb-baz.dtb");
|
data = /incbin/("./foo-revb-baz.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
};
|
};
|
||||||
fdt@6 {
|
fdt-6 {
|
||||||
data = /incbin/("./foo-revb-bar-baz.dtb");
|
data = /incbin/("./foo-revb-bar-baz.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -67,28 +67,28 @@ Without using overlays the configuration would be as follows for every case.
|
|||||||
configurations {
|
configurations {
|
||||||
default = "foo-reva.dtb;
|
default = "foo-reva.dtb;
|
||||||
foo-reva.dtb {
|
foo-reva.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
foo-revb.dtb {
|
foo-revb.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
};
|
};
|
||||||
foo-reva-bar.dtb {
|
foo-reva-bar.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@3";
|
fdt = "fdt-3";
|
||||||
};
|
};
|
||||||
foo-revb-bar.dtb {
|
foo-revb-bar.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@4";
|
fdt = "fdt-4";
|
||||||
};
|
};
|
||||||
foo-revb-baz.dtb {
|
foo-revb-baz.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@5";
|
fdt = "fdt-5";
|
||||||
};
|
};
|
||||||
foo-revb-bar-baz.dtb {
|
foo-revb-bar-baz.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@6";
|
fdt = "fdt-6";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -117,7 +117,7 @@ explosion problem.
|
|||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
/ {
|
/ {
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
data = /incbin/("./zImage");
|
data = /incbin/("./zImage");
|
||||||
type = "kernel";
|
type = "kernel";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -125,31 +125,31 @@ explosion problem.
|
|||||||
load = <0x82000000>;
|
load = <0x82000000>;
|
||||||
entry = <0x82000000>;
|
entry = <0x82000000>;
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
data = /incbin/("./foo.dtb");
|
data = /incbin/("./foo.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
load = <0x87f00000>;
|
load = <0x87f00000>;
|
||||||
};
|
};
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
data = /incbin/("./reva.dtbo");
|
data = /incbin/("./reva.dtbo");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
load = <0x87fc0000>;
|
load = <0x87fc0000>;
|
||||||
};
|
};
|
||||||
fdt@3 {
|
fdt-3 {
|
||||||
data = /incbin/("./revb.dtbo");
|
data = /incbin/("./revb.dtbo");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
load = <0x87fc0000>;
|
load = <0x87fc0000>;
|
||||||
};
|
};
|
||||||
fdt@4 {
|
fdt-4 {
|
||||||
data = /incbin/("./bar.dtbo");
|
data = /incbin/("./bar.dtbo");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
load = <0x87fc0000>;
|
load = <0x87fc0000>;
|
||||||
};
|
};
|
||||||
fdt@5 {
|
fdt-5 {
|
||||||
data = /incbin/("./baz.dtbo");
|
data = /incbin/("./baz.dtbo");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "arm";
|
arch = "arm";
|
||||||
@ -160,34 +160,34 @@ explosion problem.
|
|||||||
configurations {
|
configurations {
|
||||||
default = "foo-reva.dtb;
|
default = "foo-reva.dtb;
|
||||||
foo-reva.dtb {
|
foo-reva.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1", "fdt@2";
|
fdt = "fdt-1", "fdt-2";
|
||||||
};
|
};
|
||||||
foo-revb.dtb {
|
foo-revb.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1", "fdt@3";
|
fdt = "fdt-1", "fdt-3";
|
||||||
};
|
};
|
||||||
foo-reva-bar.dtb {
|
foo-reva-bar.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1", "fdt@2", "fdt@4";
|
fdt = "fdt-1", "fdt-2", "fdt-4";
|
||||||
};
|
};
|
||||||
foo-revb-bar.dtb {
|
foo-revb-bar.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1", "fdt@3", "fdt@4";
|
fdt = "fdt-1", "fdt-3", "fdt-4";
|
||||||
};
|
};
|
||||||
foo-revb-baz.dtb {
|
foo-revb-baz.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1", "fdt@3", "fdt@5";
|
fdt = "fdt-1", "fdt-3", "fdt-5";
|
||||||
};
|
};
|
||||||
foo-revb-bar-baz.dtb {
|
foo-revb-bar-baz.dtb {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1", "fdt@3", "fdt@4", "fdt@5";
|
fdt = "fdt-1", "fdt-3", "fdt-4", "fdt-5";
|
||||||
};
|
};
|
||||||
bar {
|
bar {
|
||||||
fdt = "fdt@4";
|
fdt = "fdt-4";
|
||||||
};
|
};
|
||||||
baz {
|
baz {
|
||||||
fdt = "fdt@5";
|
fdt = "fdt-5";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
data = /incbin/("test-kernel.bin");
|
data = /incbin/("test-kernel.bin");
|
||||||
type = "kernel_noload";
|
type = "kernel_noload";
|
||||||
arch = "sandbox";
|
arch = "sandbox";
|
||||||
@ -14,28 +14,28 @@
|
|||||||
load = <0x4>;
|
load = <0x4>;
|
||||||
entry = <0x8>;
|
entry = <0x8>;
|
||||||
kernel-version = <1>;
|
kernel-version = <1>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "snow";
|
description = "snow";
|
||||||
data = /incbin/("sandbox-kernel.dtb");
|
data = /incbin/("sandbox-kernel.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "sandbox";
|
arch = "sandbox";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
fdt-version = <1>;
|
fdt-version = <1>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
signature@1 {
|
signature {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
key-name-hint = "dev";
|
key-name-hint = "dev";
|
||||||
sign-images = "fdt", "kernel";
|
sign-images = "fdt", "kernel";
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel {
|
||||||
data = /incbin/("test-kernel.bin");
|
data = /incbin/("test-kernel.bin");
|
||||||
type = "kernel_noload";
|
type = "kernel_noload";
|
||||||
arch = "sandbox";
|
arch = "sandbox";
|
||||||
@ -14,29 +14,29 @@
|
|||||||
load = <0x4>;
|
load = <0x4>;
|
||||||
entry = <0x8>;
|
entry = <0x8>;
|
||||||
kernel-version = <1>;
|
kernel-version = <1>;
|
||||||
signature@1 {
|
signature {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
key-name-hint = "dev";
|
key-name-hint = "dev";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
description = "snow";
|
description = "snow";
|
||||||
data = /incbin/("sandbox-kernel.dtb");
|
data = /incbin/("sandbox-kernel.dtb");
|
||||||
type = "flat_dt";
|
type = "flat_dt";
|
||||||
arch = "sandbox";
|
arch = "sandbox";
|
||||||
compression = "none";
|
compression = "none";
|
||||||
fdt-version = <1>;
|
fdt-version = <1>;
|
||||||
signature@1 {
|
signature {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
key-name-hint = "dev";
|
key-name-hint = "dev";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -83,7 +83,7 @@ Device Tree Bindings
|
|||||||
The following properties are required in the FIT's signature node(s) to
|
The following properties are required in the FIT's signature node(s) to
|
||||||
allow the signer to operate. These should be added to the .its file.
|
allow the signer to operate. These should be added to the .its file.
|
||||||
Signature nodes sit at the same level as hash nodes and are called
|
Signature nodes sit at the same level as hash nodes and are called
|
||||||
signature@1, signature@2, etc.
|
signature-1, signature-2, etc.
|
||||||
|
|
||||||
- algo: Algorithm name (e.g. "sha1,rsa2048")
|
- algo: Algorithm name (e.g. "sha1,rsa2048")
|
||||||
|
|
||||||
@ -118,9 +118,9 @@ For config bindings, these properties are added by the signer:
|
|||||||
- hashed-nodes: A list of nodes which were hashed by the signer. Each is
|
- hashed-nodes: A list of nodes which were hashed by the signer. Each is
|
||||||
a string - the full path to node. A typical value might be:
|
a string - the full path to node. A typical value might be:
|
||||||
|
|
||||||
hashed-nodes = "/", "/configurations/conf@1", "/images/kernel@1",
|
hashed-nodes = "/", "/configurations/conf-1", "/images/kernel",
|
||||||
"/images/kernel@1/hash@1", "/images/fdt@1",
|
"/images/kernel/hash-1", "/images/fdt-1",
|
||||||
"/images/fdt@1/hash@1";
|
"/images/fdt-1/hash-1";
|
||||||
|
|
||||||
- hashed-strings: The start and size of the string region of the FIT that
|
- hashed-strings: The start and size of the string region of the FIT that
|
||||||
was hashed
|
was hashed
|
||||||
@ -178,44 +178,44 @@ As an example, consider this FIT:
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel-1 {
|
||||||
data = <data for kernel1>
|
data = <data for kernel1>
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
value = <...kernel signature 1...>
|
value = <...kernel signature 1...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kernel@2 {
|
kernel-2 {
|
||||||
data = <data for kernel2>
|
data = <data for kernel2>
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
value = <...kernel signature 2...>
|
value = <...kernel signature 2...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
data = <data for fdt1>;
|
data = <data for fdt1>;
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
vaue = <...fdt signature 1...>
|
vaue = <...fdt signature 1...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
data = <data for fdt2>;
|
data = <data for fdt2>;
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
vaue = <...fdt signature 2...>
|
vaue = <...fdt signature 2...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel-1";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@2";
|
kernel = "kernel-2";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -224,18 +224,18 @@ Since both kernels are signed it is easy for an attacker to add a new
|
|||||||
configuration 3 with kernel 1 and fdt 2:
|
configuration 3 with kernel 1 and fdt 2:
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel-1";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
};
|
};
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@2";
|
kernel = "kernel-2";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
};
|
};
|
||||||
conf@3 {
|
conf-3 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel-1";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -250,49 +250,49 @@ So the above example is adjusted to look like this:
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
images {
|
images {
|
||||||
kernel@1 {
|
kernel-1 {
|
||||||
data = <data for kernel1>
|
data = <data for kernel1>
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
value = <...kernel hash 1...>
|
value = <...kernel hash 1...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kernel@2 {
|
kernel-2 {
|
||||||
data = <data for kernel2>
|
data = <data for kernel2>
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
value = <...kernel hash 2...>
|
value = <...kernel hash 2...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@1 {
|
fdt-1 {
|
||||||
data = <data for fdt1>;
|
data = <data for fdt1>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
value = <...fdt hash 1...>
|
value = <...fdt hash 1...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fdt@2 {
|
fdt-2 {
|
||||||
data = <data for fdt2>;
|
data = <data for fdt2>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
value = <...fdt hash 2...>
|
value = <...fdt hash 2...>
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
configurations {
|
configurations {
|
||||||
default = "conf@1";
|
default = "conf-1";
|
||||||
conf@1 {
|
conf-1 {
|
||||||
kernel = "kernel@1";
|
kernel = "kernel-1";
|
||||||
fdt = "fdt@1";
|
fdt = "fdt-1";
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
value = <...conf 1 signature...>;
|
value = <...conf 1 signature...>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
conf@2 {
|
conf-2 {
|
||||||
kernel = "kernel@2";
|
kernel = "kernel-2";
|
||||||
fdt = "fdt@2";
|
fdt = "fdt-2";
|
||||||
signature@1 {
|
signature-1 {
|
||||||
algo = "sha1,rsa2048";
|
algo = "sha1,rsa2048";
|
||||||
value = <...conf 1 signature...>;
|
value = <...conf 1 signature...>;
|
||||||
};
|
};
|
||||||
@ -303,11 +303,11 @@ So the above example is adjusted to look like this:
|
|||||||
|
|
||||||
You can see that we have added hashes for all images (since they are no
|
You can see that we have added hashes for all images (since they are no
|
||||||
longer signed), and a signature to each configuration. In the above example,
|
longer signed), and a signature to each configuration. In the above example,
|
||||||
mkimage will sign configurations/conf@1, the kernel and fdt that are
|
mkimage will sign configurations/conf-1, the kernel and fdt that are
|
||||||
pointed to by the configuration (/images/kernel@1, /images/kernel@1/hash@1,
|
pointed to by the configuration (/images/kernel-1, /images/kernel-1/hash-1,
|
||||||
/images/fdt@1, /images/fdt@1/hash@1) and the root structure of the image
|
/images/fdt-1, /images/fdt-1/hash-1) and the root structure of the image
|
||||||
(so that it isn't possible to add or remove root nodes). The signature is
|
(so that it isn't possible to add or remove root nodes). The signature is
|
||||||
written into /configurations/conf@1/signature@1/value. It can easily be
|
written into /configurations/conf-1/signature-1/value. It can easily be
|
||||||
verified later even if the FIT has been signed with other keys in the
|
verified later even if the FIT has been signed with other keys in the
|
||||||
meantime.
|
meantime.
|
||||||
|
|
||||||
|
@ -102,15 +102,15 @@ Root node of the uImage Tree should have the following layout:
|
|||||||
|
|
|
|
||||||
o images
|
o images
|
||||||
| |
|
| |
|
||||||
| o image@1 {...}
|
| o image-1 {...}
|
||||||
| o image@2 {...}
|
| o image-2 {...}
|
||||||
| ...
|
| ...
|
||||||
|
|
|
|
||||||
o configurations
|
o configurations
|
||||||
|- default = "conf@1"
|
|- default = "conf-1"
|
||||||
|
|
|
|
||||||
o conf@1 {...}
|
o conf-1 {...}
|
||||||
o conf@2 {...}
|
o conf-2 {...}
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ Root node of the uImage Tree should have the following layout:
|
|||||||
This node is a container node for component sub-image nodes. Each sub-node of
|
This node is a container node for component sub-image nodes. Each sub-node of
|
||||||
the '/images' node should have the following layout:
|
the '/images' node should have the following layout:
|
||||||
|
|
||||||
o image@1
|
o image-1
|
||||||
|- description = "component sub-image description"
|
|- description = "component sub-image description"
|
||||||
|- data = /incbin/("path/to/data/file.bin")
|
|- data = /incbin/("path/to/data/file.bin")
|
||||||
|- type = "sub-image type name"
|
|- type = "sub-image type name"
|
||||||
@ -152,8 +152,8 @@ the '/images' node should have the following layout:
|
|||||||
|- load = <00000000>
|
|- load = <00000000>
|
||||||
|- entry = <00000000>
|
|- entry = <00000000>
|
||||||
|
|
|
|
||||||
o hash@1 {...}
|
o hash-1 {...}
|
||||||
o hash@2 {...}
|
o hash-2 {...}
|
||||||
...
|
...
|
||||||
|
|
||||||
Mandatory properties:
|
Mandatory properties:
|
||||||
@ -183,14 +183,14 @@ the '/images' node should have the following layout:
|
|||||||
property of the root node. Mandatory for types: "standalone" and "kernel".
|
property of the root node. Mandatory for types: "standalone" and "kernel".
|
||||||
|
|
||||||
Optional nodes:
|
Optional nodes:
|
||||||
- hash@1 : Each hash sub-node represents separate hash or checksum
|
- hash-1 : Each hash sub-node represents separate hash or checksum
|
||||||
calculated for node's data according to specified algorithm.
|
calculated for node's data according to specified algorithm.
|
||||||
|
|
||||||
|
|
||||||
5) Hash nodes
|
5) Hash nodes
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
o hash@1
|
o hash-1
|
||||||
|- algo = "hash or checksum algorithm name"
|
|- algo = "hash or checksum algorithm name"
|
||||||
|- value = [hash or checksum value]
|
|- value = [hash or checksum value]
|
||||||
|
|
||||||
@ -212,8 +212,8 @@ The 'configurations' node has has the following structure:
|
|||||||
o configurations
|
o configurations
|
||||||
|- default = "default configuration sub-node unit name"
|
|- default = "default configuration sub-node unit name"
|
||||||
|
|
|
|
||||||
o config@1 {...}
|
o config-1 {...}
|
||||||
o config@2 {...}
|
o config-2 {...}
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ o configurations
|
|||||||
|
|
||||||
Each configuration has the following structure:
|
Each configuration has the following structure:
|
||||||
|
|
||||||
o config@1
|
o config-1
|
||||||
|- description = "configuration description"
|
|- description = "configuration description"
|
||||||
|- kernel = "kernel sub-node unit name"
|
|- kernel = "kernel sub-node unit name"
|
||||||
|- ramdisk = "ramdisk sub-node unit name"
|
|- ramdisk = "ramdisk sub-node unit name"
|
||||||
|
@ -9,34 +9,34 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
update@1 {
|
update-1 {
|
||||||
description = "Linux kernel binary";
|
description = "Linux kernel binary";
|
||||||
data = /incbin/("./vmlinux.bin.gz");
|
data = /incbin/("./vmlinux.bin.gz");
|
||||||
compression = "none";
|
compression = "none";
|
||||||
type = "firmware";
|
type = "firmware";
|
||||||
load = <FF700000>;
|
load = <FF700000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
update@2 {
|
update-2 {
|
||||||
description = "Ramdisk image";
|
description = "Ramdisk image";
|
||||||
data = /incbin/("./ramdisk_image.gz");
|
data = /incbin/("./ramdisk_image.gz");
|
||||||
compression = "none";
|
compression = "none";
|
||||||
type = "firmware";
|
type = "firmware";
|
||||||
load = <FF8E0000>;
|
load = <FF8E0000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
update@3 {
|
update-3 {
|
||||||
description = "FDT blob";
|
description = "FDT blob";
|
||||||
data = /incbin/("./blob.fdt");
|
data = /incbin/("./blob.fdt");
|
||||||
compression = "none";
|
compression = "none";
|
||||||
type = "firmware";
|
type = "firmware";
|
||||||
load = <FFAC0000>;
|
load = <FFAC0000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -10,13 +10,13 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
update@1 {
|
update-1 {
|
||||||
description = "U-Boot binary";
|
description = "U-Boot binary";
|
||||||
data = /incbin/("./u-boot.bin");
|
data = /incbin/("./u-boot.bin");
|
||||||
compression = "none";
|
compression = "none";
|
||||||
type = "firmware";
|
type = "firmware";
|
||||||
load = <FFFC0000>;
|
load = <FFFC0000>;
|
||||||
hash@1 {
|
hash-1 {
|
||||||
algo = "sha1";
|
algo = "sha1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -197,7 +197,7 @@ You can take a look at the resulting fit file if you like:
|
|||||||
$ dumpimage -l image.fit
|
$ dumpimage -l image.fit
|
||||||
FIT description: Simple image with single Linux kernel on x86
|
FIT description: Simple image with single Linux kernel on x86
|
||||||
Created: Tue Oct 7 10:57:24 2014
|
Created: Tue Oct 7 10:57:24 2014
|
||||||
Image 0 (kernel@1)
|
Image 0 (kernel)
|
||||||
Description: Vanilla Linux kernel
|
Description: Vanilla Linux kernel
|
||||||
Created: Tue Oct 7 10:57:24 2014
|
Created: Tue Oct 7 10:57:24 2014
|
||||||
Type: Kernel Image
|
Type: Kernel Image
|
||||||
@ -209,7 +209,7 @@ Created: Tue Oct 7 10:57:24 2014
|
|||||||
Entry Point: 0x00000000
|
Entry Point: 0x00000000
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: 446b5163ebfe0fb6ee20cbb7a8501b263cd92392
|
Hash value: 446b5163ebfe0fb6ee20cbb7a8501b263cd92392
|
||||||
Image 1 (setup@1)
|
Image 1 (setup)
|
||||||
Description: Linux setup.bin
|
Description: Linux setup.bin
|
||||||
Created: Tue Oct 7 10:57:24 2014
|
Created: Tue Oct 7 10:57:24 2014
|
||||||
Type: x86 setup.bin
|
Type: x86 setup.bin
|
||||||
@ -217,10 +217,10 @@ Created: Tue Oct 7 10:57:24 2014
|
|||||||
Data Size: 12912 Bytes = 12.61 kB = 0.01 MB
|
Data Size: 12912 Bytes = 12.61 kB = 0.01 MB
|
||||||
Hash algo: sha1
|
Hash algo: sha1
|
||||||
Hash value: a1f2099cf47ff9816236cd534c77af86e713faad
|
Hash value: a1f2099cf47ff9816236cd534c77af86e713faad
|
||||||
Default Configuration: 'config@1'
|
Default Configuration: 'config-1'
|
||||||
Configuration 0 (config@1)
|
Configuration 0 (config-1)
|
||||||
Description: Boot Linux kernel
|
Description: Boot Linux kernel
|
||||||
Kernel: kernel@1
|
Kernel: kernel
|
||||||
|
|
||||||
|
|
||||||
Booting the FIT
|
Booting the FIT
|
||||||
|
@ -578,7 +578,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
|
|||||||
* boot_get_loadable() will take the given FIT configuration, and look
|
* boot_get_loadable() will take the given FIT configuration, and look
|
||||||
* for a field named "loadables". Loadables, is a list of elements in
|
* for a field named "loadables". Loadables, is a list of elements in
|
||||||
* the FIT given as strings. exe:
|
* the FIT given as strings. exe:
|
||||||
* loadables = "linux_kernel@1", "fdt@2";
|
* loadables = "linux_kernel", "fdt-2";
|
||||||
* this function will attempt to parse each string, and load the
|
* this function will attempt to parse each string, and load the
|
||||||
* corresponding element from the FIT into memory. Once placed,
|
* corresponding element from the FIT into memory. Once placed,
|
||||||
* no aditional actions are taken.
|
* no aditional actions are taken.
|
||||||
@ -604,10 +604,10 @@ int boot_get_setup_fit(bootm_headers_t *images, uint8_t arch,
|
|||||||
* @param images Boot images structure
|
* @param images Boot images structure
|
||||||
* @param addr Address of FIT in memory
|
* @param addr Address of FIT in memory
|
||||||
* @param fit_unamep On entry this is the requested image name
|
* @param fit_unamep On entry this is the requested image name
|
||||||
* (e.g. "kernel@1") or NULL to use the default. On exit
|
* (e.g. "kernel") or NULL to use the default. On exit
|
||||||
* points to the selected image name
|
* points to the selected image name
|
||||||
* @param fit_uname_configp On entry this is the requested configuration
|
* @param fit_uname_configp On entry this is the requested configuration
|
||||||
* name (e.g. "conf@1") or NULL to use the default. On
|
* name (e.g. "conf-1") or NULL to use the default. On
|
||||||
* exit points to the selected configuration name.
|
* exit points to the selected configuration name.
|
||||||
* @param arch Expected architecture (IH_ARCH_...)
|
* @param arch Expected architecture (IH_ARCH_...)
|
||||||
* @param datap Returns address of loaded image
|
* @param datap Returns address of loaded image
|
||||||
@ -632,10 +632,10 @@ int boot_get_fdt_fit(bootm_headers_t *images, ulong addr,
|
|||||||
* @param images Boot images structure
|
* @param images Boot images structure
|
||||||
* @param addr Address of FIT in memory
|
* @param addr Address of FIT in memory
|
||||||
* @param fit_unamep On entry this is the requested image name
|
* @param fit_unamep On entry this is the requested image name
|
||||||
* (e.g. "kernel@1") or NULL to use the default. On exit
|
* (e.g. "kernel") or NULL to use the default. On exit
|
||||||
* points to the selected image name
|
* points to the selected image name
|
||||||
* @param fit_uname_configp On entry this is the requested configuration
|
* @param fit_uname_configp On entry this is the requested configuration
|
||||||
* name (e.g. "conf@1") or NULL to use the default. On
|
* name (e.g. "conf-1") or NULL to use the default. On
|
||||||
* exit points to the selected configuration name.
|
* exit points to the selected configuration name.
|
||||||
* @param arch Expected architecture (IH_ARCH_...)
|
* @param arch Expected architecture (IH_ARCH_...)
|
||||||
* @param image_type Required image type (IH_TYPE_...). If this is
|
* @param image_type Required image type (IH_TYPE_...). If this is
|
||||||
@ -658,25 +658,25 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
|
|||||||
/**
|
/**
|
||||||
* fit_get_node_from_config() - Look up an image a FIT by type
|
* fit_get_node_from_config() - Look up an image a FIT by type
|
||||||
*
|
*
|
||||||
* This looks in the selected conf@ node (images->fit_uname_cfg) for a
|
* This looks in the selected conf- node (images->fit_uname_cfg) for a
|
||||||
* particular image type (e.g. "kernel") and then finds the image that is
|
* particular image type (e.g. "kernel") and then finds the image that is
|
||||||
* referred to.
|
* referred to.
|
||||||
*
|
*
|
||||||
* For example, for something like:
|
* For example, for something like:
|
||||||
*
|
*
|
||||||
* images {
|
* images {
|
||||||
* kernel@1 {
|
* kernel {
|
||||||
* ...
|
* ...
|
||||||
* };
|
* };
|
||||||
* };
|
* };
|
||||||
* configurations {
|
* configurations {
|
||||||
* conf@1 {
|
* conf-1 {
|
||||||
* kernel = "kernel@1";
|
* kernel = "kernel";
|
||||||
* };
|
* };
|
||||||
* };
|
* };
|
||||||
*
|
*
|
||||||
* the function will return the node offset of the kernel@1 node, assuming
|
* the function will return the node offset of the kernel@1 node, assuming
|
||||||
* that conf@1 is the chosen configuration.
|
* that conf-1 is the chosen configuration.
|
||||||
*
|
*
|
||||||
* @param images Boot images structure
|
* @param images Boot images structure
|
||||||
* @param prop_name Property name to look up (FIT_..._PROP)
|
* @param prop_name Property name to look up (FIT_..._PROP)
|
||||||
@ -1022,10 +1022,10 @@ int fit_conf_get_node(const void *fit, const char *conf_uname);
|
|||||||
* @noffset: Offset of conf@xxx node to check
|
* @noffset: Offset of conf@xxx node to check
|
||||||
* @prop_name: Property to read from the conf node
|
* @prop_name: Property to read from the conf node
|
||||||
*
|
*
|
||||||
* The conf@ nodes contain references to other nodes, using properties
|
* The conf- nodes contain references to other nodes, using properties
|
||||||
* like 'kernel = "kernel@1"'. Given such a property name (e.g. "kernel"),
|
* like 'kernel = "kernel"'. Given such a property name (e.g. "kernel"),
|
||||||
* return the offset of the node referred to (e.g. offset of node
|
* return the offset of the node referred to (e.g. offset of node
|
||||||
* "/images/kernel@1".
|
* "/images/kernel".
|
||||||
*/
|
*/
|
||||||
int fit_conf_get_prop_node(const void *fit, int noffset,
|
int fit_conf_get_prop_node(const void *fit, int noffset,
|
||||||
const char *prop_name);
|
const char *prop_name);
|
||||||
|
15
test/run
15
test/run
@ -17,6 +17,21 @@ run_test ./test/py/test.py --bd sandbox_spl --build -k \
|
|||||||
# Run tests for the flat DT version of sandbox
|
# Run tests for the flat DT version of sandbox
|
||||||
./test/py/test.py --bd sandbox_flattree --build
|
./test/py/test.py --bd sandbox_flattree --build
|
||||||
|
|
||||||
|
DTC_DIR=build-sandbox_spl/scripts/dtc
|
||||||
|
|
||||||
|
PYTHONPATH=${DTC_DIR}/pylibfdt DTC=${DTC_DIR}/dtc run_test \
|
||||||
|
./tools/binman/binman -t
|
||||||
|
run_test ./tools/patman/patman --test
|
||||||
|
run_test ./tools/buildman/buildman -t
|
||||||
|
PYTHONPATH=${DTC_DIR}/pylibfdt DTC=${DTC_DIR}/dtc run_test ./tools/dtoc/dtoc -t
|
||||||
|
|
||||||
|
# This needs you to set up Python test coverage tools.
|
||||||
|
# To enable Python test coverage on Debian-type distributions (e.g. Ubuntu):
|
||||||
|
# $ sudo apt-get install python-pip python-pytest
|
||||||
|
# $ sudo pip install coverage
|
||||||
|
PYTHONPATH=${DTC_DIR}/pylibfdt DTC=${DTC_DIR}/dtc run_test \
|
||||||
|
./tools/binman/binman -T
|
||||||
|
|
||||||
if [ $result == 0 ]; then
|
if [ $result == 0 ]; then
|
||||||
echo "Tests passed!"
|
echo "Tests passed!"
|
||||||
else
|
else
|
||||||
|
@ -536,6 +536,10 @@ entry contents.
|
|||||||
Most of the time such essoteric behaviour is not needed, but it can be
|
Most of the time such essoteric behaviour is not needed, but it can be
|
||||||
essential for complex images.
|
essential for complex images.
|
||||||
|
|
||||||
|
If you need to specify a particular device-tree compiler to use, you can define
|
||||||
|
the DTC environment variable. This can be useful when the system dtc is too
|
||||||
|
old.
|
||||||
|
|
||||||
|
|
||||||
History / Credits
|
History / Credits
|
||||||
-----------------
|
-----------------
|
||||||
|
@ -79,7 +79,8 @@ def EnsureCompiled(fname):
|
|||||||
'-W', 'no-unit_address_vs_reg']
|
'-W', 'no-unit_address_vs_reg']
|
||||||
args.extend(search_list)
|
args.extend(search_list)
|
||||||
args.append(dts_input)
|
args.append(dts_input)
|
||||||
command.Run('dtc', *args)
|
dtc = os.environ.get('DTC') or 'dtc'
|
||||||
|
command.Run(dtc, *args)
|
||||||
return dtb_output
|
return dtb_output
|
||||||
|
|
||||||
def GetInt(node, propname, default=None):
|
def GetInt(node, propname, default=None):
|
||||||
|
@ -185,7 +185,7 @@ static void get_basename(char *str, int size, const char *fname)
|
|||||||
* fit_write_images() - Write out a list of images to the FIT
|
* fit_write_images() - Write out a list of images to the FIT
|
||||||
*
|
*
|
||||||
* We always include the main image (params->datafile). If there are device
|
* We always include the main image (params->datafile). If there are device
|
||||||
* tree files, we include an fdt@ node for each of those too.
|
* tree files, we include an fdt- node for each of those too.
|
||||||
*/
|
*/
|
||||||
static int fit_write_images(struct image_tool_params *params, char *fdt)
|
static int fit_write_images(struct image_tool_params *params, char *fdt)
|
||||||
{
|
{
|
||||||
@ -199,7 +199,7 @@ static int fit_write_images(struct image_tool_params *params, char *fdt)
|
|||||||
|
|
||||||
/* First the main image */
|
/* First the main image */
|
||||||
typename = genimg_get_type_short_name(params->fit_image_type);
|
typename = genimg_get_type_short_name(params->fit_image_type);
|
||||||
snprintf(str, sizeof(str), "%s@1", typename);
|
snprintf(str, sizeof(str), "%s-1", typename);
|
||||||
fdt_begin_node(fdt, str);
|
fdt_begin_node(fdt, str);
|
||||||
fdt_property_string(fdt, "description", params->imagename);
|
fdt_property_string(fdt, "description", params->imagename);
|
||||||
fdt_property_string(fdt, "type", typename);
|
fdt_property_string(fdt, "type", typename);
|
||||||
@ -225,7 +225,7 @@ static int fit_write_images(struct image_tool_params *params, char *fdt)
|
|||||||
for (cont = params->content_head; cont; cont = cont->next) {
|
for (cont = params->content_head; cont; cont = cont->next) {
|
||||||
if (cont->type != IH_TYPE_FLATDT)
|
if (cont->type != IH_TYPE_FLATDT)
|
||||||
continue;
|
continue;
|
||||||
snprintf(str, sizeof(str), "%s@%d", FIT_FDT_PROP, ++upto);
|
snprintf(str, sizeof(str), "%s-%d", FIT_FDT_PROP, ++upto);
|
||||||
fdt_begin_node(fdt, str);
|
fdt_begin_node(fdt, str);
|
||||||
|
|
||||||
get_basename(str, sizeof(str), cont->fname);
|
get_basename(str, sizeof(str), cont->fname);
|
||||||
@ -243,7 +243,7 @@ static int fit_write_images(struct image_tool_params *params, char *fdt)
|
|||||||
|
|
||||||
/* And a ramdisk file if available */
|
/* And a ramdisk file if available */
|
||||||
if (params->fit_ramdisk) {
|
if (params->fit_ramdisk) {
|
||||||
fdt_begin_node(fdt, FIT_RAMDISK_PROP "@1");
|
fdt_begin_node(fdt, FIT_RAMDISK_PROP "-1");
|
||||||
|
|
||||||
fdt_property_string(fdt, "type", FIT_RAMDISK_PROP);
|
fdt_property_string(fdt, "type", FIT_RAMDISK_PROP);
|
||||||
fdt_property_string(fdt, "os", genimg_get_os_short_name(params->os));
|
fdt_property_string(fdt, "os", genimg_get_os_short_name(params->os));
|
||||||
@ -277,41 +277,41 @@ static void fit_write_configs(struct image_tool_params *params, char *fdt)
|
|||||||
int upto;
|
int upto;
|
||||||
|
|
||||||
fdt_begin_node(fdt, "configurations");
|
fdt_begin_node(fdt, "configurations");
|
||||||
fdt_property_string(fdt, "default", "conf@1");
|
fdt_property_string(fdt, "default", "conf-1");
|
||||||
|
|
||||||
upto = 0;
|
upto = 0;
|
||||||
for (cont = params->content_head; cont; cont = cont->next) {
|
for (cont = params->content_head; cont; cont = cont->next) {
|
||||||
if (cont->type != IH_TYPE_FLATDT)
|
if (cont->type != IH_TYPE_FLATDT)
|
||||||
continue;
|
continue;
|
||||||
typename = genimg_get_type_short_name(cont->type);
|
typename = genimg_get_type_short_name(cont->type);
|
||||||
snprintf(str, sizeof(str), "conf@%d", ++upto);
|
snprintf(str, sizeof(str), "conf-%d", ++upto);
|
||||||
fdt_begin_node(fdt, str);
|
fdt_begin_node(fdt, str);
|
||||||
|
|
||||||
get_basename(str, sizeof(str), cont->fname);
|
get_basename(str, sizeof(str), cont->fname);
|
||||||
fdt_property_string(fdt, "description", str);
|
fdt_property_string(fdt, "description", str);
|
||||||
|
|
||||||
typename = genimg_get_type_short_name(params->fit_image_type);
|
typename = genimg_get_type_short_name(params->fit_image_type);
|
||||||
snprintf(str, sizeof(str), "%s@1", typename);
|
snprintf(str, sizeof(str), "%s-1", typename);
|
||||||
fdt_property_string(fdt, typename, str);
|
fdt_property_string(fdt, typename, str);
|
||||||
|
|
||||||
if (params->fit_ramdisk)
|
if (params->fit_ramdisk)
|
||||||
fdt_property_string(fdt, FIT_RAMDISK_PROP,
|
fdt_property_string(fdt, FIT_RAMDISK_PROP,
|
||||||
FIT_RAMDISK_PROP "@1");
|
FIT_RAMDISK_PROP "-1");
|
||||||
|
|
||||||
snprintf(str, sizeof(str), FIT_FDT_PROP "@%d", upto);
|
snprintf(str, sizeof(str), FIT_FDT_PROP "-%d", upto);
|
||||||
fdt_property_string(fdt, FIT_FDT_PROP, str);
|
fdt_property_string(fdt, FIT_FDT_PROP, str);
|
||||||
fdt_end_node(fdt);
|
fdt_end_node(fdt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!upto) {
|
if (!upto) {
|
||||||
fdt_begin_node(fdt, "conf@1");
|
fdt_begin_node(fdt, "conf-1");
|
||||||
typename = genimg_get_type_short_name(params->fit_image_type);
|
typename = genimg_get_type_short_name(params->fit_image_type);
|
||||||
snprintf(str, sizeof(str), "%s@1", typename);
|
snprintf(str, sizeof(str), "%s-1", typename);
|
||||||
fdt_property_string(fdt, typename, str);
|
fdt_property_string(fdt, typename, str);
|
||||||
|
|
||||||
if (params->fit_ramdisk)
|
if (params->fit_ramdisk)
|
||||||
fdt_property_string(fdt, FIT_RAMDISK_PROP,
|
fdt_property_string(fdt, FIT_RAMDISK_PROP,
|
||||||
FIT_RAMDISK_PROP "@1");
|
FIT_RAMDISK_PROP "-1");
|
||||||
|
|
||||||
fdt_end_node(fdt);
|
fdt_end_node(fdt);
|
||||||
}
|
}
|
||||||
|
@ -270,16 +270,16 @@ static int fit_image_process_sig(const char *keydir, void *keydest,
|
|||||||
*
|
*
|
||||||
* Input component image node structure:
|
* Input component image node structure:
|
||||||
*
|
*
|
||||||
* o image@1 (at image_noffset)
|
* o image-1 (at image_noffset)
|
||||||
* | - data = [binary data]
|
* | - data = [binary data]
|
||||||
* o hash@1
|
* o hash-1
|
||||||
* |- algo = "sha1"
|
* |- algo = "sha1"
|
||||||
*
|
*
|
||||||
* Output component image node structure:
|
* Output component image node structure:
|
||||||
*
|
*
|
||||||
* o image@1 (at image_noffset)
|
* o image-1 (at image_noffset)
|
||||||
* | - data = [binary data]
|
* | - data = [binary data]
|
||||||
* o hash@1
|
* o hash-1
|
||||||
* |- algo = "sha1"
|
* |- algo = "sha1"
|
||||||
* |- value = sha1(data)
|
* |- value = sha1(data)
|
||||||
*
|
*
|
||||||
@ -321,7 +321,7 @@ int fit_image_add_verification_data(const char *keydir, void *keydest,
|
|||||||
/*
|
/*
|
||||||
* Check subnode name, must be equal to "hash" or "signature".
|
* Check subnode name, must be equal to "hash" or "signature".
|
||||||
* Multiple hash nodes require unique unit node
|
* Multiple hash nodes require unique unit node
|
||||||
* names, e.g. hash@1, hash@2, signature@1, etc.
|
* names, e.g. hash-1, hash-2, signature-1, etc.
|
||||||
*/
|
*/
|
||||||
node_name = fit_get_name(fit, noffset, NULL);
|
node_name = fit_get_name(fit, noffset, NULL);
|
||||||
if (!strncmp(node_name, FIT_HASH_NODENAME,
|
if (!strncmp(node_name, FIT_HASH_NODENAME,
|
||||||
|
Loading…
Reference in New Issue
Block a user