烟台网站建设九七,wordpress 微信同步,相城专业的网站建设,mvc5网站开发#x1f525;作者简介#xff1a; 一个平凡而乐于分享的小比特#xff0c;中南民族大学通信工程专业研究生#xff0c;研究方向无线联邦学习 #x1f3ac;擅长领域#xff1a;驱动开发#xff0c;嵌入式软件开发#xff0c;BSP开发 ❄️作者主页#xff1a;一个平凡而…作者简介 一个平凡而乐于分享的小比特中南民族大学通信工程专业研究生研究方向无线联邦学习擅长领域驱动开发嵌入式软件开发BSP开发❄️作者主页一个平凡而乐于分享的小比特的个人主页✨收录专栏Linux本专栏目的在于记录学习Linux操作系统的总结欢迎大家点赞 收藏 ⭐ 加关注哦 U-Boot FDT命令完全指南 命令概述命令功能类比理解使用频率fdt addr设置/查看设备树地址相当于打开文件⭐⭐⭐ 必须fdt resize调整设备树大小相当于扩展画布⭐⭐ 按需fdt apply应用设备树覆盖相当于叠加图层⭐ 可选1️⃣ fdt addr - 设置设备树工作地址命令详解# 基本语法fdt addr[address][-c]# 常用示例fdt addr 0x43000000# 设置设备树地址fdt addr# 查看当前地址fdt addr -c# 清除当前设置内存布局示意内存空间 ┌─────────────────────┐ 0x40000000 │ 内核映像 │ │ (zImage) │ ├─────────────────────┤ 0x43000000 ← fdt addr设置点 │ 设备树 │ │ (device tree) │ ├─────────────────────┤ │ 其他数据 │ └─────────────────────┘2️⃣ fdt resize - 调整设备树大小为什么需要resize128KB64KBfdt resize已用空间60KB剩余空间4KB原有数据60KB新增空闲68KBresize大小对比表resize大小适用场景优点缺点默认(4KB)简单修改内存占用小可能不够用64KB添加几个节点适中大小中等开销1MB大量覆盖几乎不会溢出内存浪费不resize只读操作零开销无法修改3️⃣ fdt apply - 应用设备树覆盖工作流程是否成功失败开始加载基础设备树fdt addr 0x43000000需要修改fdt resize加载overlay文件直接启动fdt apply 0x44000000验证成功启动内核检查错误 详细对比表格命令功能对比特性fdt addrfdt resizefdt apply操作对象内存地址设备树大小设备树内容执行前提设备树已加载已设置地址已设置地址且resize影响范围全局内存布局节点/属性错误类型地址无效内存不足语法/兼容性调试方法fdt addr查看fdt memoryfdt list参数选项对比命令参数作用返回值fdt addraddr设置地址成功/失败无参数显示当前地址地址值-c清除设置无fdt resizesize指定新大小成功/失败无参数默认4KB成功/失败fdt applyaddr应用overlay成功/失败 实战场景场景一基础启动无修改# 最小化命令集load mmc0:1 0x43000000 /boot/dtb fdt addr 0x43000000# 只需设置地址bootz 0x42000000 - 0x43000000场景二添加自定义节点# 完整命令集load mmc0:1 0x43000000 /boot/dtb fdt addr 0x43000000 fdt resize 0x10000# 预留64KB空间# 创建自定义节点fdt mknode / mydevice fdtset/mydevice compatiblevendor,devicefdtset/mydevice reg0x1c28000 0x1000fdtset/mydevice interrupts0424bootz 0x42000000 - 0x43000000场景三使用设备树覆盖# overlay应用流程# 步骤1加载基础设备树load mmc0:1 0x43000000 /boot/board.dtb fdt addr 0x43000000# 步骤2预留足够空间fdt resize 0x200000# 预留2MB# 步骤3加载overlayload mmc0:1 0x44000000 /boot/overlays/spi.dtbo fdt apply 0x44000000# 应用SPI覆盖load mmc0:1 0x45000000 /boot/overlays/i2c.dtbo fdt apply 0x45000000# 应用I2C覆盖# 步骤4启动bootz 0x42000000 - 0x43000000⚠️ 常见错误及解决错误处理流程错误: No FDT address执行fdt addr错误: FDT requires more space执行fdt resize错误: FDT overlay apply failed检查overlay兼容性错误: libfdt fdt_check_header重新加载设备树错误代码对照表错误信息错误码原因解决方案“No FDT memory address configured”-12未设置地址fdt addr addr“FDT requires more space”-7空间不足fdt resize size“FDT overlay apply failed: Invalid argument”-22overlay不兼容检查kernel版本“libfdt fdt_check_header(): FDT_ERR_BADMAGIC”-1设备树损坏重新加载 最佳实践建议命令使用顺序必须如果需要修改如果有overlay加载DTBfdt addrfdt resizefdt apply启动内核内存大小建议表场景建议resize大小说明只读启动0不resize节省内存简单修改1-5节点8KB-16KB适度预留复杂修改5-20节点64KB-128KB足够使用多个overlay256KB-1MB防止溢出 高级调试技巧调试命令组合# 完整的调试流程# 1. 加载并检查load mmc0:1 0x43000000 /boot/dtb fdt addr 0x43000000 fdt list# 查看结构# 2. 修改并验证fdt resize 0x20000 fdtset/chosen bootargsconsoletty0fdt print /chosen# 验证修改# 3. 保存修改可选fdt save 0x43000000 0x50000000 0x20000通过以上详细说明和图示您应该能够熟练掌握U-Boot中的FDT命令。记住关键点fdt addr是基础需要修改时用fdt resize有overlay时用fdt apply。