CN111198718A - 一种基于fpga的处理器启动方法和处理器 - Google Patents
一种基于fpga的处理器启动方法和处理器 Download PDFInfo
- Publication number
- CN111198718A CN111198718A CN201911375751.0A CN201911375751A CN111198718A CN 111198718 A CN111198718 A CN 111198718A CN 201911375751 A CN201911375751 A CN 201911375751A CN 111198718 A CN111198718 A CN 111198718A
- Authority
- CN
- China
- Prior art keywords
- storage unit
- chip
- processor
- address
- value
- 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/4401—Bootstrapping
- G06F9/4403—Processor initialisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种基于FPGA的处理器启动方法和处理器。本技术方案中,运行固化启动引导程序,从处理器内核地址空间中获取处理器映射的片外存储单元用于嵌入式程序映像文件下载的地址段;把地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元;运行片内指令存储单元中的嵌入式程序映像文件。当嵌入式程序需要更新时,本技术方案可避免重载处理器内核硬件设计,降低开发复杂度,提高开发效率。
Description
技术领域
本发明涉及FPGA技术领域,尤其涉及一种基于FPGA的处理器启动方法和处理器。
背景技术
现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)被广泛地应用到各个领域中。基于FPGA的处理器具有良好的扩展性,设计人员可根据不同应用场景自由扩展处理器的功能,有利于快速设计和使用。
本技术方案的技术人员在研发时发现,现有的基于FPGA的处理器启动方法,在完成处理器内核硬件设计后,把启动引导程序和嵌入式程序映像文件写入片内指令存储单元的初始值中;当运行片内指令存储单元的初始值中的启动引导程序时,从该片内指令存储单元的初始值中运行嵌入式程序映像文件。现有技术在每次更新嵌入式程序时,需要重载处理器内核硬件设计,执行布局和布线,产生码流文件,重新把嵌入式程序映像文件写入内指令存储单元的初始值中,增加开发复杂度,降低开发效率。
发明内容
本发明实施例提供一种提高开发效率的基于FPGA的处理器启动方法和处理器。
本发明实施例采用以下技术方案:
第一方面,本发明实施例提供一种基于FPGA的处理器启动方法,包括:
运行固化启动引导程序,从处理器内核地址空间中获取处理器映射的片外存储单元用于嵌入式程序映像文件下载的地址段;
把地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元;
运行片内指令存储单元中的嵌入式程序映像文件。
作为一个可选实施例,把地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元,运行片内指令存储单元中的嵌入式程序映像文件,包括:
a将读地址偏移量寄存器的数值初始化为0;
b根据读地址偏移量寄存器的数值与地址段的起始地址,从片外存储单元中读取预置大小的数据;
c根据预置大小的数据判断是否读完片外存储单元中的嵌入式程序映像文件;若文件读完,运行片内指令存储单元中的嵌入式程序映像文件;若文件没有读完,把预置大小的数据保存到片内指令存储单元,根据预置大小的数值修改读地址偏移量寄存器的数值,返回步骤b。
作为一个可选实施例,根据预置大小的数值修改读地址偏移量寄存器的数值,返回步骤b,包括:
根据预置大小的数值修改读地址偏移量寄存器的数值,判断读地址偏移量寄存器的数值是否达到最大预设值,若是,运行片内指令存储单元中的嵌入式程序映像文件,否则,返回步骤b。
作为一个可选实施例,根据读地址偏移量寄存器的数值与地址段的起始地址,从片外存储单元中读取预置大小的数据,包括:把读地址偏移量寄存器的数值相对的16进制值与地址段的起始地址的16进制值相加,得到当前读取地址值,从片外存储单元的当前读取地址值开始读取预置大小的数据;
根据预置大小的数据判断是否读完片外存储单元中的嵌入式程序映像文件,包括:判断预置大小的数据相对的2进制值是否全为1,若是,确认文件读完,否则,确认文件没有读完。
作为一个可选实施例,根据预置大小的数值修改读地址偏移量寄存器的数值,包括:将预置大小的数值与读地址偏移量寄存器的数值相加,得到当前数值,把读地址偏移量寄存器的数值修改为当前数值。
作为一个可选实施例,把预置大小的数据保存到片内指令存储单元,包括:从处理器内核地址空间中获取片内指令存储单元用于保存嵌入式程序映像文件的地址段;根据读地址偏移量寄存器的数值与该地址段的起始地址,在片内指令存储单元中写入预置大小的数据。
作为一个可选实施例,根据读地址偏移量寄存器的数值与该地址段的起始地址,在片内指令存储单元中写入预置大小的数据,包括:
把读地址偏移量寄存器的数值相对的16进制值与该地址段的起始地址的16进制值相加,得到当前写入地址值,在片内指令存储单元的当前写入地址值开始写入预置大小的数据。
作为一个可选实施例,基于FPGA的处理器为由FPGA配置成的嵌入式处理器;运行固化启动引导程序,之前还包括:从处理器内核地址空间中获取处理器映射的片外存储单元用于FPGA码流文件下载的地址段,使用地址段对应片外存储单元中的FPGA码流文件把FPGA配置成嵌入式处理器;其中,嵌入式程序映像文件和FPGA码流文件复用同一个片外存储单元,处理器复用同一个外部存储单元接口从片外存储单元中加载嵌入式程序映像文件和FPGA码流文件。
作为一个可选实施例,处理器内核地址空间还包括片内指令存储单元用于写入固化启动引导程序的地址段、以及数据存储单元和外部设备地址空间的地址段;处理器为第五代精简指令集架构的处理器;
从片外存储单元中读取预置大小的数据,包括,使用基于第五代精简指令集架构的指令集定义的存储单元读指令、从片外存储单元中读取预置大小的数据;
把预置大小的数据保存到片内指令存储单元,包括,使用基于第五代精简指令集架构的指令集定义的存储单元写指令、把预置大小的数据保存到片内指令存储单元;
若文件读完,运行片内指令存储单元中的嵌入式程序映像文件,包括,使用基于第五代精简指令集架构的指令集定义的条件分支指令判断出文件读完,运行片内指令存储单元中的嵌入式程序映像文件;
若是,运行片内指令存储单元中的嵌入式程序映像文件,包括,使用基于第五代精简指令集架构的指令集定义的条件分支指令判断出读地址偏移量寄存器的数值达到最大预设值,运行片内指令存储单元中的嵌入式程序映像文件。
第二方面,本发明实施例提供一种基于FPGA的处理器,处理器包括片内指令存储单元,处理器用于执行上述任意一个可选实施例的方法。
与现有技术相比,本发明实施例具有以下有益效果:
本技术方案中,运行固化启动引导程序,从处理器内核地址空间中获取处理器映射的片外存储单元用于嵌入式程序映像文件下载的地址段;把地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元;运行片内指令存储单元中的嵌入式程序映像文件。本技术方案在处理器内核地址空间设置有处理器映射的片外存储单元用于嵌入式程序映像文件下载的地址段,在运行固化启动引导程序时可以在把地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元;当嵌入式程序需要更新时,下载器等设备先把嵌入式程序映像文件下载到片外存储单元中,然后该处理器在运行固化启动引导程序时,把嵌入式程序映像文件加载到片内指令存储单元中运行,避免重载处理器内核硬件设计,降低开发复杂度,提高开发效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的应用场景示意图。
图2是本发明实施例公开的基于FPGA处理器与片外存储单元连接示意图。
图3是本发明实施例公开的片内指令存储单元示意图。
图4是本发明实施例公开的基于FPGA的处理器启动方法流程图。
图5是本发明实施例公开的另一基于FPGA的处理器启动方法流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例公开的应用场景示意图;参见图2,是本发明实施例公开的基于FPGA处理器与片外存储单元连接示意图;参见图3,是本发明实施例公开的片内指令存储单元示意图。
本发明实施例应用场景中,包括基于FPGA的处理器10、片外存储单元20、下载器30和PC机40。基于FPGA的处理器10和片外存储单元20可以配置在一个设备中,通过总线连接。基于FPGA的处理器10包括程序指针模块103、外部存储单元接口102、片内指令存储单元101,除此之外,还可以包括读地址偏移量寄存器等模块。片内指令存储单元101集成在该处理器10内部,可用于保存固化启动引导程序和嵌入式程序映像文件。片外存储单元20设置在该处理器10外部,可用于保存FPGA码流文件和嵌入式程序映像文件。首先,PC机40得到FPGA码流文件和嵌入式程序映像文件,发送到下载器30;下载器30把FPGA码流文件和嵌入式程序映像文件写入片外存储单元20;该处理器10在运行固化启动引导程序时通过外部存储单元接口102与外部存储单元20连接,读取片外存储单元20中的FPGA码流文件和嵌入式程序映像文件;该处理器10通过程序指针模块103控制读写等指令。
参见图4,是本发明实施例公开的基于FPGA的处理器10启动方法流程图。
S31.运行固化启动引导程序,从处理器10内核地址空间中获取处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段。
在完成处理器10内核硬件设计后,把固化启动引导程序写入内存指令存储单元的初始值中,运行该初始值中的固化启动引导程序。嵌入式程序映像文件可以为根据嵌入式程序生成的便于执行的文件。本实施例在处理器10内核地址空间中设置有处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段;作为一个可选方式,该地址段保留的地址空间可为1M字节,实际使用的空间由片内指令存储单元101的大小和嵌入式程序映像文件大小决定。基于FPGA的处理器10的其中一个设计关键点是对内核地址空间的地址段的规划,地址段的规划与处理器10的机制密切相关;本实施例中,为实现在启动阶段把嵌入式程序映像文件从片外存储单元加载到片内存储单元的机制,在内核地址空间中设置处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段。而现有技术中,因嵌入式程序映像文件写入片内指令存储单元的初始值中,故不需要设置该地址段。
S32.把地址段对应片外存储单元20中的嵌入式程序映像文件加载到片内指令存储单元101。
根据处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段,可以读取片外存储单元20中的嵌入式程序映像文件,把把该嵌入式程序映像文件加载到片内指令存储单元101。处理器10内核地址空间中设置有片内指令存储单元101用于保存嵌入式程序映像文件的地址段,根据该地址段,可把嵌入式程序映像文件写入片内指令存储单元101;作为一个可选方式,该地址段保留的地址空间为16M字节,实际占用的空间取决于所使用FPGA芯片的型号和规模。可使用FPGA内部块状存储器作为片内指令存储单元101。
S33.运行片内指令存储单元101中的嵌入式程序映像文件。
嵌入式程序映像文件加载完成后,执行程序跳转至处理器10内核地址空间中片内指令存储单元101用于保存嵌入式程序映像文件的地址段的起始部分,开始运行嵌入式程序映像文件。
本实施例中,该处理器10可为第五代精简指令集(Reduced Instruction SetComputingFIVE,RISC-V)架构的处理器10,即处理器10应用RISC-V架构。RISC-V是一种基于精简指令集原则而设计的开源指令集架构,具有架构简单、模块可选、易于移植等特点,尤其是可自由扩展的特性,实现了处理器10内核的高度可定制化,通过增加个性化的基本指令,实现更加高速的硬件功能扩展。
此外,本发明实施例的处理器10还可应用除第五代外的其他代的精简指令集架构处理器10。作为一种可选方式,本发明实施例的处理器10亦可应用复杂指令集(ComplexInstruction Set Computing,CISC)架构、显式并行指令集(Explicitly ParallelInstruction Computing,EPIC)架构、超长指令字指令集(VLIW)架构等其他架构。
本技术方案在处理器10内核地址空间设置有处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段,在运行固化启动引导程序时可以在把地址段对应片外存储单元20中的嵌入式程序映像文件加载到片内指令存储单元101;当嵌入式程序需要更新时,下载器等设备先把嵌入式程序映像文件下载到片外存储单元20中,然后该处理器10在运行固化启动引导程序时,把嵌入式程序映像文件加载到片内指令存储单元中运行,避免重载处理器10内核硬件设计,降低开发复杂度,提高开发效率。本技术方案在处理器10外部不需配备片外高速存储单元,可以使用片外非高速存储单元,可降低硬件成本。
需要说明的是,本发明具体实施方式中,对单元、寄存器定义了名称,在实施本技术方案时,本领域普通技术人员可对该名称进行修改;只要修改名称后单元、寄存器的实现功能与本发明实施例单元、寄存器的实现功能相同或等同,均属于本发明保护的范围。
参见图5,是本发明实施例公开的另一基于FPGA的处理器10启动方法流程图。
S41.运行固化启动引导程序,从处理器10内核地址空间中获取处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段。
作为一个可选实施例,基于FPGA的处理器为由FPGA配置成的嵌入式处理器;运行固化启动引导程序,之前还包括:从处理器10内核地址空间中获取处理器10映射的片外存储单元20用于FPGA码流文件下载的地址段,使用该地址段对应片外存储单元20中的FPGA码流文件把FPGA配置成嵌入式处理器,其中,嵌入式程序映像文件和FPGA码流文件复用同一个片外存储单元,处理器复用同一个外部存储单元接口从片外存储单元中加载嵌入式程序映像文件和FPGA码流文件。处理器10内核地址空间中设置有处理器10映射的片外存储单元20用于FPGA码流文件下载的地址段;作为一个可选方式,该地址段保留的地址空间可为4M字节。本实施例中,FPGA码流文件和嵌入式程序映像文件复用同一个片外存储单元20,处理器复用同一个外部存储单元接口102,可节约硬件资源,降低成本。当然,作为另一种实施方式,也可以用多个片外存储单元和/或多个外部存储单元接口实现本方案。需要指出的是,除了由FPGA配置成的嵌入式处理器外,基于FPGA的处理器还可为具有FPGA架构/功能的处理器。
当处理器10内核硬件设计、布局和布线等工作完成后,下载器等设备把处理器10内核RTL(register transfer level)设计的FPGA码流文件下载到片外存储单元20中;片外存储单元20的存储空间可以预先分配,例如,从片外存储单元20的0地址开始,到0x400000地址为止,用于下载处理器10内核RTL设计的FPGA码流文件;从0x400000地址开始,到0x800000地址,用于下载嵌入式程序映像文件。FPGA上电启动后配置成嵌入式处理器。配置成嵌入式处理器后,处理器10自动开始运行固化启动引导程序。作为另一种配置方式,当处理器10内核硬件设计工作完成后,可把FPGA码流文件下载到FPGA芯片中。
S42.将读地址偏移量寄存器的数值初始化为0。在实施本技术方案时,若读地址偏移量寄存器的数值默认为0,或,在执行S43之前,读地址偏移量寄存器的数值已被修改为0,则可以没有步骤S42。
S43.根据读地址偏移量寄存器的数值与地址段的起始地址,从片外存储单元20中读取预置大小的数据。这里的地址段,为前面S41中的处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段。
作为一个可选实施例,前述预置大小可为4个字节,预置大小采用数量+单位的方式表示。当然,可根据实际情况,预置大小可为2、8、16个字节等;单位除了为字节,还可为比特。上述从片外存储单元20中读取预置大小的数据,包括,使用基于第五代精简指令集架构的指令集定义的存储单元读指令、从片外存储单元20中读取预置大小的数据。S43的读取步骤可采用存储单元读指令实现,存储单元读指令的格式,可定义为bllw<偏移量寄存器>,<读目的寄存器>。需要指出的是,本实施例定义的指令格式为其中一种形式,本领域技术人员还可采用其他形式,比如把bllw变为bw;本实施例使用第五代精简指令集架构,若本方案使用其他架构,则可基于该其他架构的指令集定义指令,比如当使用显式并行指令集架构时,可使用基于显式并行指令集架构的指令集定义存储单元读指令。
作为一个可选的实施例,上述根据读地址偏移量寄存器的数值与地址段的起始地址,从片外存储单元20中读取预置大小的数据,包括:把读地址偏移量寄存器的数值相对的16进制值与地址段的起始地址的16进制值相加,得到当前读取地址值,从片外存储单元20的当前读取地址值开始读取预置大小的数据。除该方法外,还可把起始地址10进制与读地址偏移量寄存器的数值相加,然后转换成16进制。
本实施例默认使用10进制,比如读地址偏移量寄存器的数值为10进制;本实施例有的内容写明使用2进制、或16进制;各种进制的转换和原理是现有技术,在此不做赘述。
S44.根据预置大小的数据判断是否读完片外存储单元20中的嵌入式程序映像文件,若文件读完,继续步骤S47;若没读完,继续步骤S45。
嵌入式程序映像文件读完后,跳转到步骤S47中执行,即执行程序跳转至处理器10内核地址空间中片内指令存储单元101用于保存嵌入式程序映像文件的地址段的起始部分。结合步骤S44和S47,若文件读完,运行片内指令存储单元101中的嵌入式程序映像文件,包括,使用基于第五代精简指令集架构的指令集定义的条件分支指令判断出文件读完,运行片内指令存储单元101中的所述嵌入式程序映像文件。跳转步骤可通过条件分支指令实现,条件分支指令的格式,可以定义为blbne<偏移量寄存器>,<lable>。
作为一个可选的实施例,上述根据预置大小的数据判断是否读完片外存储单元20中的嵌入式程序映像文件,包括:判断预置大小的数据相对的2进制值是否全为1,若是,确认文件读完,否则,确认文件没有读完。除了使用上述2进制值是否全为1的方法判断是否读完外,还可以使用其他方法;比如,预先获得嵌入式程序映像文件的大小,把预置大小的数据进行累加,当累加数据的大小等于嵌入式程序映像文件的大小,则确认文件读完,否则确认文件没有读完;又比如,使用16进制值来判断是否读完。
需要说明的是,步骤S44和S45中,若预置大小的数据不属于嵌入式程序映像文件数据,可不属于嵌入式程序映像文件数据,保存无意义;若该数据属于嵌入式程序映像文件数据,可保存到片内指令存储单元101中。
S45.把预置大小的数据保存到片内指令存储单元101,根据预置大小的数值修改读地址偏移量寄存器的数值。
该步骤包含保存(亦可称写入)步骤和修改步骤,他们没有先后顺序关系,可以是并行处理,也可以任意之一步骤先处理,另一步骤后处理。上述把预置大小的数据保存到片内指令存储单元101,包括,使用基于第五代精简指令集架构的指令集定义的存储单元写指令、把预置大小的数据保存到片内指令存储单元101。保存步骤可采用存储单元写指令实现,存储单元写指令的格式,可定义为blsw<偏移量寄存器>,<写操作数寄存器>。
作为一个可选的实施例,上述把预置大小的数据保存到片内指令存储单元101,包括:从处理器10内核地址空间中获取片内指令存储单元101用于保存嵌入式程序映像文件的地址段;根据读地址偏移量寄存器的数值与该地址段的起始地址,在片内指令存储单元101中写入预置大小的数据。
作为一个可选的实施例,上述根据读地址偏移量寄存器的数值与该地址段的起始地址,在片内指令存储单元101中写入预置大小的数据,包括:把读地址偏移量寄存器的数值相对的16进制值与该地址段的起始地址的16进制值相加,得到当前写入地址值,在片内指令存储单元101的当前写入地址值开始写入预置大小的数据。
作为一个可选的实施例,上述根据预置大小的数值修改读地址偏移量寄存器的数值,包括:将预置大小的数值与读地址偏移量寄存器的数值相加,得到当前数值,把读地址偏移量寄存器的数值修改为当前数值。预置大小包括数值+单位,本步骤中,获取预置大小的数值;若数据位n,单位为比特,则每次读取并写入n比特数据,若单位为字节,则每次读取并写入n字节数据。
S46.判断读地址偏移量寄存器的数值是否达到最大预设值。若是,说明嵌入式程序映像文件已经读完,继续步骤S47,否则,说明嵌入式程序映像文件没有读完,返回步骤S43。该最大预设值为预先设置的值,与嵌入式程序映像文件的大小相关。嵌入式程序映像文件读完后,跳转到步骤S47中执行,即执行程序跳转至处理器10内核地址空间中片内指令存储单元101用于保存嵌入式程序映像文件的地址段的起始部分。结合步骤S46和S47,若是,运行片内指令存储单元101中的嵌入式程序映像文件,包括,使用基于第五代精简指令集架构的指令集定义的条件分支指令判断出读地址偏移量寄存器的数值达到最大预设值,运行片内指令存储单元101中的嵌入式程序映像文件。判断出读地址偏移量寄存器的数值达到最大预设值后,跳转到步骤S47中执行;跳转步骤可通过条件分支指令实现。
S47.运行片内指令存储单元101中的嵌入式程序映像文件。
作为一个可选实施例,处理器10内核地址空间还包括片内指令存储单元101用于写入固化启动引导程序的地址段、以及数据存储单元和外部设备地址空间的地址段。作为一个可选方式,片内指令存储单元101用于写入固化启动引导程序的地址段占用128字节。
数据存储单元和外部设备地址空间的地址段占用的空间取决于使用芯片的型号和规模,可通过处理器10内核硬件设计的参数进行设置。作为一个可选方式,该地址段保留的地址空间为256M字节,实际应用的空间取决于所使用FPGA芯片的型号和规模,以及外部设备的具体功能和实现方式。该地址段在启动完成后的运行阶段使用。
本实施例中,处理器10内核地址空间包括处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段、处理器10映射的片外存储单元20用于FPGA码流文件下载的地址段、片内指令存储单元101用于保存嵌入式程序映像文件的地址段、片内指令存储单元101用于写入固化启动引导程序的地址段、数据存储单元和外部设备地址空间的地址段。本发明实施例在处理器10内核地址空间设置上述地址段,可有效地对片外存储单元20、片内指令存储单元101、数据存储单元和外部设备地址空间进行管理。
本实施例中,使用S41至S47,根据预置大小的数据判断是否读完片外存储单元20中的嵌入式程序映像文件,以及判断读地址偏移量寄存器的数值是否达到最大预设值,通过两者结合,能够灵活地判断出嵌入式程序映像文件是否读完。S42至S47列举了一些实施例,实现把地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元、运行片内指令存储单元中的嵌入式程序映像文件;除使用这些实施例外,还可用其他方式实现本发明技术方案,比如不使用读地址偏移量寄存器,而是获取片外存储单元对应的数据大小值,当每次读取片外存储单元的数据时,减小该数据大小值,至今该数据大小值为0,则判断出读完片外存储单元的数据,可以开始运行片内指令存储单元中的嵌入式程序映像文件。
作为一个可选实施例,实施方案中可以没有S46步骤,不判断读地址偏移量寄存器的数值是否达到最大预设值,该实施例减少程序指令,可提高运行效率。即方案包括:S41.运行固化启动引导程序,从处理器10内核地址空间中获取处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段;S42.将读地址偏移量寄存器的数值初始化为0;S43.根据读地址偏移量寄存器的数值与地址段的起始地址,从片外存储单元20中读取预置大小的数据;S44.根据预置大小的数据判断是否读完片外存储单元20中的嵌入式程序映像文件,若文件读完,继续步骤S47;若没读完,继续步骤S45;S45.把预置大小的数据保存到片内指令存储单元101,根据预置大小的数值修改读地址偏移量寄存器的数值,返回步骤S43;S47.运行片内指令存储单元101中的嵌入式程序映像文件。
现有技术在完成处理器内核硬件设计后,把嵌入式程序映像文件写入片内指令存储单元101的初始值中,从该初始值中运行嵌入式程序映像文件;而本发明实施例使用读取片外存储单元20中的数据、保存到片内指令存储单元101、读完后跳转至片内指令存储单元101用于保存嵌入式程序映像文件的地址段的起始部分;实现把嵌入式程序映像文件从片外存储单元20中加载到片内指令存储单元101中运行;相应的,本发明实施例提出了使用存储单元读指令、存储单元写指令、条件分支指令实现该方案。本实施例中,方案包含读取步骤、保存步骤、跳转步骤,该方案使用实现这些步骤基于第五代精简指令集架构的指令集定义的存储单元读指令、存储单元写指令、条件分支指令,这些指令可提高复制嵌入式程序映像文件到片内指令存储单元101中的速度,提升处理器性能。
本技术方案在处理器10内核地址空间设置有处理器10映射的片外存储单元20用于嵌入式程序映像文件下载的地址段,在运行固化启动引导程序时可以在把地址段对应片外存储单元20中的嵌入式程序映像文件加载到片内指令存储单元101;当嵌入式程序需要更新时,下载器等设备先把嵌入式程序映像文件下载到片外存储单元20中,然后该处理器10在运行固化启动引导程序时,把嵌入式程序映像文件加载到片内指令存储单元中运行,避免重载处理器10内核硬件设计,降低开发复杂度,提高开发效率。
本发明实施例提供一种基于FPGA的处理器10,处理器10包括片内指令存储单元101,处理器10用于执行上述附图4、5实施例的方法。可以理解的是,在实现上述方法,处理器10还包括实现过程使用到的各种单元、模块。
以上内容仅为本发明的较佳实施例,对于本领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于FPGA的处理器启动方法,其特征在于,包括:
运行固化启动引导程序,从处理器内核地址空间中获取处理器映射的片外存储单元用于嵌入式程序映像文件下载的地址段;
把所述地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元;
运行片内指令存储单元中的所述嵌入式程序映像文件。
2.根据权利要求1所述的方法,其特征在于,所述把所述地址段对应片外存储单元中的嵌入式程序映像文件加载到片内指令存储单元,运行片内指令存储单元中的所述嵌入式程序映像文件,包括:
a.将读地址偏移量寄存器的数值初始化为0;
b.根据所述读地址偏移量寄存器的数值与所述地址段的起始地址,从片外存储单元中读取预置大小的数据;
c.根据所述预置大小的数据判断是否读完片外存储单元中的嵌入式程序映像文件;若文件读完,运行片内指令存储单元中的所述嵌入式程序映像文件;若文件没有读完,把所述预置大小的数据保存到片内指令存储单元,根据所述预置大小的数值修改所述读地址偏移量寄存器的数值,返回所述步骤b。
3.根据权利要求2所述的方法,其特征在于,所述根据所述预置大小的数值修改所述读地址偏移量寄存器的数值,返回所述步骤b,包括:
根据所述预置大小的数值修改所述读地址偏移量寄存器的数值,判断所述读地址偏移量寄存器的数值是否达到最大预设值,若是,运行片内指令存储单元中的所述嵌入式程序映像文件,否则,返回所述步骤b。
4.根据权利要求3所述的方法,其特征在于,所述根据所述预置大小的数值修改所述读地址偏移量寄存器的数值,包括:
将所述预置大小的数值与所述读地址偏移量寄存器的数值相加,得到当前数值,把读地址偏移量寄存器的数值修改为当前数值。
5.根据权利要求2所述的方法,其特征在于:
所述根据所述读地址偏移量寄存器的数值与所述地址段的起始地址,从片外存储单元中读取预置大小的数据,包括:把所述读地址偏移量寄存器的数值相对的16进制值与所述地址段的起始地址的16进制值相加,得到当前读取地址值,从片外存储单元的当前读取地址值开始读取预置大小的数据;
所述根据所述预置大小的数据判断是否读完片外存储单元中的所述嵌入式程序映像文件,包括:判断所述预置大小的数据相对的2进制值是否全为1,若是,确认文件读完,否则,确认文件没有读完。
6.根据权利要求2所述的方法,其特征在于,所述把所述预置大小的数据保存到片内指令存储单元,包括:
从处理器内核地址空间中获取片内指令存储单元用于保存嵌入式程序映像文件的地址段;根据所述读地址偏移量寄存器的数值与该地址段的起始地址,在片内指令存储单元中写入所述预置大小的数据。
7.根据权利要求6所述的方法,其特征在于,所述根据所述读地址偏移量寄存器的数值与该地址段的起始地址,在片内指令存储单元中写入所述预置大小的数据,包括:
把所述读地址偏移量寄存器的数值相对的16进制值与该地址段的起始地址的16进制值相加,得到当前写入地址值,在片内指令存储单元的当前写入地址值开始写入所述预置大小的数据。
8.根据权利要求1所述的方法,其特征在于,所述基于FPGA的处理器为由FPGA配置成的嵌入式处理器;
所述运行固化启动引导程序,之前还包括:
从处理器内核地址空间中获取处理器映射的片外存储单元用于FPGA码流文件下载的地址段,使用所述地址段对应片外存储单元中的FPGA码流文件把FPGA配置成嵌入式处理器;
其中,所述嵌入式程序映像文件和FPGA码流文件复用同一个片外存储单元,处理器复用同一个外部存储单元接口从所述片外存储单元中加载所述嵌入式程序映像文件和FPGA码流文件。
9.根据权利要求3所述的方法,其特征在于:所述处理器内核地址空间还包括片内指令存储单元用于写入固化启动引导程序的地址段、以及数据存储单元和外部设备地址空间的地址段;所述处理器为第五代精简指令集架构的处理器;
所述从片外存储单元中读取预置大小的数据,包括,使用基于第五代精简指令集架构的指令集定义的存储单元读指令、从片外存储单元中读取预置大小的数据;
所述把所述预置大小的数据保存到片内指令存储单元,包括,使用基于第五代精简指令集架构的指令集定义的存储单元写指令、把所述预置大小的数据保存到片内指令存储单元;
所述若文件读完,运行片内指令存储单元中的所述嵌入式程序映像文件,包括,使用基于第五代精简指令集架构的指令集定义的条件分支指令判断出文件读完,运行片内指令存储单元中的所述嵌入式程序映像文件;
所述若是,运行片内指令存储单元中的所述嵌入式程序映像文件,包括,使用基于第五代精简指令集架构的指令集定义的条件分支指令判断出所述读地址偏移量寄存器的数值达到最大预设值,运行片内指令存储单元中的所述嵌入式程序映像文件。
10.一种基于FPGA的处理器,其特征在于,所述处理器包括片内指令存储单元,所述处理器用于执行所述权利要求1至9任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911375751.0A CN111198718A (zh) | 2019-12-27 | 2019-12-27 | 一种基于fpga的处理器启动方法和处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911375751.0A CN111198718A (zh) | 2019-12-27 | 2019-12-27 | 一种基于fpga的处理器启动方法和处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111198718A true CN111198718A (zh) | 2020-05-26 |
Family
ID=70744490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911375751.0A Pending CN111198718A (zh) | 2019-12-27 | 2019-12-27 | 一种基于fpga的处理器启动方法和处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111198718A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068904A (zh) * | 2020-09-27 | 2020-12-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种芯片boot运行方法、装置及相关组件 |
CN113535248A (zh) * | 2021-06-24 | 2021-10-22 | 合肥松豪电子科技有限公司 | 一种减少sram空间的tp芯片上电启动方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826026A (zh) * | 2010-04-12 | 2010-09-08 | 中兴通讯股份有限公司 | 嵌入式设备、嵌入式设备中固件在线升级的系统及方法 |
CN103019774A (zh) * | 2012-11-27 | 2013-04-03 | 中国航空工业集团公司第六三一研究所 | 一种dsp处理器的动态重载方法 |
CN104298645A (zh) * | 2014-10-09 | 2015-01-21 | 深圳市国微电子有限公司 | 一种可灵活配置的可编程片上系统芯片及其启动配置方法 |
CN105117255A (zh) * | 2015-08-28 | 2015-12-02 | 青岛中星微电子有限公司 | 一种启动装载BootLoader程序的引导方法和装置 |
CN107870775A (zh) * | 2016-09-26 | 2018-04-03 | 深圳市中兴微电子技术有限公司 | 一种处理器及BootLoader程序的更新方法 |
CN110399173A (zh) * | 2019-07-26 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种基于risc-v处理器的系统及其系统启动方法 |
CN110489167A (zh) * | 2019-07-26 | 2019-11-22 | 广东高云半导体科技股份有限公司 | 双内核码流下载方法、装置、计算机设备及存储介质 |
-
2019
- 2019-12-27 CN CN201911375751.0A patent/CN111198718A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826026A (zh) * | 2010-04-12 | 2010-09-08 | 中兴通讯股份有限公司 | 嵌入式设备、嵌入式设备中固件在线升级的系统及方法 |
CN103019774A (zh) * | 2012-11-27 | 2013-04-03 | 中国航空工业集团公司第六三一研究所 | 一种dsp处理器的动态重载方法 |
CN104298645A (zh) * | 2014-10-09 | 2015-01-21 | 深圳市国微电子有限公司 | 一种可灵活配置的可编程片上系统芯片及其启动配置方法 |
CN105117255A (zh) * | 2015-08-28 | 2015-12-02 | 青岛中星微电子有限公司 | 一种启动装载BootLoader程序的引导方法和装置 |
CN107870775A (zh) * | 2016-09-26 | 2018-04-03 | 深圳市中兴微电子技术有限公司 | 一种处理器及BootLoader程序的更新方法 |
CN110399173A (zh) * | 2019-07-26 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种基于risc-v处理器的系统及其系统启动方法 |
CN110489167A (zh) * | 2019-07-26 | 2019-11-22 | 广东高云半导体科技股份有限公司 | 双内核码流下载方法、装置、计算机设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068904A (zh) * | 2020-09-27 | 2020-12-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种芯片boot运行方法、装置及相关组件 |
CN113535248A (zh) * | 2021-06-24 | 2021-10-22 | 合肥松豪电子科技有限公司 | 一种减少sram空间的tp芯片上电启动方法 |
CN113535248B (zh) * | 2021-06-24 | 2024-05-28 | 合肥松豪电子科技有限公司 | 一种减少sram空间的tp芯片上电启动方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10320214A (ja) | コンパイルシステム及びコンピュータプログラム製品 | |
CN111198718A (zh) | 一种基于fpga的处理器启动方法和处理器 | |
CN111158756B (zh) | 用于处理信息的方法和装置 | |
US6981134B2 (en) | Method and system for processing using a CPU and digital signal processor | |
JP2005063449A (ja) | オブジェクトからオブジェクトへのJavaネイティブインタフェースマッピングの方法及び装置 | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
US20040205697A1 (en) | Transferring data along with code for program overlays | |
CN112882694A (zh) | 一种程序编译方法、装置、电子设备及可读存储介质 | |
CN116934330A (zh) | 一种调用智能合约的方法及执行方法、计算机设备及存储介质 | |
US10970206B2 (en) | Flash data compression decompression method and apparatus | |
JPH0876974A (ja) | データ処理装置 | |
US7590976B2 (en) | Compiler program, a computer-readable storage medium storing a compiler program, a compiling method and a compiling unit | |
US8694975B2 (en) | Programming system in multi-core environment, and method and program of the same | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
JP2010020416A (ja) | データ転送方法およびデータ転送装置 | |
CN112486580A (zh) | 一种实现VxWorks操作系统快速启动的方法及装置 | |
CN117076095B (zh) | 一种基于dag的任务调度方法、系统、电子设备及存储介质 | |
CN116820568B (zh) | 指令翻译方法及装置、存储介质和终端 | |
CN115495392B (zh) | 多级启动中内存复用方法、装置、存储介质和处理器 | |
US9483399B2 (en) | Sub-OS virtual memory management layer | |
CN116302349A (zh) | 加快Java应用程序启动速度的方法及其相关组件 | |
CN112860371A (zh) | 一种Queue容器的实现方法和装置 | |
EP1306757A2 (en) | Transferring data along with code for program overlays | |
CN117311592A (zh) | 数据处理方法、服务器、移动终端和可读存储介质 | |
CN115904431A (zh) | 智能卡更新方法、装置、电子设备及可读存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200526 |
|
RJ01 | Rejection of invention patent application after publication |