汽车ECU的bootloader程序设计

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

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三个主要的作用

  1. 与远程程序下载端建立可靠的总线通信以获取要更新应用程序;

  2. 解析应用程序编程文件(S19/HEX/BIN)获得其在NVM中的地址和程序代码及数据;

  3. 运行NVM驱动将应用程序的代码和数据编程到NVM中并校验;

下面就围绕这三个方面张开讲述。

二、如何建立可靠的总线通信?

汽车ECU常见的数据总线有CAN和LIN,因此通常汽车ECU的bootloader都是通过CAN或者LIN下载数据的。当然也可以基于其他总线,比如基于SPI总线或者I2C总线(典型如一些带有安全监测的功能安全ECU,通过主MCU对功能安全监测MCU的程序进行升级)以及以太网(基于Enternet通信的中控或者全液晶仪表的ECU以及下一代高速网关和ADAS ECU)。

⚠️注意事项:

  1. 不同的ECU通信总线不一样,具体需要用到某种通信总线取决于实际应用;

  2. 通信总线由ECU的MCU外设实现,所以在bootloader中必须开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值