• Linux dts 设备树详解(二) 动手编写设备树dts


    Linux dts 设备树详解(一) 基础知识
    Linux dts 设备树详解(二) 动手编写设备树dts


    前言

    在简单了解概念之后,我们可以开始尝试写一个简单的设备树,从而加深对设备树整体架构以及部分语法的理解,因为整体知识面比价庞杂,无法面面俱到,本文旨在笔者学习之初对于设备树常用部分的总结与归纳。因为会涉及到很多硬件信息的绑定,详细的可以查阅Linux内核源码下的文档Documentation/devicetree/bindings。具体如下图所示;
    设备树文档

    硬件结构

    1个双核ARM Cortex-A932位处理器;
    ARM本地总线上的内存映射区域分布有两个串口(分别位于0x101F10000x101F2000
    GPIO控制器(位于0x101F3000
    SPI控制器(位于0x10170000
    中断控制器(位于0x10140000
    外部总线桥上连接的设备如下:
    SMC SMC91111以太网(位于0x10100000
    I2C控制器(位于0x10160000
    64MB NOR Flash(位于0x30000000
    外部总线桥上连接的I2C控制器所对应的I2C总线上又连接了Maxim DS1338实时钟(I2C地址为0x58
    具体如下图所示;
    硬件结构图

    设备树dts文件

    那么,如何将上面的硬件结构,通过设备树语言描述成dts文件呢?具体我实现在下图,并且做出了详细的解释。其中需要注意的有以下几个属性:

    • compatitable:兼容性属性;
    • #address-cells,#size-cells:地址编码所采用的格式;
    • 节点名称@节点地址:例如gpio@101f3000,这里名称和地址要和实际的对应起来;
    • 标签:例如interrupt-parent = <&intc>;,这这里的intc就是一个标签(label),通过&可以获取它的值,这里可以简单的理解成一个变量,然后在下面需要对这个标签进行另外的解析,例如intc:interrupt-controller@10140000;所以,这两个地方的intc都是对应起来的。
      最后,具体的实现可以参考下图;
      在这里插入图片描述
  • 相关阅读:
    java中将表单转换为PDF
    base64图片
    ORACLE中用户等系统信息操作
    jquery中live is not a function的问题
    完全卸载Oracle11G
    jquery 获取鼠标和元素的坐标点
    JS的多线程
    Oracle和SQLServer解锁杀进程
    JAVA 通过LDAP获取AD域用户及组织信息
    oracle基础语法大全
  • 原文地址:https://www.cnblogs.com/unclemac/p/12783388.html
Copyright © 2020-2023  润新知