S32K Bootloader

S32K Bootloader 开发流程–

1. 功能

bootlloader一般分为三个部分,上位机客户端,boot程序和App程序。

上位机客户端软件:用来将mcu的app程序文件发送给mcu,发送的通讯方式有很多种,常见的如串口,can,甚至以太网。上位机发送的文件类型有很多种格式,如bin、hex、s19等。

boot程序:boot程序的主要功能分为三部分,第一,接收客户端软件发来的程序;第二,将接收到的程序写入到mcu的flash中,即对片内flash进行编程;第三,跳转到App程序。

App程序:就是我们正常运转的应用程序,和普通引用的程序不同的是它是由bootloader引导才开始执行的,不是reset之后执行的默认程序。

  1. 每次ECU 复位后,都会运行Bootloader ,检查是否有来自通信总线的远程程序加载请求,如果有则进入Bootloader 模式
  2. 与远程程序下载主机(Bootloader host)建立可靠的总线通信以获取要更新应用程序,解析其地址和数据代码
  3. 解析应用程序编程文件(S19/HEX/BIN)获得其在 NVM 中的地址和程序代码及数据
  4. 运行 NVM 驱动将应用程序的代码和数据编程到 NVM 中并校验;
  5. 如果没有来自通信总线的远程程序加载请求,则直接跳转到应用程序的复位入口函数(复位中断ISR),运行应用程序
2. 总线通信

为了保证通信的可靠性,必须开发一个基于通信总线完善的通信协议,应用程序下载端和 Bootloader 之间需要建立**请求命令(request command)、确认(acknowledge)、等待(block wait)、错误重传(error re-send)**等机制----Bootloader 根据不同的请求命令完成不同的任务并确认操作是否完成(ACK)以及数据是否正被确完整的传输,若出现数据错误(通过校验和或者 ECC 实现),需要进行自动重传;

应用程序编程文件(S19/HEX/BIN)都具有相应的校验和机制,所以可以采取直接传送程序编程文件行的方式;否则,用户需要在上位机软件中首先解析编程文件,再将其中的地址和数据及代码封装打包成某种定制的通信协议

为了实现数据的可靠传输,一般在总线通信协议中添加信源编码,即在发送是对有效数据进行校验和或者ECC计算并将结果在通信数据帧中和有效数据一起发送,Bootloader接收端,接收到数据帧后对有效数据域进行发送端同样的校验和或者ECC计算,得出结果与接收到的校验和或者ECC计算结果值进行比较从而判断数据的完整性

一些正规的大主机厂要求其ECU供应商开发放入ECU Bootloader必须基于UDS等总线诊断协议,在UDS中规定了相应的CAN ID给Bootloader使用,那么必须在该类ECU中的Bootloader工程中加入相应的UDS协议栈;

3. 解析编程文件

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

MCU 的软件开发 IDE 一般都集成不同编程文件之间的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值