【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十一章 添加设备树节点

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、

【公众号】迅为电子

【粉丝群】258811263


第五十一章 添加设备树节点

本章导读

在上一章节已经对 DTS 的语法做了比较详细的介绍,在本节中根据前面讲解的语法,从头到尾编写一个小型的设备树文件。我们会以一个虚拟的设备作为参考,提前假设一些外部设备和功能。当然这个虚拟的设备没有任何的意思,只是为了复习掌握前面学习的设备树语法。在实际产品的开发过程中,我们不需要从头编写一个 dts 设备树文件,一般都是使用 soc 厂商提供的 dts 文件,我们只需要根据自己的实际情况修改添加自己的内容即可。

本章内容对应视频讲解链接(在线观看):

在设备树种添加自定义节点 → https://www.bilibili.com/video/BV1Vy4y1B7ta?p=26

51.1 查看设备树节点方法

我们以iMX8MM开发板为例,打开内核源码arch/arm64/boot/dts/rockchip/目录,如下所示:

输入命令编辑设备树文件

vi itop8mm-evk.dtsi

打开文件后,我们首先找到根节点,如下图所示:

我们可以在根节点的末尾准备添加设备节点,那么我们怎么来验证自己添加设备节点成功了呢?设备树可以在linux系统里面以文件或者是目录的形式表示出来,这里有两种方法。

方法一,我们进入到开发板的/proc/device-tree/目录下,如下图所示

cd /proc/device-tree

ls

比如说,我们想要查看根节点下的"model""compatible",输入以下命令

cpp 复制代码
cat model
cat compatible

接下来我们可以用这种方法来验证在设备树文件里面我们是否成功添加了自己的节点。

方法二,我们也可以进入开发板的/sys/firmware/devicetree/base/目录下,如下图所示:

cd /sys/firmware/devicetree/base/

ls

51.2 添加自定义节点

在设备树文件itop8mm-evk.dtsi文件中根节点添加自定义的节点,如下图所示,添加完保存退出。

注意,添加自定义节点前要注释掉冲突使用的设备。添加完保存文件并退出,接下来编译设备树文件。

51.3 编译设备树文件

如果环境没有dtc工具,需要安装dtc工具。输入以下命令安装dtc工具:

apt-get install device-tree-compiler

具体编译步骤可以参考IMX8MM开发板使用手册源码编译章节。

51.4 运行测试

将编译生成的设备树文件烧写到开发板上面,开发板启动后进入/proc/device-tree目录下,如下图所示:

cd /proc/device-tree

输入以下命令查看test节点信息,如下图所示:

cd test

cat compatibel

51.4.1 验证结论

我们修改设备树文件itop8mm-evk.dtsi为下图所示,验证两个结论

1 通过节点的引用来修改原来节点里面的内容

2通过节点的引用往原来的节点里面添加内容

我们添加了节点引用"status = "okay",并且重新赋值给compatible为"test1234"。

修改完设备树文件,然后编译烧写到开发板上面进入/proc/device-tree目录下,如下图所示:

cd /proc/device-tree

cd test

cat compatibel

cat status

由上图可知,我们验证的两个结论完全正确,已经可以查看到覆盖掉的compatible属性显示"test1234",可以查到status属性的状态为"okay"。

相关推荐
lucy1530275107919 分钟前
MCU 功耗基准测试
科技·单片机·嵌入式硬件·智能家居·信号处理·工控主板
BUG 40436 分钟前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea42 分钟前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi43 分钟前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos
m0_748240911 小时前
OpenMV与STM32通信全面指南
stm32·单片机·嵌入式硬件
dowhileprogramming1 小时前
Python 中的迭代器
linux·数据库·python
过过过呀Glik1 小时前
在 Ubuntu 服务器上添加和删除用户
linux·服务器·ubuntu
Cchengzu3 小时前
阿里巴巴2017实习生笔试题(二)
stm32·单片机·嵌入式硬件
Tesseract_95273 小时前
ioctl回顾
linux
Java小白中的菜鸟3 小时前
centos7的磁盘扩容
linux·运维·服务器