一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于串口232协议升级FPGA的方法与流程

2022-02-24 13:06:53 来源:中国专利 TAG:

一种基于串口232协议升级fpga的方法
技术领域
1.本发明涉及fpga远程更新领域,尤其涉及一种基于串口232协议升级fpga的方法及系统。


背景技术:

2.目前,传统的 fpga均基于sram(static random-access memory)工艺,该类型fpga必须外置一个用来存储程序的配置flash存储芯片。在上电时,fpga从该flash存储芯片加载程序到fpga内部,完成fpga的程序加载过程。这个加载过程时长从几十毫米到几秒不等。
3.xilinx spartan6平台下需要自定义编写flash读写控制器,当无法提供jtag等其他连接时,flash的更新就只有远程刷新一种方案。如果写入flash的数据出现错误,这样会导致fpga无法加载成功。当fpga无法加载成功或者工作不正常的时候,整个系统无法正常工作。要解决这个问题,此时必须重新通过远程更新fpga片外flash,纠正之前的错误。
4.同时,目前将fpga配置文件烧写到flash中的主要方式有两种。第一种方法通过与fpga连接jtag调试电缆手动地将配置文件烧写到flash中,这种通过jtag电缆烧写配置文件的方法应用最为普遍;第二种方法通过上位机将待烧写的配置文件分成若干个数据包,上位机通过网络将若干个数据包传输给交换fpga,交换fpga将烧写数据包复制并通过多路光纤同时发给多个主fpga,各个主fgpa通过引导程序将烧写数据包写入flash相应的内存地址,这种通过引导程序烧写fpga配置文件的方法需要设计对flash烧写的引导程序,相比第一种软件烧写方式较为繁琐。
5.本方案通过串口uart232协议升级fpga的方法,保证了fpga数据安全,即使升级数据错误或者外界条件变化,flash始终有备份程序可以再次进行升级;且无需拆装,可以通过远程给客户提供m文件,客户一键升级代码。


技术实现要素:

6.本发明的目的在于克服现有技术的不足,提供一种基于串口232协议升级fpga的方法及系统。
7.本发明的目的是通过以下技术方案来实现的:一种基于串口232协议升级fpga的方法,包括以下步骤:步骤1:上电,程序指针跳转至m镜像起始地址,启动m镜像;步骤2:当用户设计发生变更时,需要升级m镜像,此时对m镜像进行升级,若升级成功,则在fpga中运行新的m镜像;若升级失败,则fpga会回退至g镜像中运行,继续对m镜像进行升级,保证版本安全;步骤3:g镜像接收新的m镜像配置文件,并写入flash。
8.所述对m镜像进行配置具体为:步骤201:上位机加载新的m镜像文件;
步骤202:将新的m镜像文件拆分成多个以128字节大小为一帧的数据,并通过串口发送至fpga;步骤203:fpga在收到新的m镜像数据后,对数据进行重新组帧,添加帧头、控制字节、crc校验和帧尾;步骤204:对每一帧数据进行crc校验,判断每帧数据的正确性;步骤205:若数据正确,则将数据通过spi接口写入flash,若数据错误,则终止发送,在线升级失败,程序跳回golden版本。
9.进一步的,所述步骤202中update文件拆分的数据中的最后一帧若不足128个字节,则用ff补齐128个字节。
10.进一步的,所述数据通过spi接口写入flash前,需先对flash进行擦除,等待flash擦书完成后,再进行写数据。
11.进一步的,所述的帧头、控制字节、crc校验和帧尾一共包括20字节。
12.进一步的,一种基于串口232协议升级fpga的系统,包括uart_module模块、data_repack模块、spi driver模块以及flash模块;所述data_repack模块分别连接uart_module模块和spi driver模块;所述spi driver模块和flash模块连接;所述uart_module模块用于从上层软件接收配置镜像;所述data_repack模块用于对数据按照协议进行组帧;所述spi driver模块用于spi协议的实现,并按照flash标准寄存器和时序进行实现。
13.进一步的,所述uart_module模块设置有超时重传,若三次重传都没有收到在线更新数据,则更新失败。
14.进一步的,所述flash模块在配置更新数据之前,需要先对flash进行擦除,等待flash擦书完成后,再进行写数据。
15.进一步的,所述data_repack模块中使用flg_type表示操作类型,通过每一帧的控制数据进行解析出来,当写完一帧数据时,需要回复给上层一个ack,上层软件再进行下一帧数据的配置。
16.进一步的,所述spi_driver模块接收组帧配置完成后的数据,并具有在线更新的地址累加控制和spi flash驱动控制。
17.本发明的有益效果:本发明提出了一种利用串口232协议升级fpga的方法,用户可以在设备不断电、不修改额外硬件电路的前提下,实现fpga配置镜像的远程更新、切换,并且在镜像切换失败时,回退到安全的镜像,保障远程更新安全;与传统jtag方法烧写相比,此方法具有安全性、便捷性的特点,无需专业人员参与,一键升级代码。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
19.图1是m镜像启动流程图。
20.图2是在线更新数据流程图。
21.图3是fpga工程逻辑结构图。
22.图4是uart_module模块执行流程图。
23.图5是在线更新接收数据状态机流程图。
24.图6是flash控制状态机流程图。
25.图7是flash结构图。
26.图8是flash存储空间地址分配图。
具体实施方式
27.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.本实施例中,一种基于串口232协议升级fpga的方法,包括以下步骤:步骤1:上电,程序指针跳转至m镜像起始地址,启动m镜像;步骤2:当用户设计发生变更时,需要升级m镜像,此时对m镜像进行升级,若升级成功,则在fpga中运行新的m镜像;若因外力原因升级失败,则fpga会回退至g镜像中运行,继续升级m镜像,保证版本安全;步骤3:g镜像接收新的m镜像配置文件,并写入flash。
30.设计多版本启动及远程更新时,需要分别准备两个镜像工程:golden镜像和multiboot镜像,为了方便描述,golden镜像和multiboot镜像分别称为g镜像和m镜像。如图1所示,上电后,fpga会启动m镜像,如果配置成功,fpga将会运行在m镜像,若配置失败,则fpga会回退到g镜像。通常情况下,m镜像是用户实际运行的镜像,当用户设计发生变更时,可以通过远程更新的方式对m镜像进行更新,而g镜像是一个基本镜像,通常情况下它只包含接收一个m镜像配置文件并写入到flash的功能,并且不建议对g镜像进行更新。
31.其中,如图2所示,对m镜像进行配置具体过程为:1)上位机加载新的m镜像文件;2)将新的m镜像文件以128字节为一帧数据进行拆分(若最后一帧若不足128个字节,则用ff补齐128个字节),并通过串口发送至fpga;3)fpga在收到新的m镜像数据后,对数据进行重新组帧,添加帧头、控制字节、crc校验和帧尾;4)对每一帧数据进行crc校验,判断每帧数据的正确性;5)若数据正确,则将数据通过spi接口写入flash,若数据错误,则终止发送,在线升级失败,程序跳回golden版本。
32.在本实施例中,256mb空间的flash一共有2个版本程序:1.地址为0x0~0x0400000的golden版本,只包含在线升级的所需功能,因而代码少,程序小,占用空间少。
33.2.地址为0x0400000~0x1ffffff的update版本,包含所有功能的应用版本,占用空
间多。
34.golden版本内包含指向0x400000的命令,在硬件启动后,golden里的指针指向了0x400000地址,从而启动了update版本。
35.在线升级时,烧写位置为0x400000,spi flash模块里面的flash_config模块控制在线升级烧写位置。在线升级成功,启动同前文所述,在线升级失败,程序会从0x0地址的golden版本启动,保证可以再次进行在线升级。
36.在本实施例中,一种基于串口232协议升级fpga的系统,逻辑主要实现的功能是接收一个新的update配置镜像,并通过spi接口将镜像写入到flash中,如图3所示为fpga工程逻辑结构图,主要包括uart_module模块、data_repack模块、spi driver模块以及flash模块;data_repack模块分别连接uart_module模块和spi driver模块;spi driver模块和flash模块连接;在本实施例中,uart_module模块用于从上层软件接收配置镜像(串口数据),接收到的数据进行逻辑控制设计,程序中设计了三次超时重传机会,若等待三次都不能收到在线更新数据,则更新失败;值得注意的是,往flash配置更新数据之前,需要先对flash进行擦除,等待flash擦除完成(实测需要30s左右),再进行写数据,流程图如图4所示。
37.在本实施例中,data_repack模块是数据组帧模块,用于对数据按照协议进行组帧;data_repack模块的状态机如图5所示,flg_type表示操作类型,通过每一帧的控制数据进行解析出来,当写完一帧数据时,需要回复给上层一个ack,上层软件再进行下一帧数据的配置;如前所述,在线更新的数据帧格式根据合同所拟协议进行打包组帧,协议的帧结构从前至后依次为:帧头-帧总数-帧序号-控制数据-每帧数据内容-crc校验-帧尾,该帧格式一共包含148字节。其中每帧数据内容包含128字节,帧头、帧尾、校验字节和控制字节(帧总数、帧序号和控制数据)一共包含20字节;帧头帧尾的作用是方便识别数据的起始、结束位置,而控制字节包含帧号、帧长度和该帧的功能。
38.在本实施例中,spi driver模块用于spi协议的实现,并按照flash标准寄存器和时序进行实现。组帧完成后配置数据传递至spi_driver模块,该模块包含在线更新的地址累加控制和spi flash驱动控制;同时,由于升级的数据帧中包含帧号,将数据帧号左移7位,加上当前升级起始地址即获得了地址累加值。其逻辑控制状态机如图6所示。commande表示操作控制字,command为0x1表示data_wr,0x2表示data_se,0x80表示wr_wait,0x20表示data_rd。cs_done表示一个spi数操作完成。
39.关于spi flash的控制逻辑,参考flash芯片的官方文档,按照寄存器的定义和配置时序进行。需要说明的是,当flash的大小超过128mb时,需要使能4字节地址模式。
40.当data_repack模块接收完完整的配置文件,并写入到配置flash中后。用户可以执行断电重启fpga,或者向fpga发送重配置指令,或者其它让fpga重新加载的方式,然后fpga会重新启动,并加载到新的m镜像运行,若fpga在加载的过程中发现配置文件错误,则会回退到g镜像运行。虽然回退到了g镜像,但是g镜像中的逻辑也可以接收m镜像配置文件,并将其写入到spi flash的对应位置,从而保证了即便在m镜像被更新失败的情况下,用户依旧可以在运行g镜像时实现对m镜像的再次更新。
41.在本设计中,使用micron公司的n25q256存储flash数据,容量为256mbits,注意这
里的单位是bit,换算成字节(byte),也就是256mbits/8 = 32mbytes = 32*1024kbytes = 32768kbytes = 32768*1024bytes = 33,554,432个bytes。所以很容易计算出整个存储空间的地址范围是:0x0000000~0x1ffffff。n25q256 flash存储空间的结构如图7所示。
42.另外,spi flash需要区分扇区、子扇区和页的概念。n25q256的整个存储空间被分成了512个sectors,8192个subsectors,131,072个pages,映射的地址空间如图8所示。根据flash地址空间分配图,可以知道,地址的高16位(31~16)表示扇区的位置,第15~12位表示子扇区的位置。所以我们在在进行flash的擦除、读、写操作时,都是区分扇区,不区分页的,所以,我们只需操作0x0000000~0x1fff000即可。
43.例如:扇区0的地址:0x00000000h~0x0000ffffh
ꢀꢀꢀꢀꢀ
扇区1的地址:0x00010000h~0x0001ffffh
ꢀꢀꢀꢀꢀ
扇区2的地址:0x00020000h~0x0002ffffh
…ꢀꢀꢀꢀꢀ
扇区511的地址:0x01ff0000~0x01ffffffh本发明提出一种利用串口232协议升级fpga的方法,用户可以在设备不断电、不修改额外硬件电路的前提下,实现fpga配置镜像的远程更新、切换,并且在镜像切换失败时,回退到安全的镜像,保障远程更新安全。与传统jtag方法烧写相比,此方法具有安全性、便捷性的特点,无需专业人员参与,一键升级代码。适用于通过串口在线更新spi flash的方式。
44.需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本技术所必须的。
45.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
46.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、rom、ram等。
47.以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献