BootLoad(简称Boot)是一种启动加载程序,或者称为引导程序,我们在操作系统和嵌入式开发中经常用到,因为汽车ECU也是一种嵌入式系统,Boot程序主要用于ECU软件更新,汽车OTA升级,本文主要讲述汽车bootloader程序的工作原理和设计方法。
一、bootloader的功能
BootLoader,通常是驻留在ECU非易失性存储器(NVM,None Valitale Momory)中的一段程序加载代码,每次ECU复位后,都会运行bootloader。它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入bootloader模式,建立与程序下载端(通常为PC上位机)的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM驱动程序,将其编程到NVM中,并校验其完整性,从而完成应用程序更新。如果没有来自通信总线的远程程序加载请求,则直接跳转到应用程序复位入口函数(复位中断ISR,也称作Entry_Point()–使用Processor Expert的CodeWarrior 工程或者Startup()函数–普通CodeWarrior 工程),运行应用程序。

因此,汽车ECU的bootloader三个主要的作用:
-
与远程程序下载端建立可靠的总线通信以获取要更新应用程序;
-
解析应用程序编程文件(S19/HEX/BIN)获得其在NVM中的地址和程序代码及数据;
-
运行NVM驱动将应用程序的代码和数据编程到NVM中并校验;
下面就围绕这三个方面张开讲述。
二、如何建立可靠的总线通信?
汽车ECU常见的数据总线有CAN和LIN,因此通常汽车ECU的bootloader都是通过CAN或者LIN下载数据的。当然也可以基于其他总线,比如基于SPI总线或者I2C总线(典型如一些带有安全监测的功能安全ECU,通过主MCU对功能安全监测MCU的程序进行升级)以及以太网(基于Enternet通信的中控或者全液晶仪表的ECU以及下一代高速网关和ADAS ECU)。
⚠️注意事项:
-
不同的ECU通信总线不一样,具体需要用到某种通信总线取决于实际应用;
-
通信总线由ECU的MCU外设实现,所以在bootloader中必须开

本文详细阐述了汽车ECU Bootloader的工作原理,涉及功能包括建立CAN/LIN通信、解析S19/HEX/BIN编程文件及NVM编程。重点讲解了如何确保可靠通信、编程文件格式处理和NVM驱动开发的注意事项。

4723

被折叠的 条评论
为什么被折叠?



