你的分享就是我们的动力 ---﹥

怎么利用USB接口走非USB协议完成枚举

时间:2014-09-24 09:59来源:www.chengxuyuans.com 点击:
如何利用USB接口走非USB协议完成枚举?
本帖最后由 leehh 于 2014-08-05 14:20:11 编辑 目前在做一个项目,有这样一个需求。

1、两个设备通过USB接口连接,当特定设备连接主机(Android)时主机需要识别该特定设备,完成注册,并将其虚拟为一个网卡。其它设备不响应;
2、二者通过特定的协议进行数据传输;

目前对我们来说比较难的问题是第一步:如何通过USB接口走自己的协议完成设备枚举,或者说,可以配合USB协议完成枚举?将自己的驱动挂接到USB协议中??
然后如何走自己的协议传输数据应该不难。

另外:硬件架构上CPU的USB HOST接口接了一个USB桥(1in4out),其中一个口专门用于特定设备的接入,其他口可以接别的USB设备。

因为对USB了解不是太多,期望大家能帮我想想从Android底层如何实现上述功能,如何架构?谢谢。
------解决思路----------------------
正巧在看Android的usb通信,第一条说到根上就是设备的枚举嘛。说的有点过了,其它管不管有驱动,都可以正常枚举的。
关于1,直接看Android host api以及上边说的AdbTest例子稍微改下就可以完成检测你的USB设备。

看你向下的描述就显示操心过多了, 什么hub等等 这和你usb通信没有直接关系,你通你的信就好了。

自己的协议封到哪里的问题还是要说下的,我给你回忆一下我接触的那个打印机是如何实现基于usb的.
1.主机发送:"GET /DevMgmt/ProductStatusDyn.xml HTTP/1.1\r\nAccept: text/plain\r\nHost:localhost\r\nUser-Agent:hplip\r\n\r\n"
2.客户机回复一个XML文件,其中包含打印机当前状态信息。

从上面发送的指令看就是一个HTTP协议。但是或许你要问这个是怎么发送的,我要说是这个和USB如何发送根本不挨着,这么问说明你之前没有做过usb通信的程序。usb通信在各个系统中都有封装,有传输数据的api直接把数据发送过去,然后再使用接收的api接收客户端回复的数据就完成了通信。换句话说,usb仅仅是通道仅此而已。

没有接触一个东西时,我也会东想西想,你这样想也是正常的。:)

转载注明地址:http://www.chengxuyuans.com/Hardware/embedded-driver/82475.html