设备树OF函数操作实验-读取设备节点backlight的整型属性

一. 简介

本文学习使用设备树操作 OF函数,读取设备节点的整型的属性值。

读取设备树文件 imx6ull-14x14-evk.dts 中一个设备节点的信息。这里读取 backlight设备节点的属性值:读取整型的属性。

注意:这里的整型数据都是 32位的数据。而非 8位的数据!!

二.  读取设备节点backlight的整型属性值

1.  backlight设备节点信息

imx6ull-14x14-evk.dts文件中 backlight设备节点信息如下:

backlight {compatible = "pwm-backlight";pwms = <&pwm1 0 5000000>;brightness-levels = <0 4 8 16 32 64 128 255>;default-brightness-level = <6>;status = "okay";};

这里准备读取 imx6ull-14x14-evk.dts 设备树文件中 default-brightness-level属性的值。

主要使用到两个OF函数:

struct device_node *of_find_node_by_path(const char *path);  //获取设备节点
static inline int of_property_read_u32(const struct device_node *np,const char *propname,u32 *out_value);  //读取 32位整型的属性

2.  代码实现

代码实现如下:

#include <linux/module.h>
#include <linux/of.h>/*模块入口*/
static int __init dtsof_init(void)
{int ret = 0;struct device_node * dev_node = NULL;u32 value = 0;//1. 读取设备节点dev_node = of_find_node_by_path("/backlight");if(NULL == dev_node){ret = -EINVAL;goto find_dev_node_failed;}//2. 读取整形类型的属性值ret = of_property_read_u32(dev_node, "default-brightness-level", &value);if(ret != 0){ret = -EINVAL;goto read_property_failed;}			       printk("default-brightness-level: %d\r\n", value);			       read_property_failed:
find_dev_node_failed:return ret;
}/*模块出口*/
static void __exit dtsof_exit(void)
{}/*模块入口与出口*/
module_init(dtsof_init); 
module_exit(dtsof_exit);/*模块 Licence*/
MODULE_LICENSE("GPL");
/*模块作者*/
MODULE_AUTHOR("LingXueWu");

三.  编译驱动与加载

  1.  编译程序

ubuntu 终端进入 4_dtsof工程根目录下编译工程:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/4_dtsof$ make

编译后,生成驱动文件 dtsof.ko。

将 dtsof.ko拷贝到开发板系统下 /lib/modules/4.1.15/目录下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/4_dtsof$ sudo cp dtsof.ko /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

2.  加载驱动

这里不需要先运行 depmod命令。因为前面已经运行过一次。

开发板上电进入系统 /lib/modules/4.1.15/目录下,加载 dtsof.ko 驱动模块:

/ # cd /lib/modules/4.1.15/
/lib/modules/4.1.15 # modprobe dtsof.ko 
default-brightness-level: 6

 测试结束后,卸载驱动模块,输入如下命令:

/lib/modules/4.1.15 # rmmod dtsof.ko 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/620389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Open3D 点云等比例缩放(20)

Open3D 点云等比例缩放(20) 一、算法介绍二、算法实现1.代码世人慌慌张张,不过图碎银几两, 偏偏这碎银几两,能解世间万种慌张。 一、算法介绍 实现这样一个功能,沿着中心,按照指定的比例,比如1/2,缩小或者放大点云,保存到新的文件中 二、算法实现 1.代码 import…

小程序基础学习(js混编)

在组件中使用外部js代码实现数据改变 先创建js文件 编写一些组件代码 编写外部js代码 在组件的js中引入外部js 在 app.json中添加路径规则 组件代码 <!--components/my-behavior/my-behavior.wxml--> <view><view>当前计数为{{count}}</view> <v…

操作系统复习 一、二章

操作系统复习 一、二章 文章目录 操作系统复习 一、二章第一章 计算机系统概述处理器中各寄存器的作用指令的执行过程中断存储器层次结构和CacheI/O 通信技术 第二章 操作系统概述大内核微内核大内核微内核 操作系统的定义、目标和功能定义目标和功能 操作系统的发展过程现代操…

Kibana:使用反向地理编码绘制自定义区域地图

Elastic 地图&#xff08;Maps&#xff09;附带预定义区域&#xff0c;可让你通过指标快速可视化区域。 地图还提供了绘制你自己的区域地图的功能。 你可以使用任何您想要的区域数据&#xff0c;只要你的源数据包含相应区域的标识符即可。 但是&#xff0c;当源数据不包含区域…

半监督学习 - 半监督K均值(Semi-Supervised K-Means)

什么是机器学习 半监督K均值&#xff08;Semi-Supervised K-Means&#xff09;是K均值聚类算法的一种扩展&#xff0c;它结合了有标签数据和无标签数据进行聚类。在传统的K均值算法中&#xff0c;所有数据点都是无标签的&#xff0c;而在半监督K均值中&#xff0c;我们允许一部…

RabbitMQ的高可用机制

通过搭建集群保证高可用 RabbitMQ的集群模式&#xff1a; 普通集群&#xff0c;镜像集群&#xff08;开发时用的多&#xff09;&#xff0c;仲裁集群 普通集群&#xff08;标准集群&#xff09;会在各个节点间共享部分数据&#xff08;交换机和队列元信息&#xff09;&#…

