一种FPGA多版本程序在线更新方法及系统与流程

文档序号:32604323发布日期:2022-12-17 19:09阅读:174来源:国知局
一种FPGA多版本程序在线更新方法及系统与流程
一种fpga多版本程序在线更新方法及系统
技术领域
1.本发明涉及fpga程序更新领域,尤其涉及一种fpga多版本程序在线更新方法及系统。


背景技术:

2.fpga官方提供的程序下载和更新方式需要特定的jtag接口,且一般只能下载单个程序,当设备交付之后仍然需要通过官方的jtag接口来下载和更新程序,而当设备交付之后整个系统或者内部的连线会变得很复杂,需要拆开设备来查找jtag接口,重新下载程序会变得很困难。并且在实际使用过程中,为了测试和验证不同使用场景下的设备稳定性,客户需要多个版本的程序并且需要频繁的在多个版本的程序之间进行切换,因此需要下载多个版本的程序到fpga中,来应对不同的需求,而官方的方案仅支持一次下载一个程序,因此不支持多个程序之间的切换。
3.专利cn113360198a公开了一种只用fpga自身在线更新fpga配置的方法,该方法用来更新程序和跳转程序运行地址的程序模块和现在运行的程序集成在了一起,由于在主程序中需要集成该功能需要浪费一定的fpga资源,而这些资源在不需要更新程序时是没用的,同时也会增加芯片功耗。同时该方法只能更新一个版本的程序,当系统中需要有多个版本程序时不适用。
4.专利cn113434162a公开了一种远程在线更新fpga多版本程序的方法,该方法需要其他的外部控制芯片进行控制,从而增加了外部电路的复杂度。该方法对于各个版本程序之间的切换不友好,不支持在上位机上进行可视化的控制。


技术实现要素:

