RPI2 boot failure with recent changes to u-boot

Ian Lepore ian at freebsd.org
Mon Dec 18 17:35:57 UTC 2017


On Mon, 2017-12-18 at 11:25 -0600, Karl Denninger wrote:
> On 12/18/2017 10:31, Ian Lepore wrote:
> > 
> > On Mon, 2017-12-18 at 10:24 -0600, Karl Denninger wrote:
> > > 
> > > I recently upgraded my "u-boot" package for RPI2 to the current
> > > version
> > > (and grabbed the "rpi-firmware" package it said it needed) and
> > > now I
> > > have no-start on the RPI2....
> > > 
> > > U-Boot 2017.09 (Dec 12 2017 - 18:48:47 +0000)
> > > 
> > > DRAM:  948 MiB
> > > RPI 2 Model B (0xa21041)
> > > MMC:   sdhci at 7e300000: 0
> > > reading uboot.env
> > > 
> > > ** Unable to read "uboot.env" from mmc0:1 **
> > > Using default environment
> > > 
> > > In:    serial
> > > Out:   vidconsole
> > > Err:   vidconsole
> > > Net:   No ethernet found.
> > > starting USB...
> > > USB0:   Core Release: 2.80a
> > > scanning bus 0 for devices... 3 USB Device(s) found
> > >        scanning usb for storage devices... 0 Storage Device(s)
> > > found
> > > Hit any key to stop autoboot:  0
> > > switch to partitions #0, OK
> > > mmc0 is current device
> > > Scanning mmc 0:1...
> > > Found FreeBSD U-Boot Loader (bin)
> > > reading ubldr.bin
> > > 227704 bytes read in 34 ms (6.4 MiB/s)
> > > ## Starting application at 0x01000000 ...
> > > 
> > > And that be all I get.
> > > 
> > > This is what I have in board/RaspberryPi2/setup.sh related to
> > > that
> > > (which I had to change since the firmware files have been split
> > > between
> > > the two packages)
> > > 
> > > raspberry_pi_populate_boot_partition ( ) {
> > >     # Copy RaspberryPi 2 boot files to FAT partition
> > >     cp ${FIRMWARE_PATH}/LICENCE.broadcom .
> > >     cp ${FIRMWARE_PATH}/bootcode.bin .
> > >     cp ${FIRMWARE_PATH}/config.txt .
> > >     cp ${FIRMWARE_PATH}/fixup.dat .
> > >     cp ${FIRMWARE_PATH}/fixup_cd.dat .
> > >     cp ${FIRMWARE_PATH}/fixup_x.dat .
> > >     cp ${FIRMWARE_PATH}/start.elf .
> > >     cp ${FIRMWARE_PATH}/start_cd.elf .
> > >     cp ${FIRMWARE_PATH}/start_x.elf .
> > >     cp ${UBOOT_PATH}/u-boot.bin .
> > >     cp ${UBOOT_PATH}/fixup_db.dat .
> > >     cp ${UBOOT_PATH}/start_db.elf .
> > >     cp ${UBOOT_PATH}/README .
> > > 
> > >     # RPi firmware loads and modify the DTB before pass it to
> > > kernel.
> > >     freebsd_install_fdt rpi2.dts rpi2.dtb
> > > 
> > >     # Install ubldr to FAT partition
> > >     freebsd_ubldr_copy_ubldr .
> > > }
> > > 
> > > Any ideas on tracking this down?
> > > 
> > How recent is your ubldr.bin?  About a week ago in r326752 I
> > committed
> > the patches from PR 224008, which affects the startup code for
> > ubldr.bin, so it could possibly be a fix for the problem you're
> > seeing.
> > 
> > (I don't have an rpi2 to test so I can't say for sure.)
> > 
> > -- Ian
> I updated the 11.x source tree I use to build this and now I get
> further.....
> 
> U-Boot 2017.09 (Dec 12 2017 - 18:48:47 +0000)
> 
> DRAM:  948 MiB
> RPI 2 Model B (0xa21041)
> MMC:   sdhci at 7e300000: 0
> reading uboot.env
> 
> ** Unable to read "uboot.env" from mmc0:1 **
> Using default environment
> 
> In:    serial
> Out:   vidconsole
> Err:   vidconsole
> Net:   No ethernet found.
> starting USB...
> USB0:   Core Release: 2.80a
> scanning bus 0 for devices... 3 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
> Hit any key to stop autoboot:  0
> switch to partitions #0, OK
> mmc0 is current device
> Scanning mmc 0:1...
> Found FreeBSD U-Boot Loader (bin)
> reading ubldr.bin
> 235040 bytes read in 33 ms (6.8 MiB/s)
> ## Starting application at 0x01000000 ...
> Consoles: U-Boot console
> Compatible U-Boot API signature found @0x3af5d988
> 
> FreeBSD/armv6 U-Boot loader, Revision 1.2
> (Mon Dec 18 11:14:37 CST 2017 freebsd at NewFS.denninger.net)
> 
> DRAM: 948MB
> Number of U-Boot devices: 1
> U-Boot env: loaderdev not set, will probe all devices.
> Found U-Boot device: disk
>   Probing all disk devices...
>   Checking unit=0 slice=<auto> partition=<auto>... good.
> Booting from disk0s2a:
> /boot/kernel/kernel text=0x617118 data=0x54300+0x17fbc0
> syms=[0x4+0x67d30+0x4+0x9480c]
> 
> Hit [Enter] to boot immediately, or any other key for command prompt.
> Booting [/boot/kernel/kernel]...
> No valid device tree blob found!
> 
> Type '?' for a list of commands, 'help' for more detailed help.
> loader>
> 
> 
> Am  I missing a line in config.txt that needs to be there or did
> something else odd happen that the dtb is missing?
> 

On my rpi-b, the dtb file is set in config.txt, which looks like this
for booting on 12-current:

root at rpi:~ # cat /mnt/config.txt 
gpu_mem=32
device_tree=bcm2835-rpi-b-rev2.dtb
device_tree_address=0x100
disable_commandline_tags=1
kernel=u-boot.img

I think 11-stable still uses the old freebsd-specifc rpi2.dtb, maybe
the firmware update changed your config.txt to use the new name?

-- Ian



More information about the freebsd-arm mailing list