OpenWrt 内核阶段导出dtb为dts

  1. /sys/firmware/fdt 该文件表示原始DTB文件,可用hexdump -C /sys/firmware/fdt 查看

  2. scp拷贝fdt到Host主机中

    scp    /sys/firmware/fdt root@192.168.0.1:/home/book/tmp
    
  3. 转换fdt为dts文件

    cd /home/book/tmp
    dtc -I dtb -O dts -o cp01-c2.dts  fdt
    
    #最终的dts文件为cp01-c2.dts,
    
  4. 加入工程编译

    以高通的qca/src/linux-4.4/arch/arm64/boot/dts/qcom/qcom-ipq6018-cp01-c2.dts为例说明:

    • if 0先屏蔽以前的,#else中加入cp01-c2.dts里面的所有内容

      #if 0
      /dts-v1/;
      
      
      #include "qcom-ipq6018-cp01.dtsi"
      #include "qcom-ipq6018-rpm-regulator.dtsi"
      #include "qcom-ipq6018-cpr-regulator.dtsi"
      #include "qcom-ipq6018-cp-cpu.dtsi"
      #include "qcom-ipq6018-ion.dtsi"
      / {
      	model = "Qualcomm Technologies, Inc. IPQ6018/AP-CP01-C2";
         //此处省略N行
      };
      
      
      #else
      
      
      //面是拷贝的刚生成的cp01-c2.dts里面的所有内容
      /dts-v1/;
      #include "qcom-ipq6018-cp01.dtsi"
      ///memreserve/	0x00000000484ea000 0x0000000000014000;
      / {
      	soc_version_minor = <0x0>;
      	soc_version_major = <0x1000000>;
      	cpu_type = <0xa6010000>;
      	flash_type = <0x7000000>;
      	rpm_version = [43 52 4d 2d 52 50 4d 2e 42 46 2e 32 2e 34 2e 31 2d 30 30 30 38 39 0a];
      	tz_version = [43 52 4d 2d 54 5a 2e 57 4e 53 2e 35 2e 31 2d 30 30 31 32 37 0a];
      	boot_version = [63 72 6d 2d 75 62 75 6e 74 75 31 32 31 2d 42 4f 4f 54 2e 58 46 2e 30 2e 33 2d 30 30 30 39 38 2d 49 50 51 36 30 78 78 4c 5a 42 2d 31 0a];
      	machid = <0x1000308>;
        //此处省略N行
      };
      
  5. 编译后烧录即可