Linux 开发第 37-38 节 系统进阶 · 设备树,选自ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。
🔍 ALINX:关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。
1. 设备树基础Device Tree 是描述硬件信息的数据结构,将硬件描述与内核代码分离。源文件 .dts 通过 dtc 编译器编译为二进制 .dtb,启动时由 U‑Boot 传递给内核。PetaLinux 用户自定义设备树在 system-user.dtsi 中。
2. 语法要点基本结构为 /dts-v1/; 和根节点 /{}。关键属性包括:
• compatible —— 驱动匹配
• reg —— 设备地址和大小
• status —— okay / disabled通过 & 引用可覆盖已有节点配置。
3. 应用举例
• 启用外设:在对应节点设置 status = "okay";
• 添加 I2C 设备:在 I2C 节点内添加子节点,指定 compatible 和 reg(设备地址)
• GPIO LED:使用 gpio-leds 节点配合 gpios 属性
4. 驱动调用驱动通过 of_device_id 匹配表与设备树 compatible 属性匹配,触发 probe() 函数。常用 API:
• of_property_read_u32() 读取整数
• of_address_to_resource() 获取寄存器地址
• devm_gpiod_get() 获取 GPIO 描述符
1. U-Boot 使用本地源码PetaLinux 通过 petalinux-config 选择 ext-local-src 指定本地 U‑Boot 源码。也可直接克隆 u-boot-xlnx,使用 aarch64-linux-gnu- 交叉编译器编译:
make xilinx_zynqmp_virt_defconfig && make2. Linux 内核使用本地源码
本地编译:PetaLinux 通过 ext-local-src 指定本地源码。
直接编译流程:克隆官方内核仓库后,执行以下步骤
git clone <内核仓库地址>make xilinx_zynqmp_defconfig # 使用默认配置make menuconfig # 可选,定制内核功能make -j$(nproc) # 编译内核镜像产出:Image(内核镜像)和 dtb(设备树)。
make modules编译模块,make dtbs编译设备树。

💡 完整视频讲解可前往 ALINX 视频号进行直播回看
更多细节欢迎关注我们黑金云课堂全年免费直播课,黑金云课堂七月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

