车载毫米波雷达Bootloader的设计与实现
2021-04-25凌露露赵芬
凌露露 赵芬
摘要:毫米波雷达用于盲区监测系统时,一种连接方法是仅一个雷达挂接在车身网络上,而另一个雷达无法直接与车身网络通信,因此也无法通过OBD直接升级软件。该文提出一套基于UDS的软件升级方案,在传统下位机Bootloader中增加主从通讯功能,使得两个雷达能同时完成软件升级。经实际应用,设计的Bootloader在盲区监测系统和前碰撞预警系统中都能可靠地升级应用软件。
关键词:Bootloader;毫米波雷达;车载;盲区监测系统;UDS
中图分类号:TP368 文献标识码:A
文章编号:1009-3044(2021)09-0218-03
开放科学(资源服务)标识码(OSID):
The Design and Implementation of a CAN Bootloader in Vehicle Millimeter Wave Radar
LING Lu-lu, ZHAO Fen
(The 38th Research Institute of China Electronics Technology Group Corporation, Hefei 230088, China)
Abstract: When millimeter wave radars are used in a blind spot detection (BSD) system, where only one radar working as the main radar is connected to the vehicle network directly, the sub radar that cannot communicate with vehicle network cannot be programed by OBD interface. In order to achieve the program upgrade of two radars, a program upgrade method based on unified diagnostic services (UDS) is proposed. The method adds a master-slave communication function in traditional Bootloader. The Bootloader designed is proved that it can upgrade software correctly and reliably in BSD system and forward collision warning (FCW) system.
Key words: Bootloader ; Millimeter wave radar; Vehicle-mounted; BSD; UDS
1 背景
为了解决因汽车外后视镜存在视觉盲区易导致交通事故的问题,越来越多的汽车装配了盲区监测系统,通过在汽车后保险杠内安装2个毫米波雷达传感器,监测侧后方车辆[1]。当雷达系统有功能改进时,需要进行软件升级,这就要求雷达控制器具备在线刷写能力。Bootloader是运行于主程序之前的一段小程序,主要完成应用程序下载和更新任务[2-3]。现有的Bootloader方案大都是针对单一控制器,对于有两个控制器的系统,需要在传统Bootloader中增加一部分功能以达到两个控制器同时更新软件的目的。
UDS(unified diagnostic services)诊断服务协议有一套完善的国际体系标准,可以提升整车厂汽车电子产品的管理能力和效率,也为零部件厂商开发诊断部分功能提高复制性,减少开发周期和成本[4]。
本文基于UDS设计了一套应用于车载毫米波雷达的软件升级方案,可以用于配备两个毫米波雷达的盲區检监测系统,也适用于仅有一个雷达的前碰撞预警系统。
2 车载毫米波雷达系统介绍
毫米波雷达用于盲区监测时,一般需要两个雷达模块,分别安装在车尾两侧。若仅一个雷达模块(主雷达)连接到车身网络上,则另一个雷达模块(从雷达)与主雷达需通过内部私有CAN连接。从雷达所需的车速、方向盘转角等车身信息都由主雷达转发。
盲区监测雷达系统进行软件升级时,主雷达能通过OBD口按照正常的Bootloader流程进行在线升级,由于从雷达未连接到车身网络,所以无法接收到刷新上位机的刷新数据,此时,需要主雷达在FLASH数据接收完毕并且通过校验后将刷新数据转发给从雷达。
3 CAN Bootloader的下位机设计
3.1 Flash存储空间分配
在线升级需要编写两个项目程序,分别写在FLASH的不同区域,一个项目是应用程序,是产品正常工作时执行的程序,另一个是Boot引导程序,用于引导程序启动和程序更新。以TI公司的DSP芯片TMS320F28335为例,该芯片有8块FLASH空间A~H,每块FLASH大小为32KB[5],其中,应用程序占据其中3个(E、F、G),地址从0x308000到0x31FFFF;为了避免引导程序被误擦除而不能进行应用程序刷新的情况,给Bootloader代码分配单独的一块FLASH空间A,地址从0x338000到0x33FFFF;应用程序是否有效等信息占据另一块单独的FLASH空间B,地址从0x330000到0x337FFF。
雷达系统上电复位后,首先运行在Bootloader中,根据车厂要求,可设置在Bootloader中需要停留的时间Tstay,Tstay时间后,读取FLASH中的应用程序有效标志,若应用程序有效则跳转到应用程序,否则一直运行在Bootloader中。
3.2 下位机Bootloader流程
ISO15765-3中对刷新流程及相关诊断服务进行了定义,不同车厂可能对其有些许改动,一般的刷新流程依次为:进入刷新模式、安全校验、擦除、请求数据传输、传输程序数据、请求退出传输、程序一致性校验、复位。
下位机Bootloader程序的整体流程如图1所示。下位机Bootloader在CAN中断中接收刷新上位机发送的诊断报文,报文的解析与响应的组装由诊断服务处理模块执行。对于擦除、传输程序数据以及程序一致性校验服务,诊断服务处理模块只是分别发起对FLASH的擦除、写以及校验请求,真正的擦写、校验操作由FLASH任务管理模块执行。
3.3 主从通讯管理
主从通讯管理模块是为了实现主从雷达的交互,若检测到从雷达的存在,主雷达则在自身软件升级成功后将刷新数据传递给从雷达。
该模块的功能是依据主从属性执行各自的状态机函数,在Bootloader中接收到诊断报文的雷达模块将自身设为“主”,主雷达的主从交互状态机状态就会从“空闲”切换到“发送复位命令”,通过私有CAN发送数个控制报文(报文头为0x00)帧(若从雷达收到该报文,会从应用程序跳到Bootloader,并回馈响应报文),发送完成后状态机自动切换到“等待复位响应”,主从雷达交互逻辑如图2所示。
主雷达在“等待复位的响应”状态只停留1s,若在这期间内收到控制信息帧的响应报文,主从交互状态机就会从“等待复位响应”切换到“空闲”,否则状态机切换到“刷新成功”,主从属性设为“单一”,表明只有一个雷达存在,该系统为前碰撞预警系统。
主雷达检验程序一致性成功才会开始做刷新数据传输的准备工作,将主从交互状态机直接切换到“请求FLASH数据传输”。该状态下,主雷达将存储应用程序代码的各连续FLASH块的起始地址、大小和总的连续数据块个数发给从雷达。从雷达收到“请求FLASH数据传输”命令后,会对当前的下载条件进行检查,检查成功才会反馈正响应,同时,从雷达第一次收到该命令时还会擦除存储应用程序的所有FLASH区域。
“开始发送FLASH数据”“FLASH数据发送中”“等待传输FLASH数据的响应”三个状态配合完成一个连续数据块的刷新数据的发送,“开始发送FLASH数据”状态下发送数据报文,每发送100帧数据报文就会进入“等待数据发送响应”状态等待从雷达将800个字节成功写入FLASH的响应,数据的分包传输保证了传输的有效性,一方面能避免因一次性数据传输过多导致的从雷达写FLASH时间久而错失后续的数据报文,另一方面,若出现丢帧或者从雷达未能及时处理这些报文,主雷达能及时发现,进而中止传输。
刷新数据全部传输完毕后,状态机会转到“发送校验命令”,主雷达发送校验命令帧,从雷达收到该报文会进行全部刷新数据的校验。
主雷达收到从雷达校验成功的响应报文就会将状态机切换到“刷新成功”,此时,主雷达才会给刷新上位机回馈校验程序一致性成功的正响应报文,进而结束整个系统的软件升级过程。
主从雷达交互的整个过程中,若从雷达在某一阶段未能成功往后执行,如接收到的FLASH数据块起始地址不正确、未成功写入FLASH等,均会回馈一条“负响应”报文。
4 CAN Bootloader的上位机实现
上位机主要配合下位机完成HEX格式的升级文件的下载,主要模块构成如下:
1)文件加載模块:为了保证升级系统的适用性,该模块应能解析任意的符合HEX标准格式的文件。需要解析出的内容包括连续数据块个数、各数据块的起始地址、数据长度以及每个数据块的有效数据。
2)网络状态管理模块:网络状态分为主状态和子状态,主状态包括多帧发送/接收、单帧发送/接收、空闲和超时,为了满足ISO15765标准,每个主状态根据当前报文类型(首帧、流控帧、连续帧)又进行了划分。
网络状态管理模块根据当前主/子状态类型、网络定时器是否超时来切换主状态,同时重设网络定时器以及子状态,以保证请求中各帧的有序发送以及响应的接收。
3)报文接收处理模块:Can模块每次只接收一帧报文,报文接收处理模块需要根据报文类型(单帧、首帧、连续帧、流控帧)切换网络状态,与网络状态管理模块配合完成请求与响应的发送和接收。
4)响应处理模块:负责处理响应报文,同时也是下一条请求发送前的预处理。
若收到的是0x78负响应,不做任何处理,重新设置响应接收超时时间后继续等待下一条响应。
为了避免接收到的报文并非上次请求对应的响应、响应格式错误等问题,每一条请求服务都事先设定了正确的响应内容,若收到的响应内容与设定不符,则清除本次所有请求服务序列、恢复网络状态至空闲,同时提示用户。
每条请求都对应一个响应处理函数的接口,该函数有可能是对本次响应进行解析,也有可能是填充下一条请求报文内容。若响应内容正确,则根据请求直接进入与之对应的响应处理函数。例如收到请求传输的响应后就可以根据响应中最大块数据长度以及本次计划传输的连续数据块大小计算后续需要的传输程序数据请求的个数,根据文件加载模块读取的有效数据填充这些传输数据请求,并确定与之对应的响应,同时确定收到正确响应后的回调函数,即计算数据传输进度。
5 结束语
本文基于车载毫米波雷达对应用程序更新的需求,提出了一套基于UDS的Bootloader方案,该方案不仅适用于单个雷达的前碰撞预警系统,也适用于两个雷达的盲区监测系统。测试表明,开发的Bootloader能稳定擦写FLASH,正确下载应用程序,能很好地应用在两种雷达系统中。
参考文献:
[1] 李华俊.盲区监测变道辅助系统标定方法的研究[J].汽车电器,2017(9):7-11.
[2] 杨胜兵,万宏伟,薛冰,等.基于CCP协议的车载控制器软件刷新系统设计[J].自动化与仪表,2017,32(7):39-44.
[3] 乐志国,金启前.电动汽车整车控制器 BootLoader 功能开发[J].佳木斯大学学报(自然科学版),2014,32(2):237-241,261.
[4] 汪春华,白稳峰,刘胤博,等.基于CAN总线UDS服务BootLoader应用开发[J].电子测量技术,2017,40(2):166-170.
[5] 张卿杰,徐友,左楠.手把手教你学DSP:基于TMS320F28335[M].北京:北京航空航天大学出版社,2015.
【通联编辑:谢媛媛】