简介 Room362之前发布从锁定计算机中盗取凭证信息一文,其中的方法很棒。这种攻击方式之所以能成功,主要原因在于系统访问设备的时候,会自动加载设备驱动,即便计算机处在锁定状态也是如此,当然也包括USB网络适配器的驱动程序。 了解到这一点之后,我们就可以尝试用Android网络共享功能——也就是所谓的Tethering来创建网络。启用网络共享功能之后,手机设备就能够接收来自主机的所有通信数据,手机是作为网关存在。这样一来要执行中间人攻击简直轻而易举。 本文中,我将为大家讲解其中涉及的步骤,工具,以及进行一次
如下图所示,USB控制器可以呈现出两种不同的状态。USB控制器作为Host时,称为USB主机控制器,使用USB主机控制器驱动。USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框架。
在Linux环境上使用SDX55模块时出现无法识别adb端口,但可以识别手机adb端口。
这种情况一般在换了一个新手机会出现,特别是个别机型容易出现(比如三星);一般在插上USB线之后都会提示你设备没有正常识别,这时就需要手动重新安装。通过驱动精灵或者官网下载驱动。
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说usb协议开发_基于事件驱动的架构,希望能够帮助大家进步!!!
USB的全称是Universal Serial Bus,通用串行总线。它的出现主要是为了简化个人计算机与外围设备的连接,增加易用性。USB支持热插拔,并且是即插即用的,另外,它还具有很强的可扩展性,传输速度也很快,这些特性使支持USB接口的电子设备更易用、更大众化。
这一部分主要是用来介绍 Linux 设备驱动程序的一些基本概念,包括:Linux 设备驱动程序的作用、内核功能的划分、设备和模块的分类以及版本编号。
SDIO-Wifi模块是基于SDIO接口的符合WiFi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。
在Linux系统中,设备通常通过主设备号和次设备号来标识。主设备号用于区分设备的大类,例如硬盘、字符设备等;次设备号用于在同一大类设备中区分不同的设备。以下是一些常见设备类型及其固定的主设备号:
1引言 目前对于诸如USB鼠标、键盘等这样的计算机标准外设,Windows系统已经提供了标准的驱动程序,用户无需再进行任何开发工作。而开发专用USB设备,需要开发专用的驱动程序。 Windows2000/XP操作系统不允许用户程序直接访问硬件设备。为了实现对硬件设备的访问和控制,必须通过操作系统所认可的驱动程序对硬件设备实现间接访问和控制。驱动程序通常被认为是操作系统的组成部分,所以,开发驱动程序有严格的规范,被认为是“计算机高手”的工作。而利用DDK进行基于WDM(Win32 Driver Model)驱动程序开发,使驱动程序的开发变成了一项比较简单的工作。 2 Win32驱动程序模型 USB设备驱动程序必须符合由Microsoft为Windows 98及其后版本所定义的Win32驱动程序模型(Win32 Driver Model,WDM)规格。这些驱动程序称为WDM驱动程序,扩展名为.sys。 WDM定义了一个基本模型,处理所有类型的数据。例如,USB类驱动程序为所有USB 设备提供了一个抽象的模型,并具有由所有客户驱动程序使用的定义好的接口。有了对所有设备类型共同的核心驱动程序模型,使驱动程序开发人员更容易从一种类型的设备移动到另外一种类型的设备上去。而且它也意味着驱动程序模型的内核实现尽可能是固定的。 USB是使用标准Windows系统USB类驱动程序访问USBDI(Windows USB驱动程序接口)的USB设备驱动程序。USBD.sys就是Windows系统中的USB类驱动程序,它使用UHCD.sys来访问通用的主控制器接口设备,或者使用OpenHCI.sys访问开放式主控制器接口设备。USBHUB.sys是根集线器和外部集线器的USB驱动程序。在PCI枚举器发现了USB主控制器之后,它会自动装入相关的驱动程序。 3 Windows USB驱动程序接口 大多数客户化的USB设备需要由用户来编写设备驱动程序,以响应内核态或用户应用程序的请求。在内核级,命令由客户驱动程序使用内部IOCTL发送给USB系统,例如IOCTL-INTERNAL-USB-SUBMIT-URB允许发出USB请求块(URB)给系统USB驱动程序。URB允许发出几个功能调用给USB系统。用户态USB实用程序也可以发出几个普通IOCTL给USB设备,目的仅仅是得到连接设备的信息。 3.1函数驱动程序 函数驱动程序(function driver)让应用程序与USB设备,通过API函数来沟通。这些API函数属于Windows的Win32子系统,Win32子系统同时也管理着执行应用程序。函数驱动程序与较低级的总线驱动程序沟通,总线驱动程序控制着硬件。 图1是应用程序与各个驱动程序,如何一起完成USB通信的结构图。当设备或子类别的要求超过类别驱动程序的能力时,会有辅助的过滤器驱动程序来类别驱动程序的能力。一个上层的过滤驱动程序位于类别驱动程序的上方。这样,从客户应用程序传来的要求,会先经过上层的过滤驱动程序,然后才传给类别函数驱动程序。一个下层的过滤驱动程序位于类别驱动程序和总线驱动程序之间,如图1。类别驱动程序会将要求传给下层的过滤驱动程序,然后再传给总线驱动程序。 图1应用程序与驱动程序完成USB通信的结构 通用串行总线驱动程序(USBD.SYS)是USB系统中负责管理通用串行总线的工作,位于主机上的一个软件。USBD负责控制所有的USB协议操作和高层的中断处理控制。在Windows98及以上版本中,Microsoft定义了一个新的设备驱动程序模型,称之为Windows设备驱动程序模型(WindowsDriver Model或WDM)。 USB客户应用程序也是一种设备驱动程序,通过定义的一个称之为USB接口的层间接口来访问其下方的USB软件。应用程序正是通过这些USB客户软件来实现与USB设备之间的通信。 针对USB客户应用程序的开发,相应版本的Windows操作系统的设备驱动程序开发包(Device Driver Developer’s Kit,即DDK)给出了相应的USB接口函数。并提供了对于这些函数具体使用的参考文档。 3.2 USBDI的IOCTL 为了编写USB设备驱动程序,通常还要在源代码中包含DDK所提供的几个头文件。这些头文件在Windows98下存放在/98DDK/inc/win98目录中,在Windows 2000下存放在/NTDDK/inc/win2000目录中。这些头文件的用途可以总结如下: usb100.h 定义了在USB设备驱动程序设计中所要用到的各种常量和数据结构。 Usbdi.h USBDI例程,其中包括对USBD和USB设备驱动程序通用的数据结构,适用于内核和用户模式。 Usbdlib.h URB构造和各种例程,定义了USBD所输出的服务,适用于内核和用户模式。 Usbioctl.h 给出了对IOC
本文总结了USB总线驱动程序的实现原理和流程。首先介绍了USB总线驱动程序的基本概念和作用,然后详细阐述了USB总线驱动程序的实现流程,包括设备加载、设备初始化、设备配置、设备接口、端点、读写请求、中断和轮询机制。最后对USB总线驱动程序中涉及到的几个重要概念进行了详细说明。通过本文的总结,可以更好地理解USB总线驱动程序的实现原理和流程,为后续的USB驱动开发打下坚实的基础。
问1. 既然还没有"驱动程序",为何能知道是"android phone" 答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序" USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序
FabulaTech是一家位于英国伦敦的软件开发公司,其专业精神、经验和执行领导能力得到高度认可。
USB是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,USB就是简写,中文叫通用串行总线。最早出现在1995年,伴随着奔腾机发展而来。自微软在Windows 98中加入对USB接口的支持后,USB接口才推广开来,USB设备也日渐增多,如数码相机、摄像头、扫描仪、游戏杆、打印机、键盘、鼠标等等,其中应用最广的就是摄像头和U盘了。
SPI总线由四根通信线组成,全双工、主从方式串行同步通信,一次传输8bit,高位在前,低位在后。
– 随着移动互联网技术的迅猛发展,两大主流智能移动设备iOS 和Android占据了绝对的市场,除了基本的通话、娱乐功能之外,这些移动设备已经成为新时代中重要的信息终端设备节点。 – 通用串行总线(USB)目前已经成为了最标准的接口,用于提供系统一个可靠且低成本的数字连接,目前在使用方面已经超越了电脑的范畴,并已广泛应用在工业、医疗、消费电子、通信网络等等。 – RS232接口长期广泛存在于在各种应用领域,随着安卓手机平板的大量上市,安卓系统下通过USB转RS232接口接入外设的应用需求也开始变得强烈起来。
点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 08:30准时推送,每月不定期赠送技术书籍。
如何让Openharmony设备HDC接口(OTG接口)作为一个复合设备,实现HDC(HDC:鸿蒙设备连接器) + CDC ACM(USB 虚拟串口),而设备本身支持HDC。所以需要增加CDC ACM(USB 虚拟串口)。
在Linux Debian 12系统中,使用VirtualBox虚拟机时常遇到USB设备识别问题。
随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口。如今,USB支持三种传输速率:低速(1.5Mb/s)、全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输、同步传输、中断传输和控制传输。USB应用灵活方便,能满足多种外设的须要。随着个人便携式电子产品的增长和嵌入式技术的飞速发展,USB主机已不再局限于单纯的PC,能够是含有USB主控器的不论什么设备,如PDA、MP3播放器等。在USB2.O规范中也添加了USB嵌入式设备的标准——On-The-Go(OTG),它使外设能够在主机和设备之间相互切换,即当其连接至PC时,它是1个USB设备,而与其它USB设备相连接时,它便作为USB主机。
作者:matrix 被围观: 2,699 次 发布时间:2013-04-27 分类:兼容并蓄 | 无评论 »
RK33999使用synopsys dwc3的USB3.0控制器IP。早期的初始化需要在两个模块中进行,一个在rockchip官方提供的驱动中初始化,位于drivers/usb/dwc3/dwc3-rockchip.c文件中,主要初始化和CPU紧密相关的内容,如时钟、复位、电源、extcon(用于USB模式切换),另一个在synopsys提供的驱动中初始化,位于drivers/usb/dwc3/core.c文件中,这部分和USB3.0控制器密切相关,如USB3.0控制器内部寄存器地址、USB3.0的PHY、中断等。只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。
在usb gadget configfs引入到内核之前,内核都使用硬编码的方式实现复合设备,无法在用户空间动态修改和绑定不同的function驱动,若要修改,则需要修改内核代码,重新编码,非常不方便。目前这部分代码在被放到drivers/usb/gadget/legacy/目录下。被编译成内核模块时,名称以g开头,如音频设备g_audio.ko、串口设备g_serial.ko、CDC设备及大容量存储设备g_multi.ko。USB gadget configfs和legacy相比只是实现复合设备的形式不同而已,设备的功能最终还是要通过function驱动实现。下面以音频复合设备为例,分析g_audio驱动的工作过程。
从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉。毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人。
倪继利著 2005年8月出版 ISBN 7-121-01518-5 900页 88.00元(估价)
博客地址 : http://blog.csdn.net/shulianghan/article/details/42254237
USB设备控制器(UDC)驱动的框图如下图所示,由三部分组成。第一部分是UDC驱动核心层,在drivers/usb/gadget/udc/core.c文件中实现,该层是一个兼容层,将USB Function驱动和具体的USB gadget驱动隔离开,抽象了统一的接口和数据结构,向USB Function驱动提供了统一且稳定的接口,同时完成USB Function驱动和USB gadget驱动的匹配。第二部分是gadget driver层,负责驱动硬件工作,和具体的USB设备控制器硬件相关,dwc3的gadget driver驱动在drivers/usb/dwc3/gadget.c文件中实现。第三部分是USB设备控制器硬件。
其中,struct subsys_private包含一个设备链表(struct klist klist_devices)和一个驱动链表( struct klist klist_drivers)
UDC驱动的接口都定义在drivers/usb/gadget/udc/core.c文件中。USB Function驱动通过调用这些接口匹配及访问USB设备控制器,而底层USB控制器驱动要实现这些接口定义的功能。下面分析一下主要的UDC驱动接口调用流程。
软件运行时输入单元输入内容,进入内存,CPU由控制单元和算术逻辑单元组成,控制单元控制算术逻辑单元从内存中读取数据,内存和外部存储设备进行交互,运算完毕以后输出到输出单元,完成软件的运行。
[导读] Linux设备林林总总,嵌入式开发一个绕不开的话题就是设备驱动开发,在做具体设备驱动开发之前,有必要对Linux设驱动模型有一个相对清晰的认识,将会帮助驱动开发,明白具体驱动接口操作符相应都做些什么。
本文通过对Linux下串口驱动的分析。由最上层的C库,到操作系统系统调用层的封装,再到tty子系统的核心,再到一系列线路规程,再到最底层的硬件操作。
Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题。 跟踪探索了一段时间的源代码后,我写下了这篇总结,希望在 Linux 无线网络的工作原理上,读者能从这篇文章获得一个具有帮助性的概览。
USB 有主机功能和从设备功能。做主机时,能连接 U 盘、USB 鼠标等 USB 设备;做从设备时,具有 ADB 调试等从设备功能。
TTY子系统位于标准字符驱动之下,其中包括:TTY核心层,TTY线路规程,TTY驱动层。
本文通过在荔枝派上实现一个 hello 驱动程序,其目的是深入的了解加载驱动程序的运作过程。
第二次写这类博客,之前还是求职期间写的面试之类的经历。下面是做高通安卓驱动的感言。 同一时候献给择职想做驱动的參考。
开发板: Exynos4412(Cortex-A9) ----友善之臂Tiny4412
在Linux设备驱动之字符设备(一)中学习了设备号的构成,设备号的申请与释放。在Linux设备驱动之字符设备(二)中学习了如何创建一个字符设备,初始化,已经注册到系统中和最后释放该字符设备。
本篇文章是VMware官网的 使用VMware Workstation Pro - VMware Workstation Pro 14.0 的开源手册的摘抄版本,摘取一些非常有用的东西,和大家分享一下。 手册链接:使用 VMware Workstation Pro - VMware Workstation Pro 14.0 感兴趣的小伙伴,可以下载下来,好好看看,有260多页。 ---- 导言 高中就玩过vmware,第一次接触感觉很神奇,竟然可以在一个系统里面在运行系统,拿它试验装机,折腾
configfs是基于ram的文件系统,与sysfs的功能有所不同。sysfs是基于文件系统的kernel对象视图,虽然某些属性允许用户读写,但对象是在kernel中创建、注册、销毁,由kernel控制其生命周期。而configfs是一个基于文件系统的内核对象管理器(或称为config_items),config_items在用户空间通过mkdir显式的创建,使用rmdir销毁,在mkdir之后会出现对应的属性,可以在用户空间对这些属性进行读写,与sysfs不同的是,这些对象的生命周期完全由用户空间控制,kernel只需要响应用户空间的操作即可。configfs和sysfs两者可以共存,但不能相互取代。
1、在单台PC上运行多个操作系统 VMware允许您在同一Windows或Linux PC上一次运行多个操作系统。创建真实的Linux和Windows VM以及其他台式机,服务器和平板电脑环境,以及可配置的虚拟网络和网络状况仿真,以用于代码开发,解决方案架构,应用程序测试,产品演示等。 2、为任何平台进行开发和测试 支持数百种操作系统,并可以与Docker等云和容器技术一起使用。 3、连接到VMware vSphere 安全连接到vSphere,ESXi或其他Workstation服务器,以启动,控制和管理虚拟机(VM)和物理主机。通用的VMware虚拟机管理程序可以最大程度地提高生产力,并可以轻松地在本地PC之间来回传输VM。 4、安全和隔离环境 使用不同的隐私设置,工具和网络配置运行安全的第二个桌面,或使用取证工具调查操作系统漏洞。工作站提供了业界最安全的虚拟机管理程序之一,并为IT安全专业人员提供了强大的功能。
《Linux设备驱动》 -- 也就是我们所说的LDD3了; 适合一定基础的人阅读,深入学习Linux不可或缺的知识; 《UNIX环境高级编程》 这本书并不是面对linux内核的书,但是我是从最基础看这本书逐步入门的; 《Linux内核完全剖析》 本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Li
需要关注注册驱动的有hub, usb, usb-storage。hub中用来做检测usb口是否有OTG的东东接入,usb是所有usb接入设备的老大哥,usb-storage只是usb的一个小老弟。
左边主机,右边从机;USB 有主机控制器 UHC 和从机控制器 UDC,主机侧有 USB Device Driver,从机侧有 USB Function Driver。
Intel采用双独立总线(英语:Dual Independent Bus,DIB),使用外部的前端总线到主系统存储器,和内部的后端总线于一个或多个中央处理器、CPU缓存间。CPU 里面的内存接口,直接和系统总线通信,然后系统总线再接入一个 I/O 桥接器(I/O Bridge)。这个 I/O 桥接器,一边接入了我们的内存总线,使得我们的 CPU 和内存通信;另一边呢,又接入了一个 I/O 总线,用来连接 I/O 设备。
2.感觉自己之前看的太细了,有些东西记不住。你的pdf+正点原子+项目 完全看完不太现实。
目前,Visual Studio 2017/2019支持Azure Sphere开发,后续,微软会加入Visual Studio Code的支持。以Visual Studio 2019 Community为例(Pro版和Enterprise版也当然支持),用户需要先从官网下载。安装的时候,需要勾选Linux development with C++这个Workload,注意,还需要勾选C++ CMake tools for Linux和Embedded and IoT development tools这两个选项,如下图1所示。
领取专属 10元无门槛券
手把手带您无忧上云