如何编程USB RNDIS?

时间:2010-11-13 07:42:57

标签: usb embedded-linux

我正在使用一个运行Linux的控制器板。我想通过USB将我的设备连接到主机(Windows操作系统)。

我决定使用RNDIS类进行主机和设备之间的通信。我在设备端(linux)准备好了驱动程序。当我将设备连接到Windows主机时,它会将硬件检测为RNDIS / CDC未知设备。现在,对于Windows的驱动程序开发,我使用了“Jungo windriver 10.10”。它生成了INF文件,并在系统上成功检测到我的设备。

现在我如何开始主机和设备之间的通信?我想提一下,我是编程新手,没有Windows端编程经验。

我肯定必须在两端开发应用程序驱动程序(Device-Linux和host-windows)

有人可以指导我如何继续这个?

提前致谢....

3 个答案:

答案 0 :(得分:2)

首先,RNDIS作为标准交付可用于Windows xp以上,而不是Jungo的主机堆栈,而是MS的。

其次,你知道你在设备端准备了什么驱动程序吗?它是Jungo RNDIS目标边堆栈吗?

要在RNDIS设备的主机和目标之间进行通信,请尝试以下两个MS链接,帮助您了解控制和数据通道,以及EP设置:

http://207.46.16.248/en-us/library/ee483123(WinEmbedded.60).aspx http://download.microsoft.com/download/B/0/B/B0B199DB-41E6-400F-90CD-C350D0C14A53/%5BMS-RNDIS%5D.pdf

RNDIS使用两个通道,一个控制通道和一个数据通道。初始通信从控制通道开始,然后数据开始在数据通道上流动,数据通道使用两个BULK端点IN和OUT。

但是,您应该注意RNDIS规范要求之后的事实 提交RNDIS控制消息到控制通道端点,主机甚至会在中断端点上监听。

答案 1 :(得分:0)

据我了解Windows上传通用USB客户端驱动程序(Jungo驱动程序)以连接您的linux设备。接下来,您需要打开端点上的连接可能进出批量端点,格式数据(您发送的)通过此RNDIS协议格式的端点。你需要确定你的linux设备是否真的暴露了RNDIS接口。为了获得帮助,我可以建议使用usb记录器。尝试将您的Linux设备连接到Windows或Linux,在那里您知道某些驱动程序已识别该设备,然后连接然后记录usb上发生的情况。看起来你开始研究usb接口,它是不同的协议我认为最好从一些现成的东西开始,尝试搜索和学习人们如何解析,理解和编写usb协议,例如kinect设备。

答案 2 :(得分:0)

已经有模块可以帮助你连接linux mc赢得pc。例如,尝试查找g_file_storage模块,它可以让你从linux mc挂载文件系统映像到win pc作为一个单独的磁盘,你可以在其上进行格式化,文件输入输出等。希望你能在谷歌上找到更多...... :) 谢谢, AJ