1.本发明涉及程序升级技术领域,更为具体的,涉及基于高速口的多处理器程序升级方法及装置。
背景技术:
2.在多处理器fpga工程开发中,设计好的程序通过jtag等下载器下载是目前fpga调试以及固化最常见的办法,当fpga设计完成后,将程序固化到fpga,使其完成功能。随着系统集成要求以及工作环境要求,当系统设计、程序完成调试之后,需要将系统封装到相应的壳体或者设备之中,当使用过程中需要对程序修改,以实现程序升级,这时可能就需要重新打开壳体等设备,或者模块有可能不能引出连接下载器端口,导致更新程序不能有效实现更新。
技术实现要素:
3.本发明的目的在于克服现有技术的不足,提供一种基于高速口的多处理器程序升级方法及装置,具有升级速度快、系统可靠、操作方便以及便于实施等特点。
4.本发明的目的是通过以下方案实现的:
5.一种基于高速口的多处理器程序升级方法,包括步骤:在多处理器架构上,第一处理器通过高速接口单元接收升级程序;然后通过控制切换flash数据端口来控制切换第二处理器的程序升级过程。
6.进一步地,所述第一处理器通过高速接口单元接收升级程序包括子步骤:对接收的每一帧升级程序数据进行校验和判断,根据校验和判断结果控制切换对第一处理器或是第二处理器进行程序升级;当对第一处理器进行程序升级时,将接收的第一处理器的升级程序直接写入第一处理器的第一flash模块中,实现第一处理器的程序升级;当对第二处理器进行程序升级时,通过控制开关器件将第二处理器的flash数据接口切换至第一处理器的端口进行控制,将接收的第二处理器的升级程序写入第二处理器的第二flash模块中,实现第二处理器的程序升级。
7.一种执行如上任一所述基于高速口的多处理器程序升级方法的装置,其特征在于,包括多处理器架构、高速接口单元、第一flash模块、第二flash模块和开关器件,所述多处理器架构包括第一处理器、第二处理器;第一处理器与高速接口单元连接,第一flash模块、第二flash模块分别与第一处理器连接,第一处理器与第二处理器连接;程序升级时,第一处理器通过高速接口单元接收升级程序,通过控制开关器件将第二处理器的flash数据接口切换至第一处理器的端口进行控制,将接收的第二处理器的升级程序写入第二处理器的第二flash模块中;而接收的第一处理器的升级程序,则直接写入第一处理器的第一flash模块中,实现第一处理器的程序升级。
8.进一步地,还包括ddr模块、eeprom模块,所述ddr模块,用于缓存第一处理器接收的升级程序,所述eeprom模块,用于存储当前程序版本。
9.进一步地,所述第一处理器为zynq fpga模块,所述第二处理器为v7 fpga模块,所述第一flash模块为a片flash模块,所述第二flash模块为b片flash模块;a片flash模块连接zynq fpga模块的ps端,且存储有主份和备份程序;b片flash连接zynq fpga模块的pl端,且存储有v7 fpga的配置程序。
10.进一步地,包括上位机,上位机进行分包组帧将数据下发到zynq fpga模块的高速接口单元。
11.进一步地,包括高速接口板,所述高速接口板与zynq fpga模块的高速接口单元连接。
12.本发明的有益效果是:
13.该方法升级速度快,需要接口数据线少,只需要一个高速接口就可以实现两片fpga升级,不需要专门设置程序下载口,同时zynq作为主控芯片,设有主份和备份程序,有效保证系统异常启动,重新完成系统升级。该升级方法具有系统可靠、操作方便以及便于实施等特点。
14.这方便判断升级版本以及程序是否升级成功,只有对应flash程序更新成功才将其版本号进行更新。
附图说明
15.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
16.图1为本发明实施例中硬件连接示意图;
17.图2为本发明实施例中程序加载示意图;
18.图3为本发明实施例中系统程序更新加载示意图。
具体实施方式
19.本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
20.本发明实施例的附图包括图1、图2和图3。下面根据附图1~图3,对本发明的技术构思、工作原理、功效和工作过程作进一步详细说明。
21.本发明技术方案解决的技术问题之一在于程序升级。其中,在具体应用时提供一种装置,其主要硬件包括zynq fpga、v7 fpga、2片256m bit flash(a、b片)、ddr、eeprom、高速接口板(zynq上使用aurora ip)和pc(上位机),芯片连接示意图如附图1所示。a片flash放置到zynq的ps端,分别存储主份(16mbyte)和备份程序(16mbyte),用于zynq的主份、备份程序,b片flash存储v7的配置程序,pc上位进行分包组帧将数据下发到高速接口,zynq接收升级程序缓存到ddr,eeprom用于存储当前程序版本,这方便判断升级版本以及程序是否升级成功,只有对应flash程序更新成功才将其版本号进行更新。其中,v7 fpga代表virtex-7 fpga系列,在本发明中还可以替换成其他7系列fpga。
22.在具体应用中,本发明关于升级帧格式设计:包含帧头、升级程序标识、升级帧帧
数、当前帧数、升级程序有效字节长度、有效数据、校验和,且每一帧下发zynq接收后会返回当前帧情况,pc上位机确定当前数据帧接收情况,正确则下发下一帧,错误重发当前帧,这样可以保证数据在升级过程安全性、准确性。
23.在具体应用中,本发明关于程序加载设计:zynq通过4线模式从a片中falsh读出数据实现zynq加载,加载不成功,则读取备份程序实现加载,主份和备份程序加载过程不需要用户程序控制,芯片自主实现。v7加载也是自主加载。v7加载成功会上报程序加载成功标志到zynq,上电后10s内v7不能成功加载,zynq会通过高速口上报状态,告知用户对其进行程序升级。
24.在具体应用中,本发明关于程序升级设计:如附图2所示,zynq的程序升级是用户主动发起,依次更新的是主份、备份程序,v7的程序更新分为系统程序未能加载需升级和用户主动发起。升级时,升级程序通过高速数据接口传送到zynq的ps端,ps端将数据解析出相对应的fpga升级程序暂存ddr,当升级程序接收完毕后,依据当前需升级程序类型,从ddr中读出存入对应的flash地址中,实现程序更新。zynq程序升级时主份程序升级成功后,才进行备份程序升级。zynq接收完v7的升级后,将v7上的flash数据端口通过开关器件控制到zynq的端口,zynq对v7的flash擦除、写入。对应flash的程序升级完毕后,在对应分配的eeprom中写入对应升级程序的版本,方便用户查看当前程序是否升级成功。升级中,zynq接收到数据后传输到ps端,ps进行数据校验及解析,解析成功程序先缓存到ddr中,并返回数据接收成功标志,解析失败,则在返回帧中请求当前数据帧重传。数据帧中有数据帧数和当前帧数能有效判断当前升级帧的存放位置。
25.程序升级加载过程如附图3所示,当系统启动,zynq主份加载,不成功则备份加载,v7加载,不成功,zynq上报状态进行升级,或者系统都加载成功,用户需要对其程序进行更新,升级程序依次zynq主份、备份程序以及v7程序,下一次上电既可以启动加载更新程序,即实现程序升级,系统功能更新。
26.实施例1:一种基于高速口的多处理器程序升级方法,包括步骤:在多处理器架构上,第一处理器通过高速接口单元接收升级程序;然后通过控制切换flash数据端口来控制切换第二处理器的程序升级过程。
27.实施例2:在实施例1的基础上,第一处理器通过高速接口单元接收升级程序包括子步骤:对接收的每一帧升级程序数据进行校验和判断,根据校验和判断结果控制切换对第一处理器或是第二处理器进行程序升级;当对第一处理器进行程序升级时,将接收的第一处理器的升级程序直接写入第一处理器的第一flash模块中,实现第一处理器的程序升级;当对第二处理器进行程序升级时,通过控制开关器件将第二处理器的flash数据接口切换至第一处理器的端口进行控制,将接收的第二处理器的升级程序写入第二处理器的第二flash模块中,实现第二处理器的程序升级。
28.实施例3:在实施例1或2的基础上,一种执行如上任一基于高速口的多处理器程序升级方法的装置,其特征在于,包括多处理器架构、高速接口单元、第一flash模块、第二flash模块和开关器件,多处理器架构包括第一处理器、第二处理器;第一处理器与高速接口单元连接,第一flash模块、第二flash模块分别与第一处理器连接,第一处理器与第二处理器连接;程序升级时,第一处理器通过高速接口单元接收升级程序,通过控制开关器件将第二处理器的flash数据接口切换至第一处理器的端口进行控制,将接收的第二处理器的
升级程序写入第二处理器的第二flash模块中;而接收的第一处理器的升级程序,则直接写入第一处理器的第一flash模块中,实现第一处理器的程序升级。
29.实施例4:在实施例3的基础上,还包括ddr模块、eeprom模块,ddr模块,用于缓存第一处理器接收的升级程序,eeprom模块,用于存储当前程序版本。
30.实施例5:实施例3的基础上,第一处理器为zynq fpga模块,第二处理器为v7 fpga模块,第一flash模块为a片flash模块,第二flash模块为b片flash模块;a片flash模块连接zynq fpga模块的ps端,且存储有主份和备份程序;b片flash连接zynq fpga模块的pl端,且存储有v7 fpga的配置程序。
31.如图1~图3所示,本实施例通过zynq fpga高速接口实现flash程序更新,zynq fpga和v7 fpga在自主启动后,需要进行程序升级时,zynq接收高速口传输升级程序,根据升级程序类型将数据存入ddr。zynq对每一帧升级数据进行校验和判断,升级程序为zynq芯片,则更新zynq的flash中的主份程序或备份程序;升级程序为v7芯片,zynq则将其v7上的flash的数据端口切换到zynq的端口上,实现对其flash程序进行更新。升级完毕以及默认情况下,v7上flash的数据端口连接到v7上,只有需要对其升级才将v7的flash控制权给zynq控制,实现zynq接收升级程序就可以实现自身程序升级以及v7程序升级。升级方法具有升级速度快、系统可靠、操作方便以及便于实施等特点。本方案通过zynq的高速接口即可实现对应flash程序更新,对v7的flash数据端口的控制实现对其flash程序的更新,整个方案程序升级由zynq控制,升级方案所需要更少的外围数据接口。
32.实施例6:本实施例旨在针对特殊要求下实现设备中fpga程序更新的要求,提供一种方法,依据fpga可以实现程序的升级。具体在应用时,设计基于两片fpga的升级过程,包括:基于zynq fpga和v7 fpga两片fpga,启动时通过zynq fpga从qspi flash中读出程序实现启动,zynq设有主份和备份两份程序,主份不能启动则从备份启动。默认情况下,v7从flash上电从中读出配置程序实现启动,升级时,zynq接收v7的升级程序通过开关器件将v7的flash数据接口由zynq的端口进行控制,将接收的v7升级程序写入v7的flash中。而zynq的升级则是接收正确的升级程序,直接写入对应的flash地址,实现zynq的主份和备份程序,下一次上电,同样启动方式实现更新程序功能,从而实现两个fpga程序升级。程序升级采用待校验的升级程序帧格式,传输采取错误重传机制以及主备份程序设计,保证程序升级过程异常后系统还能启动。该方法升级速度快,需要接口数据线少,只需要一个高速接口就可以实现两片fpga升级,不需要专门设置程序下载口,同时zynq作为主控芯片,设有主份和备份程序,有效保证系统异常启动,重新完成系统升级。
33.本发明功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,在一台计算机设备(可以是个人计算机,服务器,或者网络设备等)以及相应的软件中执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、或者光盘等各种可以存储程序代码的介质,进行测试或者实际的数据在程序实现中存在于只读存储器(random access memory,ram)、随机存取存储器(random access memory,ram)等。
技术特征:
1.一种基于高速口的多处理器程序升级方法,其特征在于,包括步骤:在多处理器架构上,第一处理器通过高速接口单元接收升级程序;然后通过控制切换flash数据端口来控制切换第二处理器的程序升级过程。2.根据权利要求1所述的基于高速口的多处理器程序升级方法,其特征在于,所述第一处理器通过高速接口单元接收升级程序包括子步骤:对接收的每一帧升级程序数据进行校验和判断,根据校验和判断结果控制切换对第一处理器或是第二处理器进行程序升级;当对第一处理器进行程序升级时,将接收的第一处理器的升级程序直接写入第一处理器的第一flash模块中,实现第一处理器的程序升级;当对第二处理器进行程序升级时,通过控制开关器件将第二处理器的flash数据接口切换至第一处理器的端口进行控制,将接收的第二处理器的升级程序写入第二处理器的第二flash模块中,实现第二处理器的程序升级。3.一种执行权利要求1~2任一所述基于高速口的多处理器程序升级方法的装置,其特征在于,包括多处理器架构、高速接口单元、第一flash模块、第二flash模块和开关器件,所述多处理器架构包括第一处理器、第二处理器;第一处理器与高速接口单元连接,第一flash模块、第二flash模块分别与第一处理器连接,第一处理器与第二处理器连接;程序升级时,第一处理器通过高速接口单元接收升级程序,通过控制开关器件将第二处理器的flash数据接口切换至第一处理器的端口进行控制,将接收的第二处理器的升级程序写入第二处理器的第二flash模块中;而接收的第一处理器的升级程序,则直接写入第一处理器的第一flash模块中,实现第一处理器的程序升级。4.根据权利要求3所述的装置,其特征在于,还包括ddr模块、eeprom模块,所述ddr模块,用于缓存第一处理器接收的升级程序,所述eeprom模块,用于存储当前程序版本。5.根据权利要求3所述的装置,其特征在于,所述第一处理器为zynq fpga模块,所述第二处理器为v7 fpga模块,所述第一flash模块为a片flash模块,所述第二flash模块为b片flash模块;a片flash模块连接zynq fpga模块的ps端,且存储有主份和备份程序;b片flash连接zynq fpga模块的pl端,且存储有v7 fpga的配置程序。6.根据权利要求5所述的装置,其特征在于,包括上位机,上位机进行分包组帧将数据下发到zynq fpga模块的高速接口单元。7.根据权利要求5所述的装置,其特征在于,包括高速接口板,所述高速接口板与zynq fpga模块的高速接口单元连接。
技术总结
本发明公开了一种基于高速口的多处理器程序升级方法及装置,属于程序升级技术领域,包括步骤:在多处理器架构上,第一处理器通过高速接口单元接收升级程序;然后通过控制切换FLASH数据端口来控制切换第二处理器的程序升级过程。本发明具有升级速度快、系统可靠、操作方便以及便于实施等特点。方便以及便于实施等特点。方便以及便于实施等特点。
技术研发人员:冉召会 向强 余恒松 王昱 王娟 余水 钟森 樊高有
受保护的技术使用者:成都航天通信设备有限责任公司
技术研发日:2021.12.06
技术公布日:2022/3/8