【问题标题】:How to get started writing device driver for Linux?如何开始为 Linux 编写设备驱动程序?
【发布时间】:2018-06-01 12:16:35
【问题描述】:

我有一个用于笔记本电脑的 USB 3.0 PCI 卡。仅适用于 Windows 7 的驱动程序。设备我有https://www.startech.com/Cards-Adapters/USB-3.0/Cards/2-Port-ExpressCard-SuperSpeed-USB-3-Card-Adapter~ECUSB3S22#dnlds

我有运行 Ubuntu 16 的旧笔记本电脑。我想为这张卡创建一个 Linux 驱动程序。

关于谁编写了软件的一些提示。安装软件时,会显示不同的公司。这是公司https://www.renesas.com/en-us/products/software-tools/software-os-middleware-driver.html

我想知道我是否可以利用一些 Windows 7 驱动程序文件和瑞萨规范来开始使用。

我没有关于 Linux 设备驱动程序的好的参考资料。关于我可以从哪里开始的任何指导?我唯一的经验是很久以前在 MS Windows 和基于 Web 的 Java 业务应用程序上的一些 C/C++。

【问题讨论】:

  • 为 Linux 编写 USB 3.0 驱动程序是一项相当复杂的任务。必须写的是内核空间而不是用户空间——所以你需要知道内核是如何工作的。当然,您还需要了解有关 USB 协议的几乎所有信息。需要阅读大量文档 - 规范的数千个方面。这不是一个或两个周末的项目。对于一个没有内核空间编程经验且没有任何硬件 USB 协议分析器的人来说,编写它可能需要几个月甚至几年的时间。

标签: usb linux-device-driver


【解决方案1】:

首先阅读Linux设备驱动模型

您必须编写一个内核模块/驱动程序,将卡注册为 根集线器

如果您在 linux 上运行 lsusb,则 USB 主机端口是根集线器

也运行lspci -v 来获取 PCI 设备,您的内核模块必须包含到内核驱动程序 pcieport可扩展主机控制器接口 xhci_hcd 的链接(Linux 设备驱动程序模型)

https://forums.linuxmint.com/viewtopic.php?t=112069

一个带有源代码的例子在

USB 集线器一般在https://github.com/torvalds/linux/blob/master/drivers/usb/core/hub.c

USB 内核模块的关键组件是 URB(USB 请求块)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多