一种基于YModem协议的极简远程加载实现方法

2020-10-26 16:42刘晓旭陈振杰张建伟马国驹
计算机与网络 2020年18期

刘晓旭 陈振杰 张建伟 马国驹

摘要:针对外场环境中无法使用JTAG调试口对数字信号处理器(DSP)代码进行在线升级的问题,对YModem数据传输协议及远程加载基本原理进行简要介绍。提出了一种基于YModem协议的极简远程加载实现方法,可以用最小的代码量,利用串口对DSP代码进行远程升级,解决外场升级DSP的障碍。通过实验证明了极简远程加载实现方法的完整性及可用性。

关键词:YModem协议;远程加载;数字信号处理器;Bootloader

中图分类号:TP316文献标志码:A文章编号:1008-1739(2020)18-57-4

0引言

DSP是一种在数字信号处理技术基础上发展起来的微处理器,因具有强大的数字信号处理能力而在各种测控终端中获得广泛应用,主要应用是实时快速地实现各种数字信号处理算法[1]。在DSP的开发设计过程中,一般采用JTAG口完成软件调试及应用程序的加载固化。

随着电子技术的发展和用户需求的提升,对已投入使用的DSP设备的升级越来越频繁,传统的升级方法是取下设备通过JTAG仿真器在线更新程序[2]。该方式简单方便,但当DSP安装于密封、远程及高空等难以拆卸的设备中时,就十分不便,因此开发高效便捷的远程升级技术迫在眉睫。

较早的远程加载方法一般不采用任何协议,通过Bootloader直接进行串口数据的接收及存储,此类方法虽然简单直接,但是一旦传输过程中出现误码,需要将全部数据重新传输一次,效率较低。基于高效且准确的远程加载需求,提出一种基于YModem协议的极简远程加载实现方法,用最小的内存空间实现DSP应用程序的远程加载更新,并成功进行了工程验证。

1 YModem协议

XModem及YModem是应用十分广泛的异步文件传输协议。其中,XModem协议结构简单,但每包数据帧最长仅能传输128 Byte数据,效率较低;YModem是由Xmodem改进的一种稳定快速的传输协议,单包传输数据长度提升至1 024 Byte,传输效率更高且可以实现批量传输,因而应用更为广泛。

YModem是一种半双工协议,不能同时双向收发控制信号,有助于控制流量、减少缓冲区超限问题。YModem是一种握手协议,发送之后需等待回应:发送方每发送一帧数据,都要等待接收方的确认应答,收到应答后再发送新的一帧数据。如果接收方由于某种原因未能正确接收到此帧数据,会向发送方发送重新传输数据帧的申请,则发送方会重新发送此帧数据,直到接收方正确接收。这种机制与CRC校验共同保证了数据传输的准确性。同时,分包传输、分包校验的传输机制,可以及时发现误码,及时重新传输出错数据包,提高数据传输效率。

依据YModem协议,每一帧的发送数据由帧头、数据段以及帧尾组成,具体格式如表1所示,其中数据段长度可以是128 Byte(帧头为SOH),也可以是1 024 Byte(帧头为STX),采用1 024 Byte数据一帧的传输方式,可以大大提高传输速度[3-4]。

YModem协议传输的完整握手流程如图1所示。

YModem通信协议握手流程如下:

①接收方发送字符C通知发送方,启动握手流程,进入等待SOH状态,如果没有回应,则重新开启或超时退出;

②发送方开始时处于等待过程中,等待接收方的启动信号C,收到接收方发送的字符C后,发送方发送帧头为SOH的文件信息包,包含序号以及文件名、文件大小等信息,然后进入等待字符ACK状态;

③接收方收到文件信息包,进行CRC校验,如校验成功,则发送ACK确认,发送方收到ACK后,进入等待文件传输开启信号,即等待字符C状态;如果CRC校验失败,则发送NAK字符,请求发送方重新发送此数据包;

④接收方發送字符C,通知发送方启动文件发送,进入等待SOH或STX状态;

⑤发送方接收到字符C后,进入正式文件发送流程,发送数据包,等待接收方回复ACK后继续发送下一包;

⑥文件发送完毕后,发送方发出EOT结束信号,接收方回复ACK后,发送方发送以全0填充、序号为0的SOH数据包,接收方回复ACK,至此握手过程结束。

如上文所述,利用YModem协议完善的握手机制和出错管理机制,引导程序可以准确无误又快速地接收到包含应用程序的数据包。

2远程加载基本原理

DSP远程加载的实现共涉及三部分程序:引导程序(Bootloader)、应用程序以及上位机程序。其中,Bootloader和上位机程序是固定不变的,是远程升级系统的主要组成部分,应用程序是DSP开发者编写的用以完成指定功能的代码,会随应用需求的变化而变化。

2.1 Bootloader

Bootloader是提前固化在DSP指定空间、在DSP内核启动前运行的一段程序,对应用程序编程用户保护、不可被修改,主要作用有:

①初始化硬件设备及内存分配;

②与上位机进行数据交互,接收上位机发送的待升级程序固件与程序存储地址等信息,并将固件烧录至Flash指定地址;

