3. MCU启动流程与内存布局
做OTA升级,第一件事不是选MCU,也不是选云平台。你得先想清楚:数据怎么传过去?
通信协议选错了,后面全白干。我见过太多项目,硬件都打样了,才发现Wi-Fi覆盖不到、蓝牙速度太慢、LoRa根本传不了固件包。嗯,今天咱们就把这几种主流方案掰开揉碎,看看它们在OTA场景下到底行不行。
3.1 先看一张全景图
下面这张图,是我自己整理的一个选型框架。每次做新项目,我都会先拿它过一遍。
3.2 Wi-Fi:室内OTA的王者
Wi-Fi做OTA,说白了就是快。802.11n随便跑几十Mbps,传个几百KB的固件包,几秒钟搞定。
我个人习惯,凡是室内设备、有电源供电的场景,首选Wi-Fi。智能插座、智能灯、网关,这些设备几乎都在用Wi-Fi做OTA。
Wi-Fi的缺点也很明显:功耗高。一个Wi-Fi模组待机就要几十mA,电池供电的设备根本扛不住。另外,它依赖路由器,户外场景基本没法用。
| 指标 | Wi-Fi |
|---|---|
| 典型带宽 | 10-100 Mbps |
| 传输距离 | 室内30-50m |
| 功耗 | 高(待机~50mA) |
| 适用OTA包大小 | 任意(推荐<10MB) |
| 网络依赖 | 需要路由器 |
3.3 蓝牙:手机直连,小包升级利器
蓝牙做OTA,最典型的场景就是穿戴设备和手机配件。你想想看,智能手环、TWS耳机、体脂秤,哪个不是用蓝牙升级的?
蓝牙的优势在于手机直连,不需要额外配网。用户打开App,点一下升级,数据就走蓝牙传过去了。我做过一个项目,用蓝牙4.2传一个512KB的固件,大概需要3-5分钟。用户能接受,因为升级频率不高。
但蓝牙有个硬伤:速度慢。BLE的理论速率也就1-2Mbps,实际有效吞吐量可能只有几十KB/s。传大固件包?你会等到崩溃的。
| 指标 | 蓝牙 (BLE) |
|---|---|
| 典型带宽 | 0.1-1 Mbps |
| 传输距离 | 10-30m |
| 功耗 | 低(待机~10μA) |
| 适用OTA包大小 | <1MB |
| 网络依赖 | 不需要(手机直连) |
3.4 LoRa:远距离、低功耗,但别指望传大包
LoRa这玩意儿,距离是真的远。郊区空旷环境,几公里没问题。功耗也低,一节电池用几年。但它的带宽……嗯,非常感人。
LoRa的典型速率只有几百bps到几十kbps。传一个100KB的固件包,你可能要等几个小时。所以,LoRa几乎不适合做全量OTA。
那LoRa在OTA场景下就没用了吗?也不是。我见过一种做法:用LoRa传差分升级包。只传固件变化的部分,包体可以压缩到几KB甚至几百字节。这样虽然慢,但至少能传完。
| 指标 | LoRa |
|---|---|
| 典型带宽 | 0.3-50 kbps |
| 传输距离 | 2-15 km(视距) |
| 功耗 | 极低(待机~2μA) |
| 适用OTA包大小 | <50KB(建议差分) |
| 网络依赖 | 需要LoRa网关 |
3.5 NB-IoT:运营商网络,适合海量终端
NB-IoT是蜂窝物联网的“轻量版”。它跑在运营商的授权频段上,覆盖好、干扰少。地下车库、水表井这些Wi-Fi到不了的地方,NB-IoT能通。
但NB-IoT的速率比LoRa好不了多少。下行理论峰值也就200kbps左右,实际用起来经常只有十几kbps。传固件?还是得靠差分。
我记得有个做智能水表的客户,设备装在井盖下面,只能用NB-IoT。固件包300KB,差分后大概30KB。他们用了非连续接收(eDRX)模式,每天凌晨传一部分,分三天传完。嗯,虽然慢,但能接受。
| 指标 | NB-IoT |
|---|---|
| 典型带宽 | 20-200 kbps |
| 传输距离 | 运营商覆盖范围 |
| 功耗 | 低(待机~5μA) |
| 适用OTA包大小 | <100KB(建议差分) |
| 网络依赖 | 需要SIM卡+运营商 |
3.6 4G/5G蜂窝网络:大包、高速、不差钱
4G/5G做OTA,那就是降维打击。几十Mbps甚至Gbps的速率,传什么固件包都是秒级完成。车载T-Box、工业网关、视频监控,这些设备几乎都用4G/5G做OTA。
但代价也很明显:贵。模组贵、流量贵、功耗高。一个4G模组几十块钱,5G模组上百。电池供电的设备基本不用考虑。
我个人建议,只有满足以下条件才用4G/5G做OTA:
- 设备有持续供电(车电、市电)
- 固件包大于10MB
- 对升级速度有要求(比如安全补丁需要立即下发)
- 不差钱
| 指标 | 4G LTE | 5G NR |
|---|---|---|
| 典型带宽 | 10-100 Mbps | 100-1000 Mbps |
| 传输距离 | 运营商覆盖 | 运营商覆盖 |
| 功耗 | 高(待机~20mA) | 很高(待机~50mA) |
| 适用OTA包大小 | 任意(推荐<100MB) | 任意 |
| 模组成本 | ¥30-80 | ¥200-500 |
3.7 选型决策树:到底该选哪个?
说了这么多,你可能还是有点懵。没关系,我整理了一个简单的决策流程,你照着走一遍就行:
- 设备有持续供电吗?(是→Wi-Fi或4G/5G;否→蓝牙、LoRa或NB-IoT)
- 固件包大于1MB吗?(是→Wi-Fi或4G/5G;否→蓝牙、LoRa或NB-IoT)
- 需要手机直连吗?(是→蓝牙;否→继续)
- 覆盖距离超过1公里?(是→LoRa或NB-IoT;否→Wi-Fi或蓝牙)
- 有运营商网络覆盖吗?(是→NB-IoT或4G/5G;否→LoRa)
3.8 我的个人建议
做OTA通信选型,我一般会留20%的余量。什么意思?比如你算出来固件包500KB,别选LoRa。万一以后要加功能,包体涨到1MB,你就傻眼了。
另外,不要只看峰值速率。实际OTA过程中,受信号干扰、重传、协议开销影响,有效吞吐量可能只有理论值的30%-50%。我习惯用实际测试数据说话,而不是看Datasheet上的数字。
最后说一句:OTA不是一次性工作。设备出货后,你可能需要远程升级十次、二十次。选一个你熟悉、社区活跃、文档齐全的协议方案,比选一个“理论性能最好”的方案,要靠谱得多。