Re: uBoot broken on RPI2 Model B?

From: Karl Denninger <karl_at_denninger.net>
Date: Fri, 03 Mar 2023 22:50:21 UTC
On 3/3/2023 16:12, Karl Denninger wrote:
>
> Just tried to build -13STABLE for the RPi2 and ran into this (I'm 
> using Crochet and have had to make some changes to the board-specific 
> files, but it appears the problem that results in it not working is in 
> uboot; I've made a number of changes since it looks like the system 
> now wants to boot off EFI as opposed to what worked in -12, which 
> would be ok if it can find the boot device -- I think (may be wrong here)
>
> U-Boot 2023.01 (Jan 26 2023 - 04:25:18 +0000)
>
> DRAM:  948 MiB
> RPI 2 Model B (0xa21041)
> Core:  70 devices, 13 uclasses, devicetree: board
> MMC:   mmc@7e300000: 1
> Loading Environment from FAT... ** Bad device specification mmc 0 **
> In:    serial
> Out:   vidconsole
> Err:   vidconsole
> Net:   No ethernet found.
> starting USB...
> Bus usb@7e980000: USB DWC2
> scanning bus usb@7e980000 for devices... 3 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
> Hit any key to stop autoboot:  0
> U-Boot>
>
> Needless to say if I let it try to continue it fails as it can't find 
> the SD card and "mmc dev" shows nothing present.
>
> Obviously going to dig into this further myself but I recalled 
> something about this uBoot version being broken on older Pis...
>
> The layout of the disk on the boot partition is thus:
>
> root@NewFS:/mnt # ls -la
> total 12679
> drwxr-xr-x   1 root  wheel    16384 Dec 31  1979 .
> drwxr-xr-x  35 root  wheel       42 Jan 20 10:16 ..
> drwxr-xr-x   1 root  wheel     4096 Feb 13 11:09 EFI
> -rwxr-xr-x   1 root  wheel      709 Feb 13 11:09 README
> -rwxr-xr-x   1 root  wheel    26745 Feb 13 11:09 bcm2709-rpi-2-b.dtb
> -rwxr-xr-x   1 root  wheel    52456 Feb 13 11:09 bootcode.bin
> -rwxr-xr-x   1 root  wheel      141 Feb 13 11:09 config.txt
> -rwxr-xr-x   1 root  wheel     7314 Feb 13 11:09 fixup.dat
> -rwxr-xr-x   1 root  wheel     3187 Feb 13 11:09 fixup_cd.dat
> -rwxr-xr-x   1 root  wheel    10298 Feb 13 11:09 fixup_db.dat
> -rwxr-xr-x   1 root  wheel    10298 Feb 13 11:09 fixup_x.dat
> drwxr-xr-x   1 root  wheel    20480 Feb 13 11:09 overlays
> -rwxr-xr-x   1 root  wheel    21169 Feb 13 11:09 rpi2.dtb
> -rwxr-xr-x   1 root  wheel  2952960 Feb 13 11:09 start.elf
> -rwxr-xr-x   1 root  wheel   793116 Feb 13 11:09 start_cd.elf
> -rwxr-xr-x   1 root  wheel  4794472 Feb 13 11:09 start_db.elf
> -rwxr-xr-x   1 root  wheel  3704808 Feb 13 11:09 start_x.elf
> -rwxr-xr-x   1 root  wheel   521916 Feb 13 11:09 u-boot.bin
>
> root@NewFS:/mnt # ls -laR EFI
> total 24
> drwxr-xr-x  1 root  wheel   4096 Feb 13 11:09 .
> drwxr-xr-x  1 root  wheel  16384 Dec 31  1979 ..
> drwxr-xr-x  1 root  wheel   4096 Feb 13 11:09 BOOT
>
> EFI/BOOT:
> total 140
> drwxr-xr-x  1 root  wheel    4096 Feb 13 11:09 .
> drwxr-xr-x  1 root  wheel    4096 Feb 13 11:09 ..
> -rwxr-xr-x  1 root  wheel  133812 Feb 13 11:09 bootarm.efi
>
> root@NewFS:/mnt # more config.txt
> init_uart_clock=3000000
> enable_uart=1
> kernel=u-boot.bin
> kernel7=u-boot.bin
> dtoverlay=mmc
> audio_pwm_mode=2
> dtparam=audio=on,i2c_arm=on,spi=on
>
> root@NewFS:/mnt # ls -la overlays | grep mmc
> -rwxr-xr-x  1 root  wheel    1221 Feb 13 11:09 mmc.dtbo
>
> Which I BELIEVE should work -- assuming that I can get "see" the SD 
> card from u-boot that is....
>
> Installed rpi-related packages:
>
> root@NewFS:/mnt # pkg info|grep rpi
> rpi-firmware-1.20210303.g20210303 Firmware for RaspberryPi Single 
> Board Computer
> u-boot-rpi2-2023.01            Cross-build das u-boot for model rpi2
> u-boot-rpi3-2023.01            Cross-build das u-boot for model rpi3
> u-boot-rpi4-2023.01            Cross-build das u-boot for model rpi4
>
I found a copy of the 2022-10 uboot:

U-Boot 2022.10 (Oct 24 2022 - 02:01:47 +0000)

DRAM:  948 MiB
RPI 2 Model B (0xa21041)
Core:  70 devices, 13 uclasses, devicetree: board
MMC:   mmc@7e300000: 1
Loading Environment from FAT... ** Bad device specification mmc 0 **
In:    serial
Out:   vidconsole
Err:   vidconsole
Net:   No ethernet found.
starting USB...
Bus usb@7e980000: USB DWC2
scanning bus usb@7e980000 for devices... 3 USB Device(s) found
        scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0

 >> FreeBSD EFI boot block
    Loader path: /boot/loader.efi

    Initializing modules: ZFS UFS
    Load Path: /efi\boot\bootarm.efi
    Load Device: 
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/SD(1)/SD(0)/HD(1,MBR,0xb5048a37,0x3f,0x18fe7)
    Probing 3 block devices...not supported
not supported
not supported
  done
     ZFS found no pools
     UFS found no partitions
Failed to load '/boot/loader.efi'
panic: No bootable partitions found!
## Application failed, r = 1
Can't remove invalid handle 00000000
EFI LOAD FAILED: continuing...
MMC Device 2 not found
no mmc device at slot 2

Device 0: unknown device
Waiting for Ethernet connection... unable to connect.
missing environment variable: pxeuuid
Retrieving file: pxelinux.cfg/01-b8-27-eb-0d-05-01
Waiting for Ethernet connection...

Hmmm... going back and looking at the 2023-01 version boot sequence 
again... same thing it appears; the u-boot DOES load the EFI loader, but 
dies there.  Am I trying to be too cute by half and should stick 
ubldr.bin in that boot partition and get rid of the EFI loader entirely?

-- 
Karl Denninger
karl@denninger.net
/The Market Ticker/
/[S/MIME encrypted email preferred]/