基于CANoe的BootLoader上位机
2019年国庆,闲来无事,写下大致流程。。。
汽车ECU的基于UDS的刷写流程大致相同,基本如下:
扩展会话10 03—28 03 03禁止收发APP报文及NM报文—85 02停止记录DTC—编程会话—安全访问—写入刷件日期—写入诊断仪序列号—请求下载—开始下载—下载完成—检查内存0202—擦除内存FF00—请求APP下载—开始下载—下载完成—检查内存—程序依赖性检查FF01—复位—打开APP及NM收发—DTC使能—进入默认会话—清除DTC
上位机的作用在于向ECU发送请求,ECU作为回应。
重点在于如何读取.S19,.HEX或.BIN文件,并在34服务中将其下载,协调发送与接收的数据包及发送时间,CANoe的Capl语言类似于C,首先设定文件的路径,将app及drive文件放在该路径下,打开文件函数为:OpenFileRead(文件名,读取方式),并有返回值来体现文件是否打开成功。读取文件的函数为fileGetBinaryBlock(存放的数组名,文件大小,OpenFileRead返回值),当读取完毕之后应计算CRC值,以便之后校验内存使用。文件的打开和读取就是这两个函数。
下来说一说数据包的发送和接收。
用HEXview可以打开.S19,.HEX或.BIN文件,其中.S19文件可以体现下载的起始地址及数据字节大小,但是.S19文件格式相比BIN文件较复杂,况且三种格式可以相互转化,一般选取.BIN文件来解析比较方便。
扩展会话10 03—28 03 03禁止收发APP报文及NM报文—85 02停止记录DTC—编程会话—安全访问—写入刷件日期—写入诊断仪序列号
以上服务比较简单,安全访问的算法各不相同,2E服务要写入的内容也不尽相同&#