2.5.4 Bootloader刷新规范要求
1.概述
所有支持应用软件及应用数据(包括网络配置数据和标定数据)刷新的ECU,都应当包含程序下载刷新(Bootloader)软件。在正常运行过程中,执行的是应用软件和应用数据。仅当应用软件或应用数据无效时,或者要求对它进行升级时,Bootloader软件才被激活。
应用软件和应用数据可以同时刷新或者相互独立刷新,不允许在刷新时更新Bootloader软件。
2.硬件要求
任何可进行程序下载刷新并且正确安装在汽车中的ECU,均可使用诊断仪通过汽车OBD接口对ECU进行程序下载刷新,在下载刷新程序的过程中,不需要把ECU从整车中移除。可进行程序下载刷新的ECU必须提供足够的存储器来保证下载,提供充足的缓存空间来满足程序下载刷新的定时要求。
3.软件要求
ECU软件被分成2个完全独立的部分:Bootloader软件和应用软件。在程序下载存储器区域中,Bootloader软件应被存储在被保护的只读存储器中,避免被意外擦除,一旦ECU上电,Bootloader软件就开始执行,应能够重新编程应用软件。
为了保持Bootloader软件尽可能小,仅仅需要支持诊断服务的子集。
4.启动时序
在上电/复位后,ECU首先执行Bootloader代码,Bootloader软件首先执行一些基本的初始化,然后检查是否有外部程序下载刷新请求,如果程序下载刷新请求有效,即使应用程序是有效的,Bootloader软件也会继续运行。
如果当前没有程序下载刷新请求,则检查应用软件的状态:
1)若应用软件是有效的,则应用软件代码将被执行。
2)若应用软件是无效的,则继续执行Bootloader代码。
在应用模式下,使用两种诊断会话模式:默认会话模式和扩展会话模式。
在Bootloader模式下,使用了三种不同的诊断会话模式:默认会话模式、扩展会话模式和编程会话模式。要进入编程会话模式,必须先通过扩展会话模式,ECU不支持直接从默认会话模式跳转到编程会话模式。同样,ECU也不支持从编程会话模式直接跳转到扩展会话模式。
程序下载刷新启动时序如图2-56所示。
图2-56 程序下载刷新启动时序
5.程序下载要求
(1)安全访问 所有可刷新的ECU都应该支持种子和密钥的安全特性,并且可以通过安全访问服务27hex进行访问,从而保护ECU免受未授权的编程动作影响。
(2)检查编程依赖性 在下载程序的最后,ECU需要检查下载到存储器中的软件的依赖性。通过执行例程标识符为0xFF01的例程控制服务(31hex)来进行编程软件的依赖性检查。
(3)内存驱动程序下载 内存驱动程序是一种执行初始化、擦除或写入内存功能的硬件从属软件。ECU内存的内容必须是受保护的,防止意外的擦除或重写操作。编程的内存驱动并不是存储在ECU的只读存储器中,而是下载到ECU的随机存储器中。下载完成后,驱动代码将从ECU的随机存储器缓存区彻底移除。
(4)故障容错 如果在编程过程中以下任何故障条件发生,ECU应有能力去恢复并可以重新进行编程:
1)失去和供电电源的连接。
2)失去接地连接。
3)CAN通信中断。
4)过电压或欠电压条件。
6.程序下载刷新流程
(1)总则 电子控制单元程序下载刷新流程可分为以下3个阶段:
1)预编程阶段。
2)编程阶段。
3)编程后处理阶段。
程序下载刷新流程图如图2-57所示。
图2-57 程序下载刷新流程图
程序下载刷新在不同的阶段执行不同的软件,见表2-38。
表2-38 程序下载刷新流程各阶段执行的软件部分
注:X表示在该阶段执行,-表示在该阶段不执行。
(2)预编程阶段 为保证进入编程模式后程序下载刷新过程不被干扰,电子控制单元在预编程阶段应执行以下功能:
1)关闭整车所有电子控制单元记录诊断故障码功能。保证在整车环境下对某一个电子控制单元进行程序下载刷新的过程中,整车电子控制单元不误记录诊断故障码。
2)屏蔽非诊断类通信报文(包括应用报文和网络管理报文)。保证在程序下载刷新过程中,诊断类报文不会由于通信报文和网络管理报文的干扰(由报文仲裁导致的干扰)而延长下载时间或出现下载中断。
预编程阶段操作步骤见表2-39。
表2-39 预编程阶段操作步骤
预编程阶段流程如图2-58所示,本流程图及后续阶段的流程图均考虑了出现否定响应码为78hex的情况。
图2-58 预编程阶段流程
(3)编程阶段 在编程阶段,诊断仪对电子控制单元的程序刷写区进行操作,分成7个步骤进行,见表2-40。
表2-40 编程阶段操作步骤
表2-40中,写入身份识别信息包括维修站代码或诊断仪序列号、编程日期,写入配置信息包括VIN、系统配置、车辆模式。
表2-40中,下载驱动程序、下载新应用程序这2个步骤中使用的例程控制(服务31hex)是用来校验下载程序的依赖性的,擦除原应用程序步骤中使用的例程控制(服务31hex)是用来擦除服务器中的应用程序软件的。
编程阶段的流程如图2-59所示,以上流程中下载驱动程序和下载新应用程序的子流程如图2-60所示。
(4)编程后处理阶段 在下载完成后,需对程序下载刷新的电子控制单元进行复位操作,使下载的新应用程序被激活生效,同时擦除驱动程序。由于预编程阶段对车辆所有电子控制单元进行了关闭诊断故障码记录功能的操作,并屏蔽了非诊断类的通信报文,在编程后处理阶段,需先对车辆所有电子控制单元开启非诊断类报文的通信,再重新开启诊断故障码的记录功能,恢复车辆原来的正常状态。
由于进行刷新的电子控制单元进行复位后,会话模式将自动切换到默认会话模式,被刷新的电子控制单元在预编程阶段关闭的诊断故障码记录功能重新被开启,而此时其他电子控制单元仍然保持在扩展会话模式,在未开启非诊断类通信报文的这段时间内,可能会导致被刷新的电子控制单元记录其他节点丢失的诊断故障码,所以在所有控制单元开启非诊断类通信和诊断故障码记录后,需对进行刷新的电子控制单元进行清除诊断故障码操作。
编程后处理阶段操作步骤见表2-41。
图2-59 编程阶段流程
编程后处理阶段流程如图2-61所示。
图2-60 编程阶段下载过程
表2-41 编程后处理阶段操作步骤
注:步骤1电子控制单元复位在Bootloader软件中执行,步骤2~6在应用软件中执行。
图2-61 编程后处理阶段流程