APP下载

电推进系统计算机的在线优化升级研究与设计

2019-04-04马维华赵怀林朱纪洪华国琳祝波

现代电子技术 2019年6期
关键词:扇区串口升级

马维华 赵怀林 朱纪洪 华国琳 祝波

关键词: 电推进系统; 在线升级; TMS320F28377; 串口; Bootload; DSP程序

中图分类号: TN409?34                       文献标识码: A                         文章编号: 1004?373X(2019)06?0038?05

Abstract: During the engineering design study of the electric propulsion system, it was found that all the drives and control boards are sealed inside the electric propulsion system, except the commonly?used serial ports, which brings a lot of inconvenience to the optimization and upgradation of the entire electric propulsion system. Therefore, a system convenient for updating and upgradation is needed to be researched and designed. The hardware platform based on the TMS320F28377 is adopted for the electric propulsion system. The storage location of the DSP program is reasonably assigned by analyzing the program download process and FLASH_IAP library function of TIs TMS320F28377. The LabVIEW and Bootload programs are designed to upgrade and optimize the DSP program, so as to upgrade and optimize the entire electric propulsion system. The experimental results show that the online optimization and upgrading system is convenient, safe, and stable in operation.

Keywords: electric propulsion system; online upgradation; TMS320F28377; serial port; Bootload; DSP program

0  引  言

電推进系统[1]结构精密而且空间紧凑。为了保证电推进系统的飞行平稳,考虑到空气动力学因素,应该让飞机呈现流线型设计。而且为了保证系统的安全可靠,一般都会将一些硬件电路密封保存在电推进系统的内部,仅仅留出少量的接口在外部。但通信串口往往会留出来,用于进行和外部设备的信息交流和数据的监测,所以串口成了系统更新优先考虑的方式。

在电机的控制系统中,为了满足高能效和连通性设计的需求,开发出了DSP+FPGA架构,该结构已成为电路设计的主流。其中DSP(TMS320F28377)作为主控制芯片,实现复杂的控制算法以及外部端口信号的监测;FPGA(EP3C25E144C7N)利用其大规模硬件资源,实现接口扩展。在电推进系统中,主要需要给主控制器DSP进行在线优化和升级。

通过对DSP的JTAG仿真器烧写程序进行分析,DSP内部的代码储存在代码段,而数据则是储存在数据段。程序通过下载器下载时,首先将程序下载到FLASH的一个片区中,当片区的空间不够时,才会使用下一个片区。这样当程序运行时,就会将FLASH中的代码转移到RAM中运行。当运行代码需要调用到数据时,就会回到FLASH中去读取,这样就实现了整个程序的下载和运行流程。

TMS320F28377具有片内的单口随机储存器SRAM、只读储存器ROM和FLASH储存器[2]。在芯片出厂时,已经在芯片的启动ROM区集成了Bootloader程序,用于对DSP的相关引脚进行检测,从而选择不同的启动模式。在DSP中有很多种启动模式,在不同的模式下可以很方便地更新和升级程序,但是在一些特殊的场合,不可能手动切换系统的启动模式。为了保障系统能够稳定安全的运行,一般将DSP的GPIO72和GPIO84引脚用上拉电阻设为高电平,这样TMS320F28377就从FLASH中启动。但是设置了启动模式之后,DSP的系统更新和升级就有了很多限制,本文是基于这些种种限制的情况下,开发出的一套系统升级和优化的系统,方便在电推进系统等特殊的场合下进行的系统移植和优化。

1  控制器程序在线升级方案

电推进系统主要包含提供动力的推进系统和提供电能保障的供电系统,此外还需要储能系统、保护系统等一系列辅助、支持系统等,整体设计框图如图1所示。电推进系统是为电动飞机提供动力,保障电动飞机的正常运行,其系统需要具备高可靠和便于维护的特点。而电推进系统控制器的在线优化升级是属于上位机中的一部分,主要是对主控器DSP进行程序的在线升级和优化,为电动飞机提供了一套安全方便的系统更新方案。

在FLASH启动模式下的在线优化升级电推进系统如图2所示。首先需要将启动程序在升级CMD文件模式下编译通过之后,通过JTAG仿真器下载到FLASH中;然后通过LabVIEW设计的升级服务软件实现系统的升级与优化。

