好长时间没有站在代码开发的第一线了,最近独立搞了一个工程,感觉技术工程师附体,恢复了往日对技术的热情。
在软件定义汽车的时代,ECU软件的更新非常重要。这样就要求ECU具备BootLoader功能。
汽车BootLoader更新是通过通讯链接去更新的,主要有CAN、Lin、UART、Ethernet等通讯方式。现在用的最多的还是基于CAN通讯进行软件升级。
下面来具体谈谈,基于CAN总线的BootLoader升级刷新方案。
通过CAN通讯方式,把新的程序下载到ECU里,这个过程就需要有3个组成部分:
1、支持Bootloader功能的ECU控制器(下位机);
2、烧录上位机(PC端的上位机);
3、CAN连接器(CANoe或者PCAN,周立功CAN盒等);
涉及到软件的开发工作主要是:上位机和下位机。
上位机的功能主要是读取二进制的烧录文件,以一定的组织方式,通过CAN连接器将这个文件下发给下位机即可。
开发上位机的工具有很多,用到的语言主要有C#/VB等高级语言。
上面谈到的上位机以一定的组织方式下发烧录文件,这里指的是刷新的协议,现在主流的是UDS诊断协议,也就是ISO14229(配合传输层协议ISO15765).也有些厂家用的是基于标定的刷新流程,比如CCP协议。也有一些厂家自定义的刷新协议。
那么开发上位机主要有哪一些工作要做呢?
主要包括:上位机界面制作,二进制文件(bin、hex、s19、mot等格式)解析,CAN卡(CANoe、pcan或者周立功CAN或者其他)驱动的调用,UDS刷写流程实现等。
好啦,说了半天好像有点偏离主题啦,不是要谈BootLoader吗。下面就开始谈谈下位机。
BootLoader实际上有2层意思,启动和加载。BootLoader软件工程是独立于APP应用工程的,是单独开发的一个工程。
BootLoader的主体功能很单一,就是为了更新程序,但是长得各式各样,可配置的选项非常多,下面主要列举几个常见的配置项:
1、上位机是否支持多个厂家的CAN卡;
2、上位机是否支持多种格式的烧录文件;
3、FlashDriver是否需要从上位机下载或者说下位机自带FlashDriver;
4、上位机是否同时支持UDS协议和CCP协议;
5、上位机是否支持可配置的UDS刷写流程;
6、软件更新是整体更新还是部分更新;
7、下位机是否具有文件备份和软件回滚的功能;
8、下位机BootLoader是否具备自更新功能(2级BootLoader);
总之,BootLoader的变化太多了,要想整一套完全通用的BootLoader方案,工作量很大。这也许是为什么Vector的FBL工具卖得那么贵的原因吧。
BootLoader下位机开发内容主要包含:FLASH/RAM/EEPROM地址分配,Flash驱动开发,EEPROM驱动开发(可能需要SPI或者串口通讯等),CAN驱动开发,UDS协议栈开发,跳转函数的开发等。
今天就先写到这里吧,忙里偷闲,老板喊我去救火了。
作者水平有限,有不足或者错误之处,望各位同仁和专家补充、批评斧正。
欢迎沟通
版权声明:本文为CSDN博主「新能源汽车」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LIUGONGZHOU01/article/details/119734159
暂无评论