FPGA中可执行文件:bit/bin/mcs/elf

关注、星标公众号,精彩内容每日送达
来源:网络素材

FPGA里面的可执行文件都涉及到  *.bit*.mcs*.bin*.elf,到底都有什么用,应该怎么用呢,这篇文章会简单介绍下这几种文件。

d5c0967a63d1ad62c0cb7a253a7215c8.jpeg

bin_bit_mcs

从上图可以看出,bit是带有头信息的配置文件,bin文件是不带头信息的的配置文件,MCS是ASCII文件,包含地址和校验和信息。

bit文件

bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试。

bin文件

bin 文件是二进制文件,按顺序只包含原始字节流,烧写进flash,上电加载自动加载。FPGA一般默认生成的是bit文件,bin文件生成是在ISE里property里勾选的,如下图所示。

b70cffaadc0b2951a891b646d7259deb.png

而VIVADO中是可以在settings->Bitstream->-bin_file勾选即可。

0f5c23f5ba9edf92e9bddacfe1418230.png

bit 和 bin 区别

UltraEdit 查看 bin 和 bit 文件区别(UltraEdit下载地址:后台回复【UltraEdit】即可领取)

可以看到bit文件比bin文件多了文件信息:比如工程名,User_ID,工具的版本信息(下图给的是vivado 2015.4),FPGA芯片型号(下图为7k325tffg900),bit生成日期(下图为2019/10/09)等信息。

只要删除这些头信息,其实bin文件和bit文件是一模一样的。

855353c5b2cdacf05bba7c355c642e56.png

bit_bin

mcs文件

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

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

  • 在每行的末尾都有一个校验和以确保完整性。

  • 每行包括该行应位于内存中的地址。

如下图所示,VIVADO 中生成mcs文件,需要注意:

  1. Memory Part:所使用的Flash芯片型号

  2. Filename:生成的mcs文件名字,如果ila,还会生成prm文件

  3. Interface:选择flash加载模式

  4. Load Bitstream files:加载bit文件

  5. Start Address:下载flash的文件起始地址

  6. Write checksum,Disable bit swapping,Overwrite:小编一般都不勾选

  7. Command:Tcl指令,老鸟可以用tcl直接完成

cd0b6a01f9e1037663288ac36ec682bc.png

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

588a89a0cc524164c8ec2541b69ac4a2.png

312ace439399ddaebd28045550b500ed.jpeg

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

340bbdb0b72b54722c4847237010d5e3.png

点个在看你最好看

10ba8f0994f54cb587c7173575a1dc10.png

### 使用 JTAG 工具将 BIN 文件烧录到 eMMC 的方法 #### 方法概述 通过 JTAG 接口可以实现对目标设备的调试和编程操作。对于 Zynq 平台,通常使用 Vivado 或 Xilinx SDK 配合 PROM Generator 来完成硬件配置文件(如 `.bit` 和 `.mcs`)以及应用程序二进制文件(`.bin`)的烧录工作。 以下是具体的操作流程: --- #### 1. 准备环境 确保开发环境中已安装必要的工具链,包括但不限于: - **Xilinx Vivado**: 提供 FPGA 编程支持。 - **Petalinux Tools**: 支持嵌入式 Linux 开发与部署。 - **SD 卡或 USB 设备**: 可选用于测试镜像加载过程。 如果需要直接通过 JTAG 将数据写入 eMMC,则需确认以下条件满足: - 系统设计中启用了 QSPI Flash 或其他存储介质作为初始引导源[^3]。 - 目标板上的 eMMC 芯片已被正确初始化并挂载至 `/dev/mmcblk1` 下。 --- #### 2. 创建 BOOT.BIN 文件 BOOT.BIN 是 Zynq 器件启动过程中使用的第一个阶段固件包,它包含了处理器所需的裸机程序或其他资源。构建此文件前应先定义其组成结构,例如 FSBL (First Stage Boot Loader),PL Bitstream (.bit),以及其他可执行组件(.elf)[^1]。 在 Petalinux 中可以通过如下命令生成最终映像: ```bash petalinux-package --boot --fsbl <path_to_fsbl>.elf \ --fpga <path_to_fpga_bitstream>.bit \ --u-boot \ -o images/linux/BOOT.bin ``` 上述脚本会自动生成适合当前项目的启动序列,并将其打包成单个文件形式以便后续处理。 --- #### 3. 设置 PetaLinux 图像封装选项 为了使系统能够从指定分区读取根文件系统,在 `petalinux-config` 过程里调整相关参数至关重要。特别是当切换不同物理媒介间时(比如由 SD 到 EMMC),必须同步更新对应的节点路径名(/dev/emmcblk*): 运行下面指令进入交互菜单界面: ```bash petalinux-config --get-hw-description=<project_path> ``` 导航至子项 *Image Packaging Configuration* -> *(Device node of SD device)* ,依据实际需求设定为目标地址 /dev/mmcblk1p2 . 完成后重新编译整个项目以反映更改效果. --- #### 4. 执行 JTAG 下载任务 利用 XSCT(Command-Line Interface provided by XSDK)或者图形化界面均可达成目的: ##### A. CLI 方式 打开终端窗口输入相应语句来连接远程服务器并传输资料过去: ```tcl connect_hw_server current_hw_target [lindex [get_hw_targets */xilinx_tcf/*] 0] set_property PARAM.FREQUENCY 66666666 [get_hw_probeset] open_hw_design ./<design_name>.hdf program_device -data ../images/linux/BOOT.bin -offset 0x0 -verify true close_hw_target exit ``` 这里需要注意的是 `-offset` 参数决定了写入起始偏移量;而验证开关(`-verify`)则有助于提高可靠性。 ##### B. GUI 操作指南 1. 启动 Vivado HLS; 2. 加载工程后定位到“Program Device”面板; 3. 添加待上传的目标文件列表; 4. 定义确切的目的地位置(e.g., On-Chip Memory Blocks); 5. 发送动作触发信号等待结束反馈消息即可. --- #### 结论 综上所述,借助于专业的EDA套件配合恰当的技术手段完全可以顺利完成基于JTAG接口针对eMMC芯片的数据灌装作业。不过在整个实施环节当中务必仔细核验每一步骤细节以免造成不可逆损害风险存在可能性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值