当前位置: 首页 > article >正文

itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记

文章目录

  • 设备树简介
  • 设备树编译
  • 设备树语法
    • 设备根节点
    • 设备子节点
    • 节点名称
    • reg 属性
    • #address-cell 和 #size-cells 属性
    • model 属性
    • status 属性
    • compatible 属性
    • aliases 节点
    • chosen 节点
    • device_type 属性
    • 自定义属性

设备树简介

什么是设备树

设备树是保留着存在于系统中的设备信息,当机器引导时,OS通过使用驱动程序和其他组件获得的信息建立此树,并且当添加或删除设备时更新此树。

上一篇笔记提到了平台设备模型,它将设备和驱动区分开来,一份驱动可以与多份设备匹配,但随着 device (板级文件)的增多,Linux 内核代码变得越来越多,这些代码相对于内核来说都算是”垃圾代码“,为了解决这个问题,linux 就引入了设备树来替代 device 文件。

既然设备树是用来替代平台总线 device 文件的,那么设备树的运作原理还是基于平台总线模型,只是设备树采用的是文本格式,不像 device.c 一样每次修改都要重新编译内核。

设备树基本名词

名词含义
DTDevice Tree 设备树
FDTFlattened Device Tree 展开设备树,起源 OpenFirmware(OF)
dtsdevice tree source 设备树源码
dtsidevice tree source include 通用的设备树源码
dtbdevicedevice tree blob dts 编译生成的文件
dtcdevice tree compiler 设备树编译器

设备树编译

编译设备树命令:

dtc -I dts -O dtb -o xxx.dtb xxx.dts

反编译设备树:

dtc -I dtb -O dts -o xxx.dts xxx.dtb

示例:

在这里插入图片描述

设备树语法

设备根节点

根节点是设备树必须添加的节点,节点名为 /。

示例:

/dts-v1/; // dts 版本
/{        // 根节点
};

设备子节点

子节点格式:

	[label:] node-name[@unit-address] {
		[properties definitions]
		[child nodes]
	}

Tip:同级节点下节点名称不能相同,不同级别节点名称可以相同。

示例:

在这里插入图片描述

节点名称

在对节点命名时,需要体现设备的特征,如串口一般命名为 uart 或 serial,

在这里插入图片描述
节点名称是必选项,标签和设备地址是可选项,标签是节点的别名,设备地址用于区分不同的设备。

reg 属性

reg 属性用来描述地址信息,如寄存器地址,格式为:

reg = <addr1 len1 addr2 len2 ...>

在这里插入图片描述

#address-cell 和 #size-cells 属性

reg 属性的长度是可变的,#address-cell 和 #size-cells 属性用来决定 reg 的长度,比如下面这个例子,#address-cell 为 1,表示有一个地址,#size-cells 为 0,表示有 0 个地址长度。

在这里插入图片描述

model 属性

model 属性是一个字符串,用来描述设备信息,例如:

在这里插入图片描述

status 属性

status 属性表示设备的状态,该属性值是一个字符串,可取值包括:

status 值含义
okay设备可用
disabled设备不可用
fail设备不可用且有错误
fail-sss设备不可用且有 sss 错误(sss 是错误内容)

示例:
在这里插入图片描述

compatible 属性

compatible 是设备树与驱动进行匹配的属性,属性值为字符串,compatible 属性值的推荐格式:"manufacturer,model"(“厂商名,模块驱动名”)。

该属性可以有多个值,驱动会从第一个值开始匹配,示例:

在这里插入图片描述

aliases 节点

aliases 用来定义节点的别名,它和节点标签类似,但它可以批量定义别名。

示例:

在这里插入图片描述

chosen 节点

chosen 节点用来 uboot 给内核传递参数(重点是 bootargs 参数),该节点必须是根节点的子节点。

示例:

在这里插入图片描述

device_type 属性

device_type 属性值为字符串,只用于 cpu 或 memory 节点。

示例:

在这里插入图片描述

自定义属性

设备树可以自定义一些属性,

比如 mipi 背光参数,

在这里插入图片描述


http://www.kler.cn/a/14192.html

相关文章:

  • L1-094 剪切粘贴
  • 测试月入30K,Soeasy?测试这一行涨薪机制被我摸透了...
  • 【Android FrameWork(四)】- binder service_manager ServiceManager
  • 【Linux命令行与Shell脚本编程】第五章 理解 Shell 父子关系 后台进程 协程
  • 计算机类大学生竞赛经验分享
  • JavaSE 09 File 类 IO 流 - Part 01
  • 搜索引擎找外贸客户
  • 【产品经理】系统上线自查清单
  • TCP协议的相关特性(续)
  • GDB调试gdb
  • 光照的个人推导过程与GL实现
  • WTI纽约原油CFD是什么?交易技巧有哪些?
  • webpack5搭建react框架-配置优化
  • 入阵曲(C++)(前缀和)
  • 【C++】模板(二)
  • python算法中的字符串算法(详解)
  • 十、v-model的基本使用
  • 2023年全国最新道路运输从业人员精选真题及答案62
  • 1. VBA概述
  • ONLYOFFICE协作空间是什么?