我添加了 MAX7320 i2c 输出芯片。如何让内核为其加载驱动程序?

2023-12-29

我已将 MAX7320 i2c 扩展器芯片添加到 ARM Linux 板上的 i2c 总线 0。

该芯片可以通过用户空间的命令正常工作,例如/usr/sbin/i2cset -y 0 0x5d 0x02 and /usr/sbin/i2cget -y 0 0x5d.

有一个drivers/gpio/gpio-max732x.c内核源代码中的文件,该文件被编译到我正在运行的内核中。 (我是从源代码构建的。)

如何告诉内核它应该在“i2c 总线 0,芯片 id 0x5d”上实例化 gpio-max732x 驱动程序?

我需要修改设备树吗.dts文件并放置一个新的.dtb文件输入/boot/dtbs/?

实例化的子句是什么gpio-max732x模块长什么样?

附:我见过https://lkml.org/lkml/2015/1/13/305 https://lkml.org/lkml/2015/1/13/305但我不知道如何获取补丁文件。


设备树

您的芯片必须有适当的设备树定义,以便驱动程序实例化。有两种方法可以做到这一点:

  1. Modify .dts您的主板的设备树文件(查看arch/arm/boot/dts/),然后重新编译并将其重新刷新到您的设备。

    当您可以访问主板的内核源并且能够重新刷新时,首选这种方式.dtb文件到您的设备。

  2. Create 设备树覆盖 http://lxr.free-electrons.com/source/Documentation/devicetree/overlay-notes.txt文件,编译它并load https://www.raspberrypi.org/documentation/configuration/device-tree.md#part3.5它在您的设备上。

    当您无法访问主板的内核源代码,或者无法将新的设备树 blob 刷新到设备时,首选此方法。

设备树中的设备定义应该类似于(根据文档/devicetree/bindings/gpio/gpio-max732x.txt http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/gpio/gpio-max732x.txt):

&i2c0 {
    expander: max7320@5d {
        compatible = "maxim,max7320";
        reg = <0x5d>;
        gpio-controller;
        #gpio-cells = <2>;
    };
};

内核配置

由于您的扩展器芯片 (MAX7320) 没有输入 GPIO,因此您不需要 MAX732x 的 IRQ 支持。所以你可以禁用CONFIG_GPIO_MAX732X_IRQ在你的内核配置中。

与驱动程序匹配的设备

一旦加载了设备树(带有 MAX7320 的定义),MAX732x 驱动程序将与设备定义相匹配并实例化。下面解释匹配是如何发生的。

在设备树文件中你有compatible财产:

compatible = "maxim,max7320";

在MAX732x驱动中你可以看到这个表:

