linux FIT 映像无法使用标准 bootm、bootz 启动

linux FIT 映像无法使用标准 bootm、bootz 启动

我正在尝试使用建议的 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 ...      

有人可以帮助我了解为什么会出现此错误吗?谢谢

相关内容