汽车boot loader开发要点

lichongyang
lichongyang
lichongyang
111
文章
0
评论
2020年4月26日12:56:12 评论 375 次浏览

1. Bootloader 的功能

Bootloader,顾名思义,就是驻留在 ECU 非易失性存储器中的一段程序加载代码,每次 ECU 复位后,都会运行 Bootloader。它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入 Bootloader 模式,建立与程序下载端(通常为 PC 上位机)的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM(None Volatile Memory--非易失性存储器)驱动程序,将其编程到 NVM 中,并校验其完整性,从而完成应用程序更新。如果没有来自通信总线的远程程序加载请求,则直接跳转到应用程序复位入口函数(复位中断 ISR,也称作 Entry_Point()--使用Processor Expert 的 CodeWarrior 工程或者 Startup()函数--普通 CodeWarrior 工程),运行应用程序。

基于此,汽车 ECU 的 Bootloader 三大主要功能如下:

  • 与远程程序下载主机(Bootloader host)建立可靠的总线通信以获取要更新应用程序;
  • 解析应用程序编程文件(S19/HEX/BIN)获得其在 NVM 中的地址和程序代码及数据;
  • 运行 NVM 驱动将应用程序的代码和数据编程到 NVM 中并校验;

2. 如何建立可靠的总线通信?

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

3. 解析编程文件(S19/HEX/BIN)

不同的 MCU 软件开发 IDE 编译链接生成的编程文件格式可能不同,但 S19、 HEX 和BIN 文件之间是可以相互转化的,所以只需要在 Bootloader 中开一种编程文件的解析程序就可以了,其他的可以使用相应的转换工具(convert tool)在上位机上进行转换;

对编程文件的解析,目的在于获得应用程序的程序代码和数据及其在 NVM 中的存储地址;

4. 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)操作。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信小程序
  • 我的微信小程序扫一扫
  • weinxin
lichongyang
  • 本文由 发表于 2020年4月26日12:56:12
  • 转载请务必保留本文链接:https://www.chongyangli.com/archives/%e6%b1%bd%e8%bd%a6boot-loader%e5%bc%80%e5%8f%91%e8%a6%81%e7%82%b9/
IAP协议 总线

IAP协议

协议采用Yomdem协议, Ymodem协议主要有3部分组成: 1.文件传输开启 2.数据传输 3.文件传输结束 文件传输过程: (1)开启是由接收方开启传输,它发一个大写字母"C"开启传输。然后进入...
汽车CAN总线资料下载 CANoe

汽车CAN总线资料下载

CAN总线基础 CAN总线技术基础下载 CAN总线详细教程精心编制不可错过下载 CANoe介绍 CANoe培训介绍下载 Part1-CANoe概述下载 Part2-CANoe软件界面介绍下载 Part...
CAPL语言学习文档 车载知识

CAPL语言学习文档

(一)CAPL简介 CAPL全称为Communication Access Programming Language。CAPL语言允许你编写单独的应用程序。比如说:当你添加新节点的时候,你要测试新添加...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: