我的基于 FPGA 的设计基于在 Ubuntu 2020.04.6 LTS 上运行的 Vivado 2020.2 和 Yocto。我的 FPGA 设计 A 可以成功构建 .bit 和 .xsa 文件,并且没有任何严重警告和错误。 Yocto 成功构建以创建二进制图像。
但是,当设计 A 升级到包含许可 IP 的设计 B 时,.bit 和 .xsa 文件已成功生成,但出现严重警告且没有错误。
[Vivado 12-1790] 评估许可证警告:此设计包含一个或多个使用单独许可功能的 IP 核。如果设计已配置为使用评估功能,请注意这些功能将在一段时间后停止运行。请查阅核心数据表以确定您配置的核心是否会受到影响。评估功能不应在生产系统中使用。
本设计中发现的评估核心: IP 核“xxv_ethernet_0”(xxv_ethernet_v3_3_0) 是通过多种功能生成的: IP 功能“[email protected]”是使用 design_linking 许可证启用的。 IP 功能“[email protected]”已使用 design_linking 许可证启用。 IP 功能“[email protected]”已使用 design_linking 许可证启用。 IP 功能“[email protected]”已使用 design_linking 许可证启用。
解决方案:如果添加了新的 IP 核许可证,为了获取新许可证,需要在生成比特流之前通过重置和重新生成 IP 输出产品来更新当前网表。
由于硬件增量变更包括有时间限制的许可 IP,只要硬件可以在时限内正常运行,就可以忽略此严重警告。
但是,实际问题是 Yocto 构建失败并出现以下错误。
错误:quilt-native-0.66-r0 do_configure:执行“/yocto/sat/build/tmp/work/x86_64-linux/quilt-native/0.66-r0/temp/run.do_configure.2604”失败并退出代码126: /home/user/.pyenv/libexec/pyenv:第 138 行:/home/user/.pyenv/libexec/pyenv-exec:参数列表太长 警告:从 shell 命令中退出代码 126。
错误:失败日志文件存储在:/yocto/sat/build/tmp/work/x86_64-linux/quilt-native/0.66-r0/temp/log.do_configure.2604
错误:任务 (/yocto/sat/sources/core/meta/recipes-devtools/quilt/quilt-native_0.66.bb:do_configure) 失败,退出代码为“1”
这似乎是 pyenv 错误,但是,我无法通过禁用/卸载 pyenv 来运行 bitbake(如另一篇文章中所建议的),这以另一个提及 pyenv 包丢失的 bitbake 错误结束。
预期结果是创建 yocto 映像,因为在 Vivado 中成功生成了 .bit 和 .xsa 文件,并且没有引入 yocto 构建例程的任何更改。
我遇到了同样的问题并找到了适合我的解决方案。我还没有探究问题的根源,而且我也无法解释这个 stackoverflow 问题中的硬件(.xsa)依赖性,但我希望我的答案仍然有帮助。
我在 WSL2 环境中运行 Ubuntu 20.04.6。我从 Vivado 2020.2 导出了成功创建的 .xsa,并尝试从那里构建内核。我使用旧版本的 Yocto (Zeus) 和 bitbake。根据 https://www.yoctoproject.org/pipermail/yocto/2019-October/047111.html,这需要 Python 3.7.3 和 3.7.4,而我安装了 python 3.8。因此,我使用 pyenv 安装了 python 3.7.3 和 3.7.4,并将 python 3.7.4 设置为全局 pyenv 版本:
pyenv install 3.7.4
pyenv install 3.7.3
pyenv global 3.7.4
然后在确保使用的Python版本是3.7.4(
python --version
)并且bitbake构建已清理后,我可以成功构建内核。请注意,我还剩下 2 个警告:
WARNING: Host distribution "ubuntu-20.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
WARNING: Your host glibc verson (2.31) is newer than that in uninative (2.30). Disabling uninative so that sstate is not corrupted.
这些警告是不存在的,因为使用的是较旧的 Yocto 版本。