AMD ZCU106 U-Boot 2023.1 Open Source Flow 编译的缺少“gnutls/gnutls.h”错误

文章描述了在使用AMDZCU106的U-BootOpenSourceFlow编译过程中遇到的两个问题:一是缺少platform-top.h,二是找不到gnutls/gnutls.h。作者提供了解决方法,包括复制相关头文件和安装依赖库。

AMD ZCU106 U-Boot 2023.1 Open Source Flow 编译的缺少“gnutls/gnutls.h”错误

获取代码

以下列命令获取U-Boot代码

petalinux-devtool modify u-boot-xlnx 

在目录components/yocto/workspace/sources/u-boot-xlnx 下应该有u-boot-xlnx的源代码。

获取配置文件

查找u-boot的配置文件“.config”,并复制到u-boot-xlnx的源代码目录下,以及u-boot-xlnx的源代码的“configs”目录下。

hankf@XSZGS4:zcu106-vcu-trd-231-bsp-peta$ find -name ".config" | grep -i u-boot-xlnx 
./build/tmp/work/xilinx_zcu106-xilinx-linux/u-boot-xlnx/1_v2023.01-xilinx-v2023.1+git999-r0/u-boot-xlnx-v2023.01-xilinx-v2023.1+git999/.config

hankf@XSZGS4:zcu106-vcu-trd-231-bsp-peta$ cp ./build/tmp/work/xilinx_zcu106-xilinx-linux/u-boot-xlnx/1_v2023.01-xilinx-v2023.1+git999-r0/u-boot-xlnx-v2023.01-xilinx-v2023.1+git999/.config components/yocto/workspace/sources/u-boot-xlnx/