在DSP上电之后,DSP会调到FLASH启动的起始地址0x080000。这个地址存放着程序的codestart的起始地址。所以,只需修改0x080000存放的值,就能决定执行那一段程序。当然也可以通过汇编指令跳转到程序的codestart执行。Bootload程序的功能就是在每一次启动电推进系统时,程序指针会自动指向固化在控制器FLASH中的Bootload程序。Bootload程序运行后,首先把自己从FLASH H扇区中的程序搬移到DSP内部的RAM程序区中运行,提高运行速度。然后进行串口的配置和等待串口更新指令,并为在线优化升级系统做准备条件。如果没有更新指令,会跳转到FLASH E扇区,进行原始程序的运行。在原始程序运行时,程序指针将重新跳转到_c_int00中断去执行程序[3],初始化C运行环境。一旦运行环境初始化完成,就可以执行原始程序中main()主函数。

如果接收到更新指令,则系统开始等待串口传输的更新程序数据,并对串口传输的程序数据进行分析和处理。然后通过FLASH_IAP库函数将FLASH E扇区进行擦除,并且将已经处理之后的更新程序数据拷贝到FLASH E扇区中,就完成了更新程序对原始程序的覆盖。在下一次上电重启,系统在没有更新响应时,就会把烧写在FLASH中的更新程序和有用信息全部复制到DSP内存空间中去执行。

在电推进系统控制器在线优化升级系统中,主要是对DSP内部程序进行升级和优化。升级和优化系统的关键是需要设计一个Bootload启动程序,用于对系统是否进行更新程序的选择。而Bootload启动程序应该包括两个部分:CMD文件的编写和配置程序的编写。CMD文件是用来指示存储空间和分配段到存储空间。在电推进优化系统中需要设计两个CMD文件:升级CMD和用户CMD文件,主要进行不同程序的空间分配。升级CMD文件用于对Bootload程序分配固化储存空间和分配装载的FLASH_IAP库函数空间,为更新程序准备更新环境。而用户CMD文件用于对当前的用户程序分配指定的FLASH扇区,而且不能占用Bootload程序的空间,保障用户程序能够独立的运行。

1.1  FLASH_IAP库函数

FLASH_IAP是TI公司提供的编程算法。该算法主要实现用户自己的程序在运行过程中对User FLASH的部分区域进行擦除和编程,目的是在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。FLASH_IAP定义了一系列的软件外围功能,可以完成对FLASH模块的编写和擦除。

使用FLASH_IAP完成FLASH编程[4]需要以下几步:工程需要包含FLASH_IAP的頭文件和库函数; 匹配目标FLASH;擦除目标FLASH;编写到目标FLASH;校验目标FLASH。

TI公司提供的FLASH_IAP库函数中以下三个函数[5]最为重要:

1) Flash_Erase(SectorMask,&FStatus)。其功能是在升级优化系统之前,将控制器FLASH中指定扇区的程序或数据进行擦除并返回是否擦除成功的状态。

2) Flash_Program(&FlashAddr,&BuffAddr,Length,&FStatus)。其功能是只需填写储存更新程序的起始地址,就能将程序烧写到指定空间,且判断操作是否成功。

3) Flash_Verify(&FlashAddr,&BuffAddr,Length,&FStatus)是校验每条烧写到指定储存空间的主程序。

1.2  CMD文件的编写

DSP控制器程序中的代码和数据是以段的形式形成,不同的段存放不同类型的内容。在使用时,需要通过编写连接器命令文件(.cmd)将这些段正确地分配到DSP的地址空间。在生成Bootload程序时,需要加载CMD文件然后编译通过。升级CMD文件在设计时,首先需要加载FLASH28377_API_V210.lib库,把这个库加载到FLASH中的一个片区,之后主程序需要对FLASH28377_API_V210.lib搬移到RAM中,如果在FLASH中运行要比在RAM中运行速度慢70%~80%,显然这样的速度对于增强型的DSP不能满足,于是需要将库搬移到RAM中运行。而Bootload程序也需要进行同样的操作搬移到RAM中,充分利用资源。加载完库之后,还需要对.out文件中的不同段进行分配,对DSP中已初始化的段和未初始化的段进行分配。通过串口传输的用户代码,也需要分配一个空间进行存储,可以在升级完成之后,让程序能够独立运行。如果空间不够,可以通过修改扇区地址进行扩充到其他扇区。升级CMD文件编写见图3。

在每次通过Bootload程序烧写用户程序时,编写的用户程序也需要一个用户CMD文件。用户CMD文件是一个独立于Bootload程序的链接命令文件。让储存在控制器FLASH中指定扇区(FLASH E片区)的用户程序能够独立正常的运行。也就需要将这个扇区进行合理的分配,将所有的汇编指令和全局静态变量都分配到这个扇区内,重新分配代码的开始段,所有的段也需要分配这个指定扇区中。若空间不够,可以扩充到其他扇区,但升级CMD文件也要做同样的修改。用户CMD文件编写见图4。

1.3  Bootload程序的设计

在电推进系统控制器的在线优化升级中,CMD文件是分配储存空间,而Bootload程序是配置SCI串口和编写升级代码到指定的FLASH扇区。二者只有一起编译才能生成固化到FLASH中的启动程序。在主函数中,程序首先初始化PIE和串口,通过TI提供的CsmUnlock函数解锁DSP,然后初始化FLASH和将FLASH_IAP库函数加载到FLASH并初始化。这时只要上位机发送来数据,串口接收到数据,通过对数据帧的分析,按照HEX文件的格式,分析每一帧数据,然后将每一帧数据按照地址写入到内存中。最后通过FLASH_Program函数将代码写入FLASH,就完成程序代码的固化。流程图见图5。

2  系统在线优化升级文件

电推进系统控制器的在线优化升级是通过通信串口给控制器进行升级的。为了让DSP能够用串口进行数据的传输,需要将数据文件进行格式的转换。TI公司提供DSP集成开发环境[6]。CCS对整个工程文件进行编译、链接后生成的是模块化文件:COFF格式,即.out文件[7]。它有着复杂的结构,不仅包含了以段的形式组织的代码和数据,而且还包含了文件头、符号表、段地址、初始化段入口等信息,但是该文件格式的模块化结构不能用来进行串口数据的传输。于是需要转换成串口能够识别的数据类型。于是将需要将.out文件转换成HEX文件。串口通信是串口数据按位发送和接收字节,在DSP中,数据都是以二进制的形式存储,在串口发送数据时首先将待发送的数据转换为对应的ASCII码,然后将这些ASCII码按照二进制方式一位一位的发送。

2.1  COFF文件格式转换

TI公司提供的开发环境CCS中也能实现HEX文件的转换。只需要在Properties中,将Enable C2000 Hex Utility勾选,然后将Output Format Options中的Output format选择为?intel,?i,同时还要设置输入文件的格式,一般来说只要生成的输入格式和Bootload程序中HEX文件的解析格式一致就可以被串口读取和处理。这里设置为16 bit,而输出格式的ROM的宽度为16,设置好之后,下次在运行CCS时,就可以生成HEX文件。

2.2  HEX文件格式

HEX文件[8]格式如图6所示,以冒号开头,第1字节是数据长度,第2,3字节是本行数据的起始地址。HEX文件中的第一帧数据是记录基地址,而之后每一帧的数据是相对于基地址的偏移地址。若要计算出该帧数据的起始地址,只需要将第一帧的基地址左移16位,然后加上该帧的偏移地址。第4字节是数据类型,数据类型有:0x00?数据、0x01?文件结束、0x02?段地址标志、0x03?段地址开始、0x04?线性地址标志、0x05?线性地址开始。之后是数据,最后一个字节是校验和,是将本行记录中除了冒号和最后一个字节之外的所有字节的累加和,校验和等于0x100减去累加和。

3  系统升级服务程序设计

电推进系统的上位机为了监测电推进驱动控制系统,将电推进系统的驱动电流和电压,以及电机的转速等参数通过串口反馈给上位机进行监测,然后在将一些转速,转矩指令通过串口反馈给电推进系统进行调节,让系统能够平稳的运行。而电推进系统升级服务程序是上位机中的一部分,主要是利用上位机的通信串口给控制器进行升级和优化,该设计简单方便,不需要添加其他的硬件接口,充分利用串口资源。

为了辅助电推进系统控制器的在线优化升级,需要在PC端设计一个上位机软件,用于对串口的识别,数据的交流和烧写程序的指示。LabVIEW是NI公司开发的一款可视化、跨平台的虚拟仪器开发平台,采用图形化编辑语言G编程,产生的程序是框图的形式[9]。LabVIEW提供了功能强大的VISA库[10],VISA是一个I/O接口软件库及其规范的总称。电推进系统升级服务程序如图7所示。LabVIEW设计中首先通过调用VISA Configure Serial Port完成對端口号、波特率、数据位、校验位、停止位和流控制的设定。完成了串口属性接口的设置,就可以实现上位机与FLASH板子之间的数据传输,在接收数据之前需要通过VISA Set I/O Buffer Size设置串口接收/发送缓冲区的大小,然后在使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数。如果VISA Read读取到的字节大于串口接收缓冲区中的字节数,那么VISA就会一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数,才能接收到数据。

4  实验结果

首先使用设计的上位机,配置好串口并打開,使LabVIEW上位机和电推进系统控制器进行连接,由于考虑到系统的安全性,在启动系统之前需要设置解锁密码,而后每次升级优化程序时,需要先输入密码进行确认。通信模块中的串口发送模块需要完成单次发送指令、单次文件发送指令。实现方法是将其放到不同线程中,在需要发送指令时开启相关任务并关闭其他发送任务:

1) 打开串口按钮按下之后,在输入框中输入系统密码,并按下发送键,输入的密码由VISA写入到串口下载到板子中。

2) 对于程序文件的下载,先读取所需打开的文件,将其转换为文本文件后再写入VISA由串口发送,并在发送完成后弹出对话框“文件发送完成”。

通信模块中的串口接收模块的方案是将从串口接收缓冲区读取的数据进行读取,并对其是否为空指令进行判断后予以显示。图8是电推进系统控制器在线优化升级的实验结果。在实验中,只需要匹配好串口和波特率,将上位机和控制器进行握手,然后通过发送指令和程序完成对控制器的升级和优化,可以通过显示界面反馈的弹窗和示波器检测到串口波形。该系统成功地将新程序通过串口烧写到了控制器的FLASH中。

5  结  论

本文提出一种借助于通信串口来实现内部程序下载更新的方法。该系统通过和LabVIEW升级服务程序连接配合之后,使用DSP内部固化好的Bootload程序,协助DSP完成串口下载,将串口传输的新数据进行处理和翻译,覆盖原始程序代码区,进而完成了程序的下载。从实验测试的示波器波形和电推进系统的工作情况,证明了该方法可行性而且安全可靠,为一些特殊场合提供了可行的方法,提高了系统的可维护性。

参考文献

[1] 张保平,王卫国,王少宁,等.一种新型多路电源在空间电推进系统的应用[J].电力电子技术,2018,52(3):105?107.

ZHANG Baoping, WANG Weiguo, WANG Shaoning, et al. A novel topology of multiple output DC/DC power supply applied to the space electric propulsion system [J]. Power electronics, 2018, 52(3): 105?107.

[2] 陈惠纲,黎驱.基于TMS320F28335的DSP/BIOS系统从FLASH到RAM运行[J].现代电子技术,2015,38(2):65?68.

CHEN Huigang, LI Qu. TMS320F28335?based DSP/BIOS system running from FLASH to RAM [J]. Modern electronics technique, 2015, 38(2): 65?68.

[3] 刘芳,臧威.TMS320C672x DSP引导加载系统的设计与实现[J].微电子学与计算机,2013,30(10):46?49.

LIU Fang, ZANG Wei. The design and implementation of Bootloader system based on TMS320C672x DSP [J]. Microelectronics & computer, 2013, 30(10): 46?49.

[4] Texas Instruments. TMS320F28M35x and TMS320F28M36x Flash API: reference guide (Version 1.53) [EB/OL]. [2018?01?16]. http://www.ti.com.cn/cn/lit/ug/spnu595b/spnu595b.pdf.

[5] 符玉襄,孙德新,刘银年.通过串口烧写DSP片内Flash的新方法[J].科学技术与工程,2013,13(24):7219?7222.

FU Yuxiang, SUN Dexin, LIU Yinnian. A new method of programming DSP′s on?chip Flash via SCI [J]. Science technology and engineering, 2013, 13(24): 7219?7222.

[6] Texas Instruments. TMS320C28x optimizing C/C++ compiler: user′s guide [EB/OL]. [2018?11?19]. http://www.ti.com/lit/ug/spru514r/spru514r.pdf.

[7] 李声飞,代华山.基于串口通信的DSP程序动态加载技术[J].电讯技术,2011,51(6):121?124.

LI Shengfei, DAI Huashan. Dynamic loading technology for DSP program based on serial communication [J]. Telecommunication engineering, 2011, 51(6): 121?124.

[8] 张伟,李文魁,陈永冰.基于GM814X的单片机串口扩展及其应用[J].电子技术应用,2012,38(9):96?99.

ZHANG Wei, LI Wenkui, CHEN Yongbing. Design and implementation of serial port extension based on GM814X [J]. Measurement control technology and instruments, 2012, 38(9): 96?99.

[9] ZHANG Z, CAI L X, WANG Y K. Implementation and application between high stability PC and FPGA serial communication [J]. Applied mechanics and materials, 2013, 331: 344?347.

[10] 张素萍.基于DSP和LABVIEW的串行通讯研究[J].电子器件,2017,40(2):380?385.

ZHANG Suping. Research of serial communication based on DSP and LabVIEW [J]. Chinese journal of electron devices, 2017, 40(2): 380?385.

猜你喜欢

扇区串口升级
分阶段调整增加扇区通行能力策略
小投入,大升级 Polk Audio Monitor XT系列
浅谈AB PLC串口跟RFID传感器的通讯应用
幸福,在“家门口”升级
U盘故障排除经验谈
回暖与升级
基于贝叶斯估计的短时空域扇区交通流量预测
USB接口的多串口数据并行接收方法探索
重建分区表与FAT32_DBR研究与实现
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信