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,那麼這二者之間會有什麼聯繫和區別呢,有興趣的網友能夠研究研究。