tag 标签: 设备驱动

相关博文
  • 热度 26
    2018-1-25 11:02
    4079 次阅读|
    0 个评论
    【小梅哥FPGA】如何在设备驱动冲突导致蓝屏的情况下强制删除该设备驱动 ...
    小梅哥编写,未经允许,不得用于任何商业用途。 插上设备,在设备管理器中选择要卸载的设备驱动,卸载其驱动,大家都会,但是万一设备一插上电脑就蓝屏,连设备管理器打开的机会都不给你咋办呢?这里找到了解决办法。该办法还可以帮忙清理一大堆无用的驱动哦。 这两天,玩儿了下CrazyBingo的那个USB Camera。他那个Camera是用USB2.0芯片CY7C68013做的,该芯片默认驱动不支持win764位。需要关闭windows强制签名。我就关了这个驱动签名,关闭之后成功的安装了驱动并捕获到了图像。然而,当我再将我自家的USB3.0开发板查到电脑上时,则开始蓝屏,关闭驱动签名也蓝屏,不管咋样,一插上就直接蓝屏。猜想应该是两者驱动冲突了。 考虑先卸载驱动。怎么卸载呢?网上说的都是找到设备,再点击设备卸载。然而我现在设备一插上马上就蓝屏了,不给自己卸载的机会,咋办呢?能不能在不接设备的情况下就找到该设备对应的驱动病卸载呢?答案是肯定的。 先在开始 cmd, 然后在打开的命令提示符中输入 setdevmgr_show_nonpresent_devices=1 之後再输入:devmgmt.msc 然后在打开的设备管理器中,查看选项中勾选上"显示隐藏的设备" 灰色的都是之前装了驱动,现在设备没有连接的。然后,找到你想要删除的设备驱动,慢慢删吧,我刚刚一口气删了一大堆。删完之后再插上USB3.0的开发板,也不蓝屏了。问题解决。
  • 热度 18
    2013-12-30 15:56
    2035 次阅读|
    0 个评论
      在Windows系统中,安装了各种设备驱动,如常规的系统设备:显卡、声卡、网卡、USB等,还有第三方设备(又称“用户设备”):各种PCI卡等。用户可能经常遇到某个设备的驱动无法升级,或者某个设备驱动安装后没有正常运行,需要重新安装时又无法安装。遇到这些问题一般都是没有将原有的设备驱动彻底卸载干净引起的。   如何彻底卸载Windows系统中的设备驱动呢?可采用如下几种方法:   第一步:常规卸载,即在设备管理器中将已加载运行的设备驱动卸载掉(停止运行),有些设备加载运行的服务比较多,可以使用“驱动服务清理助手”CleanMS全部清理掉,运行该程序前必须先知道要清理设备的VEN(或VID)和DEV(或PID),可在(卸载前)设备管理器中通过查看设备属性的详细信息获得,或查看设备驱动安装文件*.inf。   第二步:完全卸载:   方法1:有些设备安装后可以在“控制面板|添加或删除程序”中;或者在“开始|程序”中;或者在已安装的目录中;或者在原始安装光盘中有驱动卸载程序,运行它即可。   方法2:如果是系统设备,如显卡、声卡、网卡等可使用Driver Cleaner、Driver Sweeper等工具彻底卸载掉。   方法3:USB设备可使用USB Storage Registey Cleaner工具。   方法3:其它设备可使用人工方法清除设备驱动相关文件:   (1)       先在“我的电脑|工具|文件夹选项”中将系统隐含文件显示使能。 (2)       进入“C:\Windows\inf”文件夹,搜索含设备VEN(或VID)和DEV(或PID)的文件,将相应的oem*.inf和oem*.png两个文件删除。 (3)       进入“C:\Windows\driver”文件夹,将设备相关的驱动文件*.sys,和动态库文件*.dll删除。文件名可在oem*.inf中找到。 (4)       运行regedit编辑注册表,查找设备相关的信息(可在oem*.inf中找到),将相应的子键删除掉。 (5)       重启系统即可。
  • 热度 13
    2013-1-26 21:56
    1575 次阅读|
    0 个评论
    关键字: Linux   USB   设备驱动      0 引言     USB是英文Universal Serial Bus的缩写,意为通用串行总线。USB是一种快速、双向、同步、低成本、动态可连接的串行接口。USB现在已经广泛应用到各种设备上,尤其是手持设备,几乎都采用了USB接口。现在,USB即可用来与其他设备连接后高速地传递数据,又可用来充电,使手持设备可以发挥U盘、MODEM、无线网卡等作用。     事实上,USB只是主机和外围设备之间的连接。如何来促使这种连接发挥作用,就需要驱动程序。驱动程序主要解决硬件“需要提供什么功能”以及“如何使用这些功能”。在linux系统中,USB设备可以作为主机使用,也可作为从设备使用。对应的USB驱动程序有两种主要的类型:宿主系统上的驱动程序和设备上的驱动程序。从宿主的观点来看(例如普通的左桌面计算机),宿主系统的USB驱动程序控制插入其中的USB设备,而USB设备的驱动程序则控制该设备如何作为一个USB设备和主机通信。      1 USB设备基础     USB设备的构成包括配置接口和端点,以及USB驱动程序如何绑定到USB接口上。端点是USB通信最基本的形式,USB端点只能是往一个方向传送数据,即从主机到设备(称为输出端点)或者从设备到主机(称为输入端点),故可以看作是单向管道。USB有四种不同的类型,分别对应不同的传输类型:控制、中断、批量、等时。其次接口,USB端点被绑定即为接口。USB的一个接口只处理一种USB逻辑连接;一个USB设备可以有多个接口,不同的接口可以代表不同的功能,因此,功能不同的USB接口需要不同的驱动程序。另外就是配置,USB接口本身被绑定为配置。一个USB设备可以有多个配置,而且可以在配置之间切换以改变设备的状态;一个时刻只能激活一个配置,怛一个配置通常具有一个或者更多的接口。     USB设备可由许多不同的逻辑单元组成,实际上,也就是这三种逻辑单元组合而成的。Linux内核中的USB代码一般要用URB (usbrequst block)与USB设备通信。URB用struct urb结构体描述,它能以一种异步的方式往/从特定的USB端点发送/接收数据。USB 设备驱动 程序可能会为单个端点分配许多的URB,也可能对许多不同的端点重用单个URB,这取决于驱动的需要。当USB驱动程序只发送或接收一些简单的USB数据时,可以使用两个很简单的接口函数:usb_bulk_msg、usb_control_msg。      2 USB设备驱动程序的结构     图1所示是Linux环境下USB驱动的总体结构。从图l中可以看到:在主机侧层次结构中,实现USB驱动有两类方式:USB主机控制器驱动和USB设备驱动;USB主机控制驱动主要控制插入其中的USB设备,主机控制器可以分为三类,分别对应于三种USB主控制器;USB设备驱动则用于控制USB设备如何与主机通信;USB核心负责USB驱动管理和协议处理的主要工作。       USB核心向上可为设备驱动提供编程接口,向下可为USB主机控制器驱动提供编程接口;它可以通过全局变量维护整个系统的USB设备信息,从而完成设备的热插拔控制和总线数据传输控制等驱动。     另外,在从设备侧,Linux内核中的USB设备侧驱动程序可分为3个层次:USB设备控制器(UDC)驱动程序、Gadget API和Gadget驱动程序;UDC驱动程序可直接访问硬件,控制USB设备和主机间的底层通信,并向上层提供和硬件相关的操作回调函数。不同的设备控制器硬件有不同的设备控制器驱动程序;Gadget驱动主要控制USB设备功能的实现,它使用Gadget API传递控制信息给UDC驱动程序,以便实现具体功能。     Gadget API是设备控制器的控制功能抽象接口,Gadget驱动程序可以试用Gadget API,它可以把下层的UDC驱动程序和上层Gadget驱动程序相隔离,以使得在linux系统中编写USB设备侧驱动程序时,能够把功能的实现和底层通信相分离。     如果要在S3c24.10上实现大存储类从设备,则需要运行file_storage.c和s3c2410_udc.c这两个驱动程序。file_stoarge.c具体控制USB设备功能的实现,它使用Gadget API来控制s3c2410.c以实现其功能。s3c2410.c驱动程序可直接访问硬件,以控制USB设备和主机间的底层通信,同时向上层提供和硬件相关操作的回调函数。      3 USB从设备驱动     驱动程序完成的功能包括初始化设备、为各类设备提供服务、负责内核与设备间的数据交换、以及检测和处理设备工作过程中出现的错误等。     基于完成这些功能,每个驱动程序都需要注册和注销,这样,内核才能知道有这个驱动的存在或者驱动的卸载。下面是两个最基本的模块:     module_init(usb_skel_init);         module_exit(usb_skel_exit);   对于USB从设备而言,结构USB_gadget就可以代表。Gadget通过“Gadget驱动程序”来实现设备功能,处理所有的USB配置和接口。通过操作函数集,Gadget驱动程序与硬件特定代码间接通信。它将Gadget驱动程序与那个硬件细节隔开,并通过I/O队列包装硬件端点。 “usb_gadget”“usb_ep”接口则可提供对硬件的隔离。     其结构usb_gadget的代码如下:         结构usb_gadget_ops是USB设备控制期的设备控制函数集,其操作包括get_frames、wakeup、pullop、ioctl等。结构struct usb_ep是USB端点从设备侧的代表,总线控制器驱动程序中列出了在gadget-ep_list里所有的通用端点,但控制端点不在列表中,它仅在回应驱动程序的setup 0 回调函数时才被访问,其代码如下:        4 结束语     本文主要通过在S3C2401上实现USB从设备的驱动程序,介绍了USB从设备驱动的研究方法。Linux作为一个开源操作系统,设备驱动程序的开发有着其它操作系统不可比拟的优势,大量的开放源代码无疑可以加速USB从设备驱动,并使其应用更加广泛。因此,USB作为一种新型的高速外设总线,它必将更加促进linux系统源码的开发和完善,同时亦会促进自身的更广泛的应用。  
  • 热度 19
    2013-1-8 10:11
    1081 次阅读|
    0 个评论
        W3150A是以大规模集成电路方式全硬件TCPIP协议栈, 提供一种简单、经济的高速连接互联网上各种数字设备的解决方案。 以太网控制芯片W3150A+ 是W3150A的优化版。那么今天给大家介绍一下如何检测W3150A以及W3150A+的设备驱动? 在你目前MCU所使用固件的主函数位置 如果你增减如下部分到主函数,就能够实现对W3150A或W3150A+的自动检测。 在我们提供的设备驱动的源码中,W3150A和W3150A+的不同之处用“if”加以区分。   Ex) 在设备驱动的 ‘socket.c’ 文件中 uint8 socket(SOCKET s, uint8 protocol, uint16 port, uint8 flag) {          uint8 ret; #ifdef __DEF_IINCHIP_DBG__          printf("socket()\r\n"); #endif          if ((protocol == SOCK_STREAM) || (protocol == SOCK_DGRAM) || (protocol == SOCK_ICMPM) || (protocol == SOCK_IPL_RAWM) || (protocol == SOCK_MACL_RAWM) || (protocol == SOCK_PPPOEM))          {                    if(model_type == _F_3150A_)                    {                                      if (IINCHIP_READ(SOCK_STATUS(s)) != SOCK_CLOSED) close(s);                    } 感谢关注! 更多WIZnet相关信息,请访问  WIZnet中文官方网站http://www.wiznettechnology.cn/  WIZnet企业官方微博:http://e.weibo.com/wiznet2012/
  • 热度 24
    2013-1-8 09:54
    1170 次阅读|
    0 个评论
        W3150A是以大规模集成电路方式全硬件TCPIP协议栈, 提供一种简单、经济的高速连接互联网上各种数字设备的解决方案。 以太网控制芯片W3150A+ 是W3150A的优化版。那么今天给大家介绍一下如何检测W3150A以及W3150A+的设备驱动? 在你目前MCU所使用固件的主函数位置 如果你增减如下部分到主函数,就能够实现对W3150A或W3150A+的自动检测。 在我们提供的设备驱动的源码中,W3150A和W3150A+的不同之处用“if”加以区分。   Ex) 在设备驱动的 ‘socket.c’ 文件中 uint8 socket(SOCKET s, uint8 protocol, uint16 port, uint8 flag) {          uint8 ret; #ifdef __DEF_IINCHIP_DBG__          printf("socket()\r\n"); #endif          if ((protocol == SOCK_STREAM) || (protocol == SOCK_DGRAM) || (protocol == SOCK_ICMPM) || (protocol == SOCK_IPL_RAWM) || (protocol == SOCK_MACL_RAWM) || (protocol == SOCK_PPPOEM))          {                    if(model_type == _F_3150A_)                    {                                      if (IINCHIP_READ(SOCK_STATUS(s)) != SOCK_CLOSED) close(s);                    } 感谢关注! 更多WIZnet相关信息,请访问  WIZnet中文官方网站http://www.wiznettechnology.cn/  WIZnet企业官方微博:http://e.weibo.com/wiznet2012/    
相关资源