u-boot/linux 在“启动 Linux...”后挂起

u-boot/linux 在“启动 Linux...”后挂起

我需要一些关于如何进一步调试的指示。

我的设置如下所示:

  • 硬件:CM3
  • Pi 固件启动 u-boot,u-boot 加载 FIT 映像并应该启动它。
  • FIT 映像包含内核(未压缩,~7MB)、设备树、ramdisk(~2.5MB)
  • 内核是5.15,u-boot是2022.01

FIT 图像加载并验证良好,我的 bootargs 已设置,据我所知,所有内容都应该有效。该问题发生在将内核从 4.19 更新到 5.15 后(通过 Yocto 更新,图像大小增加了大约 3 MB)。我尝试启用 Earlyprintk,但这要么没有任何作用,要么我们甚至还没有做到这一点。

启动脚本的相关部分(希望其中有一些不相关的内容):

load mmc 0:2 $ramdisk_addr_r "/boot"$kernel_image


# "ramdisk_addr_r" is 0x02700000
# "fit_conf" is #conf-bcm2710-rpi-cm3.dtb#conf-overlays_i2c-ds1307.dtbo#conf-overlays_audio-on.dtbo#conf-overlays_gpio43-reset.dtbo#conf-overlays_mmc-non-removable.dtbo#conf-overlays_spi.dtbo
bootm "${ramdisk_addr_r}${fit_conf}"

启动参数(一些很可能不相关的东西被删除):

console=ttyAMA0,115200 earlyprintk 8250.nr_uarts=1 bcm2708_fb.fbwidth=480 bcm2708_fb.fbheight=800 bcm2708_fb.fbswap=1 dwc_otg.lpm_enable=0 usbhid.mousepoll=0 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 cma=512M fbcon=vc:2-4 logo.nologo video=HDMI-A-1:480x800MR-24@60 dwc_otg.microframe_schedule=1 smsc95xx.turbo_mode=N root=/dev/ram0 rw rootwait rootdelay=2 ramdisk_size=8192 panic=10

包含我能找到的所有调试选项的日志(第一部分是 rpi 固件):

Raspberry Pi Bootcode

Found SD card, config.txt = 1, start.elf = 1, recovery.elf = 0, timeout = 0
Read File: config.txt, 36655 (bytes)




Raspberry Pi Bootcode
Read File: config.txt, 36655
Read File: start.elf, 2973536 (bytes)
Read File: fixup.dat, 7262 (bytes)
MESS:00:00:03.766632:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:03.790677:0: brfs: File read: 36655 bytes
MESS:00:00:03.824492:0: brfs: File read: /mfs/sd/edid.dat
MESS:00:00:03.828906:0: brfs: File read: 128 bytes
MESS:00:00:03.833665:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:03.838028:0: gpioman: gpioman_get_pin_num: pin FLASH_0_ENABLE not defined
MESS:00:00:03.845480:0: gpioman: gpioman_get_pin_num: pin FLASH_0_INDICATOR not defined
piSS:00:00:03.853227:0: gpioman: gpioman_get_pin_num: pin FMISEPLSAYS_S:0D0:A00 :0n3.o85t82 98d:0e: fgpiionmaen:d g
_goman
  MEeSSt:0_0:p00i:0n3._86n43u16m:0::  gppioimann:  gFpiLomAanSH__0g_IeNDtIC_ATpORi nnot_ dnefuMm:E pSinS L:ED0S_0PW:R_0OK0 n:ot0 d3ef.in8ed7
2n2ed1
9:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
MESS:00:00:03.896414:0: gpioman: gpioman_get_pin_num: pin BT_ON not defined
MESS:00:00:03.901684:0: gpioman: gpioman_get_pin_num: pin WL_ON not defined
MESS:00:00:03.935160:0: gpioman: gpioman_get_pin_num: pin LEDS_PWR_OK not defined
MESS:00:00:03.940993:0: *** Restart logging
MESS:00:00:03.944864:0: brfs: File read: 36655 bytes
MESS:00:00:03.970043:0: HDMI0: hdmi_pixel_encoding: 162000000
MESS:00:00:03.974816:0: gpioman: gpioman_get_pin_num: pin CAMERA_0_I2C_PORT not defined
MESS:00:00:03.981831:0: dtb_file 'bcm2710-rpi-cm3.dtb'
MESS:00:00:03.990825:0: brfs: File read: /mfs/sd/bcm2710-rpi-cm3.dtb
MESS:00:00:03.995486:0: Loaded 'bcm2710-rpi-cm3.dtb' to 0x100 size 0x75b2
MESS:00:00:04.015999:0: brfs: File read: 30130 bytes
MESS:00:00:04.096779:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.123208:0: dtparam: i2c1=on
MESS:00:00:04.134136:0: dtparam: i2c_arm=on
MESS:00:00:04.145334:0: brfs: File read: 36655 bytes
MESS:00:00:04.148795:0: Failed to load overlay 'vc4-kms-v3d'
MESS:00:00:04.154137:0: dtparam: audio=on
MESS:00:00:04.168070:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d.dtbo
MESS:00:00:04.179270:0: brfs: File read: /mfs/sd/cmdline.txt
MESS:00:00:04.183258:0: Read command line from file 'cmdline.txt':
MESS:00:00:04.189134:0: 'dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait'
MESS:00:00:04.973468:0: gpioman: gpioman_get_pin_num: pin WL_ON not defined
MESS:00:00:04.987033:0: brfs: File read: 89 bytes
MESS:00:00:05.038864:0: brfs: File read: /mfs/sd/kernel7.img
MESS:00:00:05.042831:0: Loaded 'kernel7.img' to 0x8000 size 0x85f1c
MESS:00:00:05.048833:0: Device tree loaded to 0x2eff8400 (size 0x7b09)
MESS:00:00:05.056422:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:05.062784:0: uart: Baud rate change done...
MESS:00:00:05.066216:0: uart: Baud rate change done...
MESS:00:00:05.073531:0: gpioman: gpioman_get_pin_num: pin SDCARD_CONTROL_POWER not defined


U-Boot 2022.01 (Jan 01 2000 - 00:00:00 +0000)

DRAM:  960 MiB
RPI Compute Module 3+ (0xa02100)
MMC:   mmc@7e202000: 0
Loading Environment from FAT... WARNING at drivers/mmc/bcm2835_sdhost.c:414/bcm2835_send_command()!
WARNING at drivers/mmc/bcm2835_sdhost.c:414/bcm2835_send_command()!
Unable to read "uboot.env" from mmc0:1... 
In:    serial
Out:   vidconsole
Err:   vidconsole
Net:   No ethernet found.
Hit any key to stop autoboot:  0
WARNING at drivers/mmc/bcm2835_sdhost.c:414/bcm2835_send_command()!
WARNING at drivers/mmc/bcm2835_sdhost.c:414/bcm2835_send_command()!
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
177 bytes read in 1 ms (172.9 KiB/s)
## Executing script at 02400000
1551 bytes read in 1 ms (1.5 MiB/s)
Saving Environment to FAT... OK
669 bytes read in 1 ms (653.3 KiB/s)
ostree_root=/ostree/boot.1/poky/2b3c8673ae53eb1a02210e627c06ac617b0e758fbf71afa0c7e91a8ff5931aeb/0
215 bytes read in 5 ms (42 KiB/s)
9269132 bytes read in 387 ms (22.8 MiB/s)
## Loading kernel from FIT Image at 02700000 ...
   Using 'conf-bcm2710-rpi-cm3.dtb' configuration
   Trying 'kernel-1' kernel subimage
     Description:  Linux kernel
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x02700110
     Data Size:    6631488 Bytes = 6.3 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x00008000
     Entry Point:  0x00080000
     Hash algo:    sha256
     Hash value:   6ff211d7430e5179b546ad46e3783fbe797e036302c9d55a0adaf09b03a7ad40
   Verifying Hash Integrity ... sha256+ OK
