$ ./out/target/product/project_name/obj/KERNEL_OBJ/scripts/dtc/dtc -I dtb -O dts -o decompiled.dts ~/project/linux_repo/out/target/product/project_name/obj/KERNEL_OBJ/arch/arm64/boot/dts/your.dtb

也就是

scripts/dtc/dtc -I dtb -O dts -o you_want.dts your.dtb

Usage: dtc [options] <input file>

  • -I, --in-format <arg>

    Input formats are:

    dts - device tree source text

    dtb - device tree blob

    fs - /proc/device-tree style directory

  • -O, --out-format <arg>

    Output formats are:

    dts - device tree source text

    dtb - device tree blob

    asm - assembler source

  • -o, --out <arg>

    Output file

注意

一個是大寫 O

一個是小寫 o

以 Qualcomm MSM8917 為例

Qualcomm code base 會 build 出許多 .dtb,

因此需先找出 project 所使用到的 .dtb

在 uart log 中會有類似以下的 log

 146 [    0.000000] Machine: Qualcomm Technologies, Inc. MSM8917-PMI8940 MTP

Machine: 後面的字串就是您所使用的 device tree file 的 model,

在 android/kernel/msm-3.18/arch/arm/boot/dts/qcom/ 目錄下 grep 此字串,

$ grep -rns "Qualcomm Technologies, Inc. MSM8917-PMI8940 MTP"
arm/boot/dts/qcom/msm8917-pmi8940-mtp.dts:20: model = "Qualcomm Technologies, Inc. MSM8917-PMI8940 MTP";

msm8917-pmi8940-mtp 就是此 project 所使用的 dtb,

到 android/out/ 搜尋 msm8917-pmi8940-mtp.dtb,

android/out$ find -name "msm8917-pmi8940-mtp.dtb"
./target/product/msm8937_64/obj/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8917-pmi8940-mtp.dtb

到 android/out/ 搜尋 dtc 執行檔,

$ find -name dtc
./target/product/msm8937_64/obj/kernel/msm-3.18/scripts/dtc/dtc

最後再反譯 dtb 為 dts,

android/out$ ./target/product/msm8937_64/obj/kernel/msm-3.18/scripts/dtc/dtc -I dtb -O dts -o decompiled.dts ./target/product/msm8937_64/obj/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8917-pmi8940-mtp.dtb

decompiled.dts 就是此 project 所有被使用到的 dts 的集合。

以 MTK mt6755 為例

mtk code base 只會 build 出一個 .dtb,

所以直接到 linux_repo/out 下搜尋 *.dtb

linux_repo/out$ find -name "*.dtb"
./target/product/XXXXXXXXXX/obj/KERNEL_OBJ/arch/arm64/boot/dts/XXXXXXXXXX.dtb

到 linux_repo/out 下搜尋 dtc 執行檔

linux_repo/out$ find -name "dtc"
./target/product/XXXXXXXXXX/obj/KERNEL_OBJ/scripts/dtc/dtc

最後再反譯 dtb 為 dts,

linux_repo/out$ ./target/product/XXXXXXXXXX/obj/KERNEL_OBJ/scripts/dtc/dtc -I dtb -O dts -o decompiled.dts ./target/product/XXXXXXXXXX/obj/KERNEL_OBJ/arch/arm64/boot/dts/XXXXXXX.dtb

decompiled.dts 就是此 project 所有被使用到的 dts 的集合。

[device tree] How to decompile a compiled .dtb (device tree blog) into .dts (device tree source).的更多相关文章

  1. [dts]Device Tree机制

    转自:http://blog.csdn.net/machiner1/article/details/47805069 ------------------Based on linux 3.10.24 ...

  2. [dts]Device Tree机制【转】

    转自:https://www.cnblogs.com/aaronLinux/p/5496559.html 转自:http://blog.csdn.net/machiner1/article/detai ...

  3. Linux DTS(Device Tree Source)设备树详解之二(dts匹配及发挥作用的流程篇)【转】

    转自:https://blog.csdn.net/radianceblau/article/details/74722395 版权声明:本文为博主原创文章,未经博主允许不得转载.如本文对您有帮助,欢迎 ...

  4. [dts]Device Tree格式解析

    转自:http://blog.csdn.net/airk000/article/details/21345159 目录: 1. 作用 2. 基本数据格式 3. 一些基本概念 4. 工作方式 a. 地址 ...

  5. postgresql 日志报错could not write to log file: No space left on device,could not write lock file "postmaster.pid": No space left on device

    今天遇到了一个特别奇怪的问题,我在用docker容器的时候,发现我的postgresql怎么也启动不起来 尝试了N多种办法,最后看了看postgresql的日志发现 postgresql 日志中报错 ...

  6. 使用dtc把dtb的反编译为dts

    sudo apt-get install device-tree-compiler dtc -I dtb -O dts msm8976-v1.1-qrd.dtb > msm8976-v1.1-q ...

  7. 學習 DT device tree 以 ST 的開發板 STM32F429i-disc1 為例

    目標 因為對 device tree 不是很熟悉, 所以就將 device tree, 設為學習目標. 啟動 注意, 這篇隨筆的解說都放在最下面,會標 Explanation_XX,只要搜尋 Expl ...

  8. Device Tree(二):基本概念

    转自:http://www.wowotech.net/linux_kenrel/dt_basic_concept.html 一.前言 一些背景知识(例如:为何要引入Device Tree,这个机制是用 ...

  9. Linux and the Device Tree

    来之\kernel\Documentation\devicetree\usage-model.txt Linux and the Device Tree ----------------------- ...

随机推荐

  1. 【其他】UTF-8带签名与不带签名

    在 Visual Web Developer 另存为文件时,有编码选项,其中有: Unicode (UTF-8 with signature) - Codepage 65001 Unicode (UT ...

  2. Activiti5工作流笔记一

    介绍工作流 网上工作流的定义一大堆,这里就不去复制了,通俗的理解,工作流就是类似OA系统中请假审批.报销审批等一系列流程,下级提交的申请只有直系领导才能审批,其他人是没有权限的,而只有直系领导审批通过 ...

  3. Go语言【第八篇】:Go语言变量作用域

    Go语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围,Go语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量: 函数外定义的变量称为全局变量: 函数 ...

  4. 【刷题】BZOJ 3175 [Tjoi2013]攻击装置

    Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照"日"字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1), ...

  5. 【刷题】SPOJ 1811 LCS - Longest Common Substring

    A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is the s ...

  6. BZOJ2654 & 洛谷2619:tree——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2654 https://www.luogu.org/problemnew/show/P2619 给你 ...

  7. BZOJ4571:[SCOI2016]美味——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4571 https://www.luogu.org/problemnew/show/P3293 一家 ...

  8. BZOJ2005:[Noi2010]能量采集——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2005 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光 ...

  9. HDU3157:Crazy Circuits——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=3157 题目大意:给一个电路 ,起点为+,终点为-,包括起点终点在内的电元件之间有有下界边,求最小流. ————— ...

  10. 51NOD 1594:Gcd and Phi——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1594 参考及详细推导:http://www.cnblogs.com/ri ...