汽车上的bootloader,到底有多简单? |
您所在的位置:网站首页 › 轨距尺是如何校正使用的 › 汽车上的bootloader,到底有多简单? |
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 |