Estou tentando iniciar o kernel do Linux a partir de uma imagem FIT com o comando sugerido, bootm ou bootz.
Este é o arquivo .its
/dts-v1/;
/ {
description = "Simple image with single Linux kernel and FDT blob";
#address-cells = <1>;
images {
script@1 {
description = "Bootscript";
data = /incbin/("/home/dvdk/lynx/boot_original.scr");
type = "script";
rch = "arm";
os= "linux";
compression = "none";
load = <0x81000000>;
entry = <0x81000000>;
};
kernel@1 {
description = "Linux zImge_signed kernel";
data = /incbin/("/home/dvdk/lynx/cst-2.3.2/linux64/xuelk-1.2.1_zImage");
type = "kernel";
arch = "arm";
os= "linux";
compression = "none";
load = <0x81800000>;
entry = <0x81800000>;
hash@1 {
algo= "crc32";
};
hash@2 {
algo= "sha1";
};
};
kernel@2 {
description = "Linux uImage kernel";
data = /incbin/("/home/dvdk/lynx/linux/arch/arm/boot/uImage");
type = "kernel";
arch = "arm";
os= "linux";
compression = "none";
load = <0x81800000>;
entry = <0x81800000>;
hash@1 {
algo= "crc32";
};
hash@2 {
algo= "sha1";
};
};
fdt@1 {
description = "Flattened Device Tree blob";
data = /incbin/("/home/dvdk/lynx/linux/arch/arm/boot/dts/imx6ul-lynx-som000c.dtb");
type = "flat_dt";
arch = "arm";
compression = "none";
hash@1 {
algo= "crc32";
};
hash@2 {
algo= "sha1";
};
};
};
configurations {
default = "conf@1";
conf@1 {
description = "Boot Linux kernel with FDT blob";
kernel = "kernel@1";
fdt= "fdt@1";
};
};
};
Em seguida, carrego a imagem de ajuste na placa com um tftp em 0x80000000
e com iminfo eu obtenho
## Checking Image at 80000000 ...
FIT image found
FIT description: Simple image with single Linux kernel and FDT blob
Image 0 (script@1)
Description: Bootscript
Type: Script
Compression: uncompressed
Data Start: 0x800000e0
Data Size: 489 Bytes = 489 Bytes
Image 1 (kernel@1)
Description: Linux zImge_signed kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x80000380
Data Size: 6812760 Bytes = 6.5 MiB
Architecture: ARM
OS: Linux
Load Address: 0x81800000
Entry Point: 0x81800000
Hash algo: crc32
Hash value: e9192982
Hash algo: sha1
Hash value: 3b363dcf6d15f4a598c7594f305cc71a47622614
Image 2 (kernel@2)
Description: Linux uImage kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x8067f8fc
Data Size: 6807040 Bytes = 6.5 MiB
Architecture: ARM
OS: Linux
Load Address: 0x81800000
Entry Point: 0x81800000
Hash algo: crc32
Hash value: f0d366b2
Hash algo: sha1
Hash value: afe5a545b572343213dcb229b9a0faf646bfc740
Image 3 (fdt@1)
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x80cfd824
Data Size: 33011 Bytes = 32.2 KiB
Architecture: ARM
Hash algo: crc32
Hash value: 891f89b2
Hash algo: sha1
Hash value: 1c99856e227f1333e8adcff4552b4ea85e74efab
Default Configuration: 'conf@1'
Configuration 0 (conf@1)
Description: Boot Linux kernel with FDT blob
Kernel: kernel@1
FDT: fdt@1
## Checking hash(es) for FIT Image at 80000000 ...
Hash(es) for Image 0 (script@1):
Hash(es) for Image 1 (kernel@1): crc32+ sha1+
Hash(es) for Image 2 (kernel@2): crc32+ sha1+
Hash(es) for Image 3 (fdt@1): crc32+ sha1+
Com o procedimento a seguir, posso executar corretamente o kernel | Eu extraio as peças do FIT e as carrego na memória
imxtract 0x80000000 kernel@2 0x81800000
imxtract 0x80000000 fdt@1 0x83000000
em seguida, execute alguns argumentos de configuração e finalmente
bootm 81800000 - 83000000
ISSO ESTÁ PERFEITAMENTE TRABALHANDO
Agora, o que tentei não é extrair a imagem do kernel do FIT. Eu só extraio o fdt
imxtract 0x80000000 fdt@1 0x83000000
executar as configurações anteriores
e tente executar
bootm 80000000:kernel@2 - 83000000
e este é o erro que obtenho
=> bootm 80000000:kernel@2 - 83000000
## Loading kernel from FIT Image at 80000000 ...
Trying 'kernel@2' kernel subimage
Description: Linux uImage kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x8067f8fc
Data Size: 6807040 Bytes = 6.5 MiB
Architecture: ARM
OS: Linux
Load Address: 0x81800000
Entry Point: 0x81800000
Hash algo: crc32
Hash value: f0d366b2
Hash algo: sha1
Hash value: afe5a545b572343213dcb229b9a0faf646bfc740
Verifying Hash Integrity ... crc32+ sha1+ OK
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Loading Kernel Image ... OK
reserving fdt memory region: addr=83000000 size=9000
Using Device Tree in place at 83000000, end 8300bfff
Modify /soc/aips-bus@02000000/bee@02044000:status disabled
ft_system_setup for mx6
Starting kernel ...
prefetch abort
pc : [<7fa93454>] lr : [<81800008>]
reloc pc : [<6737e454>] lr : [<690eb008>]
sp : 9ef12c90 ip : 0000000c fp : 9ff18a2c
r10: 9ef3a3ec r9 : 9ef12eb8 r8 : 00000000
r7 : 00000000 r6 : 81800000 r5 : 9ff9ef98 r4 : 00000000
r3 : 00009000 r2 : 83000000 r1 : 00000000 r0 : 9ef12fb0
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
resetting ...
Alguém pode me ajudar com algumas ideias de porque esse erro ocorre? obrigado