一、设备树
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 描述符
二、配置本地 U-Boot 和内核
1. U-Boot 使用本地源码
PetaLinux 通过 petalinux-config 选择 ext-local-src 指定本地 U‑Boot 源码。
也可直接克隆 u-boot-xlnx,使用 aarch64-linux-gnu- 交叉编译器编译:
make xilinx_zynqmp_virt_defconfig && make
2. 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 开发全流程!
| 系列 | 内容定位 |
|---|---|
| Verilog开发 | 硬件描述语言基础、逻辑设计、仿真调试 |
| Vitis开发 | Zynq软硬件协同、外设驱动、网络协议栈 |
| Linux开发 | 嵌入式Linux系统移植、驱动编写、应用开发 |
143