Re: uBoot broken on RPI2 Model B?
- Reply: Karl Denninger : "Re: uBoot broken on RPI2 Model B?"
- In reply to: Karl Denninger : "Re: uBoot broken on RPI2 Model B?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 04 Mar 2023 00:36:27 UTC
On Mar 3, 2023, at 14:50, Karl Denninger <karl@denninger.net> wrote: > On 3/3/2023 16:12, Karl Denninger wrote: >> Just tried to build -13STABLE for the RPi2 v1.1 (so: armv7) (I'll be testing this case.) v1.2 (so: aarch64 --but could also be used via armv7) >> 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 So: armv7 style. >> -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 RPi* firmware does not include such a rpi2.dtb . It is some sort of addition to the materials. My context will not have it. >> -rwxr-xr-x 1 root wheel 2952960 Feb 13 11:09 start.elf The following sort of thing could help confirm the match to what is in the official snapshot builds at this point: For example, for what I later report on testing (an official snapshot build installation): # strings /mnt/start.elf | grep VC_BUILD_ID_ VC_BUILD_ID_USER: dom VC_BUILD_ID_TIME: 12:12:09 VC_BUILD_ID_VARIANT: start VC_BUILD_ID_TIME: Feb 25 2021 VC_BUILD_ID_BRANCH: bcm2711_2 VC_BUILD_ID_HOSTNAME: buildbot VC_BUILD_ID_PLATFORM: raspberrypi_linux VC_BUILD_ID_VERSION: 564e5f9b852b23a330b1764bcf0b2d022a20afd0 (clean) >> -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 For reference: # strings /mnt/u-boot.bin | grep "U-Boot 202" U-Boot 2023.01 (Mar 02 2023 - 02:41:45 +0000) As for the bootarm.efi , as I remember there is no good string to show. So I'll show just: # ls -Tld /mnt/EFI/BOOT/bootarm.efi -rwxr-xr-x 1 root wheel 1407668 Mar 1 19:55:18 2023 /mnt/EFI/BOOT/bootarm.efi >> 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 The snapshot materials do not have the following 2 lines in the config.txt but do have the above: >> 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 For reference: the gpart show output lines for the microsd card media in a reader were like: => 63 249737153 da3 MBR (119G) 63 1985 - free - (993K) 2048 102400 1 fat32lba [active] (50M) 104448 10381312 2 freebsd (5.0G) 10485760 239251456 - free - (114G) => 0 10381312 da3s2 BSD (5.0G) 0 128 - free - (64K) 128 10381184 1 freebsd-ufs (4.9G) (It will change if it boots in the RPi2 v1.1 .) > 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? > To test, I grabbed the official snapshot build: http://ftp3.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/13.2/FreeBSD-13.2-STABLE-arm-armv7-GENERICSD-20230302-3912f99ecae6-254729.img.xz Then I did an unxz in the file that resulted and then dd'd the .img file to a microsd card: dd if=FreeBSD-13.2-STABLE-arm-armv7-GENERICSD-20230302-3912f99ecae6-254729.img of=/dev/da3 bs=1m conv=sync,fsync status=progress So I plugged in the microsd card to the RPi2 v1.1 and powered on. It booted just fine. # gpart show => 63 249737153 mmcsd0 MBR (119G) 63 1985 - free - (993K) 2048 102400 1 fat32lba [active] (50M) 104448 249628672 2 freebsd (119G) 249733120 4096 - free - (2.0M) => 0 249628672 mmcsd0s2 BSD (119G) 0 128 - free - (64K) 128 245876608 1 freebsd-ufs (117G) 245876736 3751936 2 freebsd-swap (1.8G) # uname -apKU FreeBSD generic 13.2-STABLE FreeBSD 13.2-STABLE #0 stable/13-n254729-3912f99ecae6: Thu Mar 2 04:05:56 UTC 2023 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm.armv7/sys/GENERIC arm armv7 1302503 1302503 # freebsd-version -kru 13.2-STABLE 13.2-STABLE 13.2-STABLE # find -s /boot/msdos/ -print /boot/msdos/ /boot/msdos/EFI /boot/msdos/EFI/BOOT /boot/msdos/EFI/BOOT/bootarm.efi /boot/msdos/MLO /boot/msdos/bcm2709-rpi-2-b.dtb /boot/msdos/bootcode.bin /boot/msdos/config.txt /boot/msdos/dtb . . . /boot/msdos/dtb/zybo.dtb /boot/msdos/fixup.dat /boot/msdos/fixup_cd.dat /boot/msdos/fixup_db.dat /boot/msdos/fixup_x.dat /boot/msdos/overlays /boot/msdos/overlays/mmc.dtbo /boot/msdos/start.elf /boot/msdos/start_cd.elf /boot/msdos/start_db.elf /boot/msdos/start_x.elf /boot/msdos/u-boot.bin /boot/msdos/u-boot.img # swapinfo Device 1K-blocks Used Avail Capacity /dev/label/growfs_swap 1875964 0 1875964 0% # dumpon -vl kernel dumps on priority: device 0: /dev/null (That last is probably not as intended yet.) === Mark Millard marklmi at yahoo.com