4. 物理层与硬件接口

Bootloader 的通信协议无论上层设计得多精巧,最终都要落到一根线、一对差分线或一束光缆上。物理层决定了“0 和 1 用什么电平、以什么时序、在什么介质上传输”,也直接决定了 Bootloader 的传输速率、可靠距离、拓扑形态和硬件成本。选错物理层,往往不是改几行代码能补救的,而是需要重新画板、重新布线。因此,理解常见物理层接口的特性与选型依据,是 Bootloader 通信协议设计的第一道工程门槛。

一、核心原理:物理层到底在定义什么

物理层位于 OSI 模型最底层,它不关心“这一帧是升级命令还是数据块”,只负责把比特流可靠地送出去。评价一个物理层接口,通常看六个维度:电气特性(单端/差分、电平范围)、拓扑结构(点对点、总线、星型)、速率与距离(两者的乘积关系)、同步方式(异步/同步、是否带时钟线)、双工能力(全双工/半双工)、节点数量(可挂载设备数)。

其中最关键的是“速率—距离”权衡。单端信号(如 UART、SPI、I2C)抗干扰弱,速率越高、线越长,信号边沿越容易畸变;差分信号(如 CAN、以太网、USB)用两根线的电压差表示逻辑,共模干扰被抵消,因此能同时做到更高速率和更长距离。Bootloader 选型时,必须先把“最远传输距离”和“可接受升级时间”这两个约束摆出来,再反推接口。

物理层选型三问:① 传输距离有多远?② 需要多快完成升级(镜像大小 ÷ 速率)?③ 现场是点对点还是多节点总线?这三个答案基本能锁定候选接口。

二、常见接口特性对比

下表汇总了 Bootloader 场景中最常见的六种物理层接口的关键参数,便于横向比较。

接口 电气/拓扑 典型速率 典型距离 节点数 Bootloader 适用场景
UART 单端,点对点,异步 9.6k–3M bps 板内 <1m,RS-485 可达 1200m 2(RS-485 可多机) 调试口、串口升级、低引脚 MCU
CAN 差分,总线,异步 125k–1M bps(CAN-FD 更高) 40m@1M,1km@50k 理论 110+ 汽车/工业多节点固件分发
USB 差分,星型(Host 为中心) FS 12M,HS 480M bps 线缆 ≤5m 127(经 Hub) PC 直连升级、大镜像高速下载
SPI 单端,主从,同步 1–100M bps 板内 <30cm 1 主多从(片选) 板内 Flash/从机固件烧录
I2C 单端,总线,同步 100k–3.4M bps 板内 <1m 多主多从 低速配置、EEPROM 参数区
以太网 差分,星型/交换 10M–1G bps 100m(双绞线) 交换网络内任意 远程 OTA、TFTP/HTTP 升级

三、信号链与拓扑示意

下图把六种接口的物理连接形态放在同一张图中对比:UART 与 SPI 是点对点/主从,I2C 与 CAN 是共享总线,USB 与以太网是星型或交换型拓扑。理解拓扑差异,才能理解为什么 CAN 适合多节点广播升级,而 SPI 只能一对一。

常见物理层接口拓扑与信号形态对比 UART(点对点·异步) MCU PC/模块 TX RX 无时钟线,靠波特率同步 SPI(主从·同步) Master Slave SCLK MOSI/MISO CS 独立片选,速率可达数十 MHz I2C(总线·同步) SCL SDA 主 从1 从2 开漏+上拉,地址寻址 CAN(差分总线) CAN_H CAN_L 节点A 节点B 节点C 两端 120Ω 终端电阻 USB(星型·Host 中心) Host 设备1 设备2 设备3 以太网(交换网络) Switch 目标板 服务器 网关 选型决策要点 • 板内短距高速:SPI > I2C;板内低速多从:I2C • 现场多节点远距:CAN(差分、带仲裁、抗干扰强) • PC 直连大镜像:USB HS / 以太网;远程 OTA:以太网 • 极简调试口:UART(成本最低、引脚最少) • 速率与距离不可兼得,先定距离再定速率 • 差分优于单端,但成本与布线复杂度更高

四、方法流程:从需求到接口的选型步骤

  1. 明确升级镜像大小与可接受时间:例如 512KB 镜像,要求 30 秒内完成,则有效速率需 ≥ 140kbps,UART 115200 勉强、CAN 500k 充裕、SPI 轻松。
  2. 确定最远传输距离与现场环境:车内、工厂车间优先差分总线;机柜内板间可用 SPI/I2C。
  3. 确认节点数量与拓扑:单节点点对点选 UART/USB;多节点共享总线选 CAN/I2C/以太网。
  4. 核对 MCU 外设资源与引脚预算:SPI 需 4 线,I2C 需 2 线,CAN 需收发器,USB 需 PHY,以太网需 MAC+PHY。
  5. 评估协议栈与 Bootloader 实现成本:UART 最简单,CAN 需处理仲裁与帧,USB/以太网需协议栈与驱动。
  6. 做速率—距离—成本三角验证,必要时采用“UART 调试 + CAN 现场升级”双通道方案。

五、案例场景:车载 ECU 的 Bootloader 物理层选择

某车载 ECU 需要支持产线刷写和售后 OTA。产线用 PC 通过 USB-CAN 适配器连接整车 CAN 总线,波特率 500kbps,镜像 256KB,理论传输时间约 4.2 秒(含协议开销约 8–10 秒)。售后 OTA 则通过 T-Box 经以太网从云端下载,再经 CAN 分发给各 ECU。这里没有选择 UART,因为车内节点多、线束长、电磁干扰强;也没有选择 USB 直连,因为 ECU 不暴露 USB 口。最终采用“以太网到网关 + CAN 到节点”的两级物理层组合,兼顾远程与现场。

# 典型 CAN Bootloader 物理层参数
bitrate        = 500000        # 500 kbps
sample_point   = 87.5%         # 采样点
sjw            = 1             # 同步跳转宽度
termination    = 120 ohm x2    # 总线两端终端电阻
transceiver    = TJA1042       # 典型 CAN 收发器

六、误区与复盘

常见误区一:只看速率不看距离。SPI 标称 50MHz,但走线超过 30cm 后误码率急剧上升,Bootloader 校验频繁失败。板间长距离应改用差分或降低速率。
常见误区二:忽略共地问题。UART 跨设备连接时若两地电势差大,会烧毁收发器。长距离 UART 应使用 RS-485 或光耦隔离。
复盘建议:在 Bootloader 设计早期就冻结物理层,并把物理层参数(波特率、终端电阻、采样点、线缆规格)写入接口文档。后期更换物理层意味着协议超时、重传、分包策略全部要重算。

物理层是 Bootloader 通信的“地基”。UART 简单廉价、CAN 稳健多节点、USB 高速直连、SPI 板内极速、I2C 低速多从、以太网远程通用——没有最好的接口,只有最匹配场景的接口。把距离、速率、节点数、成本四个约束摆清楚,选型自然水到渠成。