无法在 Raspberry PI 4B 上获取 U-boot 运行。什么是绝对必需品?
Can't get U-boot running on Raspberry PI 4B. What are the absolute necessities?
我看到了一些关于这个主题的帖子,但没有任何真正帮助我的事业,所以在这里重申我的问题。
我想构建自己的工具链、U-boot 和主线 Linux 内核以移植到特定处理器上。由于我目前拥有 Raspberry Pi 4B,因此我决定用它来逐步测试我的二进制文件。
到目前为止我执行了以下操作:
- 使用 Crosstool-ng (v1.24.0) 构建了 64 位工具链 - 获得 \x-tools\aarch64-rpi3-linux-gnu
- 克隆 U-boot 并构建 v2020.07 版本从而生成 u-boot.bin + 其他文件(使用 rpi_4_defconfig 和 rpi_arm64_defconfig 构建)
- 克隆了 Linux 内核(v5.4.65 和 v5.8.9),在 Raspberry Pi 存储库的 arch/arm64/configs 中添加了 bcm2711_defconfig 并构建了 Linux内核 - 生成 vmlinux、图像、Image.gz、System.map、bcm2711-rpi-4-b.dtb + 其他文件
- 在我的 32-GB SD 卡上创建了两个分区引导 (FAT32)、rootfs (Ext4)
- 已将 u-boot.bin、内核映像、start4.elf、fixup4.dat 复制到启动分区
- 在config.txt//config.txt
中有这个
取消下面的注释以使用自定义命名的内核
内核=u-boot.bin
串行控制台输出!
enable_uart=1
7. 尝试用 HDMI 线将树莓派连接到显示器
我看到的:
设备似乎打开了,我看到一些快速的绿色 LED 闪烁,然后只有红色 LED 保持稳定。显示器收到信号,表明它变亮了,但屏幕是空白的。我期待一个带有 UART > 或其他东西的命令提示符,但没有出现。
问题:
- 有人可以评论我这边缺少什么吗?
- 在 Raspberry Pi 4B 上获得自己的 U-Boot、拥有 Linux 内核和根 FS 运行 的绝对最低要求是什么? (关于 .elf、fix*.dat 等,+ config.txt、cmdline.txt 上的设置?)
我希望这能回答问题的 U-Boot 方面:
以下内容对我使用 64 位 Raspbian 内核启动 1 GiB Raspberry 4 有用:
构建 u-boot v2020.10-rc5(在带有 GCC 10 的 Debian Bullseye 上)。
make rpi_arm64_defconfig
CROSS_COMPILE=aarch64-linux-gnu- make -j4
将u-boot.bin复制到RPi4的第一个分区SD-card.
编辑 config.txt 并添加以下行:
enable_uart=1
arm_64bit=1
kernel=u-boot.bin
在 U-Boot 的串行控制台上,我输入了以下命令。您可以使用 mkimage.
将它们放入 boot.scr 文件中
U-Boot> setenv bootargs coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1 smsc95xx.macaddr=DC:A6:32:05:53:B6 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyS0,115200 console=tty1 root=PARTUUID=7f586f18-02 rootfstype=ext4 elevator=deadline rootwait
U-Boot> load mmc 0:1 $fdt_addr_r bcm2711-rpi-4-b.dtb
47471 bytes read in 26 ms (1.7 MiB/s)
U-Boot> load mmc 0:1 $kernel_addr_r kernel8.img
15483392 bytes read in 823 ms (17.9 MiB/s)
U-Boot> booti $kernel_addr_r - $fdt_addr_r
您必须根据根分区和 MAC 地址调整 PARTUUID。
我看到了一些关于这个主题的帖子,但没有任何真正帮助我的事业,所以在这里重申我的问题。
我想构建自己的工具链、U-boot 和主线 Linux 内核以移植到特定处理器上。由于我目前拥有 Raspberry Pi 4B,因此我决定用它来逐步测试我的二进制文件。
到目前为止我执行了以下操作:
- 使用 Crosstool-ng (v1.24.0) 构建了 64 位工具链 - 获得 \x-tools\aarch64-rpi3-linux-gnu
- 克隆 U-boot 并构建 v2020.07 版本从而生成 u-boot.bin + 其他文件(使用 rpi_4_defconfig 和 rpi_arm64_defconfig 构建)
- 克隆了 Linux 内核(v5.4.65 和 v5.8.9),在 Raspberry Pi 存储库的 arch/arm64/configs 中添加了 bcm2711_defconfig 并构建了 Linux内核 - 生成 vmlinux、图像、Image.gz、System.map、bcm2711-rpi-4-b.dtb + 其他文件
- 在我的 32-GB SD 卡上创建了两个分区引导 (FAT32)、rootfs (Ext4)
- 已将 u-boot.bin、内核映像、start4.elf、fixup4.dat 复制到启动分区
- 在config.txt//config.txt 中有这个
取消下面的注释以使用自定义命名的内核
内核=u-boot.bin
串行控制台输出!
enable_uart=1 7. 尝试用 HDMI 线将树莓派连接到显示器
我看到的: 设备似乎打开了,我看到一些快速的绿色 LED 闪烁,然后只有红色 LED 保持稳定。显示器收到信号,表明它变亮了,但屏幕是空白的。我期待一个带有 UART > 或其他东西的命令提示符,但没有出现。
问题:
- 有人可以评论我这边缺少什么吗?
- 在 Raspberry Pi 4B 上获得自己的 U-Boot、拥有 Linux 内核和根 FS 运行 的绝对最低要求是什么? (关于 .elf、fix*.dat 等,+ config.txt、cmdline.txt 上的设置?)
我希望这能回答问题的 U-Boot 方面:
以下内容对我使用 64 位 Raspbian 内核启动 1 GiB Raspberry 4 有用:
构建 u-boot v2020.10-rc5(在带有 GCC 10 的 Debian Bullseye 上)。
make rpi_arm64_defconfig
CROSS_COMPILE=aarch64-linux-gnu- make -j4
将u-boot.bin复制到RPi4的第一个分区SD-card.
编辑 config.txt 并添加以下行:
enable_uart=1
arm_64bit=1
kernel=u-boot.bin
在 U-Boot 的串行控制台上,我输入了以下命令。您可以使用 mkimage.
将它们放入 boot.scr 文件中U-Boot> setenv bootargs coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1 smsc95xx.macaddr=DC:A6:32:05:53:B6 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyS0,115200 console=tty1 root=PARTUUID=7f586f18-02 rootfstype=ext4 elevator=deadline rootwait
U-Boot> load mmc 0:1 $fdt_addr_r bcm2711-rpi-4-b.dtb
47471 bytes read in 26 ms (1.7 MiB/s)
U-Boot> load mmc 0:1 $kernel_addr_r kernel8.img
15483392 bytes read in 823 ms (17.9 MiB/s)
U-Boot> booti $kernel_addr_r - $fdt_addr_r
您必须根据根分区和 MAC 地址调整 PARTUUID。