③完成程序升级后,跳转至应用程序。

Bootloader的功能相对简单且固定,因而具有很好的通用性,易于移植。远程升级的实质就是通过Bootloader来固化应用程序,不用改变DSP芯片的启动方式,直接采用默认的片上Flash启动方式即可。

2.2上位机程序

上位机程序的主要作用是对应用程序编译生成的文件进行格式转换、信息提取以及打包发送等功能[5-8]。

由DSP开发工具编译生成的可执行文件地址不连续,且对象文件格式无法直接用于Flash烧写,因而需要通过上位机程序将应用程序编译生成的.out文件转换成.hex文件,再将转换后的.hex文件打包发送给Bootloader。

2.3远程加载实现

远程加载的工作流程如图2所示。

①上位机程序对.out文件进行格式转换和信息提取;

②Bootloader及上位机程序通过特定协议进行可烧录的应用程序的数据传输;

③Bootloader将应用程序数据烧写至Flash的指定区域,并跳转至应用程序入口,启动DSP。

3基于YModem协议的极简远程加载实现

3.1实现方法

提出一种基于YModem协议的极简远程加载实现方法,和普通远程加载方法相比,本文方法主要有以下改进:

(1)数据传输协议的更新

使用YModem协议进行Bootloader与上位机软件之间的数据传输,握手机制以及分包传输和分包校验的操作流程,提高了数据传输的效率及准确率。

(2)Bootloader的优化

由于Bootloader与应用程序共同占用DSP内存空间,而DSP内存空间毕竟有限,因此Bootloader要设计的尽量小。

在Bootloader与上位机之间的数据交互过程中,如果将所有数据帧内的有效数据都存入寄存器中,待数据传输完成之后再一起进行Flash烧写,那么势必需要在Bootloader中开辟一个很大的存储空间。本着节省内存空间的原则本例只开辟收、写2个独立的1 KB寄存器空间,一个寄存器用来存放当前收到的一帧1 KB数据内容;另一个寄存器存放待写入Flash的数据。当收寄存器收到数据并校验无误后,将其写入写寄存器,同时清空收寄存器,用以继续接收上位机软件发送的数据;写寄存器判断有数据写入后,开始向Flash写入,具体实现流程如图3所示。通过分析,以烧录一个大小为1 MB的应用程序为例,此极简加载方法可以节约DSP中原本为存储数据而开辟的950 300 Byte的RAM内存空间。

3.2实现过程

经过以上改进,提出的基于YModem协议的极简远程加载实现方法可以在占用最少内存资源的前提下,实现较传统远程加载方法更高效更准确的传输。

SecureCRT是较为常用的上位机软件,可实现XModem、YModem以及ZModem协议的数据传输,本例使用SecureCRT作为上位机软件,以TI公司的OMPL138为硬件平台,对提出的基于YModem协议的极简远程加载实现方法进行工程验证。

利用上位机软件SecureCRT向Bootloader发送.hex文件,Bootloader依据YModem协议校验解析数据帧并存入寄存器,再将寄存器中的.hex文件烧录至Flash中,即完成远程加载。数据传输完成后SecureCRT应用界面如图4所示,数据传输完成100%且0 Errors,表示数据传输全部完成且未出现传输错误,对以OMAPL138为核心的终端设备断电重启,软件显示已更新至新版本。至此,提出的基于YModem协议的极简远程加载实现方法已在硬件平台上完成验证。

4结束语

提出了一种基于YModem协议的极简远程加载实现方法,经工程验证,此方法可以用最小的内存代价快速稳定地实现DSP应用程序的远程加载。不仅如此,由于YModem协议规定发送方需要向接收方发送数据的文件名和大小,这就使得采用YModem协议进行的远程加载还可以根据实际应用需求对本文提出的方法进行改进,如实现Flash分区存储不同的应用程序,用户可以根据需求选择不同的应用程序运行。

参考文献

[1]刘瑞.DSP系统的CAN总线远程升级方法[J].微型机与应用,2016,35(13):71-72,75.

[2]李无言.一步步写嵌入式操作系统[M].北京:电子工业出版社,2011.

[3]吴兆芝.ARM平台多进程微内核嵌入式操作系统Ymodem下载功能设计与实现[J].南京晓庄学院学报,2013,29(3): 79-83,89.

[4]戈润栋,马旭东.CAN总线分布式系统程序的以太网在线更新[J].工业控制计算机,2013,26(11):19-20,24.

[5]雷卫延,敖振浪,周钦强.基于STM32的在线应用编程(IAP)开发[J].电子测量技术,2015,38(5):62-66.

[6] MENG H,PAN L.Realization of Remote Update Technology for Embedded Equipment based onμC/OS-Ⅱ[J].Journal of Measurement Science and Instrumentation,2014(3):69-72.

[7]羅文,王莉娜,肖鲲.基于GPRS的嵌入式系统远程监控和升级[J].电子技术应用,2010,36(5):159-162.

[8]吴佳敏.嵌入式远程工业监控系统的终端设备软件设计与实现[D].成都:电子科技大学,2010.