无法在Raspberry PI 4B上运行U-boot绝对需要什么?

问题描述

我看到了有关此主题的几篇文章,但没有任何真正有助于我的事业的事情,因此在此重申我的问题。

我想构建自己的工具链,U-boot和将主线Linux内核移植到特定处理器上。由于我目前拥有Raspberry Pi 4B,因此我决定使用它来逐步测试其二进制文件。

到目前为止,我执行了以下操作:

  1. 使用Crosstool-ng(v1.24.0)构建64位工具链-获得\ x-tools \ aarch64-rpi3-linux-gnu
  2. 克隆U-boot并构建v2020.07版本,从而生成u-boot.bin +其他文件(使用rpi_4_defconfig和rpi_arm64_defconfig内置)
  3. 克隆Linux内核(v5.4.65和v5.8.9),在Raspberry Pi存储库的arch / arm64 / configs中添加了bcm2711_defconfig并构建了Linux内核-生成vmlinux,Image,Image.gz,System.map,bcm2711- rpi-4-b.dtb +其他文件
  4. 在我的32 GB SD卡上创建了两个分区引导(FAT32),rootfs(Ext4)
  5. 将u-boot.bin,内核映像,start4.elf,fixup4.dat复制到引导分区中
  6. 将其保存在config.txt // config.txt中

在下面取消注释以使用您的自定义命名内核

kernel = u-boot.bin

串行控制台输出!

enable_uart = 1 7.尝试使用HDMI电缆将RPi连接到显示器

我看到的是: 设备似乎已打开,我看到一些快速的绿色LED闪烁,然后只有红色LED保持稳定。监视器会变亮,但屏幕黑屏,以指示信号。我期望使用UART>或类似命令显示命令提示符,但没有任何反应。

问题:

  1. 有人可以评论我身边缺少的东西吗?
  2. 在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卡的第一个分区。

编辑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。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...