汽车上的bootloader,到底有多简单?

您所在的位置:网站首页 轨距尺是如何校正使用的 汽车上的bootloader,到底有多简单?

汽车上的bootloader,到底有多简单?

2024-05-30 09:35| 来源: 网络整理| 查看: 265

Bootloader是汽车电子领域的一种刷程序的技术,通过CAN盒往总线上发报文,即可实现对ECU程序的更新。

从这个角度来讲,ecu内部的bootloader程序,是比应用层代码(s19、hex等等)更加底层的东西,ecu每次上电,都会先运行bootloader,然后把指令引导到应用层代码区。

而且,即使ecu程序正在运行,只要ecu接收到了适当的命令,它也会停掉app程序,进入boot模式,这就是“刷程序”的典型场景。

Bootloader如何开发?

一般而言,是由车企发布bootloader规范(或者叫做“刷写规范),然后各个零部件供应商遵照规范执行,然后车企可以根据自己的刷写规范,开发诊断仪或者刷写上位机。

刷写规范,由车企来统一定义和管控,是非常必要的,毕竟这东西非常需要统一,否则一个企业的刷写规范五花八门,那就尴尬了。

Bootloader难吗?

不难,但是若干硬骨头还是有的,需要啃。

bootloader刷写,工作主要分为两个部分:1是ecu端,要求ecu供应商按照车企发布的刷写规范来做即可。2是刷写上位机或诊断仪,由车企负责开发(或者另外找供应商)。

Bootloader没有强制性规范,所以显得有点混乱,但是目前业内的主流做法是借助uds诊断,把数据刷进去。大致分为以下步骤:

1.进入扩展回话。发一帧7xx报文,然后ecu回复一帧报文,这个步骤就算完成了,难度1星(最高10星)。

2.确认刷写前提。这一步也是发一帧报文,ecu回复一帧报文。发报文之前,要根据《刷写规范》所要求的条件,发给ecu合适的车速、档位等信息(如果是在实车上,那你就去手动操作一下好了),难度2星。

3.关闭dtc记录功能。(用广播模式)发一帧报文,让ecu停止记录新增故障,ecu也会回复一帧报文,告诉你,它已经遵照指示,开始睁一只眼闭一只眼。

之所以会这么做,因为实车刷程序的时候,为加快速度,需要停掉整个网段的报文,可能会导致很多ecu记录“报文丢失”故障。

4.关通信,停止整个网段的报文。都别说话了,我要刷程序了。也是通过一帧报文(广播式命令)即可,ecu会回复一帧确认。

5.进入编程会话。这是要真正进入写数据环节了,也是“发一帧回一帧”。难度1星。

6.解锁电控单元,这个步骤的意思是,上位机发个请求,ecu回复一个随机数,然后上位机根据某种算法,根据这个随机数,算出另外一个数据,并把这个数据再用一帧报文发给ecu,ecu再回复一帧,告诉上位机认证通过。

这个步骤也是比较简单,总共发两帧收两帧,搞定。难度4星。

7.写入签名信息。一般是写入一个字符串,比如“刷写日期+电脑名”。这个就要用到多帧传输了。

但是由于签名的长度都是固定的,所以不算是动态多帧,一般都是“发两帧或者三帧+回两帧”即可实现,难度4星。

8-0.下载数据,第0部分,预擦除数据。有时候会和写地址、长度命令共用(详见8第一部分)

8.下载数据,第一部分,写地址和长度。也不难,发两帧收两帧即可。把要刷写的数据的地址和长度(这些数值都是在编译成s19的时候生成的),发给ecu。难度4星。

9.下载数据,第二部分,数据传输。这是bootloader技术最核心的部分,一个1m大小的s19文件,就是通过这一部分传进ecu的。

我们要先把1m切分成若干个小块,每块的大小自己定义(比如3k),然后每次传输这个3k,直至传输完成。

每传输一个3k,我们的模式都是“发多帧,回两帧”,相当于写指纹环节的扩展,也很简单。

难度7星。

10下载数据,第三部分,退出传输。一发一收,两个报文即可。难度1星。

10.下载数据,第四部分,checksum核对。也很简单,一般也是发两帧回两帧,把刚才发的地址、长度、数据区,混合一起做个检验,然后把校验码发给ecu即可,ecu那边也会校验,二者一致就会回给ecu通过。

到这里,数据传输就基本完成了。

11.收尾工作,进入扩展会话,,“一发一收”即可,难度1星。

12.打开dtc,开始秉公执法。“一发一收”即可,难度1星。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3