linux配置usb主从_一种Linux下USB设备主从切换的实现
龙源期刊网
http://www.qikan.com.cn
一种
Linux
下
USB
设备主从切换的实现
作者:侯景昆
来源:《电子技术与软件工程》
2013
年第
22
期
摘
要
USB
协议是严格的主从协议,通讯过程中必须有一个做
Host
,一个做
Device
。本文
阐述了一种在
Linux
下实现
USB Host
和
Device
身份切换的方法。
【关键词】
USB OTG Host Device
1
引言
USB
协议是严格的主从协议,通讯过程中规定通讯双方必须有一个做
Host
(比如
PC
),
一个做
Device
(比如
U
盘)。但是有些设备可能会希望同时具有两种身份,在某个时刻做
Host
,另外一个时刻做
Device
,于是
USB IF
官方制定了
OTG
协议,规定两个都支持
OTG
协
议的
USB
设备可以动态地根据需要进行主从切换。但是真正支持
OTG
协议的设备并没有流行
起来,原因应该有如下:
(
1
)
OTG
协议实现要复杂些,而实际应用需求不强,市面上真正支持
OTG
协议的设备
也很难找到,单方面支持
OTG
协议是没有用的,因此各大厂商没有动力推出
OTG
设备。
(
2
)
USB
协议规定
Host
要给
Device
供电,而大部分
USB
设备都是便携设备,对另外一
个
USB
设备供电能力不足。
既然真正支持
OTG
协议的设备几乎难觅,那么为什么目前市面上很多的音视频播放器或
平板电脑都号称支持
OTG
呢?其实这些设备并没有真正实现
OTG
协议(包括
HNP
协议和
SRP
协议),而只是通过
USB
线上
ID Pin
的状态来确立自己究竟是做主设备还是做从设备,
一旦身份确认,在通讯过程中是无法动态切换的,所以严格来说这只是一种伪
OTG
设备。本
文将讨论的就是
Linux
下这种情况的一种具体实现方法。
2 Linux
下主从切换方案设计
Linux
下该方案总体设计思路如图
1
:
首先,该方案在内核空间实现一个名为
umonitor.ko
的驱动程序,该驱动负责侦测
USB
接
口上的变化,判断是否有
USB
连线,以及是做主设备还是从设备等核心检测工作。如果判断
目前是做
USB Host
,则发出
“A_IN”
的
UEVENT
消息;如果判断是做
USB Device
,则发出
“B_IN”
的
UEVENT
消息。
linux配置usb主从_一种Linux下USB设备主从切换的实现相关推荐
- linux配置yum源的三种方法:
linux配置yum源的三种方法: 1.配置网络yum源 2.通过上传镜像文件配置本地yum源 3.通过连接存储或本地镜像文件配置本地yum源(虚拟机) 配置各种yum源的时候,需要提前知道自己的li ...
- Linux配置网络信息(四种方法)
Linux配置网络信息(四种方法) 临时配置IP地址(2种方式) 1.ifconfig命令 语法: ifconfig <以太网接口> <IP地址> netmask <掩码 ...
- linux的usb驱动失败,linux2.6.24下usb驱动完成情况及问题解决
1.在kernel启动是出现如下问题: mount: mounting tmpfs on /dev failed 解决方案如下, File systems --->Pseudo filesys ...
- linux设置环境变量_什么是linux环境变量
本来这篇文章好几天之前就写好了,但是媳妇儿跟我说工作日就不要发了,大家都在上班,哪有闲心思看你的文章.哎,可能大家用头条都是在放松刷娱乐,看小姐姐.所以就一直拖到现在.周末了,更是放松的好时候,葛优躺 ...
- linux物理内存地址与iomem,一种Linux系统物理内存镜像文件分析方法_4
模块信息,如图7所示,给出了本发明的实施例中 模块结构关系图,modules变量指向某一个已加载模块结构体module地址,所有已加载模 块其module形成一个双向链表,如图7所示,据此可以获取到所 ...
- LINUX检测服务并自动运行,一种Linux下的开机自动检测硬件信息的方法与流程
技术领域本发明涉及服务器开机检测技术,具体的说是一种Linux下的开机自动检测硬件信息的方法. 背景技术: 服务器产品研发初期,产品多为工程样本,问题很多,这些问题中硬件问题占较大部分.在工程验证测试 ...
- linux mint 图标主题_如何在 Linux Mint 中更换主题
一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. -- It's Foss(作者) 一直以来,使用 Cin ...
- linux ls 中文乱码_每天一个linux命令:Linux文件类型与扩展名
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...
- linux用户名是什么_什么是Linux用户?
linux用户名是什么 编者注:本文于2019年6月11日下午1:15:19更新,以更准确地反映作者对Linux社区开放,包容的实践社区的观点. 在短短两年内,Linux内核将使用30年. 考虑一下! ...
最新文章
- 设计模式之模板方法模式(Template Method)摘录
- 互联网1分钟 |1107
- 二十四种设计模式:代理模式(Proxy Pattern)
- C语言中,scanf与scanf_s的简单区别
- Linux内存管理详解
- 从思维图到基础再到深入,java空间查询
- 知乎热榜:程序员达到什么水平能拿到20k月薪
- 十进制转任意进制-数论
- linux generic什么意思_Linux下ps aux中进程状态为Ss,S+, Rs,Ds是什么意思?
- 为什么我选择使用 OpenBSD?
- 力扣-530. 二叉搜索树的最小绝对差
- 专访尹毅(法师Seay):少年成名,野路子的奇妙逆袭 - FreeBuf.COM | 关注黑客与极客...
- windows server 2000系统安装
- 关于微信小程序地图定位不精确问题(转载)
- MATLAB命令窗口与帮助系统
- hdu2154跳舞毯(dp)
- 怎么把图片转换成pdf格式?图片转PDF方法
- win7计算机开机黑屏解决办法参考
- qnx slm7.1(程序员开发手册-翻译)
- linux下postgresql创表添加数据
热门文章
- Javascript 程序放在哪
- 探索ASP.NET Core中的IStartupFilter
- Standard Template Library标准模板库专项复习总结(一)
- Kafka 基本原理
- [转]提示错误 package javax.servlet.jsp does not exist package javax.servletr.jsp.tagext does not exist...
- Android 拖动条(SeekBar)实例 附完整demo项目代码
- Windows Phone 7 网络编程之使用Socket(芒果更新)
- php对应哪个oracle版本,Oracle 版本说明
- 先学python还是先学数据库_跟着销售学python8-微信平台初次见识数据库(6)
- 聚类算法 距离矩阵_模糊聚类算法