linux-device-driver 相关问题

设备驱动程序在Linux内核中扮演着特殊的角色。它们是以编程方式抽象的“黑盒子”,使特定的硬件响应明确定义的内部编程接口;他们完全隐藏了设备如何工作的细节。

如何正确探测平台设备?

我正在尝试创建一个平台驱动程序我有以下代码 模块 // SPDX 许可证标识符:GPL-2.0 #包括 #包括 #包括 我正在尝试创建一个平台驱动程序,我有以下代码 模块 // SPDX-License-Identifier: GPL-2.0 #include <linux/module.h> #include <linux/init.h> #include <linux/pm.h> #include <linux/of_device.h> #include <linux/fb.h> static int simple_probe(struct platform_device *pdev) { printk(KERN_ERR "SIMPLE: %s\n", "Probing"); return 0; } const struct of_device_id simple_of_match[] = { { .compatible = "example,simple", }, { /*End of List*/ }, }; struct platform_driver simple_driver = { .probe = simple_probe, .driver = { .name = "simple", .owner = THIS_MODULE, .of_match_table = simple_of_match } }; static int __init init(void) { if (platform_driver_register(&simple_driver)) { printk(KERN_ERR "SIMPLE: %s\n", "Registerered"); } else { printk(KERN_ERR "SIMPLE: %s\n", "Failed"); } return 0; } static void __exit deinit(void) { platform_driver_unregister(&simple_driver); } module_init(init); module_exit(deinit); MODULE_DESCRIPTION("Simple Platform driver"); MODULE_AUTHOR("Bret Joseph Antonio <[email protected]>"); MODULE_LICENSE("GPL"); 我的设备树似乎没有运行覆盖,因此设备状态正常。它仍然没有运行探测回调。 设备树 /dts-v1/; / { simple@0 { compatible = "example,simple"; pinctrl-names = "lcm_rst_out1_gpio", "lcm_rst_out0_gpio"; pinctrl-0 = <&PHANDLE1>; pinctrl-1 = <&PHANDLE2>; status = "okay"; }; }; 我希望内核注册我的驱动程序,然后运行探测函数,但是代码 if (platform_driver_register(&simple_driver) == 0) { printk(KERN_ERR "SIMPLE: %s\n", "Registered"); } else { printk(KERN_ERR "SIMPLE: %s\n", "Failed"); } 返回[ 0.178889] SIMPLE: Registered,但探测功能保持沉默。探针功能取决于什么? 难道它不应该在设备树中找到节点后立即运行探测吗? 您需要使用 struct of_device_id simple_of_match[] 语句将您的 MODULE_DEVICE_TABLE(of, simple_of_match); 公开/导出到 of(开放固件)子系统。 内核代码的约定是尽可能将所有符号声明为static。您的代码在这方面不一致,即 struct of_device_id simple_of_match[] 和 struct platform_driver simple_driver 是全局的。

回答 1 投票 0

主要和次要设备编号的使用

我确实对主要和次要设备编号的概念进行了一些澄清。我理解以下概念。 在 Linux 世界中,硬件设备只不过是文件(但很特殊)

回答 4 投票 0

Linux内核为模块生成compile-commands.json

问题:大多数宏定义甚至头文件都不会被IDE查找,因为IDE配置中没有指定包含路径。它会抑制自动完成和导航。 他...

回答 1 投票 0

USB/IP:iso 数据包描述符的大小是多少?

我正在尝试在 Haskell 中编写虚拟 USB 设备。因此,https://docs.kernel.org/usb/usbip_protocol.html 看起来像是协议的规范。 我已经写了足够的代码了

回答 1 投票 0

Linux 块驱动程序如何确保所有 I/O 在卸载之前已完成

Linux 块设备驱动程序分配 struct gendisk 和任何关联的元数据,并提供队列或submit_bio 函数的某些实现来处理来自

回答 1 投票 0

RHCSA 考试本地存储库订阅管理器错误,

我参加了 RHCSA 认证考试,问题 2 要求我创建一个本地存储库。我执行了命令“yum config-manager --add-repo/path/to/AppStream”,但是当我执行时...

回答 3 投票 0

of_node_name_eq 用于设备树节点标签

我正在尝试从我的设备读取标签,但当我在 struct device_node * 上使用 ->full_name 时,我继续读取 pid@43c00000 而不是 pid_0。有没有办法读取标签,或者我...

回答 1 投票 0

USB中断检测检查

我正在尝试在内核源代码中找出USB从机检测中断。我使用 IMX8MM 平台作为从属 USB 设备。我想在USB检测中断上实现并行ISR。当 USB 为

回答 1 投票 0

我的 Linux 操作系统在下载某些软件包时遇到问题

我需要有人帮助我解决这个问题 我是 Linux 操作系统的新手 我不知道问题是什么以及如何解决 在此处输入图像描述 我尝试像往常一样更新一些软件包...

回答 0 投票 0

Linux DRM GEM 在内存管理方面如何与 TTM 配合使用?

我刚刚开始研究Linux上的GPU驱动开发。根据内核文档,Linux DRM 中有两个内存管理器,GEM 和 TTM。 TTM 被描述为某种东西

回答 0 投票 0

无法在 CentOS 7 服务器上访问 GRUB 菜单来重置 Root 密码

我目前运行 CentOS 7 的物理服务器遇到问题。不幸的是,我忘记了 root 密码,需要重置它。我熟悉必要的步骤和命令...

回答 0 投票 0

什么是 PCI_SLOT 宏?

我不明白插槽是什么意思。 它是来自 dbdf(域:总线:设备:函数)的设备号? 来自这里的代码:: https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/pci.h#...

回答 1 投票 0

无法在 Ubuntu 22.04 中使用 insmod 加载 libcomposite.ko

我试图在我的 Ubuntu 主机上加载 libcomposite.ko,但它失败了。我正在使用命令: sudo insmod /lib/modules/5.19.0-38-generic/kernel/drivers/usb/gadget/libcomposite.ko 我也用过modpro...

回答 1 投票 0

linux 内核模块应该在哪里安装头文件

我有一个 out of tree linux 内核模块,它有一个公共头文件。此标头旨在与其他模块共享,因为它声明了模块的导出函数,而不是与用户空间共享。

回答 1 投票 0

misc_register() 不检查名称是否存在于 /dev/

我是 Linux 内核/设备的新手,我尝试了以下实验: 创建一个设备名为“mydev”的节点: sudo mknod /dev/mydev c 100 101 插入一个 misc 模块,它会尝试...

回答 1 投票 0

在内核配置中启用 mt7601u WIFI dongle 驱动程序

我有一块IMX6开发板。默认情况下,Linux 映像不包含 MediaTek mt7601u WIFI dongle,因此我尝试使用内核配置添加此驱动程序并重新编译它。 我启用了特定的操作...

回答 0 投票 0

我可以在用户空间修改regmap_config参数,比如regmap_config的.val_bits吗?

我想知道是否可以从用户空间修改 regmap_config 参数,例如 .val_bits 字段。我知道 regmap_config 结构通常由内核使用

回答 0 投票 0

来自 linux 内核模块的 PC 扬声器蜂鸣声

如何在 linux 内核模块文件中编写一些代码时发出哔哔声? 我看到有人在谈论 pcspkr,但我不明白如何实际使用它..

回答 0 投票 0

如何把这个驱动编译进这个内核?

我正在尝试将 wifi 驱动程序编译到 linux 内核中: https://github.com/McMCCRU/rtl8188gu https://github.com/OpenStick/linux 我对如何将驱动程序编译成内核知之甚少,所以我...

回答 0 投票 0

Raspberry Pi 多罐总线 [关闭]

首先,我真的不知道它是否属于这里,但我要发布,如果它不是输入它的最佳位置,请告诉在哪里做。 我正在使用 raspberryPi 4,我设计了一个定制的

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.