精华内容
下载资源
问答
  • 现以三菱的伺服驱动器为例,下面分别了解一下每个模式的控制接线及其注意事项。一、速度控制模式注 1. 为了防止触电,请务必将伺服放大器的保护接地(PE)端子(带记号的端子)连接到控制柜的保护接地(PE) 上。2. 请正确...
    0e1ca49fc5153620a17328262dea75cb.png

    我们在平时控制伺服电机的时候,经常用到的控制模式就是三种模式分别是速度控制模式、位置控制模式、转矩控制模式。现以三菱的伺服驱动器为例,下面分别了解一下每个模式的控制接线及其注意事项。

    一、速度控制模式

    9a5dfe4cc5c3db893e01598a0a354807.png

    注 1. 为了防止触电,请务必将伺服放大器的保护接地(PE)端子(带记号的端子)连接到控制柜的保护接地(PE) 上。

    2. 请正确连接二极管方向。连接错误,可能会出现伺服放大器发生故障不能输出信号,EM2(强制停止2)等的保护 电路不能动作的情况。

    3. 运行时,请务必将EM2(强制停止2)信号保持ON状态。(B接点)

    4. 请从外部供给接口用DC24V ± 10% 500mA电源。500mA是使用全部输出信号时的值。通过减少输入输出点数能 够降低电流容量。请参考3.9.2项(1)记载的接口需要的电流。

    5. 运行时请务必将EM2(强制停止2)、LSP(正转行程末端)以及LSN(反正行程末端)ON。(B接点)

    6. ALM(故障)在未发生报警的正常情况下ON。

    7. 同样名称的信号在伺服放大器内部是联通的。

    8. 在[Pr.PD03]~[Pr.PD22]设置能够使用TL(外部转矩限制选择)时,即可使用TLA。

    9. 请使用SW1DNC-MRC2-E。

    10. 使用CN3连接器的RS-422通信(计划应用)能够和个人电脑连接。但是,USB通信功能(CN5连接器)和RS-422 通信功能(CN3连接器)是互斥的。不能同时使用。

    11. 输入负电压时,请使用外部电源。

    12. 漏型输入输出接口的情况。

    13. 不使用STO功能时,请在伺服放大器上安装附属的短路连接器。

    14. 为了防止伺服电机出现预期以外的再启动,在创建电路时,应设置成主电路电源OFF时EM2同时OFF。

    二、位置控制模式

    e23157be32358c332c3be94a040f9896.png

    注 1. 为了防止触电,请务必将伺服放大器的保护接地(PE)端子(带记号的端子)连接到控制柜的保护接地(PE)上。

    2. 请正确连接二极管方向。连接错误,可能会出现伺服放大器发生故障不能输出信号,EM2(强制停止2)等的保护 电路不能动作的情况。

    3. 运行时,请务必将EM2(强制停止2)信号保持ON状态。(B接点)

    4. 请从外部提供接口用DC24V ± 10% 500mA电源。500mA是使用全部输出信号时的值。通过减少输入输出点数能 够降低电流容量。请参考3.9.2项(1)记载的接口需要的电流。

    5. 运行时请务必使EM2(强制停止2)、LSP(正转行程末端)以及LSN(反正行程末端)保持ON状态。(B接点)

    6. ALM(故障)在没发生报警的正常情况下ON。OFF(报警发生)时,通过顺控程序停止可编程控制信号。

    7. 同样名称的信号在伺服放大器内部是联通的。

    8. 指令脉冲串输入采用差动驱动方式的情况。采用集电极开路输入方式时在2m以下。

    9. 请使用SW1DNC-MRC2-E。

    10. 使用CN3连接器的RS-422通信(计划应用)能够和个人电脑连接。但是,USB通信功能(CN5连接器)和RS-422 通信功能(CN3连接器)是互斥的。不能同时使用。

    11. QD75D不需要本连接。但是通过使用的定位模块,为了达到抗干扰能力,推荐将伺服放大器的LG和控制公共端间进行 连接。

    12. 漏型输入输出接口的情况。源型输入输出接口。

    13. 不使用STO功能时,请在伺服放大器上安装短路连接器附件。

    14. 为了防止伺服电机出现预期以外的再启动,在创建电路时,应设置成主电路电源OFF时EM2同时OFF。

    e773e6d95ce9ec18128ac2ecb9985078.png

    三、转矩控制模式

    937276a9ae4d1c2c95eff31d715e6847.png

    注 1. 为了防止触电,请务必将伺服放大器的保护接地(PE)端子(带记号的端子)连接到控制柜的保护接地(PE)上。

    2. 请正确连接二极管方向。连接错误,可能会出现伺服放大器发生故障不能输出信号,EM2(强制停止2)等的保护 电路不能动作的情况。

    3. 运行时,请务必将EM2(强制停止2)信号保持ON状态。(B接点)

    4. 请从外部供给接口用的DC24V ± 10% 500mA电源。500mA是使用全部输出信号时的值。通过减少输入输出点数 能够降低电流容量。请参考3.9.2项(1)记载的接口需要的电流。

    5. ALM(故障)在没发生报警的正常情况下ON。

    6. 同样名称的信号在伺服放大器内部是联通的。

    7. 请使用SW1DNC-MRC2-J。

    8. 使用CN3连接器的RS-422通信(计划应用)能够和个人电脑连接。但是,USB通信功能(CN5连接器)和RS-422 通信功能(CN3连接器)是互斥的。不能同时使用。

    9. 输入负电压时,请使用外部电源。

    10. 漏型输入输出接口的情况。

    11. 不使用STO功能时,在伺服放大器上安装附属的短路连接器。

    12. 为了防止伺服电机出现预期以外的再启动,在创建电路时,应设置成主电路电源OFF时EM2同时OFF。

    喜欢的朋友们请点击关注!

    展开全文
  • 在最新的Windows 10 1809中,Microsoft更改了默认的USB驱动器传输设置,以支持快速删除而不是更好的性能。虽然自Windows7以来,"快速删除"一直是某些驱动器格式(如FAT32)的默认策略,但Windows 101809更新现在使其...

    在最新的Windows 10 1809中,Microsoft更改了默认的USB驱动器传输设置,以支持快速删除而不是更好的性能

    98dafbbdb09f2371bd2f3e1453e526cc.png

    虽然自Windows7以来,"快速删除"一直是某些驱动器格式(如FAT32)的默认策略,但Windows 101809更新现在使其成为所有驱动器格式(包括NTFS和ExFat)的默认策略。

    有些格式以前默认为"更好的性能"设置,该设置将写入操作缓存到USB驱动器以获得更好的系统性能,但这些缓存的传输必须在删除驱动器之前完成,以防止丢失数据,因此默认"安全删除"选项。

    0e8b08d96d7718816df43316b469576c.png

    通过这种更改,用户将不再需要选择"安全删除USB设备",然后在默认情况下将其从PC上拔下。虽然有人担心将"快速删除"作为默认策略会降低USB设备的性能,但这实际上可能是一件好事,因为它将在过早删除驱动器时防止错误的传输

    5529f0a8d14dea4f8a6b08c41d39c475.png

    但是,如果您确实体验到性能降低,或者只是喜欢手动选择以安全地卸下硬件的过程,下面介绍如何将驱动器设置更改回"更好的性能"模式。

    • 将USB存储设备插入Windows PC。
    • 打开文件资源管理器,然后转到这台电脑,记下设备的驱动器号(如"USB驱动器(C:)"。
    c3bfd04e316aa81c630563bd4bbc5b7b.png
    • 打开"开始"菜单,然后在搜索栏中键入"磁盘管理",或右键单击"开始"菜单>磁盘管理。
    ad9062c5cd64d48bc00ccbf195dbc0a0.png
    • 在磁盘管理器窗口的下部找到您的驱动器,右键单击其名称,然后转到属性>策略。
    a985349e75e930ed1354a18d55bf89c2.png
    • 选择要更改为"更好性能"的策略。选中"在此设备上启用写缓存"旁边的框。
    b2445cef7365ddf74954c89036db6131.png
    展开全文
  • USB Drive Fresher将帮助您保持您的USB驱动器的清洁,根据您所指定的规则,自动删除不需要的文件。帮你删除系统的垃圾文件,比如thumbs.db或其他临时文件等。需要的用户可以前来下载。 软件功能 清理无效的U盘 ...
  • TmpUsb TmpUsb作为USB磁盘驱动器(大小为11 KB,可用7-8 KB)呈现给计算机。 然后可以使用该驱动器存储任何数据(前提是大小不成问题)...第一次插入TmpUsb时,它将以“未设防”模式启动,从驱动器的标签上可以看到。
  • Ventoy 使用此插件来支持在物理机上直接启动安装了 Linux系统的 vdisk 文件 (vhd/vdi/raw 等),支持 Legacy BIOS 和 UEFI 模式。 这种模式的优点有: 1. 系统是在真实物理机上运行,并不是在虚拟机里运行,效率...

    USB驱动器启动Ubuntu实现Linux To Go

    不能使用固态移动硬盘,这会导致Ventoy 无法安装驱动进去

    Ventoy 使用此插件来支持在物理机上直接启动安装了 Linux系统的 vdisk 文件 (vhd/vdi/raw 等),支持 Legacy BIOS 和 UEFI 模式。
    这种模式的优点有:

    1.系统是在真实物理机上运行,并不是在虚拟机里运行,效率没有损失。
    2.Linux系统无需独占一个磁盘或者分区,相当于把一个完整的Linux系统放在一个文件里。 比如,你的主系统是 Windows 系统,在D盘里放着一些 deepin、Ubuntu等系统的VHD文件,想启动哪个选哪个,不用了就把VHD文件删除即可。

    • 支持的 vdisk 格式
      1.固定大小的 vhd (注意只能是vhd, 不支持vhdx)
      2.固定大小的 vdi
      3.Raw Disk 镜像格式

    - 支持的 Linux 发行版 (持续更新中)

    发行版 测试 ISO Legacy BIOS UEFI 备注
    CentOS 8 CentOS-8.2.2004-x86_64-minimal.iso
    CentOS 7 CentOS-7-x86_64-Minimal-1908.iso
    Fedora Fedora-Workstation-Live-x86_64-32-1.6.iso
    Ubuntu Desktop ubuntu-20.04-desktop-amd64.iso
    Ubuntu Server ubuntu-20.04.1-live-server-amd64.iso
    Linux Mint linuxmint-20-xfce-64bit.iso
    MX Linux MX-19.2_x64.iso
    Kali Linux kali-linux-2020.3-installer-amd64.iso
    Manjaro manjaro-xfce-20.0.1-200511-linux56.iso 基于Archlinux
    Archman Archman_KDE_20200209.iso 基于Archlinux
    Mageia Mageia-7.1-x86_64.iso
    openSUSE openSUSE-Leap-15.2-DVD-x86_64.iso

    理论上,其他使用 dracut/initramfstool/mkinitcpio 作为 initramfs 构建工具的发行版也支持。只是没有实际进行测试。

    • 先准备一个至少16GB的U盘

    • 然后下载软件Ventoy2Disk与虚拟机Oracle VM VirtualBox

    • 使用说明

    • 1.安装 Linux 系统到 vdisk

      • 创建固定大小的 vhd/vdi,注意只支持静态大小的,不支持动态扩展类型的。然后把支持的 Linux 系统安装到 vhd/vdi 中即可。
        安装过程和普通安装没有任何差别,可以借助 VirtualBox 来完成(创建硬盘时可以选择 vdi或vhd)。
        在这里插入图片描述
        注意,一般情况下,最后使用物理机启动vdisk时的BIOS模式,必须和安装系统时的BIOS模式相匹配。也就是说:
        如果使用虚拟机安装系统时是在 UEFI 模式下,则最后使用物理机启动时也必须在 UEFI 模式下。
        如果使用虚拟机安装系统时是在 Legacy BIOS 模式下,则最后使用物理机启动时也必须在 Legacy BIOS 模式下。

    以下设置是针对UEFI启动模式的电脑,用 Legacy BIOS 模式——传统模式无需设置。VirtualBox 设置 UEFI 模式如下图所示:==

    在这里插入图片描述

    *2.在系统下执行 vtoyboot 脚本

    • 安装完成并启动到 Linux 系统中之后,执行 vtoyboot 脚本。这一步是为了在系统中做一些处理,以支持Ventoy启动。
      vtoyboot 是配套 Ventoy 开发的一个项目,单独发布。从下面链接中下载压缩包即可。
      蓝奏云下载
    • 下载到 Linux 系统中,解压,然后使用root权限将其复制进grub文件夹内,之后执行里面的脚本sudo sh vtoyboot.sh脚本执行完之后,使用poweroff命令关机。
      注意 vtoyboot 会经常更新以支持更多的 Linux 版本以及修复 BUG,所以请使用最新版本。
    • 3.将安装完的Ubuntu的VHD/VDI拷贝到U盘,增加后缀名为 .vtoy 然后用 Ventoy 启动
      完成前面2步之后,就可以把 vdi/vhd 文件拷贝到 U盘中,重启电脑,然后通过Ventoy启动它了。
      为了便于识别和处理,这里推荐保留原来的后缀名,同时增加一个 .vtoy 后缀。比如: CentOS7.vhd.vtoy
      ubuntu20.04.vdi.vtoy
      Manjaro.vhd.vtoy

    Ventoy 自定义菜单插件启动VHD/VDI文件

    Ventoy是基于grub2的,因此你可以定义你自己的 grub2 菜单然后加载它。比如你可以定义一个菜单来启动你本地的OS(Linux, Windows To Go 等)。
    注意,在使用这个插件时你应该对grub2比较熟悉,否则可能会引入一些问题甚至影响Ventoy的正常功能。

    • 如何使用

      • 在第1个分区即存放VHD/VDI文件的分区新建ventoy文件夹,再创建一个 ventoy_grub.cfg 文件,即== /ventoy/ventoy_grub.cfg==
        在这个文件中定义你自己的菜单,然后在 Ventoy 的界面上按 F6 加载执行。
    • 示例

    menuentry "My Custom Menu" --class=custom {
        echo 'This is custom menu ... '
        sleep 1    
    }
    
    submenu 'My Custom SubMenu -->' --class=customsub {        
        menuentry "My Custom Menu2" --class=custom2 {
            echo 'This is custom menu2 ... '
            sleep 1    
        }
        
        menuentry '<-- Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
            echo 'Return ...'
        }
    }
    
    menuentry '<-- Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
        echo 'Return ...'
    }
    

    在这里插入图片描述

    其他关于Ventoy设置及Grub设置课参考

    Ventoy——新一代多系统启动U盘解决方案

    展开全文
  • Windows内核模式驱动程序,模拟著名的USB游戏控制。 (该项目可免费获得许可,但需要财务支持以保持其持续改进。除了维护和稳定性外,还有许多需要添加的功能。如果您的公司正在使用ViGEm的组件,请考虑出来) ...
  • 自己摸索出来的。。。win7可用的STC下载。还有USB驱动。这个驱动要用兼容模式的XP装。一定要。不然会下载不了。
  • By Fanxiushu 2016-05-25 转载或引用请注明原始作者 接上文, 通过应用层程序发送 CreatePDO IOCTL命令到总线驱动,让总线驱动直接创建一个虚拟USB设备的PDO,所有发送到 ...采用这样的工作模式的虚拟USB

    By Fanxiushu 2016-05-25 转载或引用请注明原始作者

    接上文,
    通过应用层程序发送 CreatePDO IOCTL命令到总线驱动,让总线驱动直接创建一个虚拟USB设备的PDO,所有发送到
    这个PDO的URB请求最终被转发到应用层程序,由应用层程序通过网络转发到真正的USB设备端进行数据处理,
    并且最终把处理的数据结果回传给总线驱动。
    采用这样的工作模式的虚拟USB设备,因为缺少USB控制器和根集线器的支持,某些软件尤其是工作在底层的软件,
    比如USBLyzer这样的USB抓包工具,再比如vmware虚拟机程序等是无法识别出我们的虚拟USB设备的。
    而我实现远程访问USB设备的初衷就是为了能让vmware虚拟机识别出虚拟USB设备,
    并且再次把虚拟USB设备成功转向到vmware的虚拟机系统里边去。
    因此目标尚未没达到,还需继续努力,得让USB虚拟系统是个完善的USB设备栈。

    于是通过Google全世界范围内搜索关于windows平台下USB设备栈的相关资料
    (感谢Google强大的搜寻能力,尤其是对这些比较难查询的技术资料,国内的搜索引擎就显得捉襟见肘了)
    通过查询资料,查看源代码,尤其是ReactOS的关于USB设备栈实现的源代码(也得感谢ReactOS提供的接近windows内核的源代码),
    慢慢的理解了windows平台下USB设备栈的层次结构。
    基本的层次结构其实在第一章介绍数据采集端的时候已经介绍过了。

    电脑中存在基本的PCI总线,USB控制器(也即是某个芯片)通过PCI总线接入电脑。
    电脑启动时候,PCI总线驱动会枚举到USB控制器,并且加载USB控制器的功能驱动。
    接下来USB控制器的功能驱动会枚举出它所带的RootHUB(根集线器)设备,并告知PnP管理器。
    于是PnP管理器接着加载RootHUB的功能驱动。
    RootHUB的功能驱动启动后开始监控它的PORT状态,一旦发现有USB设备连接上来,
    就创建这个USB设备的PDO,初始化相关信息,并且告知PnP管理器,PnP管理器于是加载这个USB设备对应的功能驱动。
    USB设备的功能驱动加载成功后,就开始通过URB包与USB设备通讯。
    所有的URB数据包被发送到RootHUB功能驱动创建的这个USB设备的PDO上边。
    对于硬件来说,URB数据包是通过USB控制器统一管理和处理的,因此RootHUB功能驱动会接着把发给这个USB设备的PDO的URB包
    转发到USB控制器得功能驱动里边,由USB控制器负责真正的硬件级别的数据通信。

    整个过程起码存在三种类型的功能驱动,而且三种驱动是父,子,孙的关系:
    一,PCI总线驱动,负责枚举USB控制器,(父亲)
    二,USB控制器驱动,负责枚举RootHUB,并且处理URB数据包(儿子)
    三,RootHUB驱动,负责创建USB设备的PDO,并且转发URB包给USB控制器。(孙子)

    要实现完整的USB设备栈,得实现以上三种驱动,对于我们的虚拟设备来说,
    PCI总线驱动等同于我们的虚拟总线驱动,它专门负责枚举出虚拟USB控制器。
    当我们的虚拟总线驱动枚举出虚拟USB控制器后,接着加载我们的虚拟USB控制器驱动,
    虚拟USB控制器驱动负责枚举出虚拟的RootHUB设备,并且实现某些微软定义好的IOCTL通讯,
    这些IOCTL必须实现,否则上层的软件是无法识别我们的驱动的。
    当我们的虚拟USB控制器驱动枚举出虚拟RootHUB设备后,接着加载我们的虚拟RootHUB驱动,
    虚拟RootHUB驱动负责创建虚拟的USB设备,并且实现某些微软定义好的IOCTL通讯,
    最后RootHUB驱动还得跟我们的应用层程序通讯,负责把发送到虚拟USB设备PDO上的URB转发到应用层进行处理。

    也就是把前篇文章介绍的虚拟USB 设备的数据处理移交到虚拟RootHUB功能驱动去处理,
    然后还得实现两个驱动来完善windows平台下的整个USB设备栈,这样才能被某些底层软件比如vmware程序识别。

    我们的虚拟USB控制器驱动和RootHUB驱动与真正的USB控制器和RootHUB是有区别的,
    主要的区别是URB数据包并不是转发到虚拟USB控制器去处理,而是在虚拟RootHUB驱动里边直接发给应用层处理,
    并且每个虚拟USB设备的PDO就对应一个应用层接口。
    这点跟硬件的USB控制器不同的,硬件的USB控制器驱动实现核心的URB数据包处理过程,
    所有USB设备的URB数据都会汇集到USB控制器里处理。
    而我们的虚拟USB控制器就是个摆设,他存在的目的就是为了欺骗上层软件。

    至于为何要实现这么一个处理结构而非完全按照windows平台的处理USB设备的URB包的方式,
    是经过一翻折腾才最终这么做的,
    这么实现最终也达到了我所需要的效果,并且付出的代价比完全按照硬件模式集中处理URB包少。

    在开发完成USB采集端和USB虚拟设备端,
    并且整套系统都能正常运行,也能看到虚拟设备的模拟效果。
    然后才发现vmware,USBLyzer等软件无法识别出USB虚拟设备,
    查找原因是因为他们按照USB的层次结构枚举存在于系统中的USB设备的。
    具体的说,就是通过 GUID_DEVINTERFACE_USB_HOST_CONTROLLER 接口查询所有USB控制器,
    再通过控制器查询根集线器,然后再最终查询到USB设备,具体查询代码可查阅WDK的例子工程usbview。

    因此必须实现这么一个层次结构,想法是在已经实现了的源代码基础上增加这些功能,并且对已经实现了的框架尽量少做调整。
    首先想到的是在原有的总线驱动再枚举出两个特殊的PDO,一个作为USB控制器,一个作为RootHUB。
    这个时候我们的总线驱动就存在三种类型的PDO,一种是模拟USB设备,一种是模拟USB控制器,一种是模拟根集线器,
    三种PDO处于平行结构,各自不属于谁,正是这个原因,再次造成vmware无法识别我们的虚拟USB设备,下面会说到。

    这样就有了虚拟USB控制器和虚拟RootHUB的物理设备对象了。
    接着就是他们的功能驱动问题了,USB控制器没现成的,得自己实现一个虚拟USB功能驱动。
    虚拟RootHUB的功能驱动打算直接使用微软的usbhub.sys驱动,这个是windows的USB2的通用集线器驱动框架,
    接入usbhub.sys本来是想节省点事情,谁知道反而是增加麻烦。
    usbhub会要求RootHUB提供 USB_BUS_INTERFACE_HUB_V 接口,
    这个接口有非常多的版本, 在WinXP是V5版本,到了win7,起码需要V6,V7版本,
    到了win10 ,已经达到了V9版本,
    接口要求提供的回调函数非常之多,光USB_BUS_INTERFACE_HUB_V5 就已经要求15个回调函数了。
    USB_BUS_INTERFACE_HUB_V9 要求的接口函数更是多得不得了。

    HUB设备依然是个特殊的USB设备,依然有设备,配置,接口和端点描述符;还有个HUB描述符,描述PORT信息的。
    还得提供一个中断类型的Pipe,用于当某个USB设备接入到某个PORT的时候,通知给usbhub.sys。
    这些都是标准HUB设备必须提供的。当我把这一切数据在自己创建的虚拟RootHUB的PDO上伪造好之后,
    然后辛辛苦苦的老老实实的实现了 USB_BUS_INTERFACE_HUB_V5必须提供的15个接口函数,
    之后兴奋的打算先在winXP系统下调试,然后再实现V9版本的所有接口函数,
    也幸好是先在winxp做测试,没再老老实实的实现V9的所有接口函数。
    结果发现一个严重问题,问题来源还是自己对usbhub.sys的运行框架的不甚理解造成的。
    因为我的总线驱动是通过应用层程序发送CreatePDO IOCTL控制码来直接创建虚拟USB设备的PDO的,
    也就是虚拟USB设备的PDO是在我的总线驱动中直接创建的,
    我在 USB_BUS_INTERFACE_HUB_V5的CreateUsbDevice回调函数中通过某种映射关系,
    把在总线驱动中已经创建好的虚拟USB设备的PDO跟RootHUB的PORT关联起来,
    以为这样就算是实现CreateUsbDevice的功能了。
    而事实却是所有的USB设备的PDO都是在usbhub.sys驱动中创建的,USB_BUS_INTERFACE_HUB_V5接口提供的CreateUsbDevice
    函数只是告诉我们开辟一块自己的数据结构来描述新到来的USB设备,并且提供一个USB handle句柄,
    用于在其他回调函数中识别我们的数据结构,当调用完成CreateUsbDevice和其他一些初始化接口函数之后,
    usbhub.sys就开始创建新到来的USB设备的PDO。
    这些是在我发现我问题之后,通过查询ReactOS关于USB设备栈的源代码,尤其是关于usbhub部分的源代码,
    才知道usbhub的工作流程,然后才恍然大悟。
    如果真要使用usbhub.sys来作为我们的RootHUB的功能驱动,就得颠覆我之前的工作,修改量不是一般的小。
    关键是以前实现的功能都得重做,实在不划算。因此只好放弃usbhub.sys,自己开发RootHUB的功能驱动。
    虚拟RootHUB和控制器,都是不存在的,没必要非得在底层都按照硬件的模式来伪造数据,只要能欺骗上层驱动和程序就行了。
    欺骗上层,关键是实现微软定义的必须实现的一些IOCTL接口,
    这些IOCTL定义可查看 https://msdn.microsoft.com/en-us/library/windows/hardware/ff537421%28v=vs.85%29.aspx 连接。
    想到这点,又开发了两个功能驱动,一个是虚拟USB控制器,一个是RootHUB,并且实现对上层的IOCTL接口。
    结果一安装运行,USBLyzer这样的软件能正常识别和抓包了。
    但是vmware还是无法识别,经过思索,同时反复比较注册表中我的驱动和别的正常的驱动有什么不同之处,
    结果在注册表中发现别的驱动中有个字段ParentIdPrefix ,在我的驱动中不存在。
    于是想到,可能是因为我并没按照层次结构来创建PDO,在系统中没有形成设备树结构。
    因此再次修改驱动,这次我把USB控制器得功能驱动,RootHUB的功能驱动等全部集成到一个源代码中,
    通过不同的标示来判断究竟属于那种驱动类型,这样看起来更简洁。

    这样修改之后,奇迹般的被vmware识别出我们的虚拟设备了。
    兴奋过后,虽然vmware识别出虚拟设备,但是还是没法接入到虚拟机系统里边去,再次通过查阅各种资料,
    以及vmware打印的错误日志,查询到vmware论坛说什么vmware会做底层检测,究竟做什么检测,我也不甚了解。
    反正是如果不让它做检测,只要在注册表的 hcmon 服务中添加Parameters子项,
    在Parameters子项里添加一个 DWORD键值 DisableDriverCheck 并且设置为1 ,
    然后重启 vmware-usbarbitrator64.exe 程序,再重新打开vmware虚拟机就不会在做检测了。
    经过这么设置,并且在经过修改BUG之后,虚拟USB设备终于神奇的被vmware再次重定向到虚拟机系统里边去。
    有时不能发现虚拟USB设备,可能是驱动中哪个接口没处理好造成的,暂时也懒得去找具体原因了,
    只要再把 vmware-usbarbitrator64.exe 重启一下,再重新打开vmware虚拟机,基本上都能被识别到。
    用它把从远端虚拟的iPhone设备经过vmware再次接入到 Mac OS操作系统中,并且能在Xcode开发环境中,正常使用。

    于是我的终极目标终于完成了。

    驱动安装效果如下图:


    下图是运行USBlyzer抓包软件之后的虚拟USB设备栈的效果:


    虚拟设备栈中“插入”了三个USB设备,一个是iPhone,一个是摄像头,一个是USB键盘

     

     

     

    展开全文
  • Kernel USB驱动框架

    2019-09-15 23:44:34
    USB协议是非常复杂的,好在Linux内核为我们做了太多的工作,使得USB驱动的开发相对容易很多。 USB基于树形的拓扑结构设计,支持多种传输模式和传输速率。硬件上,USB分为USB控制和USB设备,USB控制负责同USB...
  • 当你插入一个USB设备到Windows系统的电脑之后,如果收到该驱动器有问题并要求现在扫描并修复的提示后,该如何解决?要知道,除了简单的重启系统和扫描外,可能要用到别的办法。如果USB设备在当前Windows下无法使用,...
  • 调试usb host模式驱动的步骤:查看原理图,usb host模式下的管脚配置:红框里面的是host模式,蓝框里面是OTG模式。 IMX6Q有4种独立的USB控制核心:OTG控制核与3个host控制核。The USB 2.0 Controller Core 0 ...
  • 据外媒报道称,微软为Windows 10用户推送了KB4586819更新,主要修复了可能导致文件资源管理崩溃的问题,以及与游戏和USB相关的bug。Windows 10下USB假死有救了变更日志中写道:其修复了“当启用命名空间扩展时,...
  • USB 驱动和配件

    2016-09-05 16:41:55
    安卓通过2种模式支持各种各样的USB周边和安卓USB配件:USB Host,USB Accessory.(USB周边和安卓USB配件要使用安卓硬件附件协议) 在USB accessory 模式中,外部USB硬件作为USB主机。外设的例子包括机器人控制,...
  • USB 规范2.0,支持全速(12Mbit/s)及低速(1.5Mbit/s)两种数据传输模式。ISP1160 提供 两个下行端口。每一个下行端口都有一个过流(OC)检测输入引脚及电源开关控制输出引 脚。HC 的下行端口能与USB 兼容性设备及...
  • USB驱动之四虚拟串口

    2020-01-14 19:37:03
    usb的从模式可以让手机当成一个device,如adb,mtp,midi等,对应的usb控制是udc,使用usb 虚拟串口来学习下。 kernel4.4/drivers/usb/gadget/legacy/Makefile -obj-$(CONFIG_USB_G_SERIAL) += g_serial.o +obj-y +=...
  • USB驱动之 端点 endpoint

    2016-11-08 09:37:14
    所有与USB 相关的代码都在drivers/usb 目录下面。上面的Kconfig 文件说的很清楚,ehci-hcd 模块支持的是USB2.0 控制的高速模式,它本身并不支持全速或低速模式,对连接上的USB1.1 设备的支持,
  • 锋影e-mail 174176320@qq.comIMX6Q有4种独立的USB控制核心:OTG控制核与3个host控制核。The USB 2.0 Controller Core 0 supports HS/FS/LS operation in Host mode and HS/FSoperation in device mode.1、OTG CORE...
  • ORICO奥睿科DU3系列USB3.0转显示转接器驱动For WinXP-32/WinXP-64/Win7-32/Win7-64/Win8-32/Win8-64/Win8.1-32/Win8.1-64(2014年4月8日发布)DU3系列通过USB3.0高速传输接口实现DVI接口与VGA接口外置转换,将电脑...
  • 驱动测试程序(需要在命令行模式运行程序,否则窗口一闪而过,看不到运行结果)HelloWDM_TestApp 驱动源码HelloWdm_Source 硬件测试程序(上位机)EasyUSB_51_Programer_Hard_Tester 硬件测试程序(下位机)...
  • USB设备的Bulk模式驱动程序设计2

    千次阅读 2006-05-10 11:04:00
    USB中断服务程序 USB控制产生单一中断,多个端口共享。每个端口产生ACK、NACK/ERROR中断。输出端口产生接收零字节包或短包中断。控制端口0接收设置包时产生中断。USB控制产生USB事件中断,如帧起始(SOF)、挂...
  • IMX6Q有4种独立的USB控制核心:OTG控制核与3个host控制核。
  • 按照设备模型的总线,设备,驱动模式,一条总线会把所有这条总线上的设备和驱动都挂载到总线的设备链表和驱动链表上,具体到usb总线上,就是usb主控制,hub等设备,都需要按照设备模型的要求,作为设备挂载到usb...
  • 部分机型是可以支持关闭USB3.0模式的,小伙伴不要着急,听我娓娓道来。 方法一 开机按F2进入BIOS,在【Advanced】菜单下,将【USB3.0 Support】选项设定为【Disabled】,然后按F10保存退出即可。 方法二 ...
  • usb驱动错误导致的键盘鼠标失灵

    万次阅读 2015-09-01 08:30:42
    新装了系统,打完驱动重启之后,发现usb接口的键盘鼠标无反应,灯也不亮,系统未死机,怀疑是刚才的万能驱动问题,退出重启后进入安全模式,键盘鼠标正常使用,打开设备管理,在通用串行总线控制下将Generic USB Hub卸载,...
  • USB数据线连接状况下,可以将扫描设备设置成USB HID-KBW输入模式,在这种模式下,扫描将成为一个虚拟键盘,数据接收主机像接收真实键盘输入一样接受此虚拟键盘的输入,识读解码得到数据后的发送过程便是敲击虚拟...
  • USB四种传输模式

    千次阅读 2017-11-03 18:53:43
    USB四种传输模式USB插入USB总线时,USB控制会自动为该USB设备分配一个数字来标示这个设备。...USB设备驱动USB控制器驱动请求的每次传输被称为一个事务(Transaction),事务有四种类型,分别是Bul
  • 下载地址:风云社区系统...重新格式化没有帮助,因为HFS +格式化的驱动器在普通Windows PC上不可读。此外,当文件大小大于2GB时,FAT32也不起作用。Mounty来了:它使用OS X的内置功能,不会安装任何其他驱动程序。这...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 530
精华内容 212
关键字:

usb驱动器模式