共计 1838 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
在汽车电子领域,传统的固件更新方式(如 JTAG 烧录)存在诸多局限性,尤其是随着车辆电子系统的复杂度提升,这些局限性愈发明显。

- 效率低下 :每次更新都需要物理接触设备,耗时耗力,不适合大规模部署。
- 维护成本高 :车辆召回或 4S 店手动更新固件的方式成本高昂,用户体验差。
- 安全性不足 :传统方式缺乏有效的安全校验机制,容易遭受恶意篡改或数据泄露。
技术对比
Aurix SOTA(Software Over-The-Air)相比传统方案,具有显著优势:
- 带宽占用 :SOTA 支持差分更新,仅传输变更部分,大幅减少带宽占用。
- 回滚机制 :SOTA 通常采用双 Bank 设计,更新失败时可自动回滚至旧版本。
- 安全认证 :SOTA 内置安全签名验证(如 ECDSA/P256),确保固件来源可靠。
环境搭建
配置 Aurix Development Studio
- 下载并安装 Aurix Development Studio(ADS)。
- 安装必要的插件和工具链(如 Tasking 编译器)。
- 配置调试器(如 MiniWiggler 或 DAP)连接目标板。
关键依赖项
- Crypto 库 :确保使用支持 ECDSA/P256 的版本(如 mbedTLS 或 HSSL 库)。
- Flash 驱动 :需兼容 Aurix 系列 MCU 的双 Bank 操作。
代码实现
差分更新包解析
以下是一个简单的差分更新包解析代码示例:
// 解析差分更新包头部
void parse_delta_header(const uint8_t *data, delta_header_t *header) {memcpy(&header->version, data, sizeof(header->version));
data += sizeof(header->version);
memcpy(&header->size, data, sizeof(header->size));
data += sizeof(header->size);
// 其他字段解析...
}
安全签名验证
使用 ECDSA/P256 验证固件签名:
bool verify_signature(const uint8_t *data, size_t len, const uint8_t *sig) {
mbedtls_ecdsa_context ctx;
mbedtls_ecdsa_init(&ctx);
// 加载公钥
mbedtls_ecp_group_load(&ctx.grp, MBEDTLS_ECP_DP_SECP256R1);
mbedtls_mpi_read_binary(&ctx.Q.X, public_key_x, sizeof(public_key_x));
mbedtls_mpi_read_binary(&ctx.Q.Y, public_key_y, sizeof(public_key_y));
// 验证签名
int ret = mbedtls_ecdsa_verify(&ctx.grp, data, len, &ctx.Q, sig);
mbedtls_ecdsa_free(&ctx);
return (ret == 0);
}
双 Bank 切换逻辑
void switch_bank(void) {
// 检查新固件是否有效
if (check_firmware_validity(NEW_BANK_ADDR)) {
// 更新启动标志
write_boot_flag(NEW_BANK_FLAG);
// 重启设备
system_reset();}
}
避坑指南
- 内存分区对齐问题 :确保 Flash 分区对齐到擦除块大小,避免写入失败。
- 看门狗喂狗时机处理 :在长时间操作(如 Flash 写入)中定期喂狗,防止看门狗复位。
- CAN 总线负载控制 :避免在 CAN 总线高峰期传输大块数据,防止总线过载。
测试验证
HIL 测试框架模拟断点续传
使用硬件在环(HIL)测试框架模拟网络中断场景,验证断点续传功能是否正常。
功耗与闪存寿命测试数据
- 功耗测试 :记录更新过程中的电流消耗,确保在车辆电池可接受范围内。
- 闪存寿命测试 :模拟频繁更新,验证 Flash 寿命是否符合预期(通常 10 万次擦写)。
延伸思考
设计支持 A / B 测试的升级策略:
- 将用户分为两组,分别推送不同版本的固件。
- 收集两组设备的运行数据(如崩溃率、性能指标)。
- 根据数据选择最优版本进行全量推送。
实际项目问题检查清单
- [] Flash 分区是否对齐?
- [] 看门狗喂狗逻辑是否完备?
- [] CAN 总线负载是否可控?
- [] 安全签名验证是否通过?
- [] 双 Bank 切换是否可靠?
通过以上步骤,新手可以快速掌握 Aurix SOTA 的核心技术,并规避常见问题。
正文完
发表至: 未分类
四天前
