linux设备树(1)理论部分

linux设备树(1)理论部分

参考文档

设备树(device tree)是一种描述硬件的数据结构,linux和硬件交互的文件,由节点和其对应属性构成,就是一个硬件描述树,然后BootLoader把他传递给内核,内核给他们分配资源

DTS,DTC,DTB

  • dts是ascii文件格式的设备树描述

对应文件的位置信息

在这里插入图片描述

在这里插入图片描述

  • dtb是二进制文件,linux内核解析

  • dtc是dts编译成dtb的工具

设备树文件的编译

  • makefile文件
    在这里插入图片描述

设备树文件

  • dtsi文件

    • 每个soc为了适配不同的cpu,有共同部分,其中共同部分被同意放到.dtsi文件

      语法类似c

在这里插入图片描述

  • 这文件主要用于描述soc内部的外设信息,比如cpu的架构,主频,寄存器地址范围

  • 设备树架构

    • 用的是树状结构描述设备信息(类似于urdf)

      • 每个设备树文件都有一个根节点

      • 节点之间形成嵌套关系(父子)

      • 每个属性用键值对来描述

在这里插入图片描述

  • 结构

    • /{
      	node1{
      		key = value;
      		...
      		
      		 }
      	node3	{
      	...
      	}
      }
      
    • 节点名

      <name>[@adress]

      name是节点名字,adress是对应的物理地址

    • 引用

      引用一个节点的时候,我们需要去写完整的节点路径,就实现了函数调用的效果。相同节点的不同属性合并,相同属性被重写

    • keyv

      属性名称对应功能举例
      compatible可以用来查找节点,也可以通过节点名称或者路径去寻找指定的节点campatible = “davicom”
      address引出对应的io口信息
      #address-cells,用于描述子节点“reg”用于描述首地址的cell的数量
      #size-cells,用于描述节点属性的地址表中描述地址长的cell数量
      #address-cells = <2>;#size-cells = <1>
      interrupts中断请求
      每当某个设备触发了中断信号的时候,系统需要给其对应的信号
      常用属性
      * irrerrupt-controller 中断控制器
      * inerrupt-cells 描述子节点继承了父节点的哪个值
      * interrupt-parent 所属的中断控制器,自动依附于父节点
      在这里插入图片描述
      reg表示节点地址资源的,其实资源以及大小
      ranges切换总线子和总线本身的地址,前后顺序分别是(子总线地址,父总线地址,大小)

    中断域

    外设在不断增加,中断系统不断进行更代,所以提出了中断控制器级联的概念,在kernel的不断开发,中断域概念被开发者研究出来

    即当内核注册中断控制器的时候,内核会为该中断控制器申请一块可以用的中断域。

    当硬件产生中断之后,内核可以根据中断域映射到软件中断号,从而进行对应的中断处理。

    • 线性映射

      ​ 可以用于硬件中断最大数量固定,并且数值不大,可以选择线性映射

    • 树映射

      ​ 硬件中断号可能很大

    • 不映射

      ​ 中断号就是linux的中断号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值