【北京迅为】《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"。

相关推荐
张32320 分钟前
Linux 启动过程
linux·运维
三万棵雪松21 分钟前
【Linux 物联网网关主控系统-Linux主控部分(二)】
linux·嵌入式linux
chinesegf24 分钟前
ubuntu建虚拟环境制作docker容器
linux·ubuntu·docker
Stack Overflow?Tan9031 分钟前
标注软件labelImg在linux下鼠标滚轮闪退解决办法
linux·labelimg
李彦亮老师(本人)33 分钟前
Rocky Linux 9.x 新特性详解
linux·运维·服务器·centos·rocky linux
NiKick35 分钟前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络
biubiubiu07062 小时前
Python 环境安装与 Linux 控制入门
linux·开发语言·python
Hello World . .3 小时前
ARM裸机学习6——UART
arm开发·单片机·嵌入式硬件
扛枪的书生3 小时前
包管理器用法速查
linux
Zarek枫煜3 小时前
[特殊字符] C3语言:传承C之高效,突破C之局限
c语言·开发语言·c++·单片机·嵌入式硬件·物联网·算法