【问题标题】:Raspberry 3: booting a Kernel by using U-BootRaspberry 3:使用 U-Boot 引导内核
【发布时间】:2017-03-23 11:17:31
【问题描述】:

我正在使用 Raspberry 3 并尝试使用 U-Boot 启动 Linux 内核。

我已经构建了一个 Linux 内核(来自 github.com/raspberrypi)和 Busbox-Userland。 此内核在“直接”启动时(即没有 U-Boot)启动并正常工作。

现在我已经构建了 U-Boot(主线,denx.de/u-boot.git),它似乎也可以工作。

它可以启动并且可以访问(通过 HDMI/USB 和 [在添加 pi3-disable-bt-Overlay 后])。

但现在我被困住了;内核不会从 U-Boot 中启动。

我尝试了以下命令:

setenv fdtfile bcm2710-rpi-3-b.dtb

mmc dev 0
fatload mmc 0:1 ${kernel_addr_r} kernel7.img
fatload mmc 0:1 ${fdt_addr_r} ${fdtfile}
setenv bootargs earlyprintk console=tty0 console=ttyAMA0 root=/dev/mmcblk0p2 rootfstype=ext2 rootwait noinitrd
bootz ${kernel_addr_r} - ${fdt_addr_r}

U-Boot 的输出是:

[...]
reading kernel7.img
[...]
Kernel image @ 0x1000000 [ 0x000000 - 0x40e630 ]
## Flattened Device Tree blob at 0x000100
   Booting using fdt blob at 0x000100
   Using Device Tree in place at 0000100, end 00006b1a

Starting kernel...

然后显示器变黑并显示“无信号”,串行控制台也没有显示更多信息。

我尝试过提供给内核的引导参数,但没有找到可行的方案。

有人有想法吗?

正如我所说,U-Boot 和 Kernel 似乎都可以工作,但 U-Boot 无法启动 Kernel...

谢谢, 范达伦

【问题讨论】:

  • 内核解压可能失败或内核执行可能中止(即您的 dtb 加载地址看起来可疑)。当这个内核“直接”启动时,控制台输出是什么? IOW 是解压缩详细信息,即是否正常输出诸如“Uncompressing Linux... done, booting the kernel”之类的输出。在内核真正开始执行之前?

标签: linux-kernel raspberry-pi3 u-boot


【解决方案1】:

我知道这是一个非常古老的问题,但对我来说,它有助于不手动加载设备树文件并在 bootz 中使用 ${fdt_addr} 而不是 ${fdt_addr_r}。 所以...

mmc dev 0
fatload mmc 0:1 ${kernel_addr_r} kernel7.img
setenv bootargs earlyprintk console=tty0 console=ttyAMA0 root=/dev/mmcblk0p2 rootfstype=ext2 rootwait noinitrd
bootz ${kernel_addr_r} - ${fdt_addr}

...应该可以工作。

【讨论】:

    【解决方案2】:

    您是否尝试过将内核加载到不同的地址?即在 $loadaddr 而不是 $kernel_addr_r。确保内核被加载到正确的地址。

    【讨论】:

      猜你喜欢
      • 2021-03-11
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2015-08-09
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      相关资源
      最近更新 更多