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

article/2025/9/9 15:15:34

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)

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


http://chatgpt.dhexx.cn/article/IavCnEeo.shtml

相关文章

Linux配置USB RNDIS

一台Linux即可充当USB的device端,也可以由另一台Linux来充当USB的Host端。在与以太网不同,在USB网络里各终端不是对等的,即USB Host端和USB Device端的所需要软件和硬件接口不一样。 Linux充当USB Host Linux开发板当USB Host时&#xff0c…

Air780E模块RNDIS应用开发指南

目录 简介Window系统Linux系统常见问题 简介 RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。从而使Windows /Linux可以通过 USB 设备连接网络。 Window系统 windo…

windows系统RNDIS驱动手动安装

windows系统中RNDIS自动当成串口,按网上的更新驱动的方式无法更新为RNDIS,所以采用手动更新的方式,亲测win7和win10可用 在设备管理器选择需要更新RNDIS驱动的设备 **注意:**一定要选择正确的设备,选择错误的话无法成…

指南-安卓/Linux应用指南-RNDIS

目录 Window系统Linux系统IPV6使用方法如何禁用RNDIS功能常见问题相关资料以及购买链接 Window系统 window系统支持RNDIS直接用usb连接就可以使用,模块会虚拟一个网卡。 Linux系统 目前linux大部分发行版本都已经默认支持RNDIS驱动了,只要通过USB连接…

win10安装RNDIS驱动

1. 安装RNDIS驱动 1.1 插上usb rndis device后,PC端提示: 1.2 安装RNDIS驱动 在“RNDIS”上右击选择“更新设备驱动程序”,再选择“浏览我的计算机以查找驱动程序软件”,接着选择“让我从计算机上的可用驱动程序列表中选择”,然后选择“网络适配器”,最后选择"Mic…

【usb】安卓usb网络共享(RNDIS)

一、RNDIS简介 微软官方对RNDIS的介绍说白了,就是将安卓设备作为一个网卡,通过USB连接到电脑上,供电脑上网。 二、使用指导 首先为了验证电脑上网确实走的是usb。先把你电脑上的网卡及网线拔了,wifi关了。并且确保此时电脑无法…

软件测试岗位新标准:ISTQB认证与软件测试工程师职业发展

随着信息技术的飞速发展,软件测试行业也变得越来越重要。软件测试是保证软件质量的关键环节,因此,软件测试工程师的岗位也越来越受到重视。 ISTQB认证成为了衡量软件测试工程师职业能力的标准。 下面领测国际ISTQB考试认证中心就带您了解一下…

ISTQB初级认证-知识点及脑图总结

前言 此文章为本人利用课余时间进行的ISTQB初级认证知识和考点的总结。总结过程主要参考了“ISTQB测试人员认证初级大纲(2011版)”,由于作者能力与精力有限,此篇文章可能会存在纰漏,望见谅并及时指出。谢谢&#xff0…

ISTQB认证-关于ISTQB一些知识点总结

如果要转载请注明 原文链接哦! http://blog.csdn.net/maxdong24 ISTQB知识点总结: 注释: K1:表示一般理解 K2:表示一般掌握 K3:表示重点掌握并能够应用 1.导致软件缺陷的原因(K2&#xff09…

ISTQB高级国际认证试题及答案(一)

题目 #1 (3 分)选择2个答案 您是旅游信息手机应用项目的测试经理。近期该项目切换到敏捷流程和测试驱动开发(TDD)。每个开发周期持续15天,在第7天之后开始每日构建。第10天以后,不会再有新的功能加入。开发…

听说软件测试工程师们都在考ISTQB?

各位忙于测试的小伙伴们,还在为不知道怎么学习,不知道学习的方向而苦恼吗? 那就随小编一起看一看北汇信息的测试工程师们在学什么吧! 北汇信息专注于汽车电子测试,涵盖MiL、SiL、PiL、HiL、ViL等不同阶段&#xff0c…

ISTQB基础级备考攻略

ISTQB基础级备考攻略 ISTQB有用吗怎么考怎么准备 ISTQB有用吗 仁者见仁,智者见智。测试领域的证书不是太多,想拿证书撑撑场子顺便巩固下理论基础,常见的两个:ISTQB、国考软件测评师。 怎么考 直接复制的官网: 基础…

【最全】ISTQB- FL模拟题(含答案)

【注:摘于官网】 1、以下哪一项是对测试条件的最佳描述?(b) a) 需求文档明确或隐含说明的组件或系统的属性。——特性的定义 b) 测试依据的一部分,其与实现特定测试目标相关。 c) 当软件在特定条件下使用时&#xf…

2018版ISTQB FL基础级大纲全解析

2018版ISTQB基础级中英文大纲已经正式发布。根据ISTQB基础级认证考试要求,分别对采用2018版新大纲的时间做出了要求:针对英语考试,必须在2019年6月4日之前;而对于非英语的考试,其开始时间为2019年12月4日。其中考试的内…

考个ISTQB证书有用吗

考ISTQB证书有用吗? [我的回答]2018年8月22日 从2001年毕业开始,我一直从事的都是软件测试相关工作,包括软件测试、测试管理、测试能力改进和测试咨询培训等。2005年开始介入ISTQB的工作(比国内CSTQB成立时间更早)&…

1-1 ISTQB-FL基础认证证书

【前提摘要】 什么是ISTQB? 什么又是FL? 以及证书作用,这些都可百度查到 【内容概述】 同截图内容所示, 根据FL考试大纲 & 练习题对比, 梳理了考试范围内的内容。 并自行结合个人经验&其他资料汇总&…

ISTQB认证

ISTQB知识点总结: 注释: K1:表示一般理解 K2:表示一般掌握 K3:表示重点掌握并能够应用 1.导致软件缺陷的原因(K2) 缺陷是错误的结果,更精确地说,缺陷是错误的表现。当缺…

什么是ISTQB认证

什么是ISTQB认证 作者:郑文强 文章下载:什么是ISTQB认证 1.什么是ISTQB ISTQB(InternationalSoftware Testing Qualifications Board)全称国际软件测试认证委员会,是一个注册于比利时的非赢利性组织,是…

Android Studio 安装TinyPng插件

文章目录 下载插件临时邮箱API Key 申请入口API Key使用使用 下载插件 TinyPNG Image Optimizer 临时邮箱 https://temp-mail.org/zh/ API Key 申请入口 https://tinypng.com/developers API Key使用 Perference ->TinyPNG Image Optimize 使用 1、选择批量图片右键…

gulp-tinypng-nokey [error]: xxx Too many files uploaded at once

使用tinypng-nokey压缩图片时,网上给的方案的代码都是这样的: const gulp require(gulp); const tinypng_nokey require(gulp-tinypng-nokey);const path ./test/raw-assets/;gulp.task(tiny_png_1, function () {console.log( ------------ start d…