基于GB/T32960的车联网终端固件自更新系统设计*
2018-07-13余楚礼夏鹏齐同启马敬德
余楚礼 夏鹏 齐同启 马敬德
(天津清源电动车辆有限责任公司)
根据GB/T 32960—2016《电动汽车远程服务与管理系统技术规范》[1]要求,电动汽车需要配备车联网终端,用于监控车辆的运行状态、故障状态、电池状态、电机状态及运行里程等信息。由于监控需求的变化,车联网终端的软件和配置文件的更新是必须的。传统的车载电控单元的更新方法是使用串口或者CAN卡逐台更新[2],效率低下,会消耗大量的人力物力。车联网终端本身是可以和服务器进行通信的,因此让车联网直接联网更新自身软件程序和配置文件是完全可行的。车联网终端设计和平台设计相关的研究很多[3-7],但是车联网终端的远程更新相关的研究很少。文章设计了一种更新系统,让车联网终端能借助4G网络对自身固件进行更新。由于网络传输和数据存储过程中的不可靠性,数据的每一步确认都使用了md5校验,来确保刷写到终端程序的完整性。
1 系统设计
系统由车载终端、服务器及PC客户端3个部分组成,这3个部分完成固件更新的整体进程如下。
1)PC客户端将开发人员持续完善的新固件程序传输到服务器,同时发送固件程序数据的md5校验码和版本号。服务器接收PC客户端的新固件程序数据和md5校验码,并计算接收到的新固件程序数据的md5校验码,核对无误后将固件程序数据、md5校验码及版本号存入到数据库。
2)服务器接收终端的登录请求和终端的版本信息,比较版本号,如果版本号不一致,发送更新的指令。
3)终端接收服务器发送的固件程序数据存入到闪存中,接收md5校验码和版本号存入到闪存中,计算固件程序数据的md5校验码,核对无误后设置更新标志。
4)终端重启,读取更新标志,如果需要更新,计算闪存中新固件程序数据的md5校验码,核对无误后刷写终端的程序闪存更新固件,并更新版本号,清除更新标志。
2 md5校验
由于固件更新过程中要进行多次的传输和写入,因此为了确保数据的完整性,采用了md5校验的方法保证数据的完整性。
md5是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。md5算法具有4个特点:1)压缩性。任意长度的数据,算出的md5值长度都是固定的。2)容易计算。从原数据计算出md5值很容易。3)抗修改性。对原数据进行任何改动,哪怕只修改1个字节,所得到的md5值都有很大区别。4)强抗碰撞。已知原数据和其md5值,想找到一个具有相同md5值的数据(即伪造数据)是非常困难的。
基于以上原因,md5能够保证数据的完整性。
3 车联网终端程序
现代的汽车电控单元一般都会设计Boot Loader程序,Boot Loader程序的作用是用来更新固件程序和引导进入固件程序。
车联网终端的程序由Boot Loader程序和固件程序两部分组成,启动过程如下。
1)Boot Loader程序首先从闪存读取固件升级标志位。如果没有更新要求,直接跳转到步骤3)。
2)读取存储在闪存上的固件,计算md5,并和存储在闪存上的md5进行比较,如果相同,进行固件更新,在固件程序更新完成后,清除固件程序更新标志位;如果md5校验失败,不进行固件更新,直接清除固件更新标志位,跳转到固件程序。
3)固件程序开启CAN卡、GPS模块及4G模块。通过4G模块连接服务器,连接成功后发送Sim卡的iccid卡号进行登录。登录成功后,发送当前固件版本信息,接收服务器端的反馈信息。如果服务器不要求更新固件,按照文献[1]的要求周期发送相关信息。如果服务器要求更新固件,则固件程序接收数据和md5校验码,写入到闪存中,核对无误后设置更新标志。待下次上电后,Boot Loader程序检查更新标志,如果更新标志被设置了,则刷写程序Fl ash更新固件程序。
车联网终端程序的流程,如图1所示。
图1 车联网终端启动流程图
4 PC客户端设计
PC客户端负责将新版固件程序传送到服务器。PC客户端的程序流程如下:
1)载入包含新固件程序的文件,计算md5校验码;
2)请求服务器接收新固件;
3)发送新固件程序的数据、md5校验码及版本号到服务器;
4)接收服务器的反馈,完成更新过程。
PC客户端运行流程,如图2所示;PC客户端操作显示界面,如图3所示。
图2 PC客户端运行流程图
图3 PC客户端操作显示界面
客户端选择Load File载入数据后,填入新的版本号,选择Update后即可以将新固件程序写入到服务器数据库,当终端连接服务器时完成更新。
5 服务器端
服务器端相关程序分为两部分。
第1部分是响应PC客户端的固件更新命令,具体流程:1)接收到PC客户端固件程序更新请求,命令PC客户端发送相关数据;2)接收PC客户端发送的新固件程序数据、md5校验码及版本号;3)计算新固件程序数据的md5,核对无误后写入到数据库;4)通知PC客户端新固件程序更新成功。
服务器端响应PC客户端的运行流程,如图4所示。
图4 服务器端响应PC客户端的运行流程图
第2部分程序是响应车联网终端的,具体流程:1)响应车联网终端的登录请求,如果身份验证合格,接收连接;2)接收车联网终端的版本信息数据,并与服务器端数据库内的版本数据进行比对,告知车联网终端是否需要更新;3)如果无需更新,直接按照GB/T 32960的要求执行;4)如果需要更新,发送新固件程序数据、md5校验码及版本号到车联网终端。
服务器端响应车联网终端的运行流程,如图5所示。
图5 服务器端响应车联网终端的运行流程图
6 结论
文章基于GB/T 32960设计了车联网终端的固件自更新系统,实际测试显示固件程序更新系统运行稳定可靠。由于使用4G模块进行联网下载,彻底摆脱了人力干预,无需车主去售后服务站进行固件更新,减轻了售后服务站的工作难度;同时固件程序的更新能够做到更及时以便修复潜在的bug。因为固件程序的安全要求很高,整个更新的过程中进行了4次md5计算校验,确保写入到车联网终端上的固件程序的完整性。