您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > CAN总线实现的ZYNQ-7000程序在线升级方法
敬请登录网站在线投稿2018年第11期63CAN总线实现的ZYNQ7000程序在线升级方法龚行梁,周强,赵天恩,孙浩,文继锋(南京南瑞继保电气有限公司,南京211102)摘要:提出了一种基于CAN通信程序在线升级方法,介绍了在ZYNQ7000片上系统的实现。从系统硬件设计、软件设计描述程序在线升级的实现机制。通过软件上设计的升级服务协议、异常恢复措施等方法提高程序升级过程的可靠性。实际应用和测试结果表明,基于该方法实现的电力二次设备在线升级过程稳定可靠,工程维护简单方便,具有较高的工程应用价值。关键词:在线升级;CAN;ZYNQ7000中图分类号:TP368文献标识码:AOnlineUpgradingMethodofZYNQ-7000SystemBasedonCANBusGongXingliang,ZhouQiang,ZhaoTianen,SunHao,WenJifeng(NRElectricCo.,Ltd.,Nanjing211102,China)Abstract:Inthepaper,anonlineupgradingmethodbasedonCANbusisproposed,andtheimplementationoftheZYNQ-7000systemisintroduced.Thehardwareandsoftwaredesignoftheonlineupgradingsystemaredescribed.Thereliabilityofthesystemisimprovedbythedesignofupgradingserviceprotocolsandabnormalrecovery.Thepracticalapplicationandtestresultsindicatethattheonlineupgra-dingprocessofpowersecondaryequipmentisstableandreliable,theengineeringmaintenanceissimpleandconvenient,andithasgoodengineeringapplicationvalue.Keywords:upgradingonline;CAN;ZYNQ-7000引言电力系统二次设备继电保护、测控设备面对用户越来越多的新需求、软件自身错误等问题,需要及时对设备程序进行升级和维护,改善设备性能,延长设备生命周期。传统的方法需要拆卸设备,通过仿真器或者编程器烧写程序,这种方式在现场调试、设备数量庞大时,维护非常困难。在线升级是被广泛采用的一种方式,这种升级方式可以不受环境的限制,充分提高了系统升级的便利性和可维护性[1]。参考文献[2]~[4]介绍了利用串口、RS422、网络等方法实现将程序升级到处理器片内、片外Flash中。一般是先烧写一段BOOT程序,通过解析应用程序文件完成程序升级。这些方法往往存在BOOT程序无法升级自身、程序烧写无法脱离仿真器或编程器、应用程序运行无法实时升级等问题,影响了工程应用的可靠性和便捷性。本文设计了一种基于CAN通信实现的通用程序在线升级方法,支持BOOT程序、应用程序两种模式下的升级。BOOT程序不仅支持升级应用程序,还支持升级BOOT程序自身。通过在上位机、下位机间设计一套升级服务协议,保证了程序升级过程的可靠性。针对程序升级的异常情况,设计了相应的恢复措施,保证了系统异常时能够及时恢复。此外,结合ZYNQ芯片多种启动模式,实现了通过SD卡启动程序完成BOOT程序烧写,不需要借助仿真器或编程器,提高了生产调试、工程维护的便捷性。1系统硬件设计程序在线升级系统硬件总体结构如图1所示。图1系统硬件结构图上位机通过以太网通信将程序下发给下位机管理插件,下位机管理插件通过CAN总线透传给目标插件,目64Microcontrollers&EmbeddedSystems2018年第11期中。下位机可以根据实际应用需求配置多个目标插件,所有目标插件的程序均可以由上位机下发,管理插件根据每个目标插件的槽号节点转发完成程序升级。目标插件硬件系统主要由ZYNQ7000片上系统、DDR3内存、片外Flash存储、SD卡存储、CAN接口电路、UART接口电路等组成,硬件框图如图2所示。ZYNQ7000SoC包含处理器系统(ProcessingSystem,PS)和可编程逻辑器件(ProgrammableLogic,PL)两部分,处理器系统集成了双核ARMCortexA9、存储器接口和丰富的外设接口,可编程逻辑器件包含大量FPGA的逻辑单元[7]。片外QSPIFlash作为非易失性存储,用于存储BOOT程序、双核应用程序、FPGA程序,程序运行在DDR3内存中。CAN接口用于与管理插件通信交互。UART负责串口调试信息展示,SD卡存储设备日志信息、生产调试烧写BOOT程序。图2目标插件硬件框图2系统软件设计本文设计的程序在线升级方法可以在BOOT程序、应用程序运行过程中实时进行。系统软件采用双裸核(Standalone)的非对称多处理(AsymmetricMultiProcess-ing,AMP)模式总体架构设计,CPU0核完成程序在线升级功能,CPU1程序通过CPU0代理完成升级。通过代理模式可以避免在线升级过程中双核访问CAN、Flash、DDR等硬件资源竞争。软件上通过模块化方式设计,BOOT程序和应用程序可以快速复用CAN模块驱动、Flash模块驱动及程序升级模块等完成在线升级功能集成。2.1CAN模块驱动ZYNQ7000处理器系统内部集成两个CAN控制器,最大支持1Mbps传输速率,可以满足系统要求。CAN驱动主要包括CAN模块硬件初始化、报文发送、接收处理。初始化配置硬件引脚、通信波特率、工作模式等。报文发送、接收采用中断方式处理,既可以节省CPU的资源,也能够保证及时响应CAN报文。CAN报文采用29位扩展帧格式,管理插件通过扩展帧中的应用报文类型、源地址、目的地址来实现对各个槽位的目标插件升级程序。通过在CAN驱动中增加报文重发机制、总线异常自恢复等措施,提高了程序在线升级过程的可靠性。2.2Flash模块驱动Flash采用的是Micron公司MT25QL256芯片,该存储器一共有512个扇区,每个扇区大小为64KB,共32MB存储空间。Flash驱动主要包含硬件初始化、擦除扇区、写数据、读数据接口。通过识别文件名中关键字来确定不同程序写入的Flash位置,Flash的空间划分如表1所列。表1Flash空间分配扇区号关键字存放内容空间大小/MB0~63BOOTBOOT程序464~127CPU0CPU0应用程序4128~191CPU1CPU1应用程序4192~255FPGAFPGA程序42.3程序升级模块在上位机、下位机间设计一套升级服务协议,可以提高程序升级过程的可靠性。上位机、下位机交互的报文数据帧格式如下:帧头1帧头2类型长度内容校验码字节0字节1字节2字节3字节4~NN字节累加和升级服务的应用层协议内容如表2所列。表2应用层协议内容类型报文名称说明0下载校验下发文件个数、名称、长度1下载擦除下发擦除Flash命令2下载请求下发当前下载的文件名、长度3下载地址段下发当前程序Flash起始地址4下载数据下发程序数据5下载结束下发程序校验和6下载取消下载过程中校验错误,取消下载2.4启动流程通过BOOT程序、应用程序两种模式,实现在线升级功能。BOOT程序完成应用程序加载、升级及自身程序升级,应用程序完成自身程序升级和应用功能,两者通过敬请登录网站在线投稿2018年第11期65集成CAN模块驱动、Flash模块驱动及程序升级模块来实现。ZYNQ7000上电运行的启动流程如图3所示。图3启动流程启动流程如下:①首先执行片内BootROM程序,完成对QSPI、SD等外设控制器初始化。②然后加载FSBL(FirstStageBootLoader)程序到OCM(OnChipMemory)上运行,FSBL完成GPIO、时钟、DDR3内存初始化后,加载BOOT程序到DDR3中运行。③BOOT程序判断当前模式和校验Flash内容,如果是BOOT模式或者Flash应用程序校验出错,则初始化CAN及中断,等待升级应用程序。如果是应用程序模式,则加载双核CPU0、CPU1应用程序,FPGA程序,跳转执行应用程序。2.5在线升级流程BOOT和应用程序的在线升级过程基本一致,如图4所示,主要是升级服务应用层的交互过程。①上位机主动发起程序升级检查命令,下位机进入在线升级模式,解析命令中的文件类型、名称、长度计算总的Flash擦除时间,应答上位机擦除时间、报文校验结果。②上位机发送下载擦除命令,等待下位机返回Flash擦除操作结果。③上位机发送下载请求命令,下位机应答文件类型校验结果。图4在线升级流程④上位机发送下载地址段命令,通知下位机数据升级的Flash起始地址,下位机应答地址范围校验结果。⑤上位机发送下载数据命令,逐个数据包发送程序内容,下位机接收后将数据写入Flash中。重复此过程,66Microcontrollers&EmbeddedSystems2018年第11期直到程序数据下载完成。⑥上位机发送下载结束命令,通知下位机数据校验和,下位机回读Flash内容计算校验和,应答校验和比较结果。⑦若步骤①~⑥上位机收到下位机否定应答,则上位机发送下载取消命令,取消本次升级。下位机中应用程序可能被擦写,重启后程序在BOOT中运行,等待下一次程序升级。⑧上位机发送复位命令通知下位机启动看门狗复位,完成程序在线升级,执行新程序。3实验测试通过上位机给下位机下载CPU0、CPU1以及FPGA程序,借助串口工具查看程序升级信息,分别进行正常升级、异常升级过程测试。通过上千次程序升级测试,验证升级功能正常。3.1正常升级测试测试BOOT程序、应用程序模式下的升级功能,应用程序模式下的升级信息如图5所示。图5正常升级测试图6异常升级测试3.2异常升级测试模拟升级过程异常断电、CPU0程序文件校验码出错。CPU0程序文件校验码出错升级信息如图6所示。此时新程序还没有写入Flash中,而Flash中的旧程序已经被擦除。设备重新上电后在BOOT程序中运行,可以重新升级应用程序恢复运行。结语本文在ZYNQ7000片上系统实现基于CAN通信的程序在线升级方法。基于该方法实现的电力继电保护、测控设备已经成功在多个变电站现场中使用。使用情况表明,该方法操作简单,能够稳定、可靠地完成设备程序在线升级,降低了工程维护的难度,提高了设备现场调试效率,具有较高的工程应用价值。本文介绍的是在电力系统设备中的应用,实际上对其他系统在线升级设计也有一定的参考价值。参考文献[1]王尧,李荣冰,孙永荣,等.DSP在线升级容错性能的研究[J].电子测量技术,2017,40(11):193196.[2]汪晶晶,苏建徽,孙佩石.基于串口通信的DSP应用程序在线升级方法[J].微型机与应用,2013,32(14):1517,24.[3]朱艳芳,李艳娟,杨茜,等.一种基于RS422的DSP应用程序的在线升级方法[J].航天制造技术,2015(5):6567.[4]庄皓玥.基于网络的DSP远程在线升级实现[J].信息通信,2017(4):115116.[5]陆平林.一种基于TMS320C6205DSP的在线升级方法[J].通信技术,2012,45(2):132134.[6]XilinxInc.Zynq7000AllProgrammableSoCTechnicalRefer-enceManual[EB/OL].[201808].龚行梁(工程师),主要从事电力系统保护嵌入式软件开发工作。(责任编
本文标题:CAN总线实现的ZYNQ-7000程序在线升级方法
链接地址:https://www.777doc.com/doc-6951706 .html