前言: 昨个帮同事忙, 应下了一个Android 与PC端通信的Demo,遂今早上折腾了一会,也算是写出来了,而且发现了一个比较严重的问题:参考资料都是12年,13年的,很多的Sample 都是不能用的..., 所以打算更新一下。...---- Android Code 首先是清单文件中的权限: usb.host" /> usb.accessory" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE
允许的最大层数为6层(出去主机);每层的电缆最大长度为5米,电缆总长度为30米;每层最大允许接5个DEVICE(设备); 3 USB系统程序 1....应用程序:应用程序运行与USB设备所连接的主机上。部分应用程序会由操作系统的主机提供,大部分应用程序由USB设备供应商提供。 2. 驱动程序:驱动程序服务于特定的操作系统,为USB设备提供支持。...驱动程序通常由操作系统提供,独立于特定的应用程序和USB设备。 3. 主机端控制程序:包括硬件和软件,使USB设备能够被主机识别。...PID) 奇数据包(PID) 握手 (handshake) 确认(ack) 不确认(nack) 停止(stall) 0x4B 0x5A 0x1E 接收器无错的接收数据包 接收设备忙不能接收数据 设备出错通信不上...大容量数据传输(bulk transfers):非周期性,大容量突发数据的通信,数据可以占用任意带宽,并容忍延迟 6.6 USB枚举过程 当一个USB设备插入主机后,会有以下活动: 供电 复位
主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...管道与USB设备中的端点逐个对应,并且各个管道的数据传输是相互独立的。 2、管道的格式分类 管带的通信格式分为两种,一种为流,另一种为消息,这两种通信格式不同且互斥。...数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的(先进先出),并且流通道中的通信流总是单向的。 2)、“消息”指具有某种USB定义格式的数据流。...一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。
linux下的socket与windows下的类似,就是少一个初始化的过程。
而Mac和Linux下要方便得多,你几乎不需要操作便可以轻松通过USB连上手机,进行开发调试。...参看http://developer.android.com/tools/device.html#VendorIds 首先通过文档找到USB Vendor IDs,文档中没有的话可以在Mac上连接USB...Mac OSX下的配置: 1.创建或修改文件: /Users//.android/adb_usb.ini 添加USB Vendor IDs: 0x0421 注意:在Finder中隐藏文件默认不显示的...$ adb devices Linux 下的配置: 1.创建或修改文件:/etc/udev/rules.d/51-android.rules, $ sudo vi /etc/udev/rules.d/51.../android update adb 5.在$HOME创建或修改文件: ~/.android/adb_usb.ini 添加内容0x0421 $ vi ~/.android/adb_usb.ini 6
/linux_c/usb_dev_ubuntu# 如果提示忙,表示当前系统已经默认挂载。...2.4 查看usbmon可以识别到的USB总线编号 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /sys/kernel...root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# lsusb Bus 004 Device 001: ID 1d6b:0003 Linux...2.6 监控指定总线上通信的数据 为了只看这个想要的设备数据,可以过滤一下。 后面的 "1:010" ,1表示总线编号。 010表示设备编号。 通过lsusb命令可以看到。...root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# cat /sys/kernel/debug/usb/usbmon/3u ffff9bbbaf235b00
✨收录专栏:通信协议,本专栏为记录项目中用到的知识点,以及一些硬件常识总结 欢迎大家点赞 收藏 ⭐ 加关注哦!...USB HID通信协议详解 一、什么是USB HID? USB HID(Human Interface Device,人机接口设备)是USB协议中的一个标准设备类别,专门为需要与人交互的设备设计。...设备类型 特性 USB HID设备 其他USB设备(如存储设备) 主要用途 人机交互 数据传输、存储 通信方式 中断传输为主 批量传输为主 延迟要求 低延迟(实时响应) 可接受一定延迟 数据量 小数据包...──────────────────────────┐ │ 应用程序层 │ ├────────────────────────...─────────────────────────┤ │ 操作系统HID驱动程序 │ ├────────────────────────────
背景知识 USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一。...下面就来介绍一下Android Usb使用模式之一的USB Host。 android.hardware.usb包下提供了USB开发的相关类。...1、UsbManager:获得Usb的状态,与连接的Usb设备通信。...7、UsbConstants:usb常量的定义,对应linux/usb/ch9.h 二、USB插入事件 Usb的插入和拔出是以系统广播的形式发送的,只要我们注册这个广播即可。...}; 三、Usb插入时启动程序 有些应用场景是,Usb插入后启动特定程序处理特定问题。
接Linux进程间通信:共享内存 (上) POSIX共享内存 POSIX共享内存实际上毫无新意,它本质上就是mmap对文件的共享方式映射,只不过映射的是tmpfs文件系统上的文件。 什么是tmpfs?...现在绝大多数Linux系统都有一个叫做/dev/shm的tmpfs目录,就是这样一种存在。具体使用方法,大家可以参考我的另一篇文章《Linux内存中的Cache真的能被回收么?》。...Linux提供的POSIX共享内存,实际上就是在/dev/shm下创建一个文件,并将其mmap之后映射其内存地址即可。...rt的库,可以使用如下命令进行编译: [root@zorrozou-pc0 sharemem]# gcc -o racing_posix_shm -lrt racing_posix_shm.c 对于这个程序...根据以上例子,我们整理一下POSIX共享内存的使用相关方法: #include #include /* For mode constants
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 1....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。
USB CDC串口通信详解:把USB变成“智能串口线” 一、CDC是什么?...CDC-ACM通信层次: 应用层(用户程序) ↓ 串口API(COM1, COM2...) ↓ USB CDC驱动程序(usbser.sys / cdc_acm.ko) ↓ USB核心驱动 ↓ USB主机控制器 ↓ 物理USB连接 五、CDC-ACM描述符详解...─────────────┐ ┌─────────────┐ │ 主机 │ │ 设备 │ │ (Windows/Linux...:运行用户程序 │ │ ↓ │ │ USB CDC协议栈 │ │ ↓ │ │ USB外设 │←用于程序下载+调试 │ ↓
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 2....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...高速USB 总线的帧周期为125us,全速以及低速 USB 总线的帧周期为 1ms。帧的起始由一个特定的包(SOF 包)表示,帧尾为 EOF。...注意:虽然高速USB总线和全速/低速USB总线的帧周期不一样,但是SOF包中帧编号的增加速度是一样的,因为在高速USB系统中,SOF包中帧编号实际上取得是计数器的高11位,最低三位作为微帧编号没有使用,...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。
可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍USB3.0通信-USB3.0协议介绍>,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...USB3.0 PHY简介 首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。...LEVEL0 通信连接示意图 升级的UTMI+接口 ULPI(UTMI+ Low Pin Interface) 通信连接示意图 以上三种接口都是和USB2.0 PHY通信的接口(如果还不理解的话,这三种接口类似网口中媒体接口...,这里在多说一句,目前市场上为了方便开发,USB3.0芯片内部会放置一个单片机,主要还是方便扩展接口,以方便芯片不单单只在USB3.0通信方面应用。...下面一节我们就简单介绍一下市场上常见的USB3.0 PHY片。 市场上常见的PHY 上图中可以将PHY分为两种,下面会标注是第一种还是第二种,两种的区别在上一节中已经进行区分了,这里就不再赘述了。
在linux下进行多线程编程,肯定会涉及到线程通信问题,本文主要分析pipe,即管道在多线之间通信实现。...1])],,实现单向通信,反过来也是一样....进程之间的通信,推荐一种方式使用共享内存,共享内存区是最快的IPC形式,此种方式也可在两个完全独立的程序之间进行数据传递,后续再详细介绍。...当然,进程以及线程之间的通信不止以上方法,还有使用socket,eventfd等。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150749.html原文链接:https://javaforall.cn
() 获得设备列表,返回的是一个HashMap.; 2) hasPermission(UsbDevice device) 判断你的应用程序是否有接入此USB设备的权限,如果有则返回真,否则返回...则为写数据,USB_DIR_IN, 则为读数据 我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信。...,但是,我们大部分情况下还需要对usb串口进行一些配置,比如波特率,停止位,数据控制等,不然两边配置不同,收到的数据会乱码。...转串口通信的基本流程,有些地方写的不是很全面,比如接收usb外设数据的方法应该还有别的,不足之处欢迎指正。...串口讲一下如何区分多个usb串口
一、前言 libuvc是一个开源的库,用于在Linux和其他操作系统上与USB视频设备进行交互。提供了一组函数和接口,使开发人员可以轻松地访问和控制USB摄像头。...libuvc库实现了对UVC(USB Video Class)设备的支持。UVC是一个标准的USB设备类别,用于视频流传输和摄像头控制。...libuvc库提供了针对各种常见操作系统的API,包括Linux、Windows、macOS、Android等。使用USB协议与摄像头通信,并处理底层协议细节,简化了开发人员的工作。...许多应用程序和项目使用libuvc库来构建基于USB摄像头的应用程序,如视频监控、机器视觉、视频采集等。它提供了一个方便且跨平台的解决方案,使开发人员能够轻松地利用USB摄像头的功能。...libuvc仓库地址在这里:https://github.com/libuvc/libuvc 在Linux下的安装也是非常的简单。
好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程...我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信。...2.打开设备 接下来,我们需要打开刚刚搜索到的usb设备,我们可以将平板与usb外设之间的连接想象成一个通道,只有把通道的门打开后,两边才能进行通信。...,但是,我们大部分情况下还需要对usb串口进行一些配置,比如波特率,停止位,数据控制等,不然两边配置不同,收到的数据会乱码。...转串口通信的基本流程,有些地方写的不是很全面,比如接收usb外设数据的方法应该还有别的,不足之处欢迎指正。
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
内核提供了完整的 USB 驱动程序框架。...2.6.1 打开内核配置 需在 “USB functions configurable through configfs” 下选择需要的功能。 ...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs...• 若硬件有多个 USB 口,尝试同样条件下测试其他 USB 口的主机功能是否正常。...• 同样条件下,分别打印出功能异常板子和功能正常板子的相关寄存器,并进行对比,确认是否有异常。 • 出现异常时,确认 USB 高速眼图是否正常。
上节和上上节我们分享了Linux进程间通信的管道、消息队列、信号以及信号量的基本原理和实践,文章如下: Linux进程间通信(上)之管道、消息队列实践 Linux进程间通信(中)之信号、信号量实践...这节我们就来分享一下Linux的最后一种进程间通信的方式:共享内存。...共享内存是最快的IPC方式,它是通过其它通信方式的效率不足而专门设计的。往往都是和其它通信机制配合使用,来实现进程间的同步和通信。...,生成shmrcv和shmsnd这两个可执行程序。...如图上图所示,nattch项下的数字为0那个就是刚刚使用shmsnd这个可执行程序创建的一段共享内存。