rbf文件是Quartus編譯生成的fpga配置文件的二進制數據量格式的文件,主要用於使用外部主機通過PS方式配置FPGA。
在含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文件的選項。
需要注意的是,這種方式生成的rbf文件是經過壓縮了的,可以支持Linux中使用應用程序直接配置FPGA,不支持uboot階段配置fpga。
另外也可以通過腳本實現
使用sof文件直接轉換得到未經壓縮的rbf文件的命令格式為:
quartus_cpf -c my_input_file.sof my_output_file.rbf
使用sof文件直接轉換得到經過壓縮的rbf文件的命令格式為:
quartus_cpf -c -o bitstream_compression=on my_input_file.sof my_output_file.rbf
使用時,可以直接在SoC EDS軟件中輸入上述命令生成rbf文件,也可以將上述命令做成腳本,這里作者傾向於直接將上述命令做成腳本,然后雙擊生成rbf文件
打開記事本,將下列命令粘貼到記事本中,然后保存為bat格式。例如保存為“sof2rbf_dc.bat”文件
%QUARTUS_ROOTDIR%\\bin64\\quartus_cpf -c -o bitstream_compression=on AC501_SoC_GHRD.sof soc_system_dc.rbf
pause
然后,將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,那么這兩者之間會有什么聯系和區別呢,有興趣的網友可以研究研究。