rbf文件是Quartus编译生成的fpga配置文件的二进制数据量格式的文件,主要用于使用外部主机经过PS方式配置FPGA。ide
在含ARM硬核的SoC FPGA中,能够使用HPS配置FPGA,配置时分为两种状况,一种是在HPS处于uboot启动阶段时经过u-boot配置,一种是Linux启动以后经过应用程序配置。这两种配置方式都须要用到rbf格式的配置文件,可是两种方式所需的rbf格式的配置文件却又存在着差别,其中,uboot阶段配置fpga须要使用未经压缩的rbf格式文件,而在Linux应用程序中配置fpga时,须要使用通过压缩了的rbf文件。默认状况下,Quartus软件不能自动生成rbf文件,须要在设置种开启生成rbf文件选项。另外,也能够直接经过命令行的方式,从quartus编译获得的sof文件转换获得rbf文件。图1为在Quartus中直接勾选生成rbf文件的选项。spa
须要注意的是,这种方式生成的rbf文件是通过压缩了的,能够支持Linux中使用应用程序直接配置FPGA,不支持uboot阶段配置fpga。命令行
另外也能够经过脚本实现code
使用sof文件直接转换获得未经压缩的rbf文件的命令格式为:blog
quartus_cpf -c my_input_file.sof my_output_file.rbf
使用sof文件直接转换获得通过压缩的rbf文件的命令格式为:input
quartus_cpf -c -o bitstream_compression=on my_input_file.sof my_output_file.rbfit
使用时,能够直接在SoC EDS软件中输入上述命令生成rbf文件,也能够将上述命令作成脚本,这里做者倾向于直接将上述命令作成脚本,而后双击生成rbf文件io
打开记事本,将下列命令粘贴到记事本中,而后保存为bat格式。例如保存为“sof2rbf_dc.bat”文件编译
%QUARTUS_ROOTDIR%\\bin64\\quartus_cpf -c -o bitstream_compression=on AC501_SoC_GHRD.sof soc_system_dc.rbf
pauseclass
而后,将sof2rbf_dc.bat文件拷贝到工程中sof所在目录下,直接双击运行该bat文件,就能生成名为soc_system_dc.rbf的文件了,该文件是通过压缩的rbf文件。
一样的再打开记事本,将下列命令粘贴到记事本中,而后保存为bat格式。例如保存为“sof2rbf.bat”文件
%QUARTUS_ROOTDIR%\\bin64\\quartus_cpf -c AC501_SoC_GHRD.sof soc_system.rbf
pause
而后,将sof2rbf.bat文件拷贝到工程中sof所在目录下,直接双击运行该bat文件,就能生成名为soc_system.rbf的文件了,该文件是未经压缩的rbf文件。
注意,上述命令内容中,AC501_SoC_GHRD.sof名字须要换成你工程中实际的sof文件的名字。
下图为分别使用sof2rbf.bat和sof2rbf_dc.bat脚本生成的rbf文件,能够看到,二者尺寸差距较大,soc_system.rbf为4146KB,而soc_system_dc.rbf仅为1270KB。
另外,图中还有一个名为AC501_SoC_GHRD.rbf的文件,该文件是勾选了Quartus的自动生成rbf选项后生成的rbf文件,能够看到,与使用命令方式生成的压缩后的rbf文件尺寸一致。
另外,AC501_SoC_GHRD.sof文件的尺寸比未经压缩的soc_system.rbf文件的尺寸大了440KB,那么这二者之间会有什么联系和区别呢,有兴趣的网友能够研究研究。