static const struct of_device_id max732x_of_table[] = {
    ...
    { .compatible = "maxim,max7320" },
    ...

当加载驱动程序和加载设备树 blob 时,内核会尝试查找每个驱动程序和设备树定义的匹配项。只需比较上面的字符串即可。如果字符串匹配——内核实例化驱动程序,将相应的设备参数传递给它。看着i2c_device_match() http://lxr.free-electrons.com/source/drivers/i2c/i2c-core.c?v=4.5#L503功能了解详细信息。

获取补丁

最好的方法是使用已经支持 MAX732x (v4.0+) 设备树的内核源代码。但如果事实并非如此,那么……

您可以从上游内核中挑选补丁到您的内核:

$ git remote add upstream git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ git fetch --all
$ git cherry-pick 43c4bcf9425e
$ git cherry-pick 479f8a5744d8
$ git cherry-pick 09afa276d52e
$ git cherry-pick 996bd13f28e6

如果您仍然想手动应用补丁(实际上是最糟糕的选择),here https://stackoverflow.com/a/27933950/3866447您可以找到补丁的直接链接。点击(patch)获取原始补丁的链接。

另请检查后续补丁gpio-max732x.c .

硬件问题

确保您的芯片具有0x5dI2C 地址,检查配置引脚是否连接到下一行(按照数据表 https://datasheets.maximintegrated.com/en/ds/MAX7320.pdf):

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

我添加了 MAX7320 i2c 输出芯片。如何让内核为其加载驱动程序? 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现

随机推荐

  • 求numpy中n个点到m个点之间的平方距离

    我有 2 个 numpy 数组 比如说X and Y 其中每一行代表一个点向量 我想找到 X 中每个点到 Y 中每个点之间的平方欧氏距离 将称为 距离 我希望输出是矩阵 D 其中D i j is dist X i Y j 我有以下基于以下
  • 当传播设置为 Propagation.NOT_SUPPORTED 时 Hibernate 和 TransactionRequiredException

    TL DR 服务方法注释为 Transactional propagation Propagation NOT SUPPORTED Hibernate 5 0 4 Final 一切按预期工作 方法在没有事务的情况下执行 休眠 5 2 5 最
  • 存储变量数据

    我正在使用 ASP NET C MVC3 和 SQL Server 2008 构建一个应用程序 向用户提供一个表格供其填写 姓名 电子邮件 地址等 我希望允许应用程序管理员在此表单中添加额外的动态问题 额外问题的数量和返回的数据类型会有所不
  • Laravel Dusk,DatabaseTransactions 不执行回滚

    我正在使用 Laravel Dusk 以下注册测试工作正常 只是它不会回滚事务 即在 注册 上创建的用户记录始终保留在数据库中 我的表都设置为使用 InnoDB 引擎 对发生的事情有什么想法吗 我在很多地方都放了日志 看起来没有什么特别错误
  • 从专用网卡访问时,Rails 显示 IP 为 127.0.0.1,但 Nginx 显示正确的 IP。公共 IP 转发良好

    我们正在 Unicorn Nginx 上运行 Rails 应用程序 服务器有两个我们使用的网卡 eth0处理公共互联网的请求 以及eth2处理来自我们专用网络的请求 当请求通过时eth0 nginx日志显示公共IP Rails日志也显示此I
  • 在 xcode 中添加另一个团队

    这个问题不是重复的在 xcode 中添加另一个团队 https stackoverflow com questions 32610740 adding another team to xcode or 受邀加入开发团队时如何从 Xcode
  • 如何在 C# 中复制类的实例

    C 有没有办法复制对象 就像是 var dupe MyClass original 我希望它们相等 以便所有数据成员都相同 但不共享相同的内存位置 您可能正在谈论深层复制 深拷贝与浅拷贝 https stackoverflow com qu
  • 一次自动静音播放多个 YouTube 视频

    我正在尝试制作一个使用 YouTube iframe API 来显示多个视频的网页 这些视频在加载时自动开始播放 我希望 4 个视频中的 3 个开始静音播放 但第 4 个视频有音频播放 最后 我尝试创建一个静音 取消静音和暂停 开始按钮 让
  • JSON 数据未显示,而是显示空白屏幕

    尝试制作一个简单的应用程序 从服务器获取 JSON 数据并将它们显示在自定义列表中 这是非常简单的事情 但是当我运行该应用程序时 它显示白色空白屏幕 但没有数据 它也没有显示任何错误 我假设如果有任何错误它就不会在我的手机中运行 但不显示获
  • 擦除后无法写入闪存

    所以我不能在擦除后直接写入内部闪存 如果写操作之前没有擦除操作 那么我可以 有什么想法吗 编程函数返回 成功写入 值 但查看内存时 没有写入任何数据 这是代码 uint32 t pageAddress 0x08008000 uint16 t
  • csv 到 xml:不确定在 Mule ESB 中执行此操作的最佳方法

    我是 Mule 的新手 所以请耐心等待 我收到以下 CSV 文件 Company1 2 123 Street Winchester UK 000010 CHRISTINE I HAAS A00 3978 1995 01 01 PRES 18
  • Java - 在不同的进程中启动另一个类的main

    我需要一种干净的方法来使用 GUI 启动 Java 程序的许多实例 并且我想以编程方式执行此操作 我想要运行的 程序 只是一个 class 文件 带有 main 方法的已编译的 java 文件 它应该显示一个 GUI 并独立于其他文件运行
  • Laravel Eloquent - 如果列值为 NULL 或 0,则不运行关系查询

    我的内部有各种各样的关系Eloquent Models看起来像这样 public function main image return this gt hasOne Media class id main image id 然而 如果mai
  • 创建行并将其写入文件

    是否可以创建一个文件并在 vbscript 中向其中写入行 类似的东西蝙蝠中的回声 file echo something something gt gt sometextfile txt 执行 vbscript 时 根据脚本的路径将创建一
  • 通过 debconf-set-selections 为 mysql 预配置一个空密码

    我正在设置一个 bash 脚本来自动构建 LAMP 环境 我在用debconf set selections在安装 mysql phpmyadmin 等之前设置选项 主要是效果很好 但问题是我have to为 mysql 设置一个空密码 即
  • 如何知道给定用户是否已使用 MSAL 登录?

    使用 msal js 库 Microsoft 身份验证库 这是了解给定用户是否已登录的方法 我的目的是避免在用户的凭据已保存在浏览器存储中时显示登录弹出窗口 我目前的做法 function isUserLoggedIn username c
  • PreparedStatement 上的 ArrayOutOfBoundsException

    我在这里不知所措 有人能看出这段代码有什么问题吗 我将 sqlite 与此驱动程序一起使用 https bitbucket org xerial sqlite jdbc downloads https bitbucket org xeria
  • 在 Android 上准备媒体记录器时出现延迟

    我正在 10 秒内录制多个小视频 在创建任何视频之前 我需要一次又一次地准备和启动媒体录制器 因此 每个视频都有一两秒的时间滞后 在准备像 Instagram 这样的媒体记录器时 有什么方法可以避免这种时间延迟吗 public boolea
  • 如何在选择文件之前禁用提交按钮

    我有一个 HTML 文件上传页面 我需要在选择文件之前禁用提交按钮 然后提交按钮将被启用 用户可以上传 我假设我可以使用 jQuery 代码来查询文件上传字段的值 以查看是否已选择上传文件 我假设我可以检查焦点何时离开文件上传字段 我担心的
  • 我添加了 MAX7320 i2c 输出芯片。如何让内核为其加载驱动程序?

    我已将 MAX7320 i2c 扩展器芯片添加到 ARM Linux 板上的 i2c 总线 0 该芯片可以通过用户空间的命令正常工作 例如 usr sbin i2cset y 0 0x5d 0x02 and usr sbin i2cget