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

这篇具有很好参考价值的文章主要介绍了itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

设备树简介

什么是设备树

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

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

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

设备树基本名词

名词 含义
DT Device Tree 设备树
FDT Flattened Device Tree 展开设备树,起源 OpenFirmware(OF)
dts device tree source 设备树源码
dtsi device tree source include 通用的设备树源码
dtb devicedevice tree blob dts 编译生成的文件
dtc device tree compiler 设备树编译器

设备树编译

编译设备树命令:

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

反编译设备树:

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

示例:

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

设备树语法

设备根节点

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

示例:

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

设备子节点

子节点格式:

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

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

示例:

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

节点名称

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

itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础,# 驱动开发(学习笔记),驱动开发,linux,设备树
节点名称是必选项,标签和设备地址是可选项,标签是节点的别名,设备地址用于区分不同的设备。

reg 属性

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

reg = <addr1 len1 addr2 len2 ...>

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

#address-cell 和 #size-cells 属性

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

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

model 属性

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

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

status 属性

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

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

示例:
itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础,# 驱动开发(学习笔记),驱动开发,linux,设备树

compatible 属性

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

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

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

aliases 节点

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

示例:

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

chosen 节点

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

示例:

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

device_type 属性

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

示例:

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

自定义属性

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

比如 mipi 背光参数,

itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础,# 驱动开发(学习笔记),驱动开发,linux,设备树文章来源地址https://www.toymoban.com/news/detail-536788.html

到了这里,关于itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • RK3568平台开发系列讲解(驱动基础篇)自动创建设备节点

    RK3568平台开发系列讲解(驱动基础篇)自动创建设备节点

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢自动创建设备节点分为两个步骤: 步骤一:使用 class_create 函数创建一个类。 步骤二:使用 device_create 函数在我们创建的类下面创建一个设备。 Linux 驱动实验中,当我们通过 insmod 命令加载模块后,

    2023年04月12日
    浏览(49)
  • Linux设备驱动开发学习笔记(等待队列,锁,字符驱动程序,设备树,i2C...)

    container_of函数可以通过结构体的成员变量检索出整个结构体 函数原型: 内核开发者只实现了循环双链表,因为这个结构能够实现FIFO和LIFO,并且内核开发者要保持最少代码。 为了支持链表,代码中要添加的头文件是linux/list.h。内核中链表实现核心部分的数据结构 是struct li

    2024年01月22日
    浏览(12)
  • Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

    Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134533533 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Linux驱动开发笔记(三

    2024年02月05日
    浏览(29)
  • Linux 驱动学习笔记 ——(1)字符设备驱动

    Linux 驱动学习笔记 ——(1)字符设备驱动

    《【正点原子】I.MX6U嵌入式Linux驱动开发指南》学习笔记 字符设备是 Linux 驱动中最基本的一类设备驱动,字节设备就是按照字节流来读写的设备,常见的字符设备包括:LED、蜂鸣器、按键、I2C 以及 SPI 等。 Linux 中一切皆文件,字符设备驱动加载成功后会在 /dev 目录下生成相

    2024年02月08日
    浏览(13)
  • iTOP-3568开发板使用OpenCV处理图像-颜色转换

    iTOP-3568开发板使用OpenCV处理图像-颜色转换

    本小节代码在配套资料“iTOP-3568 开发板\\03_【iTOP-RK3568 开发板】指南教程 \\04_OpenCV 开发配套资料\\05”目录下,如下图所示: cv2.cvtColor()函数功能: 将一幅图像从一个色彩空间转换到另一个色彩空间。 函数原型: cv2.cvtColor(src,code,dst=None,dstCn=None) 参数定义: src:要转换的源文件

    2024年02月12日
    浏览(12)
  • LDD学习笔记 -- Linux字符设备驱动

    LDD学习笔记 -- Linux字符设备驱动

    字符驱动程序用于与Linux内核中的设备进行交互; 字符设备指的是像内存区域这样的硬件组件,通常称为伪设备; 用户空间应用程序通常使用 open read write 等系统调用与这些设备通信; 把用户空间的系统调用连接到设备驱动的系统调用实现方法上。 内核的虚拟文件系统 vir

    2024年02月02日
    浏览(14)
  • iTOP-RK3568开发板Docker 安装 Ubuntu 18.04

    iTOP-RK3568开发板Docker 安装 Ubuntu 18.04

    Docker 下载安装 Ubuntu18.04,输入以下命令: sudo apt update docker pull ubuntu:18.04 切换 Shell 到 Ubuntu 18.04,输入以下命令: docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bash -p 参数:容器的 3000 端口映射到本机的 8000 端口。 -it 参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输

    2024年02月15日
    浏览(13)
  • Linux 驱动开发基础知识——LED 模板驱动程序的改造:设备树(十一)

    Linux 驱动开发基础知识——LED 模板驱动程序的改造:设备树(十一)

     个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755@qq.com 🦉个人WeChat:Vir2021GKBS 🐼 本文由妄北y原创,首发CSDN 🎊🎊🎊 🐨座右铭:大多数人想要改造这个世界,但却罕有人想改造自己。 专栏导航: 妄北y系列专栏导航: C/C++的基

    2024年02月21日
    浏览(9)
  • Linux驱动开发基础_在设备树中指定中断以及在代码中获得中断

    Linux驱动开发基础_在设备树中指定中断以及在代码中获得中断

    目录 1 设备树里中断节点的语法 1.1 设备树里的中断控制器 1.2 设备树里使用中断 2  设备树里中断节点的示例 3 在代码中获得中断 3.1 对于 platform_device  3.2  对于 I2C 设备、SPI 设备 3.3  调用 of_irq_get 获得中断号 3.4 对于 GPIO  参考文档:内核 Documentationdevicetreebindingsin

    2024年02月16日
    浏览(11)
  • 【IMX6ULL驱动开发学习】12.Linux驱动之设备树

    【IMX6ULL驱动开发学习】12.Linux驱动之设备树

    承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分) 代码获取: https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了(实际上只有前两层),合并成一个dev_drv.c了,暂时没有加GPIO操作,只是个框架 合并前的代码在 11.butt

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包