怎么根据设备树文件初始化linux驱动
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关怎么根据设备树文件初始化linux驱动,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、前提新版基于ARM的Linux都会
千家信息网最后更新 2025年02月23日怎么根据设备树文件初始化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安全错误
数据库的锁怎样保障安全
一般软件开发多少时间
软件开发有新生兼职的吗
银发网络安全
广西计算机网络技术的学校
做网络技术的公司
小程序云服务器数据
山西信息化软件开发价钱
对网络安全进行全面加固
帕拓逊网络技术有限公司面试
网络安全的网络语
财务软件开发上市公司
股票交易软件开发
剑侠情缘服务器双线和电信区别
北京中科三方网络技术有限公司
软件开发工具课后习题
台电服务器设置
汽车网络技术是什么
本地同城交友软件开发
软件开发snow
本区县五年服务器
jeesite4数据库
阜新直销会员报单软件开发
2021计算机网络技术一级证
数据库审计需要什么包
jsp查询数据库并跳转
电脑网络安全证书下载
大一网络安全主题班会
手机脚本不需要服务器吗
云服务器安全组怎么用
郑州软件开发相关资讯