[ARM Linux 驱动开发] linux 设备树

of_parse_phandle_with_args函数详解

结合设备信息集合,探究设备和驱动是如何绑定的

reg 寄存器


Devicetree specification

反汇编
dtc -I dtb -O dts -o out.dts …/…/arch/arm/boot/dts/qcom/msm8909-1gb-qrd-skue.dtb

dtc -I dtb -O dts -o out.dts …/…/arch/arm/boot/dts/qcom/msm8909-1gb-mtp.dtb

dts:
node_name@address{
}
两个节点名字可以一样,但是里面的 address不能一样
节点上的地址address只是设备节点本身的地址,并不是cpu的可用地址,即
非根节点上的子节点的address使用的不是cpu的地址域,为了得到一个内存映射地址,设备树必须要指定一个域转换另外一个域的方法,这里用range
range是地址转换的列表,i2c总线下的设备里,缺少range属性,表示此设备不能被此设备的父设备的其他设备访问
根节点始终描述的是 cpu的地址空间
根节点下的子节点已经使用的是 cpu的地址域,所以不需要任何直接映射

#address-cells=<2>;
#size-cells=<1>;

ethernet@0.0{
reg=<0,0,0x100000>
地址有两个cell,其中一个是片选,另一个是片选基地址,即编移是,第三个是大小
}

必须要了解的知识:
在启动过程中传参:
R0:cp#15 control register
R1 :machine ID
R2:atags or pointer-->传到内核_fdt_pointer(lk加载dtb到内存的物理地址)
R3:process ID即进程ID

pbl->sbl1->lk->kernel-ramdisk

kernel中:
start_kernel->set_arch->setup_machine_fdt->
early_init_dt_verify->fdt_check_header检测DTB头部

编译kernel

make kernel

make -C kernel/msm-3.18 O=…/…/out/target/product/msm8909/obj/kernel/msm-3.18 ARCH=arm CROSS_COMPILE=arm-none-gnueabi-

make -C kernel/msm-3.18 O=../../out/target/product/msm8953_64/obj/kernel/msm-3.18 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- KCFLAGS=-mno-android

dtb存储结构
其存储的类型为:
头部header
设备树结构块
字符串-设备节点属性键值对

struct fdt_header {uint32_t magic;            /* magic word FDT_MAGIC */uint32_t totalsize;       /* total size of DT block */uint32_t off_dt_struct;         /* offset to structure */uint32_t off_dt_strings;   /* offset to strings */uint32_t off_mem_rsvmap;     /* offset to memory reserve map */uint32_t version;         /* format version */uint32_t last_comp_version;     /* last compatible version *//* version 2 fields below */uint32_t boot_cpuid_phys;  /* Which physical CPU id we'rebooting on *//* version 3 fields below */uint32_t size_dt_strings;   /* size of the strings block *//* version 17 fields below */uint32_t size_dt_struct;    /* size of the structure block */
}

dts 包含关系
查找dtb.dts.tmp 结尾的文件


有时发送打开i2c总是打不开,不能生成dtb在文件系统对应的节点
DTBO简介

原来在设置叠加层中关掉了


发现启动卡中有了对应的文件,应该是没有去掉或修改才不生效,解决办法,删除对应的dtbo,或修改对应dtbo源文件再替换


对比生效

205000生成
=>

也可以通过查status状态,来判断实际运行是关闭还是打开(反编译查看dtb查不出来当前是打开还是关闭,因为是运行时被修改了),再搜索是哪里个可疑的文件覆盖了

qcom dts知识相关推荐

  1. 开放下载!《DTS控制台入门一本通》

    简介:零基础快速入门DTS,一书在手,自学无忧,云运维工程师不可错过的匠心之作 本书图文结合,内容通俗易懂,逐层深入,重点内容详细剖析.通过作者透彻而睿智的描述,使读者在阅读本书时可以更加快速的了解到 ...

  2. Android 驱动(10)----设备树(二)linux内核顶层am335x-evm.dts

    设备树(二)linux内核顶层am335x-evm.dts 摘自:http://blog.csdn.net/xiaojiezuo123/article/details/49890507 了解基本的dt ...

  3. qcom camera eeprom actuator pdaf bring up

    这个是是对qcom camera bring up的补充:https://blog.csdn.net/wing12345678910/article/details/79261931 添加了eepro ...

  4. DTS入门知识(转载)

    一.dts产生原因........................................................................................... ...

  5. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  6. android dts的作用,DTS相关知识

    一.DTS 学习 1. kernel/arch/arm/boot/dts 目录下包含所有的dts. a. board , msm8226.dtsi b. pmic, msm-pm8226.dtsi 2 ...

  7. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解

    Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...

  8. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  9. DTS文件详解,DTS文件解析

    一.什么是DTS?为什么要引入DTS? DTS即Device Tree Source 设备树源码, Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware (OF). 在L ...

最新文章

  1. HOGDescriptor 描述类
  2. 笔记 | PyTorch张量Tensor的一些必备操作
  3. Github学习系列之Github是什么?
  4. Python入门100题 | 第079题
  5. 以下关于java中布局管理说法错误的是_对于 Java 中的布局管理器,以下说法中错误的是( )。_2019复习答案_学小易找答案...
  6. Tcp连接arp协议详解
  7. php nginx日志分析,如何通过NGINX的log日志来分析网站的访问情况,试试这些命令...
  8. win10 update 关闭计算机,Win10关闭Windows Update服务的方法
  9. python更改文件路径 unable_python 安装无效:无法打开/usr/lib/python2. 7/config/Makefile ( 没有此类文件或者目录)...
  10. Ubuntu下利用QSS、WPS破解wpa/wpa2加密
  11. AppFabric 使用
  12. Unity 日志管理系统
  13. 网安学习(二十五)HTTP协议、HTTS、邮件协议
  14. python_split()函数使用方法
  15. make install - make uninstall - make clean 命令介绍
  16. CISSP考试指南笔记:1.1安全目标
  17. 二维火:智能餐饮云端互联是如何实现的?
  18. Citrix XenCenter 基本命令
  19. 学术界为啥不爱投中文期刊?
  20. Anaconda 的安装教程(图文)

热门文章

  1. Gparted的安装使用,
  2. Random Forest和Gradient Tree Boosting模型如何调参
  3. apt-cache手册翻译
  4. 更新|Cheetah: 精简快速的安全两方DNN推理
  5. Voleview安装和使用需注意的一些细节
  6. DSP TMS320F2803x、TMS320F2806x CPU Timer定时器开发笔记(代码基于TMS320F28069 详解)
  7. mysql共享锁 排它锁
  8. JAVA大作业 - 五道三星题
  9. 科创板|上交所依法终止对木瓜移动的科创板发行上市审核
  10. Windows 8官方主题六连发