一文看懂汽车电子ECU bootloader开发(工作原理及开发要点).doc
《一文看懂汽车电子ECU bootloader开发(工作原理及开发要点).doc》由会员分享,可在线阅读,更多相关《一文看懂汽车电子ECU bootloader开发(工作原理及开发要点).doc(8页珍藏版)》请在三一文库上搜索。
1、一文看懂汽车电子ECU bootloader开发(工作原理及开发要点)随着半导体技术的不断进步(按照摩尔定律),MCU内部集成的逻辑功能外设越来越多,存储器也越来越大。消费者对于汽车节能(经济和法规对排放的要求)型、舒适性、互联性、安全性(功能安全和信息安全)的要求越来越高,特别是近年来新能源电动车、车联网和自动驾驶技术的兴起,更大大加速了汽车电子技术的发展。汽车电子ECU(Electronic Control Unit-电控单元)集成的功能日益复杂,为了应对软件远程(在线)功能升级(增加新的功能)和bug修复的需求、对bootLoader(启动加载程序)的需求越来越多。本文详细介绍了汽车电子
2、ECU bootloader的一般性工作原理和开发要点,其适用于所有的汽车电子ECU bootloader开发。一、bootloader的功能BootLoader,顾名思义,就是驻留在ECU非易失性存储器中的一段程序加载代码,每次ECU复位后,都会运行bootloader。它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入bootloader模式,建立与程序下载端(通常为PC上位机)的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM(None Valitale Momory-非易失性存储器)驱动程序,将其编程到NVM中,并校验其完整性,从而完成应用程序更新。如果
3、没有来自通信总线的远程程序加载请求,则直接跳转到应用程序复位入口函数(复位中断ISR,也称作Entry_Point()-使用Processor Expert的CodeWarrior 工程或者Startup()函数-普通CodeWarrior 工程),运行应用程序。基于此,汽车ECU的bootloader三大主要概念如下:与远程程序下载端建立可靠的总线通信以获取要更新应用程序;解析应用程序编程文件(S19/HEX/BIN)获得其在NVM中的地址和程序代码及数据;运行NVM驱动将应用程序的代码和数据编程到NVM中并校验;二、如何建立可靠的总线通信?汽车ECU常见的数据总线有CAN和LIN,因此通常
4、汽车ECU的bootloader都是通过CAN或者LIN下载数据的。当然也可以基于其他总线,比如基于SPI总线或者I2C总线(典型如一些带有安全监测的功能安全ECU,通过主MCU对功能安全监测MCU的程序进行升级)以及以太网(基于Enternet通信的中控或者全液晶仪表的ECU以及下一代高速网关和ADAS ECU)。TIps:a、不同的ECU通信总线不一样,具体需要用到某种通信总线取决于实际应用;b、通信总线有ECU的MCU外设实现,所以在bootloader中必须开发相应的通信总线外设驱动程序,实现基本的数据发送和接收功能;c、为了保证通信的可靠性,必须开发一个基于通信总线完善的通信协议,应
5、用程序下载端和bootloader之间需要建立请求命令(request command)、确认(acknowledge)、等待(block wait)、错误重传(error re-send)等机制-bootloader根据不同的请求命令完成不同的任务并确认操作是否完成(ACK)以及数据是否正被确完整的传输,若出现数据错误(通过校验和或者ECC实现),需要进行自动重传;d、应用程序下载端通过需要在PC上基于VC或者C#、QT、Labview等开发GUI软件,实现c中要求的总线通信协议,一般在其底层都是通过调用相应的总线设备,如USB转CAN/LIN的转发器设备的动态库(DLL)的API接口来实现
6、数据的收发,相应的总线USB转发设备都会提供相应的驱动库(DLL)。因此bootloader开发者一般还需具备一定的PC上位机软件开发能力;e、为了实现数据的可靠传输,一般在总线通信协议中添加信源编码,即在发送是对有效数据进行校验和或者ECC计算并将结果在通信数据帧中和有效数据一起发送,bootloader接收端,接收到数据帧后对有效数据域进行发送端同样的校验和或者ECC计算,得出结果与接收到的校验和或者ECC计算结果值进行比较从而判断数据的完整性。应用程序编程文件(S19/HEX/BIN)都具有相应的校验和机制,所以可以采取直接传送程序编程文件行的方式;否则,用户需要在上位机软件中首先解析编
7、程文件,再将其中的地址和数据及代码封装打包成某种定制的通信协议,在bootloader中还得对其进行解包,这样一来,略显麻烦,但有些主机厂(Car OEM)为了知识产权保护,有自己的bootloader协议,这种情况下,bootloader开发者就必须按照主机厂的要求来开发;f、一些正规的大主机厂要求其ECU供应商开发放入ECU bootloader必须基于UDS等总线诊断协议,在UDS中规定了相应的CAN ID给bootloader使用,那么久必须在该类ECU中的bootloader工程中加入相应的UDS协议栈;三、解析编程文件(S19/HEX/BIN)不同的MCU软件开发IDE编译链接生成
8、的编程文件格式可能不同,但S19、HEX和BIN文件之间是可以相互转化的,所以只需要在bootloader中开一种编程文件的解析程序就可以了,其他的可以使用相应的转换工具(convert tool)在上位机上进行转换;对编程文件的解析,目的在于获得应用程序的程序代码和数据及其在NVM中的存储地址;为了解析编程文件必须先了解其中的编码格式和原理,常用的S19、HEX和BIN文件的格式说明请参考如下维基百科链接:S19文件:https:/en.wikipedia/wiki/SREC_(file_format)HEX文件:https:/en.wikipedia/wiki/Intel_HEXBIN文件
9、:https:/en.wikipedia/wiki/Binary_fileTIps:S19和HEX文件都是可以直接使用文本编辑器(比如记事本,notepad+)打开的,只需要将包含地址和数据代码的S1、S2和S3开始的S19文件行合并即可,可以手动拷贝,也可以编写window批处理脚本来处理;当然也有专门的可以支持两个S19文件的合并,网上可以找到很多开源软件,比如常见的Srecord等;MCU的软件开发IDE一般都集成不同编程文件之间的转换工具:比如S32DS的objcopy(Create Flash Image )以及Keil的Motorola S-Record to BINARY Fil
10、e Converter http:/keil/download/docs/10.asp四、NVM驱动程序开发ECU的NVM一般包括其MCU片内集成的用于存放数据的EEPROM或者Data-Flash和用于存储程序代码/数据的Code-Flash/Program-Flash以及MPU扩展的片外NOR Flash或者NAND-Flash;NVM驱动程序包括对NVM的擦除(erase)、编程(program)和校验(verify)等基本操作,也包括对NVM的加密(secure)/解密(unsecure)和加保护(protecTIon)/解保护(unprotecTIon)操作。Tips:a、MCU片上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一文看懂汽车电子ECU bootloader开发工作原理及开发要点 看懂 汽车 电子 ECU bootloader 开发 工作 原理 要点
链接地址:https://www.31doc.com/p-3362737.html