高通平台中用devicetree注册设备及驱动匹配

2024-03-09 10:48

本文主要是介绍高通平台中用devicetree注册设备及驱动匹配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、在设备树文件(.dts)中的相应节点下添加要注册设备的节点

        &soc {

                    ......

                    plf_char_dev: mytest,plf_char_dev {

                            compatible = "mytest,plf_char_dev";

                            ......

                     };

                    ......

        };

        定义好的设备树源文件(dts文件)会被编译器DTC编译成二进制的dtb文件。然后在系统上电时,这个二进制文件会被加载到内存中,其地址被保存在R2寄存器中。但是,这个时候还并不存在device tree,需要经过kernel解析(主要工作分是两次扫描dtb,第一次是为了根据设备节点给设备树分配足够的内存,第二次是将节点填入内存,生成设备树)后,才生成真正的设备树,然后将设备树的根节点地址赋值给一个全局变量"allnodes"。

        然后,内核会根据设备树的内容生成相应的设备结构体,这个结构体中包含了设备的资源(I/O地址等),并用of_device_add函数把设备结构体添加到设备模型中。


2、设备和驱动的匹配

        总线(bus)的 match 函数通过调用of_driver_match_device实现驱动和设备的匹配。确认驱动是否匹配的关键因素是检查driver中的of_device_id类型的成员与device中device_node类型的成员是否匹配,device_node类型代表的是设备树中的树节点,内含compatible, type, name等设备节点信息;of_device_id结构体包含compatible, type, name;优先对比compatible,其次是type,最后是name,这三种信息如果出现一个相同的,则认为设备与驱动匹配。一般都是compatible匹配。

        

        

3、驱动程序的编写

        当使用设备树编写驱动时,不需要再在代码中定义device结构中的resource等成员,因为设备的属性资源定义在设备树的节点中,驱动需要是可通过相应的api获取;而相应的driver结构体需要初始化of_device_id类型的of_match_table成员,以便匹配。由于driver中用于匹配device的数据不再是name成员,所以,name成员可以随意定义,而不影响匹配。

这篇关于高通平台中用devicetree注册设备及驱动匹配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790446

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField