基于TMS320F281x的电动舵系统软件远程在线升级的设计与实现
姜杰 郭源霖 肖俊伟
生成PDF 清样下载 引用

复制成功

导出题录

参考文献( GB/T 7714-2015 ) 复制

姜杰 郭源霖 肖俊伟,. 基于TMS320F281x的电动舵系统软件远程在线升级的设计与实现[J]. 软件工程研究,2023.9. DOI:10.12721/ccn.2023.157086.
摘要: 针对电动舵系统在研制生产过程中存在的软件升级复杂问题,在工程实践的基础上提出了一种基于TMS320F281x的远程在线升级方法,能适应多种通信接口,有效解决产品调试过程中软件升级复杂问题,并大大提高了电动舵机研制和生产的可维护性与扩展性。
关键词: DSP;电动舵系统;在线升级
DOI:10.12721/ccn.2023.157086
基金资助:

1前言

TMS320F281x处理器(以下简称F281x)是美国德州仪器公司(TI)的32位定点数字信号处理器(DSP),主要应用于伺服电机控制等领域。随着近年来电动舵系统在众多领域的使用,F281x处理器在数字控制领域得到广泛应用,但还没有详细具有可实施性的程序在线升级资料可供参考。F281x片内拥有128 KBx16位的F1ash存储器数据区,可以满足绝大多数程序及数据的存储需求,将程序烧写到片内Flash的最简便方法可利用TI的烧写插件通过JTAG进行,但在实际工程应用中,产品交付后往往需要在不拆盖的情况下对软件进行升级,且JTAG的线引到外面后容易受到干扰而使程序跑飞,所以远程在线升级功能是对电动舵系统研制生产的重要内容。

本文根据电动舵系统的工作特点,提出一种通过RS-485、1553B等总线接口的远程在线升级方法,详细介绍了其设计方法与操作步骤,并已在工程项目中验证了该方法的可实施性。

2设计思路

通过TI公司CCS3.3编译的代码产生工具所产生的目标文件是一种COFF文件格式,即.out文件。数据在COFF格式文件中以段形式形成,不同的段存放不同类型的内容。应用中通过编写连接器命令文件(.cmd)将这些段正确地分配到DSP的地址空间,DSP集成开发环境CCS经编译链接之后。生成.out文件和.map文件,.map文件详细描述了.cmd文件中定义的各段起始地址以及使用长度。COFF文件格式DSP能够识别,但不能直接烧写到Flash存储器,必须将.out文件转换为DSP能识别的数据格式,即hex的数据文件。

实现远程在线升级的软件分为上位机软件、DSP底层软件和DSP内部升级模块。上位机软件主要用于.out文件的格式转换和数据传输等,而底层软件主要将串口发送的数据烧写至Flash。F281x每次上电复位,先运行DSP底层软件,判断是否需要重新烧写Flash。若需要,则将串口发送的目标代码或舵系统参数烧写至F281x片内Flash指定扇区,否则将继续执行原有的用户目标代码。DSP内部升级模块主要用于接收在线升级数据,控制在线更新配置开关状态和完成Flash存储器的擦除与写入操作。

3设计与实现

3.1可执行文件转换方法

上位机软件主要实现人机界面转换,完成用户程序解析等工作,可使用VC++或者Labwindows设计编写。上位机软件实现以下功能:通信状态检查,转换.out文件,传输hex格式数据。

可利用TI公司提供的hex2000生成工具将.out文件转换为可以直接烧写到FLASH的hex文件格式,hex文件格式包括ASCII-Hex、Intel、TI-Txt等格式。hex2000生成工具在CCS 3.3安装包中附带。

3.2DSP底层软件实现

F281x底层软件主要是根据上位机传来的命令进行相应操作,若启动在线升级则进行擦除flash、写flash或进行校验操作;否则就执行原目标代码。远程在线升级可以将代码烧写到F281X内部Flash,烧写F281x内部flash可以使用TI提供的API函数库烧写技术,API函数库烧写技术是利用TI公司的编程算法。该算法定义良好,操作简单,可以脱离烧写插件运行。API烧写算法包含:

a)擦除flash函数:Flash_Erase(SectorMask, FEraseStat),其中SectorMask为擦除扇区,FEraseStat为返回状态,若为0则擦除成功,若为1则擦除失败。

