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