Articles of 驱动程序

Archer T4UH USB无线适配器是否提供Linux驱动程序?

TP-Link无线适配器只有Windows驱动程序出货。 TP-Link没有提供驱动程序,并没有表明他们打算这样做。 有第三方驱动程序可用吗?

为什么重复启动基于i2c操作不支持在Linux?

我想从需要多次启动操作的i2c slave读取它的寄存器值。 在某种程度上,我已经在Linux内核3.18.21中追踪了I2C驱动程序,发现它不支持多重启动操作,我无法从这个I2C从设备(以太网供电pipe理器PD69104B1)读取数据。 我仍然可以find扩展驱动程序的方式,如果需要这个i2c slave或其他需要的东西的话。 我用的是i2c-tools 3.2.1。 我试着 $ i2cdump -y 0 0x20 但我可以看到相同的值,这意味着它每次都先读取寄存器。 $ i2cget -y 0 0x20 0x12 或者任何其他寄存器地址返回与第一个寄存器相同的值。 该从站支持两个读取操作: 字节读写地址得到它的值,但是这需要多重启动 块读取 – 开始读取和i2c从属将按顺序给寄存器值,如0x00 0x01 ….(第一寄存器,第二,第三,第四….等) 我尝试一切可能的方法: i2c_smbus_access() i2c_smbus_write_byte() i2c_smbus_read_block_data() write() read() 但是大部分时间,i2c总线进入超时错误和挂起的情况。 任何人有想法如何在Linux中实现这一点? Update0: 该I2C从机需要独特的读周期: 方向改变:S Addr Wr [A] RegAddress [A] S Addr Rd [A] [RegValue] P 简短阅读:S Addr Rd [A] [RegValue] […]

如何知道在运行的linux上是否有(编译/内核模块)设备驱动程序控制设备?

我如何知道在运行的Linux上是否支持某个设备?如果有,哪个设备驱动程序控制它? 例如,服务器上的lspci (PowerEdge 2900)给出: 00:00.0 Host bridge: Intel Corporation 5000X Chipset Memory Controller Hub (rev 12) 00:02.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 2 (rev 12) 00:03.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express x4 Port 3 (rev 12) 00:04.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI […]

Linux USB驱动程序probe()问题

我目前正在使用Seowon SWU-3220A WiMAX USB调制解调器的内核模式USB驱动程序。 这是一个复杂的设备(插入系统后显示为USB CDROM,驱动程序需要切换到调制解调器模式)。 我的问题是,从我的驱动程序probe()函数从来没有被调用。 我认为这是因为OS使用标准的USB大容量存储驱动程序,而不是我自己的。 我初始化驱动程序如下: #define GDM7213_VENDOR_ID 0x1076 #define GDM7213_PRODUCT_ID 0x7f40 static struct usb_device_id gdm7213_table [] = { { USB_DEVICE(GDM7213_VENDOR_ID, GDM7213_PRODUCT_ID) }, { } }; MODULE_DEVICE_TABLE(usb, gdm7213_table); static struct usb_driver gdm7213_driver = { .name = "gdm7213", .probe = gdm7213_probe, .disconnect = gdm7213_disconnect, .suspend = gdm7213_suspend, .resume = gdm7213_resume, .pre_reset = gdm7213_pre_reset, […]

init_MUTEX在Linux内核版本3.2中去了哪里?

我正在关注Linux设备驱动程序(第三版) 。 当我尝试模仿第6章中的scull示例时,会报告错误。 它说: error: implicit declaration of function 'init_MUTEX' [-Werror=implicit-function-declaration] 任何人都可以告诉我init_MUTEX去了哪里? 顺便问一下,有没有一个列表,我可以检查所有的内核API更改?

Linux中的全局variables.ko多个设备

我有一个用于embedded式Linux系统的Wi-Fi驱动程序(一个.ko文件),我的主板上有两个相同的Wi-Fi设备。 将.ko文件放入内核之后,系统可以驱动这两个Wi-Fi设备。 我的问题是:如果驱动程序的源代码包含全局variables(和静态variables),这两个设备是否共享同一组variables? 或者,每个设备将有两个驱动程序实例? 谢谢!

主号码次号码和驾驶员加载

我是初学者。 我有一些关于设备驱动程序相关的主要号码和次要号码的想法。 另外我知道大多数可以插入Linux系统的设备都有一个主要的编号。 并根据这个主数字,加载相应的驱动程序。 我有这个疑问,请告诉我内核在插入时如何从设备读取主设备号? 请解释从设备插件到驱动程序加载的步骤,尽可能简单。 提前致谢。

如果你只是使用用户空间的outb / inb,Linux字符设备驱动程序有什么意义?

我很难明白什么时候我应该写一个设备驱动程序,而不是直接从我的用户空间程序outb发送操作码到硬件。 我最初认为我应该为硬件创build简单的例程,但是现在我开始认为algorithm应该留在用户空间中。 假设我正在编程一个假想的机器人arm。 我可以在Linux内核模块中编写几个函数来自动执行常见任务所需的硬件输出(例如,将arm移动到HOME位置,在assembly线开始时从已知位置拾取新块)等。 但是,在阅读了关于设备驱动程序的更多信息后,似乎经验法则是尽可能使设备驱动程序尽可能接近硬件特定的代码,而将“繁重”algorithm留给用户空间。 这使我困惑,因为如果设备驱动程序实现的唯一function是简单的操作码调用,那么用户空间程序使用设备文件而不是直接调用outb / outb的原因是什么? 我想我想弄清楚的是:我怎样才能决定什么function进入内核空间,而不是用户空间?

如何将PCI ID添加到串行端口驱动程序?

linux-y3pi:~ # lspci | grep -i ethernet 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 01) linux-y3pi:~ # lspci -n | grep 01:00.0 01:00.0 0200: 10ec:8136 (rev 01) 从这里: http : //www.cyberciti.biz/tips/linux-find-supported-pci-hardware-drivers.html 示例输出: 00:1b.0 0403:8086:27d8(rev 01)其中, 00:1b.0 – 设备 8086 – 英特尔公司的构造函数代码 27d8 – 模型ID。 所以,我打开了: /usr/src/f/rtnet/drivers/experimental/rt_r8169.c 相关代码(IMO): static […]

如何用c语言编写设备驱动程序

我想在linux操作系统中用C语言编写驱动程序,尽pipe我觉得它非常困难。 我可以得到一些关于如何启动或书籍遵循的提示吗? 驱动程序可以从我的USB端口到显卡! 我知道在哪里可以找书,我想知道我应该从哪里开始。 我是否需要具备硬件知识,以及哪些特定的书籍适合像我这样的新手