【VIVADO使用2】如何手动修改hdf文件

本文介绍了一种手动修改HDF文件的方法,该方法通过修改hwdef文件并使用Vivado命令重新生成sysdef和HDF文件,确保SDK导入无误。文章还解释了HDF文件各组成部分的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hdf文件时逻辑工程师交给驱动工程师工作 的最重要的文件,但是有时候我们需要手动修改hdf文件,这样子驱动工程师不用再手动修改内部内容了。



首先想到的是hdf文件是一个压缩包,直接解压,然后修改内容,最后再压缩就行了,但是这样子是有问题的,因为sdk读进去hdf文件时会做一个校验,猜测vivado导出的时候,会对hdf文件做一个处理。


所以我找了一下hdf文件产生的过程:

.hdf----->.sysdef---->package of hwdef & bitfile & bmm file;

.hwdef---->package of psu_init.c , psu_init.h......;

即hdf文件时sysdef文件的一个copy(猜测加了一些头和尾信息),sysdef文件是hwdef,bitfile,bmm文件打包后的文件,hwdef文件是psu_init.c....的打包文件,上面这些打包及copy过程均可以用vivado中的tcl命令产生,所以如果要修改psu_init.c......中的文件,那么重点就是如何修改一个vivado识别的hwdef文件,然后试了一种方法是可以的(这里用7zip解压软件为例):

1.将vivado工程写impl下的.hwdef文件提取到当前目录,然后删除掉解压之前的hwdef文件,然后修改内容;

2.然后选中当前目录中上一步解压出来的文件和修改的文件,添加到*.zip压缩,压缩后修改zip文件为hwdef文件;

3.最后vivado tcl下输入

write_sysdef -hwdef "d:/system_wrapper.hwdef" -bitfile "d:/system_wrapper.bit" -file "d:/system_wrapper.sysdef"

从而产生sysdef文件


file copy -force d:/system_wrapper.sysdef d:/system_wrapper.hdf

从而产生一个sdk导进去没有问题的hdf文件。



还需要补充的内容是hdf各个文件的作用。

hdf文件内容有


1.psu_init.tcl,用于debug模式;

2.psu_init.c,用于FSBL;


### 如何在Vivado中正确配置ELF文件的路径 为了确保 ELF 文件能够在 Vivado 中被正确识别并用于后续操作,需要按照特定流程来设置其路径。当新建项目时选择了 `Generate boot components` 选项,则平台已经自动导入了 FSBL (First Stage Boot Loader) 的工程,并生成了对应的 ELF 文件[^2]。 #### 配置方法: 1. **打开项目属性** 打开目标项目的属性对话框,可以通过菜单栏中的 Project -> Settings 或者双击左侧导航树上的 "Project" 来访问此功能。 2. **定位到程序文件夹** 寻找与编程文件有关的部分,在这里可以指定加载器(Loader)使用的启动镜像位置。通常是在“Program Files”标签页下找到 “Bitstream” 和其他相关联的二进制文件的位置设定区域。 3. **添加或修改ELF路径** 对于已有的FSBL ELF文件或其他自定义应用程序的ELF文件,可以在上述提到的界面里通过浏览按钮选择具体的 `.elf` 文件所在目录;也可以手动输入完整的绝对路径或者相对路径指向这些必要的执行文件。 4. **确认更改** 完成以上步骤后保存所做的改动,使新的设置生效。此时如果一切正常的话,所指派的ELF将会参与到接下来由工具链触发的各种处理过程中去,比如创建BOOT.BIN等。 对于HDF文件而言,一旦生成完毕,该文件的具体存储地址会被记录下来并通过Tcl控制台显示出来[^1]。这有助于用户快速定位并将之转移到Linux工作环境当中作进一步开发用途之前做好准备。 ```bash # 假设当前位于/home/user/workplace/ cp /path/to/generated/hdf/file.hdf ./my_hdf_folder/ ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值