如何开始为 Linux 编写设备驱动程序?

xpa*_*ast 2 usb linux-device-driver

我有一个用于笔记本电脑的 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 上使用 C/C++ 以及使用 Java 的基于 Web 的业务应用程序。

ral*_*htp 6

首先阅读Linux 设备驱动程序模型

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

如果你跑lsusb在 Linux 上运行,则 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 请求块)