5.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种fpga多版本程序在线更新方法及系统,不需要对硬件进行任何更改的情况下,使用上位机控制fpga进行多个版本程序的更新和切换。
6.为解决上述技术问题,本发明提出的技术方案为:
7.一种fpga多版本程序在线更新方法,应用于fpga系统,所述fpga系统包括上位机和下位机,所述下位机包括fpga芯片和flash,所述fpga芯片通过串口和/或网口和上位机连接,且通过spi接口和/或bpi接口和flash连接,所述flash的地址从低到高依次被划分为引导程序地址段和至少两个应用程序地址段,所述方法包括:
8.从引导程序地址段读取并运行引导程序,若预设时间内未收到上位机的更新指令,执行下一步,若预设时间内收到上位机的更新指令,获取上位机的更新数据,所述更新数据与更新指令中的地址信息一一对应,根据更新指令中的地址信息,擦除对应的应用程序地址段并向该应用程序地址段写入对应的更新数据;
9.获取所述flash预先存储的跳转信息,若所述跳转信息对应引导程序地址段,执行从引导程序地址段读取并运行引导程序的步骤,若所述跳转信息对应应用程序地址段,从
对应的应用程序地址段读取并运行应用程序。
10.进一步的,从对应的应用程序地址段读取并运行应用程序之后,还包括:
11.若收到上位机的切换指令,且切换指令中的地址信息对应应用程序地址段,从对应的应用程序地址段读取并运行应用程序;
12.若收到上位机的切换指令,且切换指令中的地址信息对应引导程序地址段,执行从引导程序地址段读取并运行引导程序的步骤;
13.若未收到上位机的切换命令,等待应用程序运行完毕,结束并断电。
14.进一步的,在向该应用程序地址段写入对应的更新数据之后,还包括:若更新数据写入失败,断电重启,执行从引导程序地址段读取并运行引导程序的步骤。
15.进一步的,在向该应用程序地址段写入对应的更新数据之后,还包括:将更新进度发送给上位机。
16.进一步的,所述更新数据为用fpga编译软件产生的bin文件。
17.本发明还提出一种fpga系统,包括上位机和下位机,所述下位机包括fpga芯片和flash,所述fpga芯片通过串口和/或网口和上位机连接,且通过spi接口和/或bpi接口和flash连接,所述flash的地址从低到高依次被划分为引导程序地址段和至少两个应用程序地址段,所述fpga芯片包括:
18.外部通信选择模块,用于选择串口驱动,通过串口和上位机进行数据交互,或者选择网口驱动,通过网口和上位机进行数据交互;
19.flash驱动选择模块,用于选择spi驱动,通过spi接口和flash进行数据交互,或者选择bpi驱动,通过bpi接口和flash进行数据交互;
20.flash读写控制模块,用于通过flash驱动选择模块从flash的引导程序地址段读取并运行引导程序,若预设时间内未通过外部通信选择模块收到上位机的更新指令,执行下一步,若预设时间内通过外部通信选择模块收到上位机的更新指令,通过外部通信选择模块获取上位机的更新数据,所述更新数据与更新指令中的地址信息一一对应,根据更新指令中的地址信息,擦除flash的对应的应用程序地址段并通过flash驱动选择模块向该应用程序地址段写入对应的更新数据;
21.通过flash驱动选择模块获取所述flash预先存储的跳转信息,若所述跳转信息对应flash的引导程序地址段,执行从引导程序地址段读取并运行引导程序的步骤,若所述跳转信息对应flash的应用程序地址段,从对应的应用程序地址段读取并运行应用程序。
22.进一步的,所述flash读写控制模块从对应的应用程序地址段读取并运行应用程序之后,还被配置以执行:
23.若通过外部通信选择模块收到上位机的切换指令,且切换指令中的地址信息对应应用程序地址段,通过flash驱动选择模块从对应的应用程序地址段读取并运行应用程序;
24.若通过外部通信选择模块收到上位机的切换指令,且切换指令中的地址信息对应引导程序地址段,执行通过flash驱动选择模块从引导程序地址段读取并运行引导程序的步骤;
25.若未通过外部通信选择模块收到上位机的切换命令,等待应用程序运行完毕,结束并断电。
26.进一步的,所述flash读写控制模块通过flash驱动选择模块向该应用程序地址段
写入对应的更新数据之后,还被配置以执行:若更新数据写入失败,断电重启,执行通过flash驱动选择模块从引导程序地址段读取并运行引导程序的步骤。
27.进一步的,所述flash读写控制模块通过flash驱动选择模块向该应用程序地址段写入对应的更新数据之后,还被配置以执行:将更新进度通过外部通信选择模块发送给上位机。
28.进一步的,所述上位机设有显示和控制界面,用于设置串口通信速率,网口通信地址,通信方式,端口以与下位机通信。
29.与现有技术相比,本发明的优点在于:
30.本发明由上位机向带有fpga芯片的下位机进行数据传输和命令控制,不需要更改下位机原来的pcb电路,也不需要增加其他控制芯片,且更新程序功能部分不占用fpga的逻辑资源,可以在不拆解硬件的情况下进行程序的在线更新;
31.本发明将flash划分多个地址段,程序更新时,上位机可输出多个程序的更新数据,同时输出的更新指令包括对应的地址信息,从而可以支持多个程序同时下载和更新,程序切换时,上位机输出的切换命令包括待切换的引导程序地址段或者应用程序地址段的地址信息,从而可以方便的来回切换需要运行的程序版本;
32.本发明在flash的最低地址段保存引导程序,保证当硬件上电之后自动最先运行引导程序,从而在程序更新失败时不会崩溃,而会自动运行引导程序。
附图说明
33.图1为本发明实施例一的下位机组成结构图。
34.图2为本发明实施例一的flash地址段示意图。
35.图3为本发明实施例二的方法步骤示意图。
36.图4为本发明实施例二的方法详细流程图。
具体实施方式
37.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
38.我们期望实现一种fpga系统,在针对多版本程序更新和切换过程中具有以下功能:
39.1.不需要对现有的硬件进行任何更改,只需要利用现存的硬件和外部通信接口然后在软件上进行更改。
40.2.更新程序和实现程序跳转选择的程序不需要占用fpga内部的逻辑资源,当该功能完成后会自动结束而切换到新的程序上去运行。
41.3.使用配套的上位机对程序的更新进行控制,并且将一些关键的控制和命令信息保存在了flash。
42.根据上述构思,本发明提出一种fpga系统,包括上位机和下位机,下位机如图1所示,包括fpga芯片和flash,fpga芯片通过串口和/或网口和上位机连接,且通过spi接口和/或bpi接口和flash连接,如图2所示,flash的地址从低到高依次被划分为引导程序地址段和至少两个应用程序地址段,其中引导程序被保存在最低位的引导程序地址段,保证硬件
上电后自动最先运行引导程序,不同版本的应用程序分别被保存在不同的应用程序地址段中。
43.另外有配套的上位机程序根据特定的通信协议来对下位机进行数据传输和命令控制,其中在上位机端可以方便的设置程序更新需要保存的地址段,根据地址段的设置可以方便的下载多个应用程序。并且在上位机端可以设置具体要运行的程序版本。从而利用上位机,通过串口或者网口的形式与下位机进行通信,同时可以在现有的上位机上增加此功能,上位机利用fpga编译软件如vivado产生的bin文件来对程序进行更新,同时可以通过上位机设置程序的地址段以及需要加载程序的地址段来选择需要运行的程序版本。
44.对于本实施例的fpga系统,通过条件编译集成了多种通信方式来对程序进行更新,程序更新方式支持串口和网口通信的方式对fpga芯片的程序进行更新,烧写flash的接口可以选择bpi和spi接口,可根据具体的硬件以及目前上位机的通信方式以及flash的连接方式选择合适的接口,并可以对程序进行裁剪或者扩充使用另外的通信方式,只需要通信协议保持一致即可。
45.本实施例的上位机提供了显示和控制界面,可以选择网口和串口两种通信方式,通过设置串口通信速率,网口通信地址,通信方式如udp,端口等实现与下位机的通信。同时通过一键式的对程序进行更新并在更新的过程中显示更新的进度,如引导程序正在进行读秒,flash擦除完成,flash烧写完成,程序已跳转到目的地址运行等。在对程序进行切换时在上位机端设置需要跳转的地址,然后通过点击相关按键实现程序切换。
46.如图1所示,为了响应上位机的操作,本实施例中的fpga芯片包括:
47.外部通信选择模块,用于选择串口驱动,通过串口和上位机进行数据交互,或者选择网口驱动,通过网口和上位机进行数据交互;
48.flash驱动选择模块,用于选择spi驱动,通过spi接口和flash进行数据交互,或者选择bpi驱动,通过bpi接口和flash进行数据交互;
49.flash读写控制模块,用于完成flash的读写擦除控制来更新flash内的程序,以及相关的程序跳转原语和控制程序来完成更新之后的跳转和程序版本选择。
50.具体的,本实施例以multibooot的方式为fpga提供了一个引导程序并在引导程序开始运行时进行读秒操作,而在读秒程序结束时仍然没有收到程序更新的命令时将通过fpga访问保存在flash内部的跳转地址值,然后通过fpga的原语icape来进行程序的跳转。同时上位机端可以显示引导程序的读秒倒计时,而在读秒命令结束之前如果需要更新程序便通过上位机发送程序更新操作,程序会结束读秒计时从而转入到更新程序操作,而后上位机端按照规定的协议发送程序更新命令如程序要更新的地址段等和程序数据,当程序更新完之后引导程序会自动的跳转到更新的程序处进行运行。
51.而在程序进行相互切换时也是用了类似的操作,更新的程序需要增加一条命令和一段程序来进行跳转一旦程序接收到切换程序的命令时会根据命令提供的地址来运行icape原语来对程序进行跳转从而跳转到指定的地址处运行,该地址段可以保存应用程序也可以保存引导程序,当是引导程序时重复上一段的操作,而是应用程序时运行该应用程序。从而实现程序之间的相互切换。
52.因此,flash读写控制模块被配置以执行以下步骤:
53.通过flash驱动选择模块从flash的引导程序地址段读取并运行引导程序,若预设
时间内未通过外部通信选择模块收到上位机的更新指令,执行下一步,若预设时间内通过外部通信选择模块收到上位机的更新指令,通过外部通信选择模块获取上位机的更新数据,所述更新数据与更新指令中的地址信息一一对应,更新指令中的地址信息为应用程序段的起始地址,更新数据可以是一个应用程序段对应的更新数据,也可以是多个应用程序段对应的多个更新数据,根据更新指令中的地址信息,擦除flash的对应的应用程序地址段并通过flash驱动选择模块向该应用程序地址段写入对应的更新数据;
54.通过flash驱动选择模块获取所述flash预先存储的跳转信息,跳转信息包括引导程序地址段或者应用程序地址段的起始地址,若所述跳转信息对应flash的引导程序地址段,返回上一步执行从引导程序地址段读取并运行引导程序的步骤,若所述跳转信息对应flash的应用程序地址段,从对应的应用程序地址段读取并运行应用程序。
55.通过上述步骤,flash读写控制模块可以配合上位机同时下载并更新多版本程序,节省大量时间和精力。
56.本实施例中,flash读写控制模块从对应的应用程序地址段读取并运行应用程序之后,还被配置以执行:
57.若通过外部通信选择模块收到上位机的切换指令,且切换指令中的地址信息对应应用程序地址段,通过flash驱动选择模块从对应的应用程序地址段读取并运行新的应用程序;
58.若通过外部通信选择模块收到上位机的切换指令,且切换指令中的地址信息对应引导程序地址段,执行通过flash驱动选择模块从引导程序地址段读取并运行引导程序的步骤;
59.若未通过外部通信选择模块收到上位机的切换命令,等待应用程序运行完毕,结束并断电。
60.通过上述步骤,flash读写控制模块可以配合上位机进行不同版本之间程序的切换,从而满足实际的使用需求。需要说明的是,当flash读写控制模块通过flash驱动选择模块从对应的应用程序地址段读取并运行新的应用程序后,继续监听上位机的切换命令,并且根据监听结果执行对应的上述步骤。
61.本实施例中,flash读写控制模块通过flash驱动选择模块向该应用程序地址段写入对应的更新数据之后,还被配置以执行:若更新数据写入失败,断电重启,上电后自动运行引导程序,此时执行通过flash驱动选择模块从引导程序地址段读取并运行引导程序的步骤。
62.本实施例中,flash读写控制模块通过flash驱动选择模块向该应用程序地址段写入对应的更新数据之后,还被配置以执行:将更新进度通过外部通信选择模块发送给上位机,从而上位机收到更新进度后能够实时反馈给用户。
63.本实施例具有以下优点:
64.1、可以利用现存的外部接口和对应的上位机软件对程序进行在线的更新,节省大量的时间和精力。
65.2、可以在设备交付并安装完成之后利用现存的通信接口方便的进行程序的更新和加载。
66.3、可以在产品中存储多个版本的程序,并且可以利用上位机对每个版本运行的软
件进行可视化直观的进行切换,而不需要来回的下载对程序进行更改。
67.4、不需要依靠外部的其他控制芯片,仅靠fpga自身加一个外部通信接口就可以实现对于程序的在线更新和多版本程序的切换。
68.实施例二
69.本实施例提出一种fpga多版本程序在线更新方法,应用于实施例一的fpga系统,如图3所示,包括以下步骤:
70.从引导程序地址段读取并运行引导程序,若预设时间内未收到上位机的更新指令,执行下一步,若预设时间内收到上位机的更新指令,获取上位机的更新数据,所述更新数据与更新指令中的地址信息一一对应,根据更新指令中的地址信息,擦除对应的应用程序地址段并向该应用程序地址段写入对应的更新数据;
71.获取所述flash预先存储的跳转信息,若所述跳转信息对应引导程序地址段,执行从引导程序地址段读取并运行引导程序的步骤,若所述跳转信息对应应用程序地址段,从对应的应用程序地址段读取并运行应用程序。
72.如图4所示,从对应的应用程序地址段读取并运行应用程序之后,还包括以下步骤:
73.若收到上位机的切换指令,且切换指令中的地址信息对应应用程序地址段,从对应的应用程序地址段读取并运行应用程序;
74.若收到上位机的切换指令,且切换指令中的地址信息对应引导程序地址段,执行从引导程序地址段读取并运行引导程序的步骤;
75.若未收到上位机的切换命令,等待应用程序运行完毕,结束并断电。
76.本实施例中,在向该应用程序地址段写入对应的更新数据之后,还包括:若更新数据写入失败,断电重启,执行从引导程序地址段读取并运行引导程序的步骤。
77.本实施例中,在向该应用程序地址段写入对应的更新数据之后,还包括:将更新进度发送给上位机。
78.本实施例中,所述更新数据为用fpga编译软件产生的bin文件。
79.上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1