一种采用CPU远程更新FPGA固件的方法技术

技术编号:36347486 阅读:48 留言:0更新日期:2023-01-14 18:02
本发明专利技术公开了一种采用CPU远程更新FPGA固件的方法,其特征在于,包括如下步骤:1)定位;2)将固件拆分再传输;3)处理FPGA和CPU同时读写FLASH冲突。这种方法能够充分利用现有的硬件连接方式,操作方式简单、具有可移植性。具有可移植性。具有可移植性。

【技术实现步骤摘要】
一种采用CPU远程更新FPGA固件的方法


[0001]本专利技术涉及FPGA固件的FLASH更新技术,具体是一种采用CPU远程更新FPGA固件的方法。

技术介绍

[0002]传统的FPGA固件更新方法需要连接烧写器,而FPGA的烧写接口一般都在板卡上,一台设备内可能一般配备多块板卡,每块板卡上都具有一个CPU和FPGA以及存放FPGA固件的FLASH芯片。当设备开发完成,那么板卡就会进行装配,加入散热模块,然后装入机箱内,此时如果需要更新FPGA固件,那么就需要重新拆开机箱,拆卸散热模块。机箱的和散热模块的拆卸需要耗费大量的时间,如果存在一种不需要拆开机箱就能更新FPGA固件的方法,那么就能过大大节约更新固件的时间。

技术实现思路

[0003]本专利技术的目的是针对现有技术的不足,而提供一种采用CPU远程更新FPGA固件的方法。这种方法能够充分利用现有的硬件连接方式,操作方式简单、具有可移植性。
[0004]实现本专利技术目的的技术方案是:一种采用CPU远程更新FPGA固件的方法, 包括如下步骤:1)定位:假设设备机箱中有多块电路板卡,每块电路板卡上都有CPU和FPGA以及存储FPGA固件的FLASH芯片,将TCP/IP协议应用于电路板卡CPU的定位和FLASH芯片的定位,即上位机通过电路板卡的唯一的IP地址识别不同的电路板卡,进而确定该电路板卡需要升级的固件数据,这样能实现上位机一个网管接口升级多块板卡FPGA固件的功能,过程为:1

1)CPU创建TCP网络套接字线程等待上位机的发起的网络连接;1

2)上位机向需要升级固件的板卡发起TCP网络连接;1

3)上位机向CPU发送擦除芯片数据帧,CPU开始擦除FLASH芯片;1

4)CPU等待芯片数据擦除完成之后,CPU向上位机发送擦除芯片应答帧;2)将固件拆分再传输:将固件数据按照地址递增顺序拆分为多个1024字节的数据包并依据数据烧录帧格式进行封装,分装后的数据帧小于1500字节,小于TCP/IP协议规定的最大包长度,CPU从烧录数据帧中读取地址数据以确定固件数据的写入位置,CPU从数据烧录帧中获得接收到的固件数据写入的地址并将该数据写入FLASH芯片,上位机向CPU发送数据回读帧时携带回读的固件数据的地址信息以及读取的字节长度,CPU根据地址和字节长度从FLASH中读取固件数据并封装进数据回读答复帧后发送给上位机,将固件拆分能够节约CPU的内存空间,降低升级模块的内存占用率,过程为:2

1)上位机将FPGA固件按照顺序拆分为多个1024字节长度的数据包并将拆分后的数据包依据烧录数据进行重新封装后发送给CPU;2

2)CPU从接收到的固件数据包中解析出固件数据和固件数据的写入地址,然后CPU将固件数据写入FLASH,并向上位机返回烧录数据答复帧;
2

3)上位机收到数据烧录答复帧之后继续发送下一帧固件数据,循环步骤2

1)、步骤2

2)直到固件数据烧录完成;2

4)上位机在收到最后一个烧录数据答复帧之后向CPU发送数据回读帧;2

5)CPU收到数据回读帧之后依据数据帧指定的地址从FLASH芯片中读取指定字节长度的固件数据,并将该固件数据封装进数据回读答复帧中并向上位机发送;2

6)上位机收到回读数据答复帧之后将回读的固件数据和上位机本地保存的数据进行对比,如果对比没有出现错误则继续发送下一数据回读帧;2

7)循环执行步骤2

5)、步骤2

6),直到将FLASH芯片中的所有固件数据对比完毕,如果对比出现错误,则上位机停止发送回读数据帧并显示固件数据烧录失败;2

8)如果烧录失败则需要重新擦除芯片中的固件数据,然后开始烧录,即从步骤1

3)开始执行;3)处理FPGA和CPU同时读写FLASH冲突的问题:安装一个和FLASH芯片相连的驱动器,CPU和FPGA的SPI信号线分别和驱动器相连接,任意时刻驱动器只允许一路SPI信号线和FLASH芯片通信,驱动器由CPU进行控制,当CPU对FLASH进行读写的时候禁止FPGA对FLASH芯片进行操作,FPGA不能禁止CPU对FLASH芯片进行读写,CPU控制驱动器,当选中CPU的SPI信号线时,驱动器打通CPU的SPI信号线到FLASH的通道,FPGA的SPI信号线将被屏蔽,这样避免了信号冲突。
[0005]TCP/IP协议是一种面向连接的可靠通讯协议,上位机和机箱内的CPU通过以太网建立TCP/IP连接,确保了上位机能够准确的将固件数据传输给CPU,每个电路板卡的FPGA固件往往是不同的,设备内每个电路板卡都具有唯一的IP地址,所以上位机能够通过IP地址识别不同的板卡,这样就能够通过IP地址准确更新每一块板卡的固件数据,一个固件数据的大小在10M左右,而CPU的内存空间比较有限,如果上位机一次性将整个固件完整传输给CPU,那么CPU可能没有足够的空间进行存储。
[0006]本技术方案中上位机通过IP地址定位待升级的板卡的CPU,然后与CPU建立TCP/IP连接,上位机通过将待升级的固件进行拆分后使用私有协议进行封装后传输给CPU,CPU按照指令对FLASH芯片进行固件数据更新,写入完成后上位机向CPU发送固件数据回读命令,CPU根据协议读取FLASH中的固件数据并返回给上位机,上位机对数据进行对比后确认更新成功或者失败,为了在有限的内存空间上实现固件的更新,本技术方案中将固件数据在上位机上进行拆分,然后依据私有协议进行封装,最后封装进TCP/IP数据包,然后将固件数据分多次传输到CPU中,然后CPU及时将固件数据写入FLASH中,写入完成之后CPU向上位机发送数据烧录完成的答复帧,上位机收到答复数据帧之后继续发送下一个固件数据烧录帧,由于CPU没有得到完整的固件数据,所以CPU并不知道应该将固件数据写入FLASH的哪个地址,所以上位机应该在烧录数据帧中加入固件的写入地址和数据帧中固件数据的字节长度数据。
[0007]这种方法能够充分利用现有的硬件连接方式,操作方式简单、具有可移植性。
附图说明
[0008]图1为实施例中CPU、FPGA和FLASH之间的电路原理示意图。
具体实施方式
[0009]下面结合附图和实施例对本专利技术的内容做进一步的阐述,但不是对本专利技术的限定。
[0010]实施例:一种采用CPU远程更新FPGA固件的方法, 包括如下步骤:1)定位:设备机箱中有多块电路板卡,每块电路板卡上都有CPU和FPGA以及存储FPGA固件的FLASH芯片,将TCP/IP协议应用于电路板卡CPU的定位和FLASH芯片的定位,即上位机通过电路板卡的唯一的IP地址识别不同的电路板卡,进而确定该电路板卡需要升级的固件数据,这样能实现上位机一个网管接口升级多块本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种采用CPU远程更新FPGA固件的方法,其特征在于,包括如下步骤:1)定位:假设设备机箱中有多块电路板卡,每块电路板卡上都有CPU和FPGA以及存储FPGA固件的FLASH芯片,将TCP/IP协议应用于电路板卡CPU的定位和FLASH芯片的定位,即上位机通过电路板卡的唯一的IP地址识别不同的电路板卡,进而确定该电路板卡需要升级的固件数据,过程为:1

1)CPU创建TCP网络套接字线程等待上位机的发起的网络连接;1

2)上位机向需要升级固件的板卡发起TCP网络连接;1

3)上位机向CPU发送擦除芯片数据帧,CPU开始擦除FLASH芯片;1

4)CPU等待芯片数据擦除完成之后,CPU向上位机发送擦除芯片应答帧;2)将固件拆分再传输:将固件数据按照地址递增顺序拆分为多个1024字节的数据包并依据数据烧录帧格式进行封装,CPU从烧录数据帧中读取地址数据以确定固件数据的写入位置,CPU从数据烧录帧中获得接收到的固件数据写入的地址并将该数据写入FLASH芯片,上位机向CPU发送数据回读帧时携带回读的固件数据的地址信息以及读取的字节长度,CPU根据地址和字节长度从FLASH中读取固件数据并封装进数据回读答复帧后发送给上位机,过程为:2

1)上位机将FPGA固件按照顺序拆分为多个1024字节长度的数据包并将拆分后的数据包依据烧录数据进行重新封装后发送给CPU;2

2)CPU从接收到的固件数据包中解析出固件数据和固件数据的写入地址,然后CPU将固件数据写入FLASH,并向上位机返回烧录数据答复帧;2
...

【专利技术属性】
技术研发人员:黄勇良郑志伟
申请(专利权)人:中国电子科技集团公司第三十四研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1