b)烧写函数:Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus),其中Flash_ptr为烧写的内部flash起始地址,Buffer代码接收后暂时存放的起始地址,Length为代码长度,ProgStatus为返回状态,若为0则烧写成功,若为1则烧写失败。

c)校验函数:Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus) ,其中Flash_ptr为烧写的内部flash起始地址,Buffer代码接收后暂时存放的起始地址,Length为代码长度,ProgStatus为返回状态,若为0则校验正确,若为1则校验错误。 

3.3将API函数从FLASH中搬运到RAM中

由于F281x不能用flash的一个扇区去操作另一个扇区,不仅要把初始化flash寄存器的函数搬运到RAM中,API有关函数及文件也要搬运到RAM中运行。

3.4程序上传更新

 a)在进行程序上传更新前应先擦除DSP内部Flash存储器单元的ABCD区,但不能擦除DSP内部Flash存储器单元的其它数据存储区。

擦除Flash存储区具体流程见图1中(a)图所示。

1.png

图1工作流程

 b)按3.1节方法将可执行文件转换为hex格式数据,转换后的数据较大,需将代码段分多次写入到Flash存储器的ABCD数据区内,完成程序代码的更新。

程序数据写入Flash存储区具体流程图1中(b)图所示。

3.5 舵系统参数上传更新

通常,舵系统的参数包括舵系统的控制参数、电位计的线性度参数以及电气零位参数等,相比电液舵机和模拟式控制的电动舵机利用电路调整方式,采用数字式控制器的电动舵机可以通过软件设置电位计的线性度、控制参数和电气零位等参数,舵机研制生产中可以采用参数上传更新,简化舵系统调试流程,大大提高了产品调试效率。

在进行舵系统参数上传更新前应先擦除DSP内部Flash存储器单元的E区(以E区为例),但不能擦除DSP内部Flash存储器单元ABCD数据存储区,在Flash存储器单元的E区擦除完成后,将上传参数写入Flash存储器单元的E区,完成舵系统参数上传更新操作。

舵系统参数上传更新具体流程图1中(c)图所示

4结论

本文根据电动舵系统的研制工作实践基础,提出了一种基于F281x的远程在线升级方法,利用Flash远程在线升级技术,可以根据产品实际需求及时更新,提高了产品的可维护性和扩展性,该技术能在一定程度上提高我厂电动舵系统的研制生产效率,同时,使我厂掌握了电动舵系统研制中的一项重要技术,提升了我厂在电动舵系统领域的竞争力。

为便于我厂设计人员在项目研发中尽快掌握应用此更新技术,本文给出了关键部分程序及流程。在实际应用中应注意事项:

a)上传的代码尽量不要在DSP空间运行,程序容易受干扰跑飞;

b)调用F281x的API相关代码必须搬运到RAM中运行,否则会对片内Flash造成损坏;

c)在线升级过程中确保应DSP供电正常,否则可能会对片内Flash造成损坏。

参考文献:

[1] TMS320F281x Control and Interrupts Reference Guide (Rev.A).Texas Instruments. 12 Oct 2012.

[2] TMS320F281x Boot ROM Reference Guide (Rev.B).Texas Instruments. 05 Nov 2004.

[3] 《TMS320X281x DSP原理及C程序开发》.苏奎峰,吕强,等.北京:北京航空航天大学出版社,2011.

》在线投稿系统

*文章题目:
*作者姓名:
*电子邮箱:
*通讯地址:
*联系方式:

  备      注:

*上传稿件:

支持上传.doc,.docx,.pdf,.txt,.wps文件

投稿须知:

1、审稿结果将于1~7个工作日以邮件告知,请注意查收(包含录用通知书、审稿意见、知网CNKI查重报告)。

2、提交投稿后,若7个工作日之内未接到录用通知,则说明该文章未被录用,请另投他刊。

3、凡投寄本刊稿件,如在内容上有侵权行为或不妥之处,均应文责自负。本刊有权对来稿进行文字编辑、加工和修改,如不同意,请附说明,以便妥善处理。

4、多作者文稿署名时须征得其他作者同意,排好先后次序,通知用稿后不再改动。

5、凡投往本刊稿件一经录用发表,其版权归本刊所有。

6、本刊已全文录入中国知网、万方、维普等数据库,如作者不同意被收录,请提前申明,未申明者,本刊一律视为同意被收录。

7、请勿一稿多投。