CN113467889A - 一种最小fpga cpu验证系统及方法 - Google Patents
一种最小fpga cpu验证系统及方法 Download PDFInfo
- Publication number
- CN113467889A CN113467889A CN202110737197.7A CN202110737197A CN113467889A CN 113467889 A CN113467889 A CN 113467889A CN 202110737197 A CN202110737197 A CN 202110737197A CN 113467889 A CN113467889 A CN 113467889A
- Authority
- CN
- China
- Prior art keywords
- fpga
- command
- cpu
- uart
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及FPGA技术领域,具体涉及一种最小FPGA CPU验证系统及方法,包括由CPU、RAM和UART组成的FPGA端及装有控制软件controllersoftware的PC端,所述FPGA端的UART口通过串口线与所述PC端的串口相连,工作时,FPGA端CPU上电启动bootcode,bootcode代码循环等待UART数据。PC端Controllersoftware发送命令,通过COM口传给UART。FPGA端CPU收到UART的数据,执行相应命令的处理函数。本发明的FPGA CPU验证系统极为精简,只需要CPU、UART、RAM即可组成,并具备更新测试程序便捷的特性,具有很强的市场应用前景。
Description
技术领域
本发明涉及FPGA技术领域,具体涉及一种最小FPGA CPU验证系统及方法。
背景技术
现有FPGA CPU验证系统至少需要包括一片flash,用于保存CPU所需要执行的程序,该系统需要包含flash的硬件controller以及配套软件。每次更新程序时,需要将flash取下,烧写完成之后,再放到FPGA开发板上,步骤较为繁琐。另外Flash的写入过程较RAM的写入过程更为复杂,需要先进行擦除动作,才能进行写入动作。
在验证CPU的初期,一般会为该CPU准备一个最小SoC系统,该系统一般只包含CPU、UART、RAM。CPU所运行的程序被放在RAM里面,在EDA仿真阶段,只需要使用后台加载的方式把程序加载到RAM里面就行了。但是,在FPGA验证的时候,是无法进行后台加载的。因此本文提出一种方法用于解决FPGA最小CPU系统程序加载的问题。
发明内容
针对现有技术的不足,本发明公开了一种最小FPGA CPU验证系统及方法,用于解决FPGA最小CPU系统程序加载的问题。
本发明通过以下技术方案予以实现:
第一方面,本发明公开了一种最小FPGA CPU验证方法,包括以下步骤:
S1.系统初始化,FPGA端CPU上电启动bootcode;
S2.bootcode代码循环等待UART数据;
S3.PC端Controllersoftware发送命令,并通过COM口传给UART;
S4.FPGA端CPU收到UART的数据,执行相应命令的处理函数,完成验证。
更进一步的,所述方法中,PGA端CPU bootcode执行流程时,包括以下子步骤:
S21.Uart_init,初始化uart;
S22.Uart_recv,接收一个uart的数据包;
S23.CalcCRC,计算该数据包的crc,验证该数据包完整性;如果验证失败,则跳到S24;如果验证成功,则跳到S25;
S24.发送ack_err_crc给PC端,告知PC端本次数据包错误;
S25.解析该数据包并判断是何命令;
S26.判断命令是cmd_boot,则发送ack_suc表示成功接收到命令,把exit置为1,并跳转到addr,开始执行测试用例;
S27.判断命令是cmd_loop,则将收到的数据重新发送出去;
S28.判断命令是cmd_addr,则将addr记录下来,并将收到的地址发送回去;
S29.判断命令是cmd_write,则将数据写入addr,并将addr加上写入的字节数,然后将上一次的crc发送回去;
S210.判断命令是cmd_read,则将addr的数据读取出来,发送给PC端;
S211.判断都不是上述命令,则返回ack_err_cmd,告知PC端收到错误的命令。
更进一步的,所述方法中,进行程序下载时,包括以下子步骤:
S31.Uart_init,初始化uart;
S32.进入握手流程,每隔1s发送一个loop,直到收到FPGA端的ack_data表示握手成功,如果收到一个不完整的包或者3s内没收到响应,则重新发送命令;
S33.握手成功,进入download流程;
S34.发送目标地址addr;
S35.读取文件64个byte;
S36.发送文件数据给FPGA端;
S37.检查数据responsecrc是否正确;
S38.判断文件是否结束,如果没结束则跳回S35,继续发送数据;
S39.进入boot流程;
S310.发送boot的地址;
S311.发送boot命令,让FPGA端CPU程序跳转到0x8000_0000地址,从而启动测试程序。
更进一步的,所述方法中,在调试过程中,需要读取memory的内容做一定检查,则读取memory时包括以下子步骤:
S41.Uart_init,初始化uart;
S42.进入握手流程,每隔1s发送一个loop,直到收到FPGA端的ack_data表示握手成功,如果收到一个不完整的包或者3s内没收到响应,则重新发送命令;
S43.握手成功,进入read_mem流程;
S44.发送目标地址addr;
S45.发送read命令;
S46.接收uart的数据,并检查crc;
S47.将uart的数据写入文件;
S48.判断是否结束,如果没有结束,则跳转到S45,继续读取。
更进一步的,所述方法中,数据包格式由cmd、len、data、crc8字段组成,其中cmd长度是1个字节;len是1个字节,表示后面data的长度;data为数据体;crc8为data域的crc校验,发送时为低byte先发。
更进一步的,所述方法中,发送每条命令都必须有ack,收到之后才能发送下一条命令,如果返回失败,则重新发送命令。
第二方面,本发明公开了一种最小FPGA CPU验证系统,所述系统用于执行第一方面所述的最小FPGA CPU验证方法,包括由CPU、RAM和UART组成的FPGA端及装有控制软件controllersoftware的PC端,所述FPGA端的UART口通过串口线与所述PC端的串口相连。
更进一步的,所述PC端的controllersoftware基于python语言编写,控制PC端串口,发送命令来控制FPGA端bootcode,以完成动态下载程序功能和读取memory功能。
更进一步的,所述FPGA端RAM的地址为0x8000_0000~0xbfff_ffff,CPU的复位地址设置为0xb000_0000,并将一段bootcode代码通过综合工具初始化到0xb000_0000地址,以使得FPGA端CPU默认执行bootcode代码。
本发明的有益效果为:
本发明的FPGA CPU验证系统极为精简,只需要CPU、UART、RAM即可组成,并具备更新测试程序便捷的特性,具有很强的市场应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种最小FPGA CPU验证系统原理框图;
图2是本发明实施例FPGA端CPU默认执行bootcode代码示意框图;
图3是本发明实施例FPGA端CPU bootcode执行流程图;
图4是本发明实施例程序下载过程图;
图5是本发明实施例通讯握手协议原理示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例公开一种最小FPGA CPU验证方法,包括以下步骤:
S1.系统初始化,FPGA端CPU上电启动bootcode;
S2.bootcode代码循环等待UART数据;
S3.PC端Controllersoftware发送命令,并通过COM口传给UART;
S4.FPGA端CPU收到UART的数据,执行相应命令的处理函数,完成验证。
本实施例中,如图5所示,通讯握手协议原理如下:数据包格式由cmd、len、data、crc8字段组成,其中cmd长度是1个字节;len是1个字节,表示后面data的长度;data为数据体;crc8为data域的crc校验,发送时为低byte先发。
本实施例中,发送每条命令都必须有ack,收到之后才能发送下一条命令,如果返回失败,则重新发送命令。
实施例2
本实施例公开如图3所示的FPGA端CPU bootcode执行流程:
1.Uart_init,初始化uart
2.Uart_recv,接收一个uart的数据包
3.CalcCRC,计算该数据包的crc,验证该数据包完整性。如果验证失败,则跳到第四步;如果验证成功,则跳到第5步。
4.由于CRC验证失败,发送ack_err_crc给PC端,告知PC端本次数据包错误
5.由于CRC验证成功,则解析该数据包是何命令
6.如果命令是cmd_boot,则发送ack_suc表示成功接收到命令,并把exit置为1,用以跳出循环,并跳转到addr,开始执行测试用例
7.如果命令是cmd_loop,则将收到的数据重新发送出去,以用于做通路测试
8.如果命令是cmd_addr,则将addr记录下来,用于后续读取、写入或boot,并将收到的地址发送回去,以让PC端确认收到正确地址
9.如果命令是cmd_write,则将数据写入addr,并将addr加上写入的字节数。然后将上一次的crc发送回去以确认该笔数据包的正确性
10.如果命令是cmd_read,则将addr的数据读取出来,发送给PC端
11.如果都不是上述命令,则返回ack_err_cmd,告知PC端收到错误的命令。
本实施例中,PC端controllersoftware基于python语言编写,控制PC端串口,发送命令来控制FPGA端bootcode,以完成动态下载程序功能和读取memory功能。
实施例3
本实施例公开如图4所示的程序下载过程如下:
1.Uart_init,初始化uart
2.进入握手流程,每隔1s发送一个loop,直到收到FPGA端的ack_data表示握手成功,如果收到一个不完整的包,或者3s内没收到响应,就重新发送命令
3.握手成功后,进入download流程
4.发送目标地址addr,一般为0x8000_0000
5.读取文件64个byte
6.发送文件数据给FPGA端
7.检查数据responsecrc是否正确
8.判断文件是否结束,如果没结束则跳回第5步,继续发送数据
9.进入boot流程
10.发送boot的地址,一般为0x8000_0000
11.发送boot命令,让FPGA端CPU程序跳转到0x8000_0000地址,从而启动测试程序。
实施例4
再调试过程中,可能需要读取memory的内容做一定检查,因此,本实施例公开读取memory,过程如下:
1.Uart_init,初始化uart
2.进入握手流程,每隔1s发送一个loop,直到收到FPGA端的ack_data表示握手成功,如果收到一个不完整的包,或者3s内没收到响应,就重新发送命令
3.握手成功后,进入read_mem流程
4.发送目标地址addr
5.发送read命令
6.接收uart的数据,并检查crc
7.将uart的数据写入文件
8.判断是否结束,如果没有结束,则跳转到第5步,继续读取。
实施例5
本实施例公开一种最小FPGA CPU验证系统,包括由CPU、RAM和UART组成的FPGA端及装有控制软件controllersoftware的PC端,所述FPGA端的UART口通过串口线与所述PC端的串口相连。
本实施例的FPGA端RAM的地址为0x8000_0000~0xbfff_ffff,CPU的复位地址设置为0xb000_0000,并将一段bootcode代码通过综合工具初始化到0xb000_0000地址,以使得FPGA端CPU默认执行bootcode代码。
本实施例支持的命令类型如下:
本实施例的替代方案为增加一片flash,用于保存CPU所需要执行的程序,该系统需要包含flash的硬件以及配套软件。而且每次更新程序时,需要将flash取下,烧写完成之后,再放到FPGA开发板上,步骤较为繁琐。
综上,本发明的FPGA CPU验证系统极为精简,只需要CPU、UART、RAM即可组成,并具备更新测试程序便捷的特性,具有很强的市场应用前景。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种最小FPGA CPU验证方法,其特征在于,所述方法包括以下步骤:
S1.系统初始化,FPGA端CPU上电启动bootcode;
S2.bootcode代码循环等待UART数据;
S3.PC端Controllersoftware发送命令,并通过COM口传给UART;
S4.FPGA端CPU收到UART的数据,执行相应命令的处理函数,完成验证。
2.根据权利要求1所述的最小FPGA CPU验证方法,其特征在于,所述方法中,PGA端CPUbootcode执行流程时,包括以下子步骤:
S21.Uart_init,初始化uart;
S22.Uart_recv,接收一个uart的数据包;
S23.CalcCRC,计算该数据包的crc,验证该数据包完整性;如果验证失败,则跳到S24;如果验证成功,则跳到S25;
S24.发送ack_err_crc给PC端,告知PC端本次数据包错误;
S25.解析该数据包并判断是何命令;
S26.判断命令是cmd_boot,则发送ack_suc表示成功接收到命令,把exit置为1,并跳转到addr,开始执行测试用例;
S27.判断命令是cmd_loop,则将收到的数据重新发送出去;
S28.判断命令是cmd_addr,则将addr记录下来,并将收到的地址发送回去;
S29.判断命令是cmd_write,则将数据写入addr,并将addr加上写入的字节数,然后将上一次的crc发送回去;
S210.判断命令是cmd_read,则将addr的数据读取出来,发送给PC端;
S211.判断都不是上述命令,则返回ack_err_cmd,告知PC端收到错误的命令。
3.根据权利要求1所述的最小FPGA CPU验证方法,其特征在于,所述方法中,进行程序下载时,包括以下子步骤:
S31.Uart_init,初始化uart;
S32.进入握手流程,每隔1s发送一个loop,直到收到FPGA端的ack_data表示握手成功,如果收到一个不完整的包或者3s内没收到响应,则重新发送命令;
S33.握手成功,进入download流程;
S34.发送目标地址addr;
S35.读取文件64个byte;
S36.发送文件数据给FPGA端;
S37.检查数据responsecrc是否正确;
S38.判断文件是否结束,如果没结束则跳回S35,继续发送数据;
S39.进入boot流程;
S310.发送boot的地址;
S311.发送boot命令,让FPGA端CPU程序跳转到0x8000_0000地址,从而启动测试程序。
4.根据权利要求1所述的最小FPGA CPU验证方法,其特征在于,所述方法中,在调试过程中,需要读取memory的内容做一定检查,则读取memory时包括以下子步骤:
S41.Uart_init,初始化uart;
S42.进入握手流程,每隔1s发送一个loop,直到收到FPGA端的ack_data表示握手成功,如果收到一个不完整的包或者3s内没收到响应,则重新发送命令;
S43.握手成功,进入read_mem流程;
S44.发送目标地址addr;
S45.发送read命令;
S46.接收uart的数据,并检查crc;
S47.将uart的数据写入文件;
S48.判断是否结束,如果没有结束,则跳转到S45,继续读取。
5.根据权利要求1所述的最小FPGA CPU验证方法,其特征在于,所述方法中,数据包格式由cmd、len、data、crc8字段组成,其中cmd长度是1个字节;len是1个字节,表示后面data的长度;data为数据体;crc8为data域的crc校验,发送时为低byte先发。
6.根据权利要求1所述的最小FPGA CPU验证方法,其特征在于,所述方法中,发送每条命令都必须有ack,收到之后才能发送下一条命令,如果返回失败,则重新发送命令。
7.一种最小FPGA CPU验证系统,所述系统用于执行如权利要求1-6任一项所述的最小FPGA CPU验证方法,其特征在于,包括由CPU、RAM和UART组成的FPGA端及装有控制软件controllersoftware的PC端,所述FPGA端的UART口通过串口线与所述PC端的串口相连。
8.根据权利要求7所述的最小FPGA CPU验证系统,其特征在于,所述PC端的controllersoftware基于python语言编写,控制PC端串口,发送命令来控制FPGA端bootcode,以完成动态下载程序功能和读取memory功能。
9.根据权利要求7所述的最小FPGA CPU验证系统,其特征在于,所述FPGA端RAM的地址为0x8000_0000~0xbfff_ffff,CPU的复位地址设置为0xb000_0000,并将一段bootcode代码通过综合工具初始化到0xb000_0000地址,以使得FPGA端CPU默认执行bootcode代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110737197.7A CN113467889A (zh) | 2021-06-30 | 2021-06-30 | 一种最小fpga cpu验证系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110737197.7A CN113467889A (zh) | 2021-06-30 | 2021-06-30 | 一种最小fpga cpu验证系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113467889A true CN113467889A (zh) | 2021-10-01 |
Family
ID=77876514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110737197.7A Pending CN113467889A (zh) | 2021-06-30 | 2021-06-30 | 一种最小fpga cpu验证系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467889A (zh) |
-
2021
- 2021-06-30 CN CN202110737197.7A patent/CN113467889A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134415A (zh) | 一种控制器及其软件升级方法和装置 | |
CN110187909B (zh) | 一种基于安卓系统的单片机固件升级方法 | |
CN111857776B (zh) | Dsp板卡类的应用程序的在线升级方法 | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
CN111124440A (zh) | 芯片软件烧录方法、芯片软件烧录数据处理方法和装置 | |
CN111769962A (zh) | 一种mcu固件ota升级方法 | |
US20090198770A1 (en) | System and method of updating codes in controller | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN110597542A (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN112947977A (zh) | 一种软件在线升级方法及系统 | |
CN114281394A (zh) | 一种快速在线升级程序的方法、系统、设备及介质 | |
CN108182078B (zh) | 一种优化的弹载设备不拆弹软件在线升级方法 | |
CN114443175B (zh) | 一种用于弹载fpga在线升级的启动配置方法 | |
CN111857882B (zh) | 可扩展的ssd开卡固件加载方法、装置、计算机设备及存储介质 | |
CN111856241A (zh) | 一种芯片量产平台系统及其实现方法 | |
CN113467889A (zh) | 一种最小fpga cpu验证系统及方法 | |
CN116700765A (zh) | 伺服驱动器的固件升级方法及装置、伺服驱动器 | |
CN113360161A (zh) | 资源升级方法及相关产品 | |
CN1673959A (zh) | 加载系统及方法 | |
CN114281390A (zh) | 一种基于Zynq 7000的在线升级系统及方法 | |
CN101221519A (zh) | 一种处理器系统中闪存存储器的读写调试方法 | |
CN113467842B (zh) | 适用于工业级应用场景的嵌入式设备的启动方法、嵌入式设备和计算机可读存储介质 | |
CN111918278A (zh) | 空中下载升级校验方法、装置、介质和智能终端设备 | |
CN114625389A (zh) | 嵌入式设备升级方法、嵌入式设备及存储装置 | |
CN111459526A (zh) | 一种基于can通讯的单片机在线升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |