LINUX下USB1.1设备学习小记(6)_hid与input子系统(3)
现在回到input_attach_handler中error=handler->connect(handler,dev,id);现在知道handler->connect是啥了吧,就是mousedev_connectmousedev_connect在/drivers/input/mouse
LINUX下USB1.1设备学习小记(6)_hid与input子系统(2)
走完之前的程序后的数据结构注意,之后会把local中的数据清空好,到下一组为0x09,0x01这是一个局域项目,重新向局域结构中添加项目下一个组为0xa1,0x00这是一个主项目,用于物理集合收集的开始添加完成后的数据结构又把局域结构中的数据清零到下一组,为0x05,0x09这是一个全局项目,重设用
LINUX下USB1.1设备学习小记(6)_hid与input子系统(1)
现在终于开始匹配设备的接口驱动了目标当然是hid,当然在了解驱动初始化过程之前,让我们先看看一下hid协议我对hid协议的理解是建立在鼠标上的,所以如果有理解不当的地方,请务必请大家指出我们先来看鼠标的结构,鼠标有左键,右键,中键,滚轮,X轴和Y轴这6个量其中左键,右键和中键的点击可以用0和1两个数
LINUX下USB1.1设备学习小记(5)_uhci与设备(1)
现在开始uhci与设备的通信分析先看分析枚举过程,再分析数据通信USB总线上设备的枚举:1.当设备插入时,设备的上拉电阻使信号线的电位升高,这时候根集线器检测到设备的插入2.主机发送Get_status到根集线器来获得当前端口的状态3.主机发送Set_Feature,让根集线器复位端口,使得端口上的
LINUX下USB1.1设备学习小记(4)_uhci(7)
uhci_hub_control在/drivers/usb/host/uhci-hcd.c中staticintuhci_hub_control(structusb_hcd*hcd,u16typeReq,u16wValue,u16wIndex,char*buf,u16wLength){structuh
LINUX下USB1.1设备学习小记(4)_uhci(5)
usb_get_configuration的用途为取得并设置所有的描述符usb_get_configuration在/drivers/usb/core/config.c中intusb_get_configuration(structusb_device*dev){structdevice*ddev=
LINUX下USB1.1设备学习小记(4)_uhci(4)
启动主机控制器和根集线器之后,现在来注册根集线器register_root_hub负责根集线器的注册register_root_hub在/drivers/usb/core/hcd.c中staticintregister_root_hub(structusb_hcd*hcd){structdevice
LINUX下USB1.1设备学习小记(4)_uhci(3)
在pci中访问uhci寄存器需要使用io端口,0x0为uhci的控制命令寄存器,所有的详细寄存器在uhci的手册中均有描述,我这里就不详细介绍了,想要的在下面的附录中有提供check_and_reset_hc检测uhci是否需要复位,并完成复位后的初始化工作check_and_reset_hc在/d
LINUX下USB1.1设备学习小记(4)_uhci(2)
好~现在万事俱备,只欠uhci硬件的注册了现在谈一下uhci硬件的组成,uhci的硬件分为两个大的部分,主机控制器和根集线器,当提交uhci硬件的注册到pci总线后,经过一轮匹配,终于找到了uhci,进入到uhci_pci_driver->probe这个函数下usb_hcd_pci_probe
LINUX下USB1.1设备学习小记(4)_uhci(1)
现在开始LINUX下USB主机和设备的驱动架构分析先讲解的内容,先不在PDIUSBD12上写入HID等模块,等讲解完UHCI和PDIUSBD12的详细通讯过程之后,再在D12上写HID的模块内容,进行蓝框内容的讲解首先是usb主机控制器UHCI在LINUX下的架构,关于sysfs的内容在”个人对ko
LINUX下USB1.1设备学习小记(3)_host与device
各位还记得”任何传输都是由host发起的”这句话么~在usb设备插入pc中到拔出usb设备,都是由host进行询问的一个usb鼠标的工作流程可以表达如下:usb鼠标插入pc中:主机询问设备:给我你的设备信息(控制传输)主机根据usb鼠标的设备信息进行驱动配置,配置结束后主机询问设备:给我你的数据信息
LINUX下USB1.1设备学习小记(2)_协议
USB协议:先看USB接口可以看出,在USB使用了4根线,分别为电源线,地线,信号线和差分信号线差分信号线用于检测信号线的传输是否正确下面我们只关注信号线然后是USB的串口传输在串口传输中,由于所有的信号共用一根数据线,所以不仅有先来后到的问题,而且在一个设备和另一个设备进行通信的时候,如果别的设备
LINUX下USB1.1设备学习小记(1)
现在暂定的学习目标为一个USB鼠标的设备到主机的传输过程软件上的贯穿(会涉及到部分硬件但是本人的电电路知识有限涉及的量不会多)学习的框架如下:1.USB1.1协议A.控制传输B.中断传输2.USB主机A.LINUX下的UHCI3.USB设备A.飞利浦的PDIUSBD124.HID协议A.鼠标部分5.
[原创] 写一个块设备驱动(15)
第15章(最终章)+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@h
[原创] 写一个块设备驱动(14)
第14章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmai
[原创] 写一个块设备驱动(13)
第13章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmai
[原创] 写一个块设备驱动(12)
第12章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmai
[原创] 写一个块设备驱动(11)
第11章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmai
[原创] 写一个块设备驱动(10)
第10章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmai
[原创] 写一个块设备驱动(9)
第9章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmail