CN104657175B - 利用配置芯片实现启动引导和数据的读写系统及方法 - Google Patents
利用配置芯片实现启动引导和数据的读写系统及方法 Download PDFInfo
- Publication number
- CN104657175B CN104657175B CN201510064323.1A CN201510064323A CN104657175B CN 104657175 B CN104657175 B CN 104657175B CN 201510064323 A CN201510064323 A CN 201510064323A CN 104657175 B CN104657175 B CN 104657175B
- Authority
- CN
- China
- Prior art keywords
- pof
- jic
- data
- fpga
- files
- 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.)
- Active
Links
Abstract
本发明公开了一种利用配置芯片实现启动引导和数据的读写系统及方法,该系统包括计算机、下载器、FPGA芯片、外部存储器,所述计算机用于组合自定义数据和FPGA的应用程序,生成下载文件pof/jic;所述下载器用于连接计算机和FPGA,实现pof/jic文件的下载;所述FPGA为可编程器件,辅助实现pof/jic文件到外部存储器的传输、应用程序的运行以及用户数据的读写;所述外部存储器用于存储包含应用程序和用户自定义数据的pof/jic文件,它可以是EPCS等flash芯片。
Description
技术领域
本发明属于电子信息工程技术领域,涉及一种利用配置芯片实现启动引导和数据的读写系统及方法,具体地说,涉及一种利用配置芯片实现现场可编程门阵列(Field-Programmable Gate Array,FPGA)的引导启动(bootloader)和利用配置芯片实现启动引导和数据的读写系统及方法。
背景技术
FPGA需要外部存储器进行程序加载,也就是bootloader。该存储器的主要作用是存放FPGA的配置文件。Altera公司的FPGA的配置文件一般通过后缀为Pof、Jic格式文件进行存放,其开发软件QuartusII能识别这些格式文件,并调用下载器对外部存储器进行编程,把Pof与Jic中有效的数据固化到外部存储器中。在很多情况下FPGA的有效配置数据并没占据存储器的所有存储空间,因此在印制电路板(Printed Circuit Board,PCB)空间狭小或为了节省成本等实际情况下,外部存储器除了存放FPGA的配置数据以外还可以存储用户自定义的数据。
发明内容
为了克服现有技术中存在的缺陷,本发明提供一种利用配置芯片实现启动引导和数据的读写系统及方法,把用户自定义数据组合到Pof或Jic文件中,通过下载器把包含了FPGA配置数据以及用户自定义数据的Pof或Jic文件下载到外部存储器中,从而实现FPGA配置数据与用户自定义数据的一并固化,同时提供了一种FPGA加载后,从外部存储器中读取用户自定义数据的方法。
其技术方案如下:
一种利用配置芯片实现启动引导和数据的读写系统,包括计算机、下载器、FPGA芯片、外部存储器,
所述计算机用于组合自定义数据和FPGA的应用程序,生成下载文件pof/jic;
所述下载器用于连接计算机和FPGA,实现pof/jic文件的下载;
所述FPGA为可编程器件,辅助实现pof/jic文件到外部存储器的传输、应用程序的运行以及用户数据的读写;
所述外部存储器用于存储包含应用程序和用户自定义数据的pof/jic文件,它可以是EPCS系列等闪存(flash)芯片。
一种利用配置芯片实现启动引导和数据的读写方法,包括以下步骤:
组合文件下载到外部存储器;配置数据加载到FPGA;其中:
组合文件下载到外部存储器包括以下步骤:
1)在计算机上使用QuartusII软件生成应用程序的Pof/Jic文件;
2)计算Pof/Jic文件中地址偏置;
3)查阅后缀为map的文件,
由Addrend+1+Offsetaddr~Sizeflash-1+Offsetaddr计算Pof/Jic文件中可利用空间地址范围;其中Addrend为程序的结束地址,Offsetaddr为程序头的偏移地址,Sizeflash为存储芯片的大小。如果可用空间足够,可进行步骤4);否则组合失败,更换大容量的flash芯片,再进行步骤1)
4)由VC、matlab等其他计算机上的工具将用户自定义数据写入到可利用空间地址范围内;
5)在计算机上,由G(x)=x15+x11+x3对组合后的Pof/Jic文件数据进行校验码计算,并替换原校验码;
6)在计算机上,生成新的Pof/Jic文件;
7)将组合后的Pof/Jic文件数据下载到外部存储器中;
8)下载结束;
配置数据加载到FPGA包括以下步骤:
1)系统上电;
2)bootloader加载FPGA配置数据,启动应用程序;
3)由应用程序读写用户自定义数据,并运行相关功能;
本发明的有益效果:
本发明,将FPGA的启动代码和用户数据共同存放于一个flash芯片中,既可实现FPGA的正常bootloader过程,又可实现用户数据的读写,节约了系统的硬件成本,同时有利于PCB尺寸的减小,为设备的小型化提供条件。
附图说明
图1为利用配置芯片实现启动引导和数据的读写系统的原理图;
图2为Altera FPGA配置文件内的数据组成结构图;
图3为map文件内的地址空间范围信息图;
图4为组合文件下载到外部存储器流程图;
图5为配置数据加载到FPGA流程图;
图6为Pof/Jic文件头;
图7为Pof/Jic文件填充用户自定义数据;
图8为SignalTapII抓取增益校正系数;
图9为SignalTapII抓取偏移校正系数。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步详细地说明。
系统框图如图1所示。本系统框图主要是由四部分组成:计算机、下载器、FPGA芯片、外部存储器。系统主要实现两个功能:1)将FPGA配置数据以及用户自定义数据文件保存到计算机上,通过计算机和下载器将该数据由JTAG(Joint Test Action Group,JTAG)模式或AS(Active Serial,AS)模式下载到外部存储器中。在AS模式下,该数据直接通过主动串行存储器接口(Active Serial Memory Interface,ASMI)结构送到外部存储器中;在JTAG模式下,JTAG接口不能直接访问外部存储器,需通过FPGA内的串行Flash加载IP(SerialFlash Loader Intellectual Property,SFL IP)核作为JTAG接口和ASMI接口桥梁,将数据送到外部存储器中。2)系统上电后,用户对外部存储器进行读、写操作。用户可以通过SFL共享的ASMI接口,将读、写操作指令通过ASMI接口发送到外部存储器,外部存储器根据指令,做出相应的操作,从而实现用户对外部存储器的读、写操作。
图1中各个模块的用途概括如下:
计算机:用于组合自定义数据和FPGA的应用程序,生成下载文件pof/jic;
下载器:连接计算机和FPGA,实现pof/jic文件的下载;
FPGA:可编程器件,辅助实现pof/jic文件到外部存储器的传输、应用程序的运行以及用户数据的读写。
外部存储器:存储包含应用程序和用户自定义数据的pof/jic文件,它可以是EPCS等flash芯片。
原理介绍:
Pof与Jic文件是QuartusII软件编译生成的FPGA编程对象文件,文件内的数据组成结构如图2所示:
可以看到Pof或Jic文件由四部分组成,第一部分是Pof/Jic的文件头,文件头主要记录的内容包括:①文件类型标识、②QuartusII版本号、③被配置的FPGA型号、④外部Flash的型号;第二部分记录了FPGA的配置数据;第三部分为对剩余空间的填充数据;第四部分是Pof/Jic的文件尾,文件尾主要记录了第二部分中FPGA配置数据的分页状况以及数据段的起始地址、数据长度以及对整个文件的校验码。
其中Pof/Jic文件的文件头与文件尾仅为QuartusII软件所识别,并不参与到实际下载中,所以实际下载并固化到外部存储器里面的数据仅为第二部分以及第三部分的内容,第三部分填充数据的目的就是把实际内容长度扩展成与所选的外部存储器容量相匹配。因此可以把用户自定义数据替换掉第三部分的数据,这样既不影响原有的FPGA配置数据,又可以把用户自定义数据作为固化内容加入到Pof/Jic文件当中。最后修改文件尾部校验码,即可生成可以被QuartusII识别的合法Pof/Jic文件。
为实现FPGA的bootloader功能,FPGA与外部存储器相连接的管脚是特殊的管脚,包括读写时钟、片选使能、数据输出、数据输入等,这些都不是普通的I/O口,不能被FPGA内部用户编写的模块配置和调用。为实现用户通过FPGA对外部存储器中的数据进行读写等操作,可使用Altera提供的“Serial Flash Loader megafunction IP core”,在QuartusII11.0,可通过Tools->MegaWizard Plug-In Manager->Next->Create a new custommegafunction variation->Next->JTAG-accessible Extensions->Serial Flash Loader的操作,调出该IP核。。
Pof/Jic与用户自定义数据的组合技术的关键部分有三点:
①计算Pof/Jic中有效载荷内容所在地址到外部存储空间地址的偏置。
②定位可利用的外部存储空间的地址范围。
③文件校验码的生成。
地址偏置计算
Pof/Jic文件头与FPGA配置数据部分交接处的数据具备一定的特征,而Pof/Jic头文件由于内容的关系,是不会出现这样特征的数据,因此只需要从文件头开始寻找这种特征的数据,该特征数据所在地址就是地址映射的偏置,设该地址偏置为Offsetaddr,Pof/Jic文件第二部分与第三部分的数据在flash存储空间中的映射有以下关系:
Addrpof=Addrflash+Offsetaddr (1)
其中Addrpof为Pof/Jic文件第二部分与第三部分数据的所在的绝对地址,Addrflash是FPGA对flash芯片操作的基地址。
计算可利用空间的地址范围
文件组合的时候只能把用户自定义数据组合在填充数据部分,而不能覆盖原来FPGA配置数据内容,否则将会影响FPGA启动配置,因此要定位Pof/Jic文件中可利用的空间的地址范围。为此需先确定FPGA配置内容在Pof/Jic文件中存放的地址空间范围。
QuartusII软件在生成Pof/Jic文件时,会通过同名的map文件来输出FPGA配置内容的地址空间范围信息,如图3所示。
map文件的内容指示了FPGA配置数据存放到flash存储器时所占据的存储空间地址范围,flash剩余的空间都会被填充数据所占据。可利用空间地址范围则是填充数据所在的地址范围。假设FPGA配置数据最后一个数据所在地址为Addrend,flash的数据空间为Sizeflash,则可利用空间在flash存储器中的地址范围为:
Addrend+1~Sizeflash-1 (2)
根据前面Pof/Jic文件数据与flash存储地址的映射法则,可以推算出,在Pof/Jic文件中可利用空间所在地址范围为:
Addrend+1+Offsetaddr~Sizeflash-1+Offsetaddr (3)
文件校验码生成
QuartusII在调用Pof/Jic的时候会为这些文件的数据进行校验,以防文件数据被错误的修改。因此如果因为组合用户自定义数据,而使Pof/Jic文件数据内容变动了,将会使该文件无法通过QuartusII软件的校验,因此需要对修改过的Pof/Jic替换新的校验码。Pof/Jic文件的校验码是16位的循环冗余校验,其生成式如式(4)所示:
G(x)=x15+x11+x3 (4)
校验对文件中除了校验码以外的所有内容进行循环冗余校验计算,其校验计算结果为2个字节的校验码,并存放在文件尾部的最后两个地址单元。
实现步骤:
下面以红外图像两点校正系统为例说明本方案的运行步骤,其中用户数据自定义数据为增益校正系数和偏移校正系数,配置芯片需保存该增益校正系数和偏移校正系数以及应用程序,FPGA上电后,先bootloader启动应用程序,然后由应用程序加载增益校正系数和偏移校正系数,加载后,再进行两点校正计算。本实例选用的FPGA芯片是CycloneIII系列的EP3C25F256C8,外部存储器为EPCS16。实现流程如图4、5所示。
根据图4,组合文件下载到外部存储器的步骤概括如下:
1、在计算机上使用QuartusII软件生成应用程序的Pof/Jic文件。
2、计算Pof/Jic文件中地址偏置Offsetaddr。
3、查阅map文件,由式(3)计算Pof/Jic文件中可利用空间地址范围。如果可用空间足够,可进行步骤4;否则组合失败,更换大容量的flash芯片,再进行步骤1。
4、由VC、matlab等其他计算机上的工具将用户自定义数据写入到可利用空间地址范围内。
5、在计算机上,由式(4)对组合后的Pof/Jic文件数据进行校验码计算,并替换原校验码。
6、在计算机上,生成新的Pof/Jic文件。
7、将组合后的Pof/Jic文件数据下载到外部存储器中。
8、下载结束。
根据图5,配置数据加载到FPGA的步骤概括如下:
1、系统上电。
2、bootloader加载FPGA配置数据,启动应用程序。
3、由应用程序加载用户自定义数据,即增益校正系数和偏移校正系数。
4、两点校正算法的运行。
图6-9给出了本实例实现过程及结果的截图。
由上述理论结合图6分析可知,该文件的地址偏置Offsetaddr为95h。
图7给出了可用地址空间的范围及用户填充的自定义数据。
本实例选用的是外部存储器为EPCS16芯片,该芯片的容量为16Mbit,则该芯片的地址范围为:00000000h~002000D2h,由图3可知应用程序存储在EPCS的地址空间为00000000h~00040EC3h,则EPCS可用地址空间为00040EC4h~002000D2h,我们可以将用户自定义数据填充此可用地址空间,图中的用户自定义数据(增益校正系数和偏移校正系数)理解如下:
增益校正系数为A,数据位宽32bit,数据值为40000000h,数据长度为6C000h,EPCS16起始地址为00050000h。偏移校正系数为B,数据位宽16bit,数据值为0~255循环数,数据长度为36000h,EPCS16起始地址为00120000h。
由(1)式可知增益校正系数A在Pof/Jic文件的起始地址为00050095h,偏移校正系数B在Pof/Jic文件的起始地址为00120095h,由(3)式可知增益校正系数A在Pof/Jic文件的结束地址为000BC094h,偏移校正系数B在Pof/Jic文件的结束地址为00156090h,计算结果与图7组合后的地址空间完全吻合。
在Pof/Jic文件中,多个byte为一个系数,按低位优先存储,在烧写到外部存储器时,需按高位优先输出,故存在每个字的按位翻转过程,例如:增益校正系数A占4个字节,以数据40000000h为例,由于数据在组合文件时会做一次按位翻转,所以文件组合后增益系数为00000002h;偏移校正系数B占2个字节,以组合后数据8000h为例,读取的值应为0001h。如图8、9所示。
图8、9给出了SingalTapII软件仿真测试结果。
由图8可知,EPCS地址为00050000h时,读取的增益校正系数与图7一致。
由图9可知,EPCS地址为00120000h时,读取的偏移校正系数与图7一致。
以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。
Claims (1)
1.一种利用配置芯片实现启动引导和数据的读写系统,其特征在于:包括计算机、下载器、FPGA芯片、外部存储器,
所述计算机用于组合自定义数据和FPGA的应用程序,生成下载文件pof/jic;
所述下载器用于连接计算机和FPGA,实现pof/jic文件的下载;
所述FPGA为可编程器件,辅助实现pof/jic文件到外部存储器的传输、应用程序的运行以及用户数据的读写;
所述外部存储器用于存储包含应用程序和用户自定义数据的pof/jic文件,它可以是EPCS的flash芯片;
所述利用配置芯片实现启动引导和数据的读写系统的读写方法包括以下步骤:
组合文件下载到外部存储器;配置数据加载到FPGA;其中:
组合文件下载到外部存储器包括以下步骤:
1)在计算机上使用QuartusII软件生成应用程序的Pof/Jic文件;
2)计算Pof/Jic文件中地址偏置;
3)查阅map文件,
由Addrend+1+Offsetaddr~Sizeflash-1+Offsetaddr计算Pof/Jic文件中可利用空间地址范围;如果可用空间足够,可进行步骤4);否则组合失败,更换大容量的flash芯片,再进行步骤1)
4)由VC、matlab其他计算机上的工具将用户自定义数据写入到可利用空间地址范围内;
5)在计算机上,由G(x)=x15+x11+x3对组合后的Pof/Jic文件数据进行校验码计算,并替换原校验码;
6)在计算机上,生成新的Pof/Jic文件;
7)将组合后的Pof/Jic文件数据下载到外部存储器中;
8)下载结束;
配置数据加载到FPGA包括以下步骤:
1)系统上电;
2)bootloader加载FPGA配置数据,启动应用程序;
3)由应用程序读写用户自定义数据,并运行相关功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510064323.1A CN104657175B (zh) | 2015-02-06 | 2015-02-06 | 利用配置芯片实现启动引导和数据的读写系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510064323.1A CN104657175B (zh) | 2015-02-06 | 2015-02-06 | 利用配置芯片实现启动引导和数据的读写系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657175A CN104657175A (zh) | 2015-05-27 |
CN104657175B true CN104657175B (zh) | 2018-07-03 |
Family
ID=53248354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510064323.1A Active CN104657175B (zh) | 2015-02-06 | 2015-02-06 | 利用配置芯片实现启动引导和数据的读写系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657175B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020860A (zh) * | 2016-05-04 | 2016-10-12 | 桥弘数控科技(上海)有限公司 | 一种fpga的更新方法、装置及系统 |
CN113176883A (zh) * | 2021-04-13 | 2021-07-27 | 武汉华中数控股份有限公司 | 一种可自动生成烧写记录的fpga烧写方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904853A (zh) * | 2006-08-21 | 2007-01-31 | 北京中星微电子有限公司 | 一种嵌入式软件装载调试方法及其系统 |
CN1991763A (zh) * | 2006-01-01 | 2007-07-04 | 中兴通讯股份有限公司 | 一种cpu程序下载多个fpga文件的方法 |
CN102819232A (zh) * | 2012-07-12 | 2012-12-12 | 中国人民解放军空军第一航空学院 | 一种飞控计算机的便携式监控调试系统 |
CN103777972A (zh) * | 2012-10-24 | 2014-05-07 | 上海联影医疗科技有限公司 | 基于现场可编程门阵列的系统、配置方法以及升级方法 |
-
2015
- 2015-02-06 CN CN201510064323.1A patent/CN104657175B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1991763A (zh) * | 2006-01-01 | 2007-07-04 | 中兴通讯股份有限公司 | 一种cpu程序下载多个fpga文件的方法 |
CN1904853A (zh) * | 2006-08-21 | 2007-01-31 | 北京中星微电子有限公司 | 一种嵌入式软件装载调试方法及其系统 |
CN102819232A (zh) * | 2012-07-12 | 2012-12-12 | 中国人民解放军空军第一航空学院 | 一种飞控计算机的便携式监控调试系统 |
CN103777972A (zh) * | 2012-10-24 | 2014-05-07 | 上海联影医疗科技有限公司 | 基于现场可编程门阵列的系统、配置方法以及升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104657175A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Breeuwsma et al. | Forensic data recovery from flash memory | |
US7376887B2 (en) | Method for fast ECC memory testing by software including ECC check byte | |
US8000153B2 (en) | Enhanced erase for flash storage device | |
CN106990977A (zh) | 主机看到的设备固件更新效果的管理 | |
US11294650B2 (en) | String logging in an embedded system | |
CN104657175B (zh) | 利用配置芯片实现启动引导和数据的读写系统及方法 | |
CN112364578A (zh) | 一种存储器参数提取方法、装置、设备及可读存储介质 | |
CN113504918A (zh) | 设备树配置优化方法、装置、计算机设备和存储介质 | |
US20080216065A1 (en) | Information processing device, patch code application system, electronic instrument, and patch code application method | |
JP4180757B2 (ja) | シミュレーション装置 | |
CN107391181A (zh) | 一种系统分区的方法及装置 | |
WO2016189642A1 (ja) | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム | |
US20120011490A1 (en) | Development system | |
Kwon et al. | Low-power fast partial firmware update technique of on-chip flash memory for reliable embedded IoT microcontroller | |
CN116663489A (zh) | 一种rtl模块复位方法、装置、电子设备及存储介质 | |
CN113127283B (zh) | 芯片修复系统、方法、装置、计算机设备和存储介质 | |
CN114281538A (zh) | 内存参数调整方法、装置、设备和介质 | |
US6813751B2 (en) | Creating standard VHDL test environments | |
CN114428642A (zh) | 一种基于新型处理器架构的随机指令生成环境 | |
CN114924947A (zh) | 代码测试方法、装置、电子设备及存储介质 | |
CN115167862A (zh) | 补丁方法及相关设备 | |
US20070088905A1 (en) | System and method for purging a flash storage device | |
CN117130721B (zh) | WebAssembly代码的执行方法及装置 | |
CN115421876B (zh) | 二进制翻译方法及装置 | |
CN117608590B (zh) | 数据组包解包方法、装置和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |