lsekfe 发表于 2023-5-9 10:37:44

简述汽车控制器Bootloader概述及测试方法

一、控制器软件Bootloader的作用
  单片机工作时总是从固定地方取指,对编写程序的人带来了很多的麻烦,软件更新时必须通过烧录器等工具烧录;在此环境下,将软件设计由一个程序跳转到另一个程序,这个程序通常称作Bootloader。Bootloader程序常常具有通信接口和擦写内部存储空间的功能,可将需要更新的APP擦除,写入新的APP。有时会设计成相互跳转,例如APP2跳转到APP3,远程升级时使用。
http://www.51testing.com/attachments/2023/05/15326880_202305081512121PTU6.jpg
  汽车电子中ECU一旦设计完成,上市车辆就很难再拆卸并返回零部件供应商完成功能升级或补丁修复。一旦出现售后质量问题,零部件供应商和整车厂将面临严重的经济损失,因此设计基于CAN总线的ECU在线程序更新Bootloader可以很好的解决这一问题,将零部件供应商和整车厂的损失降低到最小。目前国外大部分汽车整机厂(主机厂)和全球的一级汽车零部件供应商 (Tier 1) 都要求在其设计的ECU实现Bootloader功能。因此大多主机厂要求ECU具有升级功能,并且通过多年的积淀制定了行业标准UDS。ECU开发过程要用到它来构建bootloader,上传和下载数据,即软件刷写,控制器Reset;近年来远程更新的加入,让软件更新增加了更多的可能性。
  二、控制器软件Bootloader的工作流程
http://www.51testing.com/attachments/2023/05/15326880_202305081512151Unyu.jpg
  1.通过诊断会话进入扩展会话模式。
  2.确认刷写前提。根据《UDS刷写规范》所要求的条件,通过ECU合适的车速、档位等信息,确认是否可以更新软件。
  3.关闭DTC记录功能。让ECU停止记录新增故障,因为刷程序的时候,为了加快软件刷写速度,需要停掉整个网段的报文,可能会导致很多ECU记录“报文丢失”故障
  4.关闭CAN通信。停止整个网段的报文,为了加快刷程序的速度。
  5.进入编程会话模式。
  6.解锁电控单元,安全访问通过。上位机发个请求,ECU回复一个随机数,然后上位机根据某种算法,根据这个随机数,算出另外一个数据,并把这个数据再用一帧报文发给ECU,ECU再回复一帧,上位机认证通过。
  7.写入签名信息。比如“刷写日期+设备名称”。
  8.下载数据,1-预擦除数据。2-写地址和长度。3-数据传输。4-退出传输。5-CheckSum核对。
  9.后编程阶段,进入扩展会话模式.
  10.打开DTC。
  11.开启通信。
  12.ECU软复位,对ECU进行重启操作。
  三、控制器软件Bootloader的测试方法
  测试项目1:正常刷写测试
  测试目的:验证正常刷写功能
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写
  测试预期结果:1.刷写成功;2.重新上电,VCU正常发出报文;
  测试项目2:连续多次刷写
  测试目的:验证多次刷写功能
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写;4.重复步骤1-4(5次)
  测试预期结果:1.刷写成功;2.重新上电,VCU正常发出报文;
  测试项目3:刷写确认相关信息
  测试目的:验证刷写功能结果
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写4.通过UDS服务读取XX信息
  测试预期结果:1.刷写成功;2.重新上电,VCU正常发出报文;
  测试项目4:电源异常刷写测试
  测试目的:验证不同电源电压刷写功能
  测试前提条件:1.KL30、GND电源供电8V、10V、14V、16V;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写4.通过UDS服务读取XX信息
  测试预期结果:1.刷写成功;2.重新上电,VCU正常发出报文;
  测试项目5:中断刷写测试
  测试目的:验证中断刷写
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写,刷写3S后,关闭上位机软件;4.再次重复1-3
  测试预期结果:1.第一次刷写失败:2.第二次刷写成功;3.重新上电,VCU正常发出报文;
  测试项目6:错误文件刷写
  测试目的:验证错误文件刷写
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择bin文件导入上位机;3.启动刷写
  测试预期结果:1.刷写失败:2.重新上电,VCU不能发出报文;
  测试项目7:错误程序刷写
  测试目的:验证错误程序刷写
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择hex文件内容删除或修改,导入上位机;3.启动刷写
  测试预期结果:1.刷写失败:2.重新上电,VCU不能发出报文;
  测试项目8:中断供电电源测试
  测试目的:验证中断供电电源
  测试前提条件:1.KL30电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写4.KL30、GND正常供电,重复步骤1-3
  测试预期结果:1.第一次刷写失败:2.第二次刷写成功;3.重新上电,VCU正常发出报文;
  测试项目9:中断供电电源测试
  测试目的:验证供电电源
  测试前提条件:1.GND电源正常供电;2.CAN_H、CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写4.KL30、GND正常供电,重复步骤1-3
  测试预期结果:1.第一次刷写失败;2.第二次刷写成功;3.重新上电,VCU正常发出报文;
  测试项目10:通信异常测试
  测试目的:验证通信异常
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_H通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写4.CAN_H/CAN_L正常通讯,重复步骤1-3
  测试预期结果:1.第一次刷写失败:2.第二次刷写成功;3.重新上电,VCU正常发出报文;
  测试项目11:通信异常测试
  测试目的:验证通信异常
  测试前提条件:1.KL30、GND电源正常供电;2.CAN_L通讯正常
  测试步骤:1.连接测试设备(环境IDE、工具Kavaser-CAN收发器);2.选择刷写功能;3.启动刷写4.CAN_H/CAN_L正常通讯,重复步骤1-3
  测试预期结果:1.第一次刷写失败;2.第二次刷写成功;3.重新上电,VCU正常发出报文。

页: [1]
查看完整版本: 简述汽车控制器Bootloader概述及测试方法