一、Bootloader简介
Bootloader,又称为引导程序,对操作系统非常重要,是计算机和汽车控制器的一个关键组成部分。然而,因为它往往在后台发挥作用,它经常被忽视。其主要用于软件更新。但ECU的软件更新方式有很多,比如通过JTAG调试更新软件,为什么要Boot呢?
由于ECU软件中难免会有BUG存在,以及要满足整车OTA需求,必须可以在不开盖的情况下更新软件。而ECU控制器对外的接口通常只有总线、电源和控制IO等。出于最大化复用接口(减少线束的重量和成本)考虑,通常采用基于UDS的Boot,而最常用的总线为CAN。为什么不用JTAG口呢?主要是ECU装车后,整个外壳都封装好了,开发人员就再也没有JTAG可用了,难以实现远程更新,另外由于JTAG口的权限很高,可以任意修改内部程序,安全风险很大。
二、Bootloader基本流程
程序正常运行中,处在应用层逻辑,然后发指令切换到Boot代码中去,在Boot里把应用软件擦掉,然后进行升级,将从上位机收到的数据存到应用软件原来位置完成升级,升级完成后再跳回到应用层中。