ITKeyword,专注技术干货聚合推荐

注册 | 登录

linux为PCI、USB设备找到合适的驱动

q553716434 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:Linux设备驱动入门----USB设备驱动

/**************************************** * USB主机与设备驱动 * 主机侧:由底到高:USB主机控制器硬件--> * USB主机控制器驱动--> USB核心层 --> USB *


本文转载自:http://hi.baidu.com/deep_pro/blog/item/415ec217bdead20c4b90a77d.html 尊重作者 这些操作都是我很久以前就想知道的,但是一直没有找到合适的资料,
终于在 《linux 内核技术手册》上看到了
做一个记录
1、确定网卡驱动
网卡只知道eth0 这样的设备名,如何确定到具体的驱动呢?
[root@localhost ~]# basename `readlink /sys/class/net/eth0/device/driver/module`
e100
这说明e100正是eth0使用的模块名
(我拿的IBM R32 ,很古老的本本的)

之后你可以在内核源码目录里搜索相关配置,以便新内核也能使用该模块
find -type f -name Makefile |xargs grep e100
得到
./drivers/net/Makefile:obj-$(CONFIG_E100) += e100.o
很明显,只要配置上CONFIG_E100,就能启用该模块

2、查找一个usb设备吧
但是USB鼠标不像网卡那么被人熟知,它的设备名是什么呢?
既然是HID输入设备,自然是/dev/input/eventX了
但是x是多少就不知道了。我也不明白为什么会有这么多的没用的event设备
只能尝试 od /dev/input/event0 这样,晃动鼠标看看能够读取到什么
这样确定我的event1是键盘,event2是指点棒,

推荐:Linux USB驱动学习总结(二)---- USB设备驱动

USB 设备驱动: 一、USB 描述符:(存在于USB 的E2PROM里面) 1、  设备描述符:struct usb_device_descriptor 2、  配置描述符:struct usb_config_descriptor

event3是USB鼠标
[root@localhost ~]# basename `readlink /sys/class/input/event3/device/driver/module`
usbhid
[root@localhost ~]# basename `readlink /sys/class/input/event1/device/driver/module`
atkbd
[root@localhost ~]# basename `readlink /sys/class/input/event2/device/driver/module`
psmouse

之后的步骤同上

以上都是已经找到驱动的情况,那么如果已有的Linux尚未识别的设备,查找驱动就不一眼了

3、未知PCI设备找驱动
这里还是以网卡为例
[root@localhost ~]# lspci |grep -i  ethernet
02:08.0 Ethernet controller: Intel Corporation 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (rev 42)

注意其总线ID 02:08.0 ,能够确定其在sys文件系统中的位置
[root@localhost ~]# cd /sys/bus/pci/devices/0000\:02\:08.0/
[root@localhost 0000:02:08.0]# cat vendor
0x8086
[root@localhost 0000:02:08.0]# cat device
0x1031
得到了供应商 0x8086和设备ID 0x1031

现在为其查找驱动,在内核目录中
[root@localhost 2.6.23.1-42.fc8-i686]# grep -i 0x8086 include/linux/pci_ids.h
#define PCI_VENDOR_ID_INTEL             0x8086

于是支持这个网卡的驱动肯定会用这个宏PCI_VENDOR_ID_INTEL,并且使用了设备ID 0x1031

[root@localhost linux-2.6.15.6]# grep -Rl PCI_VENDOR_ID_INTEL *|grep 1031
drivers/net/eepro100.c: { PCI_VENDOR_ID_INTEL, 0x1031, PCI_ANY_ID, PCI_ANY_ID, },

直接定位到eepro100.c

4、未知USB设备
还是USB鼠标举例吧,虽然不大可能找不到驱动,通过热插拔,很容易定位到USB设备
[root@localhost ~]# lsusb
Bus 002 Device 002: ID 15d9:0a33 
Bus 002 Device 001: ID 0000:0000 
Bus 003 Device 001: ID 0000:0000 
Bus 001 Device 001: ID 0000:0000 
[root@localhost ~]# lsusb
Bus 002 Device 001: ID 0000:0000 
Bus 003 Device 001: ID 0000:0000 
Bus 001 Device 001: ID 0000:0000 

ID为0000:0000  的设备是USB主控制器,可以忽略不计,这个鼠标是
Bus 002 Device 002: ID 15d9:0a33
同PCI设备一样的道理,这里也要搜索 VID和PID ,同样的过程

推荐:Linux设备驱动之USB hub驱动

Linux设备驱动之USB hub驱动 2012-07-24 14:06:49 分类: 原文地址:Linux设备驱动之USB hub驱动 作者:xgr180 ------------------------------------------ 本

本文转载自:http://hi.baidu.com/deep_pro/blog/item/415ec217bdead20c4b90a77d.html 尊重作者 这些操作都是我很久以前就想知道的,但是一直没有找到合适的资料, 终于在 《linux 内核技术手册

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。