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

2023-11-12

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成员可以随意定义,而不影响匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高通平台中用devicetree注册设备及驱动匹配 的相关文章

  • 手写算法-python代码实现DBSCAN

    手写算法 python代码实现DBSCAN 原理解析 代码实现 实例演示与sklearn对比 总结 原理解析 上篇文章我们优化了Kmeans聚类算法 最后留下一个问题 Kmeans只适合处理凸样本集 不适合处理非凸样本集 这个问题 怎么解决
  • 2023最系统的网络安全学习路线

    什么是网络安全 网络安全是指保护计算机网络及其系统和应用程序的安全性和完整性 防止未经授权的访问 攻击 病毒 恶意软件和其他安全威胁 它是通过技术 管理和教育等综合手段来确保网络信息安全 网络安全包括网络防火墙 入侵检测系统 数据加密 网络
  • 【大模型】开源大模型汇总以及微调策略

    目录 前言 LLaMA stanford Alpaca Guanaco Vicuna Chinese LLaMA Alpaca Chinese Vicuna Luotuo Chinese Falcon OpenBuddy Falcon Ch
  • 数据结构第一章内容(思维导图以及概要)

    思维导图和内容概要 一 数据结构的基本概念 ps 与数据元素本身的形式 内容 相对位置 个数无关的是数据的逻辑结构 通常要求同一逻辑结构中的所有数据元素具有相同的特性 这意味着不仅数据元素所包含的数据项的个数要相同 而且对应数据项的类型要一
  • (一)python爬虫验证码识别(去除干扰线)

    一 python爬虫验证码识别 去除干扰线 1 开发环境与工具 python27 sklearn pytesser opencv等 pycharm windows7 2 数据集 用request库爬虫抓取某一网站验证码1200张 并做好标注
  • 满满的干货!java计算公式引擎

    Spring 全家桶 Spring 原理 Spring面试题 思维导图 面试题 Spring视频 Spring 原理 Spring特点 Spring 核心组件 Spring常用模块 Spring主要包 Spring常用注解 Sping第三方
  • MYSQL数据库锁常用sql(解决锁表,锁库)

    MYSQL数据库锁常用sql 解决锁表 锁库 查询数据库锁 SELECT FROM INFORMATION SCHEMA INNODB LOCKS 查看等待锁的事务 SELECT FROM INFORMATION SCHEMA INNODB
  • 谷歌整体战略:关于人工智能、云服务和登月计划的未来

    转载自我的博客 谷歌整体战略 关于人工智能 云服务和登月计划的未来 CB Insights 今日发布了一篇关于谷歌业务战略的深度分析报告 Google Strategy Teardown Betting The Future On AI C
  • qt自定义标题栏和边框_在Windows 7中自定义标题栏和其他系统字体

    qt自定义标题栏和边框 Would you like to tweak your title bar and menu fonts in Windows 7 Here s how you can change those little se
  • 嵌入式软件国际化(多语言) 点阵字库选择分析

    概述 嵌入式软件国际化 多语言 点阵字库选择分析 多字节字符集与unicode 多字节编码最大的问题在于每一个语种的字符集编码不兼容 unicode的好处在于将所有人类语种字符都有了统一的编码 现在世界上语言基本都包含在了基本多文种平面0上
  • c语言输出字符串显示在屏幕上,C语言输出printf

    C语言输出printf教程 在 在我们使用 printf 函数时 格式占位符的格式个数一定要与后面的需要输出的变量或者字面量的个数匹配 否则程序报错 printf函数详解 语法 int printf const char format 参数
  • Vue中动画的实现 从基本动画,到炫酷动画。看这一篇就够了

    文章目录 Vue中的基本动画实现 动画类名的重定义 使用第三方的动画库 我就选择其中一个库做示范其他都一样 Vue中的基本动画实现 直接一点 基本动画的步骤 在需要加动画的地方 加入transition
  • EXCEL实现多行多列转为一行多列形式,OFFSET函数

    1 需要实现数据多行多列转为一行多列的数据 2 使用函数 OFFSET A 1 COLUMN A1 1 3 MOD COLUMN A1 1 3 可根据实际数据情况替换数字 引用单元格 3 实现效果 4 操作步骤 观察数据 输入公式 点击回车
  • C++中的STL中(容器、迭代器、适配器、配置器)

    首先明确STL中的六大组成部分 容器 迭代器 适配器 算法 仿函数 配置器 一 C 中的容器 顺序容器 关联容器 容器适配器 1 顺序容器 2 关联容器 3 容器适配器 二 STL中 容器 适配器的关系 参考博客如下 C 顺序性容器 关联性
  • QT固定文件名格式串转化为TreeView在界面上展示文件树形目录

    获得的文件串格式 file1 1 sss txt file1 bin zip file2 linpanhu docx qmake vc bat send zip 思路 gt gt gt file1 1 sss txt file1 bin z
  • golang The system cannot find the file specified

    使用io ioutil包读取文件时报错 open abi The system cannot find the file specified 原因是 ioutil ReadFile 这个方法需要传入决绝路径的文件名 代码 abiStr er
  • ESP32 之 ESP-IDF 教学(十一)WiFi篇—— WiFi两种模式

    本文章 来自原创专栏 ESP32教学专栏 基于ESP IDF 讲解如何使用 ESP IDF 构建 ESP32 程序 发布文章并会持续为已发布文章添加新内容 每篇文章都经过了精打细磨 通过下方对话框进入专栏目录页 CSDN 请求进入目录 O
  • 安全模型和业务安全体系

    网络安全和业务安全 网络安全中 攻击者往往通过技术手段 以非正常的技术 XSS Injection Penestrating等 影响业务正常运行 窃取敏感数据 比如 某黑客通过SSRF进入内网 并在内网横向扩张 最终脱库成功 业务安全中 黑
  • 如何理解和解决CXXABI not found问题?

    编译C 程序时 在链接阶段有时会出现CXXABI not found的问题 usr lib64 libstdc so 6 version CXXABI 1 3 8 not found 问题出现的场景 当前编译的程序需要依赖其它已编译的组件
  • vtk中的点云曲面重建

    对于光学扫描设备 如激光雷达 采集到的非规则点云数据 最重要的需求之一就是进行表面重建 Surface Reconstruction 对成片密集分布的点云以三角片拟合 形成连续 精确 良态的曲面表示 目前主流的算法可分为剖分类 组合类和拟合

随机推荐