基于SCI通讯的软件加载及校验方法
2021-06-16张宝升王超杨恒辉
张宝升,王超,杨恒辉
(中国航空工业集团公司西安航空计算技术研究所,陕西西安,710065)
0 引言
本文设计了一种基于SCI通讯的软件加载及校验方法,在加载/校验过程中对每一包数据的加载/校验地址都进行了合法性判断,保证了加载/校验的正确性;并且采用逐字校对的方法进行校验,防止了“单粒子翻转”效应和加载地址错误导致的产品工作异常。
1 SCI通讯驱动设计
■1.1 通讯协议
本系统所使用的通讯协议见图1。其中S0为开始数据包,S2为加载/校验数据包,S5为结束数据包。
图1 通讯协议[1]
开始数据包表示“通讯开始”,接收数据可设置为固定字符。
加载/校验数据包的接收数据包括加载/校验地址和数据。
结束数据包的接收数据可设置为接收到的加载/校验数据包的总包数。
■1.2 SCI接收处理
SCI接收处理的主要功能是接收上位机发送过来的数据包并进行合法性检查,如果合法,则将接收到的数据包进行转换保存。在接收数据时可设置计数器,对接收到的数据进行计数。
当以下条件都满足时,则判断接收到的数据包合法。
a.第0个字节为'S',且第1个字节为'0'、'2'或'5'[2]。
b.数据长度在合法范围内。
c.数据长度与计数器的计数值一致。
d.SCI状态寄存器不报错。
■1.3 数据转换保存
数据转换处理的主要功能是将SCI通讯接收到的合法数据包进行ASCII码到16进制机器码的转换,并将转换后的数据保存到加载/校验数据缓冲区中。
加载/校验数据缓冲区是一个类型为字,长度可设置的数组。当数据转换保存完成后,若加载/校验数据缓冲区未满,则不进行加载/校验,继续接收下一包数据并转换保存,直到加载/校验数据缓冲区满为止。
2 软件加载设计
本方案的软件加载流程图如图2所示。
图2 软件加载流程图
在加载开始前,上位机会发送开始数据包,加载设备若接收到正确的开始数据包,则会给上位机发送应答信号,可继续加载软件,否则停止加载并报故障。
在加载过程中,为满足软件的模块化加载需求,设计了软件识别信息,通过软件识别信息确定加载地址范围,以此判断加载数据包中的加载起始地址是否合法。若合法,则继续加载;若不合法,则停止加载并报故障。
在加载完成后,上位机会发送结束数据包,软件读取结束数据包中的总包数,并与接收到的加载数据包数进行比较,若一致则判定加载成功,否则会报故障。
关于故障信息和提示信息,如下设计:
a.未接收到开始数据包:当软件开始加载时,未在规定的时间内接收到开始数据包,提示此故障。
b.错误的开始数据包:当接收到的开始数据包与期望序列不符时提示此故障。
c.数据传输错误:当接收到的加载数据为非十六进制的非法字符时提示此故障。
d.地址范围越界:当加载数据包中的加载地址超范围时提示此故障。
e.校验错误:当接收到数据包中的校验数据与计算的校验和不一致时提示此故障。
f. flash存储器被锁:当 flash存储器的写允许信号未被激活时提示此故障。
g.加载错误:当从Flash存储器回读到的加载数据有错误时提示此故障。
h.未接收到结束数据包:当软件加载结束时,未在规定的时间内接收到结束数据包,提示此故障。
i.软件加载成功:当软件加载完成,且未报任何故障时,提示此成功信息。
3 软件校验设计
大部分的软件校验方法是计算软件的校验和,并和固化的校验和比较,若一致则校验正确,否则校验错误。当“单粒子翻转”效应导致偶数个二进制位发生翻转时,该校验方法就不能校验出软件错误,致使软件继续往下执行,导致产品工作异常。
另外,当软件加载到错误的地址时,该校验方法也可能校验不出错误,比如某段代码的正确的地址为0x20000~0x20021,如图3所示。假设在加载过程中发生错误,误加载到地址0x20040~0x20061中,如图4所示,其它代码均一致。这种错误只比较校验和是检查不出来的,只有用本方案的校验方法才能检查出来。
图3 地址正确的代码
图4 地址错误的代码
图5 软件校验流程图
本方案设计的软件校验方法为:通过SCI接口接收上位机发送的“S数据包”,然后解析,解析完成后和对应地址的代码按字进行校对,直到将所有代码校对完。校对完成后若全部一致则校验正确,否则校验错误。本方案的软件校验流程图如图5所示。
4 结束语
本方案在加载/校验过程中对每一包数据的加载/校验地址都进行了合法性判断,保证了加载/校验的正确性;并且采用逐字校对的方法进行校验,防止了“单粒子翻转”效应和加载地址错误导致的产品工作异常。但由于要进行数据合法性检查和转换,会导致时间较长,若不考虑时间因素,本方案不失为一种稳定可靠的软件加载/校验方案。