Xilinx FPGA固化flash的方式

1 bit、mcs、bin、elf文件的区别

 FPGA里面的可执行文件都涉及到 *.bit*.mcs*.bin*.elf

1.1 bit文件

bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试,掉电后,FPGA的程序就丢失。

1.2 bin文件

bin 文件是二进制文件,按顺序只包含原始字节流,烧写进flash,上电加载自动加载。默认情况下,Generate Bitstream并不会生成BIN文件,只会生成bit,如果想在生成bit文件的同时也生成BIN文件,则需要进行如下操作

1.3 mcs文件

mcs也是烧写到flash中的,上电后会自动加载到FPGA里,因此烧写进flash,需要断电重启。mcs文件是其中两个ASCII字符用于表示数据的每个字节HEX文件。mcs文件除了包含头部信息外还有地址信息以及校验码。

因此,MCS文件的效率似乎较低,因为它需要2个字节来表示1个字节。但是它有两个优点:

  • 在每行的末尾都有一个校验和以确保完整性。
  • 每行包括该行应位于内存中的地址。

1.4 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 中。

1.5 mcs文件和bin文件的区别

    mcs文件里包含Bin文件的内容,但是mcs文件中,每行的开始有地址信息,最后一个byte是crc校验信息,所以mcs文件要比bin文件大。

    但是烧录器烧写的时候,只烧录mcs文件中包含bin文件的那部分信息,不会将地址和crc烧录到flash中。

    一般在烧写flash的时候,我们会用mcs文件,尤其是做multiboot和fallback的时候,因为mcs文件中包含有地址信息,会告诉烧录器,golden image放在哪里,multiboot image放在哪里

1.6 bit文件和bin文件的区别

bin文件不包含头部信息,bit为bin+头部信息(工程名称以及时间等信息)。

2 Xilinx FPGA固化方式

2.1 MCS固化到flash

打开Vivado工程,按下图操作

按下图设置后,点击右下角OK 即可在设置的路径下生成mcs文件,

打开硬件管理,连接FPGA

添加配置的flash

选择flash型号

给flash下载文件

等待下载完成

mcs文件固化到flash完成。

此时,mcs文件已经固化到flash中。

将FPGA断电,拔掉JTAG与FPGA的连接(切记,否则FPGA可能加载不起来,具体原因可参考AMD Customer Community,再给FPGA重新上电,此时,FPGA正常加载程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值