首创STM32 USB主机驱动4G rndis设备

1、4G模块使用技术现状与难题

      4G模块支持的对外通信接口有串口和USB接口,串口一般使用AT指令的方式,这个在MCU类产品上面使用的很多,USB接口主用于在连接APU应用处理器上面,由LINUX操作系统来驱动 ,把4G模块实现成一个rndis设备或ecm设备的网卡,这类应用适用于高速通信。

        目前的物联网设备使用MCU为控制核心的居多,主要使用AT指令接口来与4G模块通信。作者多年来开发的物联网设备产品也是使用STM32 通信串口AT指令来与4G模块进行通信,由于目前的物联网设备的功能越来越多,越来越复杂,比如需要多个以太网连接的并行通信,对应的实际应用场景就是,一个连接用于正常上发工作状态的业务数据 ,另外一个连接还要能同时处理产品固件的升级请求。这样的基于串口的AT指令接口就很难实现这种应用。

       那么对于STM32这样的MCU通过USB连接4G模块,把4G模块虚拟成网卡不就实现了这种应用了,经过查阅相关资料,目前没有公开的代码或技术实现了这种功能,还有人说,这个技术只有国外的某个商用的公司实现了,国内没有人开发出这种技术。

       不信邪,我就要攻克这种技术难题--实现使用STM32的USB主机驱动4G rndis设备,实现基于STM32的物联网设备的高速以太网并发通信。

2、技术实现方式     

       4G模块要实现USB驱动,需要在STM32上面实现USB主机协议,设备类驱动框架。这个功能基于操作系统是更好实现了。作者最近几年使用的rt thread操作系统提供完善的设备驱动框架,同时也提供了USB主机驱动协议栈,只是主机协议栈功能很少,支持的USB设备很少,基本没有人使用其用于产品化。不过只要有一个好的框架就已经事半功倍,剩下的功能对我来说谁有不少困难,还是可以攻克的。

2.1  技术路线与实现过程

      使用rt thread操作系统的USB主机驱动框架,根据rndis设备的功能实现rndis类设备的主机驱动程序,把rndis设备类驱动虚拟成网卡,对接到lwip以太网协议栈接口上面。

       这次实现以技术资料较多,应用广泛的L501 4G cat1模组为例进行开发。
1、详细阅读L501的技术资料,驱动代码。
2、阅读STM32F 原厂的USB主机,从机驱动程序,数据手册,相关USB的培训资料,掌握USB的技术原因与使用方法

3、阅读RT thread的下的USB HOST的示例程序,在开发板STM32F429上面跑通示例程序,并且阅读整个USB主机的程序代码和协议原理。

4、阅读RT thread的下的USB rndis device,在开发板STM32F429上面跑通示例程序,rnddis协议原理。
5、修改USB主机驱动代码,实现枚举4G rndis设备,4G rndis设备是一个USB组合设备,具有多个接口,因此对USB主机协议栈进行大刀阔斧的修改,最终实现枚举到4G rndis设备
6、根据微软的rndis文档实现rndis设备类的主机驱动和网卡虚拟,实现了基于USB的主速以太网通信。
7、采用4G虚拟网卡的方案,改进曾经的无线智能阀门控制器的软件,在正式产品上做长期稳定的性的验证。   

2.2 成果展示

       此技术从去年12月底开始开发,使用业余时间进行开发,到现在完成了一稳定的以太网通信,并且做了开源。下图展示了最后虚拟的网卡接口与ping命令的功能,同时实现了长时间连接物联网服务器的功能,支持业务数据与程序升级数据的双连接测试功能。

 2.3 未来完善

      项目到目前为止已经完成了预期的功能技术开发,由于没有专用的硬件来实现更深入的功能开发与验证,所以未来还是有一些功能要完善的。

2.4 最新进展

      到2022年9月,此项目技术已经基于真实产品完成了产品化批量应用,性能稳定。目前已经支持STM32芯片驱动移远模组,移柯模组, 支持NXP RT105X芯片驱动移远模组。

     项目的开源地址:longtengmcu/USB-HOST-driver-4G-rndis-device: STM32F429 USB HOST driver 4G rndis device, Realization of high speed Ethernet data communication。 (github.com)

      引用开发请作者的版权与署名。

  • 14
    点赞
  • 29
    收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论 13

打赏作者

fhqlongteng

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值