怎么根据设备树文件初始化linux驱动
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关怎么根据设备树文件初始化linux驱动,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、前提新版基于ARM的Linux都会
千家信息网最后更新 2025年12月03日怎么根据设备树文件初始化linux驱动
这篇文章将为大家详细讲解有关怎么根据设备树文件初始化linux驱动,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一、前提
新版基于ARM的Linux都会基于Device Tree去代替之前的device驱动。更加多的了解Device Tree可以访问宝哥的Bolg:ARM Linux 3.x的设备树(Device Tree)
这里只是举例在arch/arm/boot/dts中添加dtsi文件并在驱动中读取dtsi中节点信息,并将节点信息写入sys文件系统,至于怎么创建、读写sys文件可以参考: linux sysfs下创建文件
二、举例
1、添加dtsi文件
添加的dtsi文件可以基于你所用的手机或者开发板确定放入什么位置。dts总目录:arch/arm/boot/dts
例中dtsi所放位置位于:
xm-test.dtsi:
/ { xm-test { compatible = "xiaomi,xm-test"; xm_test_tip; };};其中xm-test、"xiaomi,xm-test"必须具有唯一性。
注:需要在audio.dtsi文件中添加#include "xm-test.dtsi"具体在哪个文件下添加include根据实际情况而定。
2、驱动
#include#include #include #include #include #include #include #include #include #include #define HW_TEST "xm_test_tip"#define i2c_info "xm_test, i2c_show"static ssize_t show(struct device_driver *driver, char *buf){ if(NULL != buf) { /* Newline is not appended on purpose, for convenience of reader programs */ snprintf(buf, PAGE_SIZE, "%s\n", i2c_info); return strlen(buf); } return 0;}DRIVER_ATTR(i2c_test, 0444, show, NULL);static struct attribute *audio_attrs[] = { &driver_attr_i2c_test.attr, NULL,};static struct attribute_group audio_group = { .name ="xm_test", .attrs = audio_attrs,}; static const struct attribute_group *groups[] = { &audio_group, NULL,};static int xm_test_probe(struct platform_device *pdev){ if(NULL == pdev) { printk( "xiaomi_test: xm_test_probe failed, pdev is NULL\n"); return 0; } if(NULL == pdev->dev.of_node) { printk( "xiaomi_test: xm_test_probe failed, of_node is NULL\n"); return 0; } /* 存在 xm_test_tip 就会在手机/开发板启动的时候打印出来 */ if(of_property_read_bool(pdev->dev.of_node, HW_TEST)) { printk( "xm_test: %s is existing\n", HW_TEST); } printk("============== hanshubo ================\n"); return 0;}/* .compatible的信息要与dtsi中的compatible一致 */static struct of_device_id audio_info_match_table[] = { { .compatible = "xiaomi,xm-test",}, { },};static struct platform_driver xm_test = { // device_driver .driver = { /* 这里的name不需要跟dtsi的节点xm-test一致 */ .name = "xm-test", .of_match_table = audio_info_match_table, .owner = THIS_MODULE, .groups = groups, }, .probe = xm_test_probe, .remove = NULL,};static int __init audio_info_init(void){ return platform_driver_register(&xm_test);}static void __exit audio_info_exit(void){ platform_driver_unregister(&xm_test);}module_init(audio_info_init);module_exit(audio_info_exit);MODULE_LICENSE("GPL");
3、检验sys文件系统中的是否写入成功
在sys/bus/platform/drivers/xm_test中会找到文件i2c_test文件:
# cat i2c_test# xm_test, i2c_show
注:当使用设备树注册设备时,设备节点名称"xm-test"不必和platform_driver.driver.name 保持一致。
也就是说:总线不会通过此两项,将设备和驱动进行匹配
关于怎么根据设备树文件初始化linux驱动就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
文件
设备
驱动
节点
一致
信息
位置
内容
手机
文章
更多
知识
篇文章
系统
参考
开发
不错
成功
也就是
也就是说
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全pdf微盘
惠州软件开发咨询
威尔视觉服务器
网络安全工作责任清单
大邑网络安全宣传视频
我的世界服务器外接硬盘
bcsp软件开发课程体系
安全审计网络安全
微软最新服务器系统
网络安全保护案例分析
国家网络安全周线上课堂录制
计算机 网络安全
河北戴尔服务器维修调试虚拟主机
工业网络技术目录
中国网络安全年会在网上召开
网络安全手抄报上面的字简单点的
暗黑3服务器维护
怎么给服务器增加管理员权限
服务器管理器功能出错
29岁从事网络安全工作晚吗
数据库软件中多个表格怎么设置
济南浪潮招软件开发
数据库应用设计与开发笔记
vs2015添加数据库吗
吃鸡端游服务器正在维护中
数据库数据监督管理制度
服务器下载
福州海牛网络技术公司
车系数据库
天下3怎么两个服务器排棋局