精华内容
下载资源
问答
  • 相关题目与解析个人计算机上的USB接口通常并用于连接()。在计算机上U盘的接口通常是()标准接口。A.UPSB.USPC.UBSD.USB微型计算机的USB接口只能用连接U盘。()计算机的数据传输接口包括()和USB接口等。A.有线电视...

    相关题目与解析

    个人计算机上的USB接口通常并不用于连接()。

    在计算机上插U盘的接口通常是()标准接口。A.UPSB.USPC.UBSD.USB

    微型计算机的USB接口只能用连接U盘。()

    计算机的数据传输接口包括()和USB接口等。A.有线电视接口B.无线广播接口C.电源接口D.串口

    微型计算机的主板上一般都没有集成USB接口。()

    数码相机摄取的图像一般保存在CF或()卡上,可以与计算机的USB通信接口连接。A.RAMB.SMC.VCDD.C

    计算机及相关设备上若出现如题34图所示的标识,则说明其接口类型是A.USB1.0B.USB1.1C.USB2.0D.US

    USB接口是一种计算机通用并行接口。()

    除显示器接口和键盘、鼠标器接口之外,以下()不属于计算机系统上常用的接口。A、USB接口B、RS232

    通过USB接口插入染毒的U盘设备,即使不打开U盘浏览文件也会导致计算机中毒。

    USB是通用串行总线,采用此接口技术的外部设备不支持热插拔。

    下列计算机接口中,可以直接进行“插拔”操作的是()。A.COMB.LPTC.PCID.USB

    U盘可以通过计算机上的()接口与计算机进行通信。

    移动硬盘工作时硬盘和数据接口的()是由计算机的USB接口提供的。

    计算机参数“4×USB2.0”的含义是4个USB2.0接口。()

    通过局域网连接到Internet时,计算机上必须有()。A.MODEMB.网络适配器C.电话D.USB接口

    在计算机系统中,USB的含义是()。

    在计算机的其他接口中,TypeA一般用于计算机端,而TypeB-般用于USB设备端()

    HI-PRO与计算机连接的数据线两端都是()。A.九针的接口B.3.0USB接口C.USB接口D.RJ45接口E.2.0USB接

    展开全文
  • 实现android usb光驱 光盘支持 光驱热插拔 光盘热插拔 1.增加vold对Iso9660光盘自动挂载的支持,基于RK3188_RK3066_R-BOX_ANDROID4.4.2-SDK_V1.0.0_140318,也可用于mid 2.实现Iso9660.cpp为vold实现的domount接口 3...
  • 随着HDMI的广泛使用,HDMI问题也随之产生。...热插拔是一种带电插拔,允许用户在关闭系统或电源的情况下移除和更换硬件,从而提高系统的可扩展性和灵活性。早期的热插拔出现在服务器领域,以提高服务器的可用性。...

    随着HDMI的广泛使用,HDMI问题也随之产生。一方面,由于HDMI热插拔烧坏接口芯片的问题越来越多。另一方面,许多用户一直热插拔HDMI线,并且已经几十次或几百次没有烧毁设备了,那么问题就来了,到底HDMI接口能够热插拔吗?

    7254477589cb4dfb932ef6aa3c199778.png

    热插拔是什么意思?

    热插拔是一种带电插拔,允许用户在不关闭系统或电源的情况下移除和更换硬件,从而提高系统的可扩展性和灵活性。早期的热插拔出现在服务器领域,以提高服务器的可用性。

    beffbccc966f94585e63c37773b85f22.png

    HDMI支持热插拔吗?

    迄今为止,HDMI已经经历了大约10个版本的演变。HDMI1.4a版本于2010年发布。最新版本是HDMI2.1。也许你不相信HDMI从第一个版本就支持热插拔。

    按照设计标准,HDMI都必须设有防静电功能,但一些低成本产品就会将其省略掉,极有可能损坏设备,如果你使用的是这类劣质HDMI线的话还是建议不要热插拔哦。

    1de27e8bf19072fd88a07f69ec5c96b3.png

    热插拔的原理

    在HDMI接头的第19个引脚中,安防了一个半截的插针。这是一个热插拔监测引脚。当HDMI被拔出时,该监测引脚首先被断开。然后,HDMI电路在检测到断线后会通知输入输出设备停止工作,以起到热插拔的作用。

    b3d7e9805f403b334803922622c295b9.png

    这个原理有点类似于USB热插拔。USB接口中有四个金手指,较长的两个有电源。插拔时,优先保证电源。较短的一个起到数据交换的作用,以确保热插拔不会损坏设备数据。

    1cca4821b1ff728311e30373bf96359f.png

    接口上有区别吗?

    目前HDMI的接口是有四种的:

    HDMI-A型接口也就是标准接口的宽度为13.9mm,一般适用于HDTV、电视、机顶盒、蓝光DVD等设备;

    HDMI-C型接口的宽度为10.42mm,一般适用于MP4、摄像机、平板电脑等产品;

    HDMI-D型接口宽度为6.4mm,一般适用于智能手机、平板电脑;

    另外还有HDMI-B型接口,不过B型接口目前只是一个标准,没有应用到任何的产品当中,ACD这三种接口都有一根热插拔检测针,所以都支持热插拔。

    709eccaabd1a5053f0b4c3d91d7038be.png

    扩展知识

    电脑主机上哪些接口支持热插拔,哪些不支持?

    事实上,判断接口是否支持热插拔的方法非常简单。一般来说,机箱背面裸露的接口支持热插拔,如网卡接口、音频接口、usb接口等。但是,机箱内部的设备接口基本上不支持热插拔,比如插有显卡的PCI-E;用于连接硬盘的SATA;更不用说内存卡和CPU了。

    5072880ca8f74719dfa1d47811110eff.png

    以上是小编介绍的关于热插拔的知识。作为普通用户,您只需要记住机箱的外部接口可以支持热插拔。但是,机箱内的这些接口设备不要去热插拔。例如,如果您想拔下内存,您必须在拔之前关机!

    展开全文
  • USB热插拔

    千次阅读 2018-10-12 11:13:21
    学习USB热插拔之前,先学习一些USB的硬件知识: 一、USB基础概念 1、硬件知识(USB插座和插头)        在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的...

    转自:http://blog.csdn.net/zqixiao_09/article/details/51056903  

      学习USB热插拔之前,先学习一些USB的硬件知识:

    一、USB基础概念

    1、硬件知识(USB插座和插头)

           在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了,又增加了miniUSB接头。而miniUSB接头则有5条线,多了一条ID线,用来标识身份用的。标准USB口只有A型和B型。其中每一型又分为插头和插座,例如A型插头,A型插座等。我们平常电脑上用的那种插座叫做A型USB插座,而相应的插头,叫做A型插头,例如U盘上那种。而像打印机上面那个插座,则是B型插座(比较四方的,没电脑上面那种扁),相应的插头,就是B型插头。也许你见过一头方一头扁的USB延长线,没错了,扁的那头就叫做A型插头,而方的那头,就叫做B型插头,而相应的被插的那两个插座,就分别是A型插座和B型插座了。A型插头是插不进B型插座的,反之亦然。

          miniUSB也分为A型,B型,但增加了一个AB型(不是血型呀,别搞错了,没有O型^_^)。既然它叫做miniUSB,那么当然它就是很小的了,主要是给便携式设备用的,例如MP3、手机、数码相机等。USB是一主多从结构,即一个时刻只能有一台主机。像PC机就是一个主机,其它的只能是设备,因而两个设备之间是无法直接进行通信的。而USB OTG(on the go)的出现,则解决了这个矛盾:一个设备可以在某种场合下,改变身份,以主机的形式出现。因而就出现了AB型的miniUSB插座,不管是A型miniUSB插头,还是B型miniUSB插头,都可以插进去,而靠里面多出的那条ID线来识别它的身份:是主机还是从机。这样两个USB设备就可以直接连接起来,进行数据传送了。 像我们MP3上用的那中miniUSB插座,就是B型的miniUSB插座(注意,有一类miniUSB插座,似乎不是USB规范里面的,因为miniUSB接头应该有5条线,而这种插座只有4条线)。由于USB是支持热插拔的,因此它在接头的设计上也有相应的措施。USB插头的地引脚和电源引脚比较长,而两个数据引脚则比较短,这样在插入到插座中时,首先接通电源和地,然后再接通两个数据线。这样就可以保证电源在数据线之前接通,防止闩锁发生。至于USB电缆,通常我们不怎么关心,买现成的就行了,除非你是生产USB线缆的。在全速模式下需要使用带屏蔽的双绞电缆线,而低速模式模式则可以不用屏蔽和双绞。此外,USB协议规定,USB低速电缆长度不得超过3米,而全速电缆长度不得超过5米。这是因为线缆传输有延迟,要保证能够正确响应,就不能延迟太多。USB标准规定了里面信号线的颜色,其中Vbus为红色,D-为白色,D+为绿色,GND为黑色。然而,我见过很多USB线缆并没有遵循标准,所以大家在使用时要小心,用表测量一下比较可靠。


    2、集线器把USB设备的连接报告给USB主控制器

          首先,在USB集线器的每个下游端口的D+和D-上,分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻拉到了低电平。而在USB设备端,在D+或者D-上接了1.5K欧姆上拉电阻。对于全速和高速设备,上拉电阻是接在D+上;而低速设备则是上拉电阻接在D-上。这样,当设备插入到集线器时,由1.5K的上拉电阻和15K的下拉电阻分压,结果就将差分数据线中的一条拉高了。集线器检测到这个状态后,它就报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器),这样就检测到设备的插入了。USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE两者之间的确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时将D+上的上拉电阻断开。


    二、什么是热插拔

    1、基础概念

         热插拔(hot-plugging或Hot Swap)即带电插拔,热插拔功能就是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等,例如一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。具体用学术的说法就是:热替换(Hot replacement)、热添加(hot expansion)和热升级(hot upgrade)


    2、热插拔好处

    系统中加入热插拔的好处包括:

    在系统开机情况下将损坏的模块移除,还可以在开机情况下做更新或扩容而不影响系统操作。

    由于热插拔零件的可靠度提升,还可以将它们用做断电器,而且因为热插拔能够自动恢复,有很多热插拔芯片为系统提供线路供电情况的信号,以便系统做故障分析,因此减少了成本。


    三、Linux 下USB热插拔处理

    1、 Linux下USB HUB的驱动的实现和分析:

           在系统初始化的时候在usb_init函数中调用usb_hub_init函数,就进入了hub的初始化

           在usb_hub_init函数中完成了注册hub驱动,并且利用函数kthread_run创建一个内核线程。该线程用来管理监视hub的状态,所有的情况都通过该线程来报告。

          USB设备是热插拔,这就和PCI设备不同,PCI设备是在系统启动的时候都固定了,因此PCI设备只需要初始化进行枚举就可以了,采用递归算法即可。而USB设备需要热插拔,因此在hub_probe函数中调用hub_configure函数来配置hub,在这个函数中主要是利用函数usb_alloc_urb函数来分配一个urb,利用usb_fill_int_urb来初始化这个urb结构,包括hub的中断服务程序hub_irq的,查询的周期等。

           每当有设备连接到USB接口时,USB总线在查询hub状态信息的时候会触发hub的中断服务程序hub_irq,在该函数中利用kick_khubd将hub结构通过event_list添加到khubd的队列hub_event_list,然后唤醒khubd。进入hub_events函数,该函数用来处理khubd事件队列,从khubd的hub_event_list中的每个usb_hub数据结构。该函数中首先判断hub是否出错,然后通过一个for循环来检测每个端口的状态信息。利用usb_port_status获取端口信息,如果发生变化就调用hub_port_connect_change函数来配置端口等。


    2、软件层次分析

    这里我们先讲讲USB热插拔事件的处理工作。---Khubd守护进程。

    -Khubd守护进程它是一个守护进程,来检查usb port的事件通知HCD和usb core,然后做相应的处理。

    驱动目录drivers/usb/*
    usb/serial  usb 串行设备驱动 (例如usb 3G卡、蓝牙等)
    usb/storage  usb 大储量磁盘驱动(u盘)  
    usb/host usb host usb主机控制器驱动(嵌入式otg:dwc_otg)
    usb/core   usb 核心一些处理代码,所有的驱动相关处理都在这里,也都注册到它里面。
    usb/usb-skeleton.c 经典的usb客户驱动框架,可以参考

    当然还有其他这里不再说明。

    下面贴出USB的整体驱动框架:


    这里我们主要分析khub的工作原理: 硬件层次是hub的工作,如何和host及其设备间通信及相应事件

    [usb/core/hub.c ]

    1. int usb_hub_init(void)  
    2. {  
    3.     if (usb_register(&hub_driver) < 0) {  
    4.         printk(KERN_ERR "%s: can't register hub driver\n",  
    5.             usbcore_name);  
    6.         return -1;  
    7.     }  
    8.   
    9.     khubd_task = kthread_run(hub_thread, NULL, "khubd");  
    10.     if (!IS_ERR(khubd_task))  
    11.         return 0;  
    12.   
    13.     /* Fall through if kernel_thread failed */  
    14.     usb_deregister(&hub_driver);  
    15.     printk(KERN_ERR "%s: can't start khubd\n", usbcore_name);  
    16.   
    17.     return -1;  
    18. }  
    
      
    1. int usb_hub_init(void)
    2. {
    3. if (usb_register(&hub_driver) < 0) {
    4. printk(KERN_ERR "%s: can't register hub driver\n",
    5. usbcore_name);
    6. return -1;
    7. }
    8. khubd_task = kthread_run(hub_thread, NULL, "khubd");
    9. if (!IS_ERR(khubd_task))
    10. return 0;
    11. /* Fall through if kernel_thread failed */
    12. usb_deregister(&hub_driver);
    13. printk(KERN_ERR "%s: can't start khubd\n", usbcore_name);
    14. return -1;
    15. }
    这里我们只关心kthread_run(hub_thread, NULL, "khubd"); 然后我们看hub_thread函数
    1. static int hub_thread(void *__unused)  
    2. {  
    3.     do {  
    4.         hub_events();  
    5.         wait_event_interruptible(khubd_wait,  
    6.                 !list_empty(&hub_event_list) ||  
    7.                 kthread_should_stop());  
    8.         try_to_freeze();  
    9.     } while (!kthread_should_stop() || !list_empty(&hub_event_list));  
    10.   
    11.     pr_debug("%s: khubd exiting\n", usbcore_name);  
    12.     return 0;  
    13. }  
    
      
    1. static int hub_thread(void *__unused)
    2. {
    3. do {
    4. hub_events();
    5. wait_event_interruptible(khubd_wait,
    6. !list_empty(&hub_event_list) ||
    7. kthread_should_stop());
    8. try_to_freeze();
    9. } while (!kthread_should_stop() || !list_empty(&hub_event_list));
    10. pr_debug( "%s: khubd exiting\n", usbcore_name);
    11. return 0;
    12. }

    这里我们看到了hub_events()函数。然后设置运行状态,如果有事件就加入hub_event_list。自此khubd运行起来了。

    这里我们同样贴出它的函数调用流程图(这里懒得自己画了,就剪切了个^^)



    通过流程图我们可以清晰的明白,当usb设备插入usb接口后,khubd运行,它检测到port状态的变化,调用hub_port_connect_change(),如果是新设备那么usb_allco_dev,然后调用usb_new_device来进行配置使usb设备可以正常工作。详细流程请看源码。


    四、USB的枚举过程

           内核辅助线程khubd用来监视与该集线器连接的所有端口,通常情况下,该线程处于休眠状态,当集线器驱动程序检测到USB端口状态变化后,该内核线程立马唤醒

          USB的枚举过程:USB的枚举过程是热插拔USB设备的起始步骤,该过程中,主机控制器获取设备的相关信息并配置好设备,集线器驱动程序负责该枚举过程

    枚举过程主要分如下几步:

    Step1:根集线器报告插入设备导致的端口电流变化,集线器驱动程序检测到这一状态变化后,唤醒khubd线程。

    Step2:khubd识别出电流变化的那个端口

    Step3:khubd通过给控制端点0发送控制URB来实现从1-127中选出一个数作为插入设备的批量端点

    Step4:khubd利用端口0使用的控制URB从插入的设备那里获得设备描述符,然后获得配置描述符,并选择一个合适的。

    Step5:khubd请求USB核心把对应的客户驱动程序和该USB设备挂钩



    展开全文
  • 硬件上来说,可热插拔的设备一般都会对电源部分格外重视,...而且在接口电路中没有任何保护措施,这样的话在热插拔之后,可能会对系统造成不良影响甚至损坏系统。 软件方面,以USB为例。操作系统对于USB设备有着非...

        硬件上来说,可热插拔的设备一般都会对电源部分格外重视,除了包含防止插拔的过程中对正负极可能造成的意外短路之外,热插拔还要保证电源负极先于其他引脚连接进系统,提供ESD放电回路。然后连接进的是电源正极,为系统供电。稍稍延时后,再将整个电路连接进主系统。尽量确保在数据线上不会产生有害的浪涌损坏设备。而对于DB9串口来说,它的所有脚是同时引入系统的。而且在接口电路中没有任何保护措施,这样的话在热插拔之后,可能会对系统造成不良影响甚至损坏系统。

        软件方面,以USB为例。操作系统对于USB设备有着非常良好的接入/移除识别机制,可以检测到设备的连入和移除,并对其进行识别和驱动加载。而对于串口类设备,没有这样的枚举机制。如果你安装了一个新的设备就必须手动对其进行操作,没有特别考虑的应用程序也无从得知串口是否连入了硬件,所以在软件层面还无法实现对设备的监测。

        而对于usb转串口设备,串口的热拔插不支持,可通过usb热拔插支持,通过usb插拔的系统通知,从软件上实现串口的拔插支持。以下提供一种方法,创建进程A:监视usb插拔的系统通知;通过通知动态地 创建/删除 进程B:串口的数据处理。

    代码示例如下(以下源码兼容先识别 ttyS0):

    //main.c
    
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <stdbool.h>
    #include <string.h>
    #include <sys/types.h>
    #include <fcntl.h>
    
    #include <stdio.h>
    #include <errno.h>
    #include <sys/stat.h>
    #include <sys/socket.h>
    #include <sys/ioctl.h>
    #include <linux/if.h>
    #include <linux/input.h>
    #include <linux/netlink.h>
    #include <sys/socket.h>
    #include <sys/un.h>
    #include <ctype.h>
    #include <signal.h>
    #include <sys/wait.h>
    
    
    //#define DEBUG
    #define DEBUG
    
    bool debug=false;
    #ifdef DEBUG
    #define Debug(fmt,...) ({if(debug) printf("%s:%s:%05d=>" fmt"",__FILE__,__func__,__LINE__,##__VA_ARGS__);})
    #else
    #define Debug(fmt,...)
    #endif
    
    
    static int init_hotplug_sock(void)
    {
            struct sockaddr_nl snl;
            const int buffersize = 16 * 1024 * 1024;
            int retval;
            memset(&snl, 0x00, sizeof(struct sockaddr_nl));
            snl.nl_family = AF_NETLINK;
            snl.nl_pid = getpid();
            snl.nl_groups = 1;
            int hotplug_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
            if (hotplug_sock == -1)
            {
                    printf("error getting socket: %s", strerror(errno));
                    return -1;
            }
            /* set receive buffersize */
            setsockopt(hotplug_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
            retval = bind(hotplug_sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));
            if (retval < 0) {
                    printf("bind failed: %s", strerror(errno));
                    close(hotplug_sock);
                    hotplug_sock = -1;
                    return -1;
            }
            return hotplug_sock;
    }
    
    
    int serialPortHandle(const char *tty)
    {
    	//for(;;){printf("hanlde receive uart data\n");}
        return 0;
    }
    
    int main(int argc, char *argv[])
    {
        char *ttyAMA0 = "/dev/ttyS0";
        char *ttyBase = "/dev/ttyUSB";
        char tty[64];
        char ctmp[4];
        int hotplug_sock;
        char uevent_buf[512];
        pid_t pid = -1;
        int max_tty = 10;
    
        if(argc == 2 && strcmp(argv[1],"debug") == 0){
            debug = true;
        }
    
        for(int i=0; i<max_tty; i++){
        	memset(ctmp, '\0', sizeof(ctmp));
        	memset(tty, '\0', sizeof(tty));
        	strcpy(tty, ttyBase);
        	sprintf(ctmp, "%d", i);
            strcat(tty, ctmp);
            if(0 == access(tty, F_OK)){
                break;
            }
        }
        if(0 == access(tty, F_OK)){
            Debug("access %s OK.\n", tty);
            pid = fork();
            if(pid < 0){
                perror("fork fail ");
                exit(1);
            }else if(pid == 0){ //子进程
                Debug("child pid:[%d].\n", getpid());
                serialPortHandle(tty);  // loop here.
            }else{  //父进程
                Debug("I am father, my child:[%d].\n", pid);
            }
        }else if(0 == access(ttyAMA0, F_OK)){
            Debug("access %s OK.\n", ttyAMA0);
            serialPortHandle(ttyAMA0);  // loop here.
            while(1);
            return 0;
        }
    
        hotplug_sock = init_hotplug_sock();
        for(;;){
            recv(hotplug_sock, &uevent_buf, sizeof(uevent_buf), 0);  //block here until receive uevent.
            /* 一次插拔,只会匹配以下二者之一 */
            bool match = false;
            if((NULL != strstr(uevent_buf, "bind@")) && (NULL != strstr(uevent_buf, "ttyUSB")) && (NULL == strstr(uevent_buf, "unbind@"))){
            	match = true;
            }
            if(match){ // USB转串口线插入
                pid = fork();
                if(pid < 0){
                    perror("fork fail ");
                    exit(1);
                }else if(pid == 0){ //子进程
                    Debug("Child Pid:[%d].\n", getpid());
                    int i;
                    for(i=0; i<max_tty; i++){
                    	memset(ctmp, '\0', sizeof(ctmp));
                    	memset(tty, '\0', sizeof(tty));
                    	strcpy(tty, ttyBase);
                    	sprintf(ctmp, "%d", i);
                    	strcat(tty, ctmp);
                        if(0 == access(tty, F_OK)){
                            break;
                        }
                    }
                    if(i < max_tty){
                        serialPortHandle(tty);  // loop here.
                    }
                }else{
                    Debug("I am Father, my Child:[%d].\n", pid);
                }
            }
    
            match = false;
            if((NULL != strstr(uevent_buf, "unbind@")) && (NULL != strstr(uevent_buf, "ttyUSB"))){
            	match = true;
            }
            if(match){ // USB转串口线拔除
                Debug("kill child %d.\n", pid);
                kill(pid,SIGTERM);//杀死 pid
                wait(NULL);
            }
        }
    
        return 0;
    }
    

    编译:

    $ gcc main.c -o ttyAutoPlug

    运行:

    $ ./ttyAutoPlug debug
    main.c:main:00143=>I am Father, my Child:[9378].
    main.c:main:00127=>Child Pid:[9378].
    main.c:main:00152=>kill child 9378.
    main.c:main:00143=>I am Father, my Child:[9406].
    main.c:main:00127=>Child Pid:[9406].
    main.c:main:00152=>kill child 9406.

    展开全文
  • 关于固态硬盘是否能支持热插拔,是用户比较关心的问题,今天笔者就为大家讲解...SATA1.0不支持热插拔技术,在以后的V2.0规格中SATA实现了热插拔功能,固态硬盘SATA接口标准已经完全符合,不过热插拔还需主板支持,由...
  • 本应用笔记讨论热插拔集成电路。典型的热交换电路,并给出不同的热插拔电路的优点是解释。  热插拔电路的基础知识  热插拔电路保护设备,人员,或两者兼而有之。有些电源供应器,例如,有内置和可调电流限制(在...
  • ”在关闭电脑,切断电源的情况下的前提下,可以直接插拔,就是“热插拔设备”。热插拔的好处在于,影响电脑正常使用,不会耽误我们的工作,更会提高效率。设备的插拔更加安全,不用担心数据损坏和U盘丢失。...
  • 支持热插拔接口和设备可以极大地方便我们的使用。但许多同学们都有这样的情况,当我们插入最典型的热插拔装置-闪盘时,计算机首先弹出一个警告窗口,告诉你“插入的设备是错误的”,需要扫描和修理。 一些小伙伴对...
  • openwrt USB外挂U盘的时候很需要热插拔功能 openwrt官网传送门 当某些事件发生时,Procd(init系统和进程管理守护进程)执行位于/etc/hotplug.d/中的脚本,例如当接口启动或关闭时,检测到新的存储驱动器时,或者...
  • linux 热插拔

    2021-05-18 00:19:35
    14.7.3.2. udev 啥? 在内核中创建统一的驱动模型的一个主要原因是允许... 如果你的驱动想使用 class_simple 接口因为你想提供其他在子系统的类目录中的文件, 使用 print_dev_t 函数来正确格式化特定设备的主次编号.
  • USB热拔插事件

    万次阅读 2018-08-26 11:35:41
    前言 USB(Universal Serial ...USB接口常用在诸如USB串行设备驱动(3G/4G上网卡、蓝牙设备、串口设备)、USB大容量磁盘驱动(U盘、移动硬盘)、USB主机控制器驱动(嵌入式otg,dwc_otg)、USB键盘鼠标等,这一些的...
  • Linux USB 驱动开发(四)—— 热插拔那点事

    万次阅读 多人点赞 2016-04-04 16:08:04
    学习USB热插拔之前,先学习一些USB的硬件知识: 一、USB基础概念 1、硬件知识(USB插座和插头)  在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了,又增加...
  • USB 设备热插拔的检测

    2020-09-18 18:02:37
    2. 打开软件后, USB 热插拔 。 此时用WM_DEVICECHANGE消息去获取设备信息。 当设备插入或者移除时,系统给当前主窗口发送WM_DEVICECHANGE消息 。 注意: 默认状态, 任何设备都会通知。 所以需要注册指定的通知消息...
  • Linux内核支持热插拔的部件有USB设备、PCI设备甚至CPU。Linux的热插拔支持是一个连接底层硬件、内核空间和用户空间程序的机制,且一直在变化,故立文讨论之。三种热插拔机制PCMCIA1995年,Linux就实现了一种PCMCIA...
  • 通常来说,一个完整的热插拔系统包括热插拔系统的硬件,支持热插拔的软件和操作系统,支持热插拔的设备驱动程序和支持热插拔的用户接口。热插拔技术已被广泛应用到电信服务器、USB接口、火线(firewire)和CompactPCI...
  • 问题现象1:当使用Hi3519V10X/Hi3559V100 USB3.0 Device UVC规格时,正常热插拔会必现识别的问题。 问题现象2:当使用Hi3516CV300 USB2.0 Device UVC规格时,快速热插拔出现概率识别问题, 此两种问题现象的解决...
  • 经过uboot/kernel/fs的移植之后usb接口的热插拔已经OK,但是QT怎么也不支持热插拔,工作任务和强迫症双层压力下,决心对键鼠的热插拔一探究竟。 首先感谢...
  • usb热插拔的来龙去脉

    千次阅读 2016-02-29 14:44:39
    USB主机是如何检测到设备的插入的呢?首先,在USB集线器的每个下游端口的D+和D-上, 分别接了一个15K欧姆的下拉电阻到地。这样,在集线器的端口悬空时,就被这两个下拉电阻 拉到了低电平。而在USB设备端,在D+...
  • 服务器、网络交换机、冗余存储磁盘阵列(RAID),以及其它形式的通信基础设施等高可用性系统,需要在整个使用生命周期内具有接 近零的... 这个过程被称为热插拔(hot swapping)(当模块与系统软件有相互作用时,也被称为hot
  • linux c检测USB热插拔(netlink)

    千次阅读 2017-12-14 19:27:31
    新的Linux内核使用udev代替了hotplug作为热拔插管理,虽然有udevd管理热拔插,但有时候我们还是需要在应用程序中检测热拔插事件以便快速地处理,比如在读写SD卡的时候下SD卡,那么需要立即检测出该情况,然后结束...
  • usb热插拔实现机制

    千次阅读 2014-06-11 21:50:14
    一.等待static struct usb_driver hub_driver = { .name = "hub", .probe = hub_probe, .disconnect = hub_disconnect, .suspend = hub_suspend, .resume = hub_resume, .reset_r
  • 学习USB热插拔之前,先学习一些USB的硬件知识: 一、USB基础概念 1、硬件知识(USB插座和插头) 在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了,又...
  • Android热插拔事件处理详解

    千次阅读 2016-08-21 10:49:02
    一、Android热插拔事件处理流程图 Android热插拔事件处理流程如下图所示:   二、组成 1. NetlinkManager:  全称是NetlinkManager.cpp位于Android 4.x 源码位置/system/vold/NetlinkManager.cpp...
  • 安卓系统采用v4l2接口打开YUYV和MJPEG摄像头,支持热插拔。 1、需求:安卓5.1系统,视频监控门禁主板(rk3288)上要用到两个摄像头,且两个摄像头要同时打开。 2、背景:开始使用安卓系统的camera 2接口时,无法同时...
  • OpenWrt热插拔HotPlug

    千次阅读 2019-11-12 18:02:22
    热插拔官方文档 当某些 events事件发生时,Procd(init系统和进程管理守护进程)会执行位于/etc/hotplug.d/中的脚本,例如当接口启动或关闭时,检测到新的存储驱动器时,或者按下按钮时. 当使用PPPoE连接或者在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,382
精华内容 2,952
关键字:

usb接口不支持热插拔