WinCE系统 USB RNDIS实现

时间:2021-10-28 17:57:53

作者:ARM-WinCE

 

好久不写博客了,这段时间实在太忙,和美国人,印度人一起做项目,时差是个大问题,沟通也占用了很多时间,发邮件,开电话会议成了家常便饭。不管怎样,我在博客的道路上也走了快2年了,我会继续坚持写下去,在我有时间的时候。不多废话了,今天说说RNDIS。

 

RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。

 

 

同样,在WinCE中实现USB RNDIS功能,首先具备以下条件:

1. 支持USB Client并且USB驱动已经OK

2. PC上面安装Active Sync软件,该软件用于支持RNDIS驱动。

 

补充一下,我在这里不谈USB驱动,假设USB驱动已经存在,这里谈到的USB RNDIS的实现是指USB Client设备上面运行RNDIS。下面介绍一下具体步骤:

 

1. 选择USB Client RNDIS组件

在定制WinCE的时候,在Catalog Items View中选择”Device Drivers”->”USB Function”->”USB Function Clients”->”RNDIS Clients”,如图:

WinCE系统 USB RNDIS实现

 

2. 更改USB Client的注册表配置

具体的不想详细说明了,相信看一下就知道了,如下:

[HKEY_LOCAL_MACHINE/Drivers/USB/FunctionDrivers]

   "DefaultClientDriver"="RNDIS"

 

[HKEY_LOCAL_MACHINE/Drivers/USB/FunctionDrivers/RNDIS]

   "UseActiveSyncIds"=dword:1

   "Dll"="rndisfn.dll"

   "FriendlyName"="Rndis"

   "idVendor"=dword:0162

   "Manufacturer"="Honeywell"

   "idProduct"=dword:0001

   "Product"="Honeywell RNDIS"

   "bcdDevice"=dword:0

  

[HKEY_LOCAL_MACHINE/Comm/RndisFn1/Parms/TcpIp]

   "DefaultGateway"=""

   "UseZeroBroadcast"=dword:0

   "IpAddress"="192.168.0.86"

   "Subnetmask"="255.255.255.0"

   "EnableDHCP"=dword:0

 

3. 重新编译WinCE

完成了上面的配置以后,重新编译WinCE,然后下载到板子上面运行。

 

4. 建立RNDIS连接

WinCE运行以后,用USB线将PC和板子相连接,这个时候应该可以看到在PC上面识别出新的网卡设备,同时在板子上面也会出现一个网卡设备。分别在PC上和板子上面为新的网卡设置IP地址和子网掩码,保证在同一个网段就可以。然后可以彼此ping一下,只要是通的,就应该没问题了。

 

 

这里只是介绍了大致的思路。下周去Florida工作1-2个月,如果有时间,我也要继续更新我的博客。