【问题标题】:How to program USB RNDIS?如何对 USB RNDIS 进行编程?
【发布时间】:2011-05-13 22:08:04
【问题描述】:

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

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

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

可以肯定的是,我必须同时开发应用程序驱动程序(Device-Linux 和 host-windows)

有人可以指导我如何进行吗?

提前谢谢....

【问题讨论】:

    标签: usb embedded-linux


    【解决方案1】:

    首先,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 控制消息提交到主机将在中断端点上侦听的控制通道端点。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-03
          • 2016-05-23
          • 1970-01-01
          • 2010-12-13
          • 1970-01-01
          • 1970-01-01
          • 2011-05-16
          相关资源
          最近更新 更多