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

【北京迅为】《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”,输入以下命令 

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”。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux添加普通用户后无法使用K8S的kubectl命令怎么办/Linux普通用户管理K8S/Linux下普通用户无法使用K8S命令
  • PCL-基于超体聚类的LCCP点云分割
  • FFmpeg源码:av_probe_input_format3函数分析
  • element-plus时间组件el-date-picker只能选择当前及之前日期
  • android13 Settings动态显示隐藏某一项
  • springSecurity学习之springSecurity注解使用
  • 谷粒商城实战笔记-54-商品服务-API-三级分类-拖拽效果
  • el-upload 上传图片转成base64 字符串,传给后端,且base64在页面的展示
  • 氧气传感器在汽车制氧检测中的应用
  • 文件包含漏洞及利用
  • java项目数据库 mysql 迁移到 达梦
  • docker相关内容学习
  • 人力资源的智能匹配:Kompas.ai如何革新招聘流程
  • 微信小程序实现聊天界面,发送功能
  • 在 Qt 中获取 MouseMove 事件
  • 230. Kth Smallest Element in a BST
  • ES6--对象的扩展
  • fetch 从初识到应用
  • Github访问慢解决办法
  • gulp 教程
  • iOS 颜色设置看我就够了
  • k8s 面向应用开发者的基础命令
  • Laravel Telescope:优雅的应用调试工具
  • Linux快速复制或删除大量小文件
  • nfs客户端进程变D,延伸linux的lock
  • use Google search engine
  • Vue UI框架库开发介绍
  • 测试开发系类之接口自动化测试
  • 从零搭建Koa2 Server
  • 大主子表关联的性能优化方法
  • 如何使用 JavaScript 解析 URL
  • 提醒我喝水chrome插件开发指南
  • 王永庆:技术创新改变教育未来
  • 我建了一个叫Hello World的项目
  • mysql面试题分组并合并列
  • 整理一些计算机基础知识!
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # 数论-逆元
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma pack(1)
  • #大学#套接字
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (04)odoo视图操作
  • (2)Java 简介
  • (3)选择元素——(17)练习(Exercises)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (poj1.2.1)1970(筛选法模拟)
  • (超详细)语音信号处理之特征提取
  • (第27天)Oracle 数据泵转换分区表
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .gitignore不生效的解决方案