开发者分享 | Petalinux 工程中设备树的介绍

本文转载自: XILINX开发者社区微信公众号

本文来自XILINX嵌入式产品应用工程师 Terry Ni

设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。

Petalinux 工程中设备树的位置

当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的描述信息通常在以下2个工程路径下。

第一个是在 components/plnx_workspace/device-tree/device-tree 路径下,这个路径下主要保存的都是基于你导入的hdf/xsa后,自动生成的设备树信息。通常包括PS的设备树,时钟的设备树,PL 部分 IP 的设备树(Xilinx发布的包含驱动的IP),以及设备树头文件。

./components/plnx_workspace/device-tree/device-tree/zynqmp-clk-ccf.dtsi

./components/plnx_workspace/device-tree/device-tree/zcu102-revc.dtsi

./components/plnx_workspace/device-tree/device-tree/pl.dtsi

./components/plnx_workspace/de

在将 Vitis 生成的设备树文件添加到 PetaLinux 工程中时,需要确保设备树的结构和内容与 PetaLinux 的构建系统兼容,并将其正确集成到工程中以便在启动时加载。以下是具体的操作步骤和注意事项: ### 添加设备树文件到 PetaLinux 工程 #### 1. 获取设备树源文件 Vitis 工具通常会生成 `.dts`(Device Tree Source)文件,该文件描述了硬件平台的配置信息。确保设备树文件的格式正确,并且符合目标平台的硬件描述要求。 #### 2. 将设备树文件复制到 PetaLinux 工程 PetaLinux 使用 `project-spec/meta-user/recipes-bsp/device-tree/files/` 目录来存放设备树文件。将 Vitis 生成的 `.dts` 文件复制到该目录下。例如: ```bash cp system-top.dts <PetaLinux_Project>/project-spec/meta-user/recipes-bsp/device-tree/files/ ``` #### 3. 修改设备树配方文件 在 `project-spec/meta-user/recipes-bsp/device-tree/` 目录下找到 `device-tree.bbappend` 文件,确保其内容包含对新设备树文件的支持。如果没有该文件,可以创建一个并添加以下内容: ```bitbake FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI_append = " file://system-top.dts" ``` #### 4. 配置设备树生成 PetaLinux 工程设备树生成配置在 `project-spec/config/device-tree/` 目录下的 `conf` 文件中。确保 `DEVICE_TREE` 变量指向正确的设备树文件名称,例如: ```bash DEVICE_TREE = "system-top" ``` #### 5. 构建 PetaLinux 工程 完成上述配置后,使用以下命令重新构建 PetaLinux 工程,以确保设备树文件被正确编译并集成到最终的 `BOOT.BIN` 和 `image.ub` 文件中: ```bash petalinux-build ``` #### 6. 验证设备树 在生成的镜像文件中,设备树文件通常会被编译为 `.dtb`(Device Tree Blob)格式。可以通过以下命令检查生成的设备树文件是否存在于 `images/linux/` 目录中: ```bash ls images/linux/*.dtb ``` ### 注意事项 - **设备树兼容性**:确保 Vitis 生成的设备树PetaLinux 工程的目标平台兼容,包括硬件 IP 的配置和地址映射等[^2]。 - **设备树覆盖**:如果 PetaLinux 工程中已有默认的设备树文件,可能需要手动调整或合并设备树内容,以避免冲突。 - **调试设备树**:如果设备树未能正确加载,可以通过 U-Boot 命令行检查设备树的加载地址和大小,例如使用 `bootm` 命令加载内核和设备树。 ### 示例设备树片段 以下是一个简单的设备树片段,展示了根节点的基本结构和常见属性[^2]: ```dts / { #address-cells = <1>; #size-cells = <1>; model = "xlnx,zynq-7000"; compatible = "xlnx,zynq-7000"; aliases { ethernet0 = &gem0; serial0 = &uart0; }; }; ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值