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任意一项所述的方法。