前言: 昨个帮同事忙, 应下了一个Android 与PC端通信的Demo,遂今早上折腾了一会,也算是写出来了,而且发现了一个比较严重的问题:参考资料都是12年,13年的,很多的Sample 都是不能用的...---- Android Code 首先是清单文件中的权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE
PID) 奇数据包(PID) 握手 (handshake) 确认(ack) 不确认(nack) 停止(stall) 0x4B 0x5A 0x1E 接收器无错的接收数据包 接收设备忙不能接收数据 设备出错通信不上...LSB MSB Field PID ADDR ENDOP CRC5 Bits 8 7 4 5 例子...0xC3 80 06 00 01 00 00 12 00 0x072F 250.00ns 6.4.4 Handshake Packet 例子...isochronous transfers):周期性,持续性的传输,用于传输与时效相关的信息,并且在数据中保存时间戳的信息 中断传输(interrput transfers):周期性,低频率,允许有限延迟的通信...大容量数据传输(bulk transfers):非周期性,大容量突发数据的通信,数据可以占用任意带宽,并容忍延迟 6.6 USB枚举过程 当一个USB设备插入主机后,会有以下活动: 供电 复位
主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...管道与USB设备中的端点逐个对应,并且各个管道的数据传输是相互独立的。 2、管道的格式分类 管带的通信格式分为两种,一种为流,另一种为消息,这两种通信格式不同且互斥。...数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的(先进先出),并且流通道中的通信流总是单向的。 2)、“消息”指具有某种USB定义格式的数据流。
由于我使用的是ubuntu系统,在使用官方Demo前,先查看ubuntu系统是否识别Usb设备,使用ls -l /dev/ttyUSB* 命令查看是否识别Usb设备。如图: ? 2.
go 的tcp的应用层代码看起来极为简单 1,多个协程同时Accept , 不知道这种实现有没有什么问题 2,多个协程同时处理网络IO事件, 貌似意味着, 有多...
一、环境介绍 操作系统: ubuntu18.04 64位 二、usbmon使用方法 2.1 功能介绍 usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具。.../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...root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# cat /sys/kernel/debug/usb/usbmon/3u ffff9bbbaf235b00
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数据在【主机软件】与【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整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...USB3.0 PHY简介 首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。...LEVEL0 通信连接示意图 升级的UTMI+接口 ULPI(UTMI+ Low Pin Interface) 通信连接示意图 以上三种接口都是和USB2.0 PHY通信的接口(如果还不理解的话,这三种接口类似网口中媒体接口...举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY的方式,那么我的接口基本使用ULPI接口(降低pin的数量); USB3316 芯片逻辑框图 (来源:芯片数据手册...,这里在多说一句,目前市场上为了方便开发,USB3.0芯片内部会放置一个单片机,主要还是方便扩展接口,以方便芯片不单单只在USB3.0通信方面应用。
好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程...我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信。...2.打开设备 接下来,我们需要打开刚刚搜索到的usb设备,我们可以将平板与usb外设之间的连接想象成一个通道,只有把通道的门打开后,两边才能进行通信。...3.数据传输 到这里,我们已经可以与usb外设进行数据传输了,首先来看怎么向usb设备发送数据。...转串口通信的基本流程,有些地方写的不是很全面,比如接收usb外设数据的方法应该还有别的,不足之处欢迎指正。
概述: Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等...),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。...UDP通信实现: 1、pom.xml,需要依赖: <!
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。
gadget 功能前关闭 adb 功能时却报异常的解决办法 4 附录 4.1 Linux-4.x/Linux-5.4 Gadget 配置示例 4.1.1 小机做 mass storage 4.1.2...1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...USB 总线采用树形结构,在一条总线上只能有唯一的主机设备。Linux 内核从主机和设备两个角度观察 USB 总线结构。...Linux 有原生 gadget 框架,通用的配置流程可参考下文。...图 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鼠标的设备描述符的例子,供大家分析一下: 一种鼠标的设备描述符示例 字段 描述符值(十六制) bLength 0x12 bDecriptorType 0x01 bcdUSB.../usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...#include #include #include #include .../init.h> #include #include #include #include <linux/slab.h
在上一章分析完USB总线驱动程序后, 接下来开始写一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...: usb_deregister(struct usb_driver *driver); 注册一个usb_driver驱动,然后内核会通过usb_driver的成员.id_table函数匹配一次USB设备...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include #include... #include #include #include #include... static struct input_dev *myusb_mouse_dev; //input_dev static char *myusb_mouse_buf
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
父子进程管道通信 Linux进程通信的几种方式 管道通信 中断信号 共享内存、消息队列 Unix Socket 我们PHP中所使用的workman、swoole 或者其他语言当中的进行通信也是无非以上的几种方式...当通过运行代码时,我们可以发现的,当父进程写入数据后,子进程也会读到父进程写入的数据,但以上管道通信是以阻塞方式运行的,当没有数据时,进程则会阻塞不执行 非阻塞方式 $file = 'pipe_file
[ 0.513302] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.513303] usb usb1...Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...] usb usb1: SerialNumber: 0000:00:14.0 [ 0.518700] usb usb2: New USB device found, idVendor=1d6b,...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...] usb 1-4: New USB device found, idVendor=413c, idProduct=301a [ 1.040348] usb 1-4: New USB device
(3)缺省态 USB在被配置之前,通过地址0与主机进行通信。例如: ?...(4)地址态 经过了配置,USB设备复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态;例如: ?...USB的包(宏观上来说)有四种:令牌包、数据包、握手包、特殊包。包是USB传输数据的基本单位。每种类型的包都会有不同的域来构成。...来看一张我画的图,再怎么觉得难的东西,也许你看完这张图以后,也就知道自己该怎么去学习了,这张图是我使用USB逻辑分析勾出来的图,然后加上自己学习的总结,这就是一个USB中传输的过程,相信你已经明白了USB...枚举将是整个USB学习的重中之重,枚举就是主机从设备读取各种描述符信息,这样主机就可以根据这些信息加载合适的的驱动程序,从而知道是什么类型的设备,如何进行通信等等。
如果对你有帮助,麻烦点个在看或点个赞,感谢~ 文章首发 公众号—— Pou光明 程序中难免会使用到定时器,今天给大家介绍Linux中一种定时器的实现。...Linux下还有很多其他定时的实现,如精确定时等,感兴趣的同志可以再做深入了解。 编程到现在,其实很多工作都是在调用api,还没能完全脱离面向“谷歌”编程的实质,面对这种情形,如何破局呢?
领取专属 10元无门槛券
手把手带您无忧上云