제안된 bootm 또는 bootz 명령을 사용하여 FIT 이미지에서 Linux 커널을 부팅하려고 합니다.
이것은 .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";
};
};
};
그런 다음 0x80000000의 tftp를 사용 하고 iminfo를 사용하여 보드에 장착된 이미지를 로드합니다.
## 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+
다음 프로세스를 통해 커널을 올바르게 실행할 수 있었고
FIT에서 조각을 추출하여 메모리에 로드했습니다.
imxtract 0x80000000 kernel@2 0x81800000
imxtract 0x80000000 fdt@1 0x83000000
그런 다음 마지막으로 일부 구성 매개변수를 실행합니다.
bootm 81800000 - 83000000
이건 완벽한 직업이야
이제 내가 시도하는 것은 FIT에서 커널 이미지를 추출하는 것이 아닙니다. fdt만 추출합니다
imxtract 0x80000000 fdt@1 0x83000000
이전 구성을 실행
하고 실행해 보세요.
bootm 80000000:kernel@2 - 83000000
이것은 내가 얻는 오류입니다
=> 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 ...
이 오류가 발생하는 이유를 이해하도록 도와줄 수 있는 사람이 있나요? 감사해요