最新域名群站开源系统:打造强大网站矩阵,引领SEO优化新潮流!

搭建步骤 第一步&#xff1a;安装PHP和MYSQL服务器环境 对于想要深入了解网站建设的人来说&#xff0c;自己动手安装PHP和MYSQL服务器环境是必不可少的步骤。这将使你能够更好地理解网站的运行机制&#xff0c;同时为后续的网站开发和优化打下坚实基础。 第二步&#xff1a;…

QSpace:Mac上的简洁高效多窗格文件管理器

在Mac用户中&#xff0c;寻找一款能够提升文件管理效率的工具是常见的需求。QSpace&#xff0c;一款专为Mac设计的文件管理器&#xff0c;以其简洁的界面、高效的多窗格布局和丰富的功能&#xff0c;为用户提供了一个全新的文件管理体验。 QSpace&#xff1a;灵活与功能丰富的结…

ImportError: cannot import name ‘Doc‘ from ‘typing_extensions‘

在训练大模型时候出现&#xff1a;ImportError: cannot import name ‘Doc’ from ‘typing_extensions’ 。 问题 原因 安装的typing_extensions版本不正确 解决方法 pip install typing_extensions4.8.0

Python Flask教程

Flask Doc: https://rest-apis-flask.teclado.com/docs/course_intro/what_is_rest_api/Github: https://github.com/tecladocode/rest-apis-flask-python 1. 最简单的应用 最小应用 from flask import Flaskapp Flask(__name__)app.route("/") def hello_world()…

手写webpack的loader

一、概念 帮助webpack将不同类型的文件转换为webpack可识别的模块。 二、Loader执行顺序 分类 pre&#xff1a;前置loadernormal&#xff1a;普通loaderinline&#xff1a;内联loaderpost&#xff1a;后置loader 执行顺序 4类loader的执行顺序为per>normal>inline&…

MATLAB十六进制与十进制互相转换

MATLAB十六进制与十进制互相转换 包含单个数字进行转换和数组进行转换(可用于串口数据解析) 一、单个数字转换 1.十六进制转十进制 % 输入一个十六进制字符串 hexString = 51;% 使用 hex2dec 函数将十六进制转换为十进制 decimalValue = hex2dec(hexString);% 显示结果 d…

极简Oracle 11g Release 2 (11.2.0.1.0)

注意&#xff1a;此法无法安装oracle11g(11.2.0.4)&#xff0c;会报如下错&#xff1a; [FATAL] [INS-10105] The given response file /assets/db_install.rsp is not valid. 一、下载解压ORACLE安装包。 从 oracle 官网 下载所需要的安装包&#xff0c;这里我们以 oracle 11…

二级C语言备考5

一、单选 共40题 &#xff08;共计40分&#xff09; 第1题 &#xff08;1.0分&#xff09; 题号:6100 难度:中 第1章 下列叙述中正确的是 A:程序可以作为算法的一种表达方式 B:算法的有穷性是指算法的规模不能太大 C:算法的复杂度用于衡量算法的控制结…

分类方法之逻辑回归

什么是逻辑回归 逻辑回归是一种用于解决分类问题的统计分析方法。它是一种广义线性模型&#xff0c;主要用于预测一个事件的概率。逻辑回归通过将输入变量和权重进行线性组合&#xff0c;并通过一个特殊的函数&#xff08;称为逻辑函数或Sigmoid函数&#xff09;将结果转化为0…

人声处理用什么软件好 FL Studio 怎么修人声 人声处理软件 人声处理步骤

一、人声处理用什么软件好 现在人声处理软件还是非常多的&#xff0c;有专门的人声处理软件&#xff0c;也有具备人声处理功能的编曲软件。专门人声处理的软件操作比较简单&#xff0c;但是处理后的人声在使用的时候可能还需要进行再处理&#xff0c;这会比较麻烦。具备人声处…

Debian12 安装jenkins 公钥配置

jenkins公钥配置 参考&#xff1a;Debian Jenkins 软件包 这是 Jenkins 的 Debian 软件包存储库&#xff0c;用于自动安装和升级。 要使用此存储库&#xff0c;请先将密钥添加到您的系统&#xff08;对于每周发布行&#xff09;&#xff1a; sudo wget -O /usr/share/keyring…

命令行(无图形界面)登录dlut-lingshui

1 登录原理 利用python的requests库向校园网认证服务器发送认证请求。 2 登录步骤 获取校园网认证界面的用户名和密码。用户名是自己学号&#xff1b;密码由网页加密&#xff0c;需要一台有图形界面的电脑辅助获取&#xff0c;获取方法见下一节。把获取到的用户名和密码填入…

web前端算法简介之链表

链表 链表 VS 数组链表类型链表基本操作 创建链表&#xff1a;插入操作&#xff1a;删除操作&#xff1a;查找操作&#xff1a;显示/打印链表&#xff1a;反转链表&#xff1a;合并两个有序链表&#xff1a;链表基本操作示例 JavaScript中&#xff0c;instanceof环形链表 判断…

宝塔面板使用phpMyAdmin 502 Bad Gateway

第一步软件商店安装PHP 第二步设置phpMyAdmin,选择PHP版本 – 解决