龙源期刊网

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设备主从切换的实现相关推荐

  1. linux配置yum源的三种方法:

    linux配置yum源的三种方法: 1.配置网络yum源 2.通过上传镜像文件配置本地yum源 3.通过连接存储或本地镜像文件配置本地yum源(虚拟机) 配置各种yum源的时候,需要提前知道自己的li ...

  2. Linux配置网络信息(四种方法)

    Linux配置网络信息(四种方法) 临时配置IP地址(2种方式) 1.ifconfig命令 语法: ifconfig <以太网接口> <IP地址> netmask <掩码 ...

  3. linux的usb驱动失败,linux2.6.24下usb驱动完成情况及问题解决

    1.在kernel启动是出现如下问题: mount: mounting tmpfs on /dev failed 解决方案如下, File systems  --->Pseudo filesys ...

  4. linux设置环境变量_什么是linux环境变量

    本来这篇文章好几天之前就写好了,但是媳妇儿跟我说工作日就不要发了,大家都在上班,哪有闲心思看你的文章.哎,可能大家用头条都是在放松刷娱乐,看小姐姐.所以就一直拖到现在.周末了,更是放松的好时候,葛优躺 ...

  5. linux物理内存地址与iomem,一种Linux系统物理内存镜像文件分析方法_4

    模块信息,如图7所示,给出了本发明的实施例中 模块结构关系图,modules变量指向某一个已加载模块结构体module地址,所有已加载模 块其module形成一个双向链表,如图7所示,据此可以获取到所 ...

  6. LINUX检测服务并自动运行,一种Linux下的开机自动检测硬件信息的方法与流程

    技术领域本发明涉及服务器开机检测技术,具体的说是一种Linux下的开机自动检测硬件信息的方法. 背景技术: 服务器产品研发初期,产品多为工程样本,问题很多,这些问题中硬件问题占较大部分.在工程验证测试 ...

  7. linux mint 图标主题_如何在 Linux Mint 中更换主题

    一直以来,使用 Cinnamon 桌面环境的 Linux Mint 都是一种卓越的体验.这也是为何我喜爱 Linux Mint的主要原因之一. -- It's Foss(作者) 一直以来,使用 Cin ...

  8. linux ls 中文乱码_每天一个linux命令:Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  9. linux用户名是什么_什么是Linux用户?

    linux用户名是什么 编者注:本文于2019年6月11日下午1:15:19更新,以更准确地反映作者对Linux社区开放,包容的实践社区的观点. 在短短两年内,Linux内核将使用30年. 考虑一下! ...

最新文章

  1. 设计模式之模板方法模式(Template Method)摘录
  2. 互联网1分钟 |1107
  3. 二十四种设计模式:代理模式(Proxy Pattern)
  4. C语言中,scanf与scanf_s的简单区别
  5. Linux内存管理详解
  6. 从思维图到基础再到深入,java空间查询
  7. 知乎热榜:程序员达到什么水平能拿到20k月薪
  8. 十进制转任意进制-数论
  9. linux generic什么意思_Linux下ps aux中进程状态为Ss,S+, Rs,Ds是什么意思?
  10. 为什么我选择使用 OpenBSD?
  11. 力扣-530. 二叉搜索树的最小绝对差
  12. 专访尹毅(法师Seay):少年成名,野路子的奇妙逆袭 - FreeBuf.COM | 关注黑客与极客...
  13. windows server 2000系统安装
  14. 关于微信小程序地图定位不精确问题(转载)
  15. MATLAB命令窗口与帮助系统
  16. hdu2154跳舞毯(dp)
  17. 怎么把图片转换成pdf格式?图片转PDF方法
  18. win7计算机开机黑屏解决办法参考
  19. qnx slm7.1(程序员开发手册-翻译)
  20. linux下postgresql创表添加数据

热门文章

  1. Javascript 程序放在哪
  2. 探索ASP.NET Core中的IStartupFilter
  3. Standard Template Library标准模板库专项复习总结(一)
  4. Kafka 基本原理
  5. [转]提示错误 package javax.servlet.jsp does not exist package javax.servletr.jsp.tagext does not exist...
  6. Android 拖动条(SeekBar)实例 附完整demo项目代码
  7. Windows Phone 7 网络编程之使用Socket(芒果更新)
  8. php对应哪个oracle版本,Oracle 版本说明
  9. 先学python还是先学数据库_跟着销售学python8-微信平台初次见识数据库(6)
  10. 聚类算法 距离矩阵_模糊聚类算法