三、如何实现Bootloader
1.通信
与上位机下载端建立可靠的总线通信以获取要更新应用程序:CAN驱动,CAN Driver 模块实现 CAN 报文的收发。
2.Flash Driver
用于操作 Flash 的擦除、写入和读取功能。主要包括 Flash 硬件初始化,Flash block 块的读写操作及擦除功能。基于软件运行安全性考虑,Flashdiver 一般不会存在放在 fash中,避免正常程序在发生错误时可能的非法修改。在需要执行应用程序或应用数据需要时,首先将 Flash diver 下载至 ram中,然后执行相应的更新。
3.协议
①传输协议:ISO-15765-2,
传输层主要是提供数据的组包和拆包功能服务,能够实现报文的分段传输及数据传输过程中的错误检测和超时处理。
②UDS 协议:ISO-14229-1
协议中定义的 Bootloader 程序刷写流程,包括:诊断会话切换、安全状态切换、标识符读写、程序刷写和ECU复位等。
③Watch Dog 监控 Bootloader 超时或者死机,对 ECU 复位。
④NvM 驱动包括对 NvM 的读写操作支持。
四、Bootloader的功能
BootLoader,顾名思义,就是驻留在 ECU 非易失性存储器中的一段程序加载代码,每次ECU 复位后,都会运行 bootloader。它会检查是否有来自通信总线的远程程序加载请求,如果有,则进入bootloader 模式,建立与程序下载端(通常为 PC 上位机)的总线通信并接收通信总线下载的应用程序、解析其地址和数据代码,运行NVM(NoneValitaleMomory--非易失性存储器)驱动程序,将其编程到NVM中,并校验其完整性