You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Vitis中运行bootgen生成启动镜像出现报错的原因是什么?

问题根因及修复方案

你遇到的报错主要由以下几个可直接复现的配置错误导致,按优先级修复即可:

  1. 脚本路径不匹配
    你写的bat脚本里删除旧文件的路径存在笔误:创建bif的目录是sw\boot,但删除旧文件时指向了不存在的sw\bootstuff\output.bif,旧的错误bif文件不会被正常清理,残留文件会导致bootgen读取失败。
    同时脚本中使用%cd%获取当前工作目录,Vitis调用脚本时的默认工作目录和你手动执行bat的目录不一致,会导致生成的bif内的文件路径全部错误,bootgen找不到对应的fsbl、比特流、应用elf文件。
  2. BIF文件注释解析异常
    新版本Vitis自带的bootgen对BIF文件头部的//注释格式兼容性差,你写的注释行里的参数和bootgen命令行传入的参数重复,很容易被误识别为无效指令导致解析报错。
  3. 环境与路径符号错误
    如果是在普通系统cmd中执行脚本,没有加载Vitis的环境变量,会导致bootgen命令无法被正常识别;同时调用bat时使用Linux风格的正斜杠./,Windows下部分脚本解释器会识别异常。

修复步骤

第一步:修改create_bif.bat脚本

修改后的脚本如下:

@echo off
:: 先切换到脚本所在目录的上层(即项目根目录,保证路径统一)
cd /d %~dp0..
mkdir sw\boot
:: 修正删除路径,和生成路径保持一致
if exist sw\boot\output.bif del sw\boot\output.bif

:: 删掉冗余的注释行,避免解析错误
echo the_ROM_image:                                         > sw\boot\output.bif
echo {                                                      >> sw\boot\output.bif
echo     [bootloader]sw\fsbl\Debug\fsbl.elf                 >> sw\boot\output.bif 
echo     sw\vivado\block_design_wrapper.bit                 >> sw\boot\output.bif
echo     sw\MYAPP0\Debug\MYAPP0.elf                         >> sw\boot\output.bif
echo     sw\MYAPP1\Debug\MYAPP1.elf                         >> sw\boot\output.bif
echo     sw\MYAPP2\Debug\MYAPP2.elf                         >> sw\boot\output.bif
echo }                                                      >> sw\boot\output.bif
@echo on

第二步:修改调用命令

:: 改成Windows风格的路径斜杠
CALL .\scripts\create_bif.bat
CALL bootgen -image sw\boot\output.bif -arch zynqmp -o sw\boot\BOOT.mcs -w on

第三步:执行环境校验

所有命令必须在「Vitis Unified Software Platform Command Line」终端中执行,不要使用系统默认cmd,Vitis终端会自动配置好所有工具的环境变量和路径。


内容的提问来源于stack exchange,提问作者Enclustra xu5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:36:05