hankf@XSZGS4:zcu106-vcu-trd-231-bsp-peta$ cp ./build/tmp/work/xilinx_zcu106-xilinx-linux/u-boot-xlnx/1_v2023.01-xilinx-v2023.1+git999-r0/u-b
<think>我们正在处理一个关于在PetaLinux环境中查找特定版本的U-Boot源码的问题。用户引用了5个站内引用,我们需要从中提取相关信息。 用户需求:查找PetaLinux环境中Linux的U-Boot-2020.1版本的源码。 分析引用内容: 引用[3]提到:在旧版本中,U-Boot源码在工程目录下直接可见,但新版本(如2018.3)采用网络下载编译编译完成后自动删除。如果想保留,可以在工程配置文件中添加: RM_WORK_EXCLUDE += "linux-xlnx" RM_WORK_EXCLUDE += "u-boot-xlnx" 并且给出了U-Boot源码的路径: bsp/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/u-boot-xlnx (注意:这个路径可能是针对Zynq7的,具体平台可能不同) 引用[4]提供了一个安装和创建PetaLinux工程的步骤,其中在创建工程后,通过`petalinux-config -c u-boot`可以生成U-Boot源码到工程目录下的某个路径(如:`xilinx-zcu102-v2019.2/components/plnx_workspace/sources/u-boot-xlnx`)。但这是2019.2版本的步骤。 用户需要的是2020.1版本的U-Boot源码。虽然引用中没有直接提到2020.1版本,但我们可以根据引用[3]和引用[4]推断出源码的位置。 在PetaLinux工程中,U-Boot源码通常位于: <petalinux-project>/build/tmp/work/<machine>-xilinx-linux-gnueabi/u-boot-xlnx/<version>/ 其中<machine>是工程配置的目标硬件平台(如plnx_zynq7, plnx_zynqmp等),<version>是U-Boot的版本号(如2020.1)。 另外,引用[3]还提到一个内核源码路径: bsp/build/tmp/work-shared/plnx-zynq7/kernel-source 类似的,U-Boot可能也有一个共享的工作目录。 但是,需要注意的是,默认情况下,PetaLinux在构建完成后会删除源代码(除非按照引用[3]的方法在配置文件中添加排除删除的语句)。因此,如果用户已经构建过工程,并且没有设置排除删除,那么源码可能已经被删除。 所以,为了获取U-Boot 2020.1的源码,我们可以采取以下步骤: 1. 在创建PetaLinux工程时,或者创建后,修改工程目录下的配置文件: project-spec/meta-user/conf/petalinuxbsp.conf 添加两行(如果文件不存在,可以创建): RM_WORK_EXCLUDE += "linux-xlnx" RM_WORK_EXCLUDE += "u-boot-xlnx" 这样在构建后就不会删除linux和u-boot的源码。 2. 然后,进行配置和构建U-Boot组件: petalinux-config -c u-boot petalinux-build -c u-boot 或者直接构建整个工程: petalinux-build 3. 构建完成后,U-Boot源码将保留在构建目录下的工作目录中。具体路径为: <petalinux-project>/build/tmp/work/<machine>-xilinx-linux-gnueabi/u-boot-xlnx/<version>+gitAUTOINC+<commit-id>/build/ 但实际源码在解压后的目录里,通常在: <petalinux-project>/build/tmp/work/<machine>-xilinx-linux-gnueabi/u-boot-xlnx/<version>+gitAUTOINC+<commit-id>/git 其中<machine>需要替换为实际的平台(如zynq-generic,zynqmp-generic等),<version>就是2020.1(但具体版本号可能略有不同,如2020.1-xilinx-v2020.1等)。<commit-id>是git提交的哈希值。 4. 另外,在引用[4]中,也提到在配置U-Boot时,会生成源码到: xilinx-zcu102-v2019.2/components/plnx_workspace/sources/u-boot-xlnx 这个路径是在工程目录下的components/plnx_workspace/sources/u-boot-xlnx。但这个路径可能是配置过程中使用的,并不是完整的构建源码目录,而且这个目录可能只是一个链接或部分源码。 因此,最可靠的方式是使用步骤3中的路径。 但是,用户可能还没有创建工程?或者已经创建了但没有设置保留源码? 如果用户已经构建了工程但没有设置保留源码,那么需要重新构建(在设置保留源码之后)。 如果用户还没有创建工程,那么可以按照以下步骤: - 创建工程(使用`petalinux-create`命令) - 修改project-spec/meta-user/conf/petalinuxbsp.conf文件,添加两行排除删除 - 配置工程(`petalinux-config`,选择正确的硬件设置) - 构建U-Boot(`petalinux-build -c u-boot`) 然后就可以在build目录下找到源码。 注意:不同版本(如2020.1)的PetaLinux可能会有略微不同的路径,但整体结构相似。 另外,引用[5]提到非PetaLinux版的U-Boot移植,但用户明确要求在PetaLinux环境下,所以不考虑。 因此,回答用户:在设置了排除删除后,构建工程,U-Boot 2020.1的源码将位于工程目录的build/tmp/work下的对应目录中。 具体操作步骤: 1. 如果已有工程,在工程根目录下,修改或创建文件:`project-spec/meta-user/conf/petalinuxbsp.conf`,添加: RM_WORK_EXCLUDE += "u-boot-xlnx" 保存。 2. 重新构建U-Boot组件: petalinux-build -c u-boot 3. 构建完成后,进入目录: cd build/tmp/work/ 然后根据你的硬件平台(如zynqmp_generic-xilinx-linux等)找到u-boot-xlnx开头的目录,再进入其中的git目录。 4. 或者,可以使用find命令查找: find build/tmp/work -name "u-boot-xlnx" -type d 注意:在2020.1版本中,硬件平台可能是zynqmp_generic(对于Zynq UltraScale+)或zynq_generic(对于Zynq-7000)等。 如果用户还没有创建工程,则需要先创建: 1. 设置PetaLinux环境:source <安装路径>/settings.sh 2. 创建工程:petalinux-create -t project -n <工程名> --template <模板> 或使用BSP 3. 进入工程目录,修改配置文件(如上) 4. 然后配置工程(如果需要)并构建。 另外,在引用[4]中,提到了一个步骤:`petalinux-config -c u-boot`,这个步骤会准备U-Boot的配置,并且可能会将U-Boot源码下载到工作区(但不会构建)。但源码的完整下载是在构建过程中进行的。 所以,我们总结如下: 要获得U-Boot 2020.1的源码,需要在工程配置中设置保留源码,然后构建U-Boot组件,随后在build/tmp/work目录下查找。 最后,由于用户引用的信息中版本略有不同(2018.3和2019.2),但方法在2020.1版本中应该类似。 注意:不同版本的PetaLinux可能使用不同的目录结构,但排除删除的设置方法是相同的。 因此,我们给出操作步骤。 </think>在PetaLinux环境中查找Linux的U-Boot 2020.1版本源码,可通过以下步骤实现: ### 解决方案 1. **配置工程保留源码** 修改工程配置文件,防止编译后自动删除源码: ```bash vim project-spec/meta-user/conf/petalinuxbsp.conf ``` 添加以下内容[^3]: ```conf RM_WORK_EXCLUDE += "u-boot-xlnx" ``` 2. **定位源码路径** 构建后源码位于工程目录的子路径中,具体取决于硬件平台: - **Zynq-7000平台**: `build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/u-boot-xlnx`[^3] - **Zynq UltraScale+平台**: `build/tmp/work/plnx_zynqmp-xilinx-linux-gnueabi/u-boot-xlnx` 实际路径示例: ```bash <工程目录>/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/u-boot-xlnx/2020.1+gitAUTOINC+<commit_id>/git ``` 3. **完整操作流程** ```bash # 创建工程(若尚未创建) petalinux-create -t project --name myproj --template zynq # 进入工程目录并配置保留源码 cd myproj echo 'RM_WORK_EXCLUDE += "u-boot-xlnx"' >> project-spec/meta-user/conf/petalinuxbsp.conf # 构建U-Boot(触发源码下载) petalinux-build -c u-boot # 进入源码目录(以Zynq-7000为例) cd build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/u-boot-xlnx/*/git ``` ### 注意事项 - **版本差异**:路径中的`plnx_zynq7`需根据实际硬件平台调整(如ZynqMP平台为`plnx_zynqmp`)[^3][^4]。 - **首次构建要求**:必须执行`petalinux-build -c u-boot`触发源码下载,否则目录不存在。 - **源码验证**:进入目录后可通过`git branch`确认是否为`2020.1`版本分支。 --- ### 相关问题 1. 如何修改PetaLinux工程中的U-Boot配置参数? 2. 在PetaLinux中如何为自定义硬件移植U-Boot?[^5] 3. PetaLinux编译后如何永久保留内核源码?[^3] [^1]: 需先初始化PetaLinux环境:`source /opt/pkg/petalinux/2018.3/settings.sh` [^3]: 通过`RM_WORK_EXCLUDE`配置保留源码,路径因硬件平台而异 [^4]: 工程创建命令需匹配硬件模板(如`zynq`/`zynqMP`) [^5]: 非PetaLinux版U-Boot移植流程参考Linux系统移植文档
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值