基于Labview的Bootloader上位机实现
2020-12-14田洪杰孔微
田洪杰 孔微
【摘 要】Labview在测控领域应用广泛,其图形化的编程方式较传统的文本编程方式入门难度更低。本文使用Labview编写上位机实现了对S19文件的解析、数据的收发,并结合下位机底层Bootloader程序实现了对控制器程序的刷写。
【关键词】虚拟仪器;Labview;Bootloader
1.技术背景
Labview是美国NI公司推出的一款图形化的编程环境,不同于传统的文本编程环境,Labview通过拖拽连线的方式进行编程,软件内置了大量的功能组件,工程师可以通过对这些组件的组合快速的实现所需的软件功能。 在使用Labview编程时,后端功能逻辑可以与前端界面同步开发,大大提高了编程效率,在SpaceX火箭的地面测控系统中就使用了Labview来编写GUI界面用于发射和控制。本文使用Labview开发了一款车载控制器的Bootloader上位机系统,并实现了对MC9S12XS128控制器的程序刷写,以此来探索Labview在控制器测试开发中的应用。
2.总体设计
Bootloader 上位机主要功能是将编译完成的程序数据刷写到控制器的指定内存区域,实现对控制器程序的更新。上位机读取程序文件,并将文件解析成数据和对应的刷写地址,通过通用接口将这些指令发送给控制器,控制器的底层Bootloader服务程序在芯片级实现数据的更改。软件后台总体分为S19文件解析、USBCAN协议转换、数据刷写等几个功能块。
3.S19 文件解析
S19文件是飞思卡尔公司推出的一种数据存储格式,文件以文本格式存储了编译后的数据和数据存放地址。S19文件在每一行数据(又称记录)的起始都用标明了本行的数据类型。在上位机书解析文件时,关心以S1开头的行即可。以下面的行为例:
S105FF7AC019A8
“S1“表明本条记录存储的地址值长度为2字节,”05“表示数据长度,”FF7A“为数据起始地址,”C019“为从起始地址开始需要写入存储区的数据,”A8“为校验位。在Labview编程时,使用“读取读取文本文件”VI可以方便的读取S19文件,使用“截取字符串“VI可以对数据进行截取,从而对S19文件进行解析。
在控制器执行内部存储区刷写操作时,每次操作是以扇区为单位进行的。程序数据有时并不能完整的填充一个扇区,这时需要对数据进行补齐,补齐时使用“FF“进行填充。补齐扇区的思路为:先检测数据长度,如果数据长度不能被扇區长度整除,那么在数据的末尾使用”连接字符串“VI对数据进行补齐。程序部分框图如下。
4.Boot loader协议
上位机与控制器通过CAN接口通信,通信应用层协议如下,通过前两字节的口令对数据功能进行了定义。上位机将S19文件解析后,结合口令向控制器发送数据指令。在控制器接收到指令后,可以根据指令执行不同的内存操作,从而实现程序的更新操作。
5.USBCAN通讯卡协议转换
上位机使用的是北方半岛仪器的USBCAN通讯卡,由于厂家没有提供Labview版本的二次开发包,需要根据通讯卡的接口协议编写一个简单的协议转换程序。通讯数格式为:FrameHead +Data+CheckSum+FrameTail,控制符为0xA5, FrameHead为连续的两个0xAA, FrameTail为连续的两个0x55,如果Data中含0xA5、0xAA、0x55(即特殊字符),则在发送该字符之前添加一个控制符0xA5。CheckSum为8位校验和,即Data的所有数据之和的低八位。程序框图如下。
6.用户操作设计
上位机的用户交互操作并不是很多,只需要选择端口、选择S19文件和点击刷写按钮。在程序的框图中使用事件结构来相应用户操作即可,另外在上位机中还加入了连接控制器等功能,以确认上位机与控制器的通讯状态。上位机的最终界面如下。
7.结束语
经测试使用Labview开发的上位机系统在实际使用中能够正确的对控制器程序进行刷写,达到了预期要求。与传统的文本编程语言相比此次开发所用时间较传统编程语言缩短50%以上,图形化的编程方式更加直观,更改也更加容易。
参考文献
[1]陈树学,刘萱. LabVIEW宝典[M]. 北京:电子工业出版社,2011,1-602.
[2]混合动力汽车电机控制器硬件设计与CAN通信[J]. 彭朝亮,冯国胜,袁新华. 农业装备与车辆工程. 2017(03).
[3]王宜怀,曹金华. 嵌入式系统设计实战——基于飞思卡尔S12微控制器 [M]. 北京:北京航空航天大学出版社,2011:289-313.