## Loading ramdisk from FIT Image at 02700000 ...
   Using 'conf-bcm2710-rpi-cm3.dtb' configuration
   Trying 'ramdisk-1' ramdisk subimage
     Description:  initramfs-ostree-image
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x02d5be80
     Data Size:    2599324 Bytes = 2.5 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    sha256
     Hash value:   f10f8afa25b5416fdf6f2790c087661999c5502260ec8e2e3caff5d9d9a48632
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 02700000 ...
   Using 'conf-bcm2710-rpi-cm3.dtb' configuration
   Trying 'fdt-bcm2710-rpi-cm3.dtb' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x02d53260
     Data Size:    30130 Bytes = 29.4 KiB
     Architecture: ARM
     Load Address: 0x05000000
     Hash algo:    sha256
     Hash value:   50c601276d58a4a1daded000c4d8a7a5ef917436a9e483675ff8e93265d6c294
   Verifying Hash Integrity ... sha256+ OK
   Loading fdt from 0x02d53260 to 0x05000000
## Loading fdt from FIT Image at 02700000 ...
   Using 'conf-overlays_i2c-ds1307.dtbo' configuration
   Trying 'fdt-overlays_i2c-ds1307.dtbo' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x02d5a908
     Data Size:    508 Bytes = 508 Bytes
     Architecture: ARM
     Load Address: 0x06000000
     Hash algo:    sha256
     Hash value:   2efdf54d40f36118a2f771de7b412bcdcb56819bfd646719a429b1580a9b67bd
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 02700000 ...
   Using 'conf-overlays_audio-on.dtbo' configuration
   Trying 'fdt-overlays_audio-on.dtbo' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x02d5abf4
     Data Size:    263 Bytes = 263 Bytes
     Architecture: ARM
     Load Address: 0x06000000
     Hash algo:    sha256
     Hash value:   c5dfd7893d0248f2c966995fe332cdb075771d398326c0c997e43120c793b818
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 02700000 ...
   Using 'conf-overlays_gpio43-reset.dtbo' configuration
   Trying 'fdt-overlays_gpio43-reset.dtbo' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x02d5adf0
     Data Size:    1340 Bytes = 1.3 KiB
     Architecture: ARM
     Load Address: 0x06000000
     Hash algo:    sha256
     Hash value:   c9fc421b77391ae8323147007cef422c1c80246aa8606927a93fe1ecb122fdbd
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 02700000 ...
   Using 'conf-overlays_mmc-non-removable.dtbo' configuration
   Trying 'fdt-overlays_mmc-non-removable.dtbo' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x02d5b424
     Data Size:    263 Bytes = 263 Bytes
     Architecture: ARM
     Load Address: 0x06000000
     Hash algo:    sha256
     Hash value:   06a9b23fac0a5d75e671107fcecbf556ababc4d4fe25218ba47d1803024aa751
   Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 02700000 ...
   Using 'conf-overlays_spi.dtbo' configuration
   Trying 'fdt-overlays_spi.dtbo' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x02d5b618
     Data Size:    1930 Bytes = 1.9 KiB
     Architecture: ARM
     Load Address: 0x06000000
     Hash algo:    sha256
     Hash value:   024bf878c83abe13ecb49273611177a1b72f0975377a34ad077977f023c1bb79
   Verifying Hash Integrity ... sha256+ OK
   Booting using the fdt blob at 0x5000000
   Loading Kernel Image
   Using Device Tree in place at 05000000, end 0500ad04

Starting kernel ...

我怎样才能找出是什么阻碍了我的启动?

答案1

根据你的 U-Boot 输出,从内核开始到内核运行地址有一个不寻常的偏移量 0x78000:

 Load Address: 0x00008000
 Entry Point:  0x00080000

典型的情况是,您在映像的开头跳入内核,因此两个地址中的任何一个都可能有过多的一个零或缺少一个零(正如您在对我的评论的回答中所确认的那样)。

相关内容