You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3B+ U-Boot TFTP启动缺bootz命令,求最新Buildroot/U-Boot教程

解决树莓派3B+ U-Boot无bootz命令的TFTP启动问题

刚碰到过类似的场景,给你几个实用的解决方向,帮你搞定这个问题:

一、先搞懂为什么没有bootz命令

U-Boot的bootz命令是需要单独启用的,你的默认配置里大概率没开CONFIG_CMD_BOOTZ这个编译选项——树莓派的U-Boot默认配置有时候会因为架构适配或者功能裁剪,关闭这个命令。

二、重新编译U-Boot启用bootz

这是最直接的解决方法,步骤很清晰:

  1. 进入你的U-Boot源码目录,先加载树莓派3B+的默认配置:
    make rpi_3_b_plus_defconfig
    
  2. 打开图形配置菜单,启用bootz命令:
    make menuconfig
    
  3. 在菜单路径Command line interface > Boot commands下,找到并勾选CONFIG_CMD_BOOTZ选项;嫌麻烦的话,也可以直接编辑.config文件,添加一行CONFIG_CMD_BOOTZ=y。
  4. 重新编译U-Boot(用多线程加速):
    make -j$(nproc)
    
  5. 把编译好的u-boot.bin替换到树莓派的启动分区,重启进入U-Boot,就能看到bootz命令了。

三、不用重新编译:用booti命令替代

如果你暂时不想折腾编译,其实booti命令完全可以用来启动ARM64架构的zImage(树莓派3B+是ARM64),用法和bootz几乎一致:
假设你已经通过TFTP把zImage加载到内存地址0x80000,设备树文件加载到0x1000000,直接执行:

booti 0x80000 - 0x1000000

这里的-代表没有ramdisk,如果有ramdisk的话,把-换成ramdisk所在的内存地址就行。

四、适配Buildroot+U-Boot的最新配置

如果你用Buildroot构建整个嵌入式系统,直接在Buildroot里配置U-Boot就行:

  1. 打开Buildroot的配置菜单:
    make menuconfig
    
  2. 进入Bootloaders > U-Boot,确认选中了树莓派3B+的U-Boot配置(rpi_3_b_plus_defconfig)。
  3. 点击U-Boot configuration进入子菜单,同样找到并开启CONFIG_CMD_BOOTZ选项。
  4. 重新构建Buildroot,它会自动编译带bootz命令的U-Boot镜像。

另外提一句:U-Boot 2021.01之后的新版本对树莓派的支持更完善,如果你升级到2023.x或2024.x版本的U-Boot,默认配置可能已经自带bootz命令,兼容性也会更好,可以试试。

内容的提问来源于stack exchange,提问作者brane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:32:39