FPGA裏面的可執行文件都涉及到 *.bit, *.mcs, *.bin 和 *.elf,到底都有什麼用,應該怎麼用呢,這篇文章小編會簡單介紹下這幾種文件。node
![bin_bit_mcs](http://static.javashuo.com/static/loading.gif)
從上圖能夠看出,bit是帶有頭信息的配置文件,bin文件是不帶頭信息的的配置文件,MCS是ASCII文件,包含地址和校驗和信息。微信
bit文件
bit 文件通常用於JTAG在線進行調試的時候,是把bit文件是燒寫到FPGA中進行在線調試。app
bin文件
bin 文件是二進制文件,按順序只包含原始字節流,燒寫進flash,上電加載自動加載。FPGA通常默認生成的是bit文件,bin文件生成是在ISE裏property裏勾選的,以下圖所示。工具
![image](http://static.javashuo.com/static/loading.gif)
而VIVADO中是能夠在settings->Bitstream->-bin_file勾選便可。flex
![image](http://static.javashuo.com/static/loading.gif)
bit 和 bin 區別
UltraEdit 查看 bin 和 bit 文件區別(UltraEdit下載地址:後臺回覆【UltraEdit】便可領取)spa
能夠看到bit文件比bin文件多了文件信息:好比工程名,User_ID,工具的版本信息(下圖給的是vivado 2015.4),FPGA芯片型號(下圖爲7k325tffg900),bit生成日期(下圖爲2019/10/09)等信息。.net
只要刪除這些頭信息,其實bin文件和bit文件是如出一轍的。
調試
![bit_bin](http://static.javashuo.com/static/loading.gif)
mcs文件
mcs也是燒寫到flash中的,上電後會自動加載到FPGA裏,所以燒寫進flash,須要斷電重啓。mcs文件是其中兩個ASCII字符用於表示數據的每一個字節HEX文件。mcs文件除了包含頭部信息外還有地址信息以及校驗碼。code
所以,MCS文件的效率彷佛較低,由於它須要2個字節來表示1個字節。可是它有兩個優勢:orm
在每行的末尾都有一個校驗和以確保完整性。
每行包括該行應位於內存中的地址。
以下圖所示,VIVADO 中生成mcs文件,須要注意:
Memory Part:所使用的Flash芯片型號
Filename:生成的mcs文件名字,若是ila,還會生成prm文件
Interface:選擇flash加載模式
Load Bitstream files:加載bit文件
Start Address:下載flash的文件起始地址
Write checksum,Disable bit swapping,Overwrite:小編通常都不勾選
Command:Tcl指令,老鳥能夠用tcl直接完成
![image](http://static.javashuo.com/static/loading.gif)
elf文件
若是FPGA中用到 microblaze 或者 ZYNQ 的結構,還會有一個 elf 文件,這是由於其繼承了 ARM 的可執行文件。
ARM 體系中,全部文件均採用的 ELF 文件格式。ARM 中的各類源文件(包括彙編文件,C 語言程序及 C++ 程序等)通過 ARM 編譯器編譯後生成 ELF 格式的對象文件(Object File)(.o文件)。這些對象文件(Object File)和相應的 C/C++ 運行時用到的庫通過 ARM 鏈接器處理後,生成 ELF 格式的鏡像文件(image),這種ELF 格式的映像文件是一種可執行文件,可被寫入嵌入式設備的 ROM 中。
![image](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
深耕在FPGA 扎根於視頻領域
卓越於神經網絡
本文分享自微信公衆號 - 瓜大三哥(xiguazai_tortoise)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。