Hi Robert,

On Fri, 28 Jul 2023 at 07:39, Robert Wenisch <rweni...@bfs.de> wrote:
>
> Hi Simon,
>
> meanwhile I've tried booting from  an FIT image. I.e. I wrote an ist file and 
> baked an itb for booting.
> However, that gave me errors along the lines of "Wrong image format for bootm 
> command".

I wonder whether you have somehow disabled CONFIG_FIT ?

>
> So I kept trying to boot the thing using the old fashioned way.
>
> After some trial and error (recompiling the kernel with identical setting and 
> hooking up a monitor) u-boot handed control over to the kernel and I was 
> indeed greeted by 4 raspberries.
> Unfortunately it got stuck after that, not leaving any (error) messages.
> I next tried to boot from a pre-built raspbian kernel which I knew should 
> work. It gave identical results.
>
> For fun, I also tried to boot from the console, entering the commands 
> manually. Then it complained about wrong magic bytes or some such (also for 
> the Raspbian kernel). Why this, all of a sudden?

I'm not sure...perhaps if you send the error message people might be
able to help?

>
> I'm running out of ideas of might go wrong here.
> Am I missing something completely here?
>
> Have a nice weekend
> Robert
>
> PS: The problems with the serial port outputting garbage when scanning USB 
> and starting the kernel still persist. I guess this doesn't work as intended?

I don't know, but there is some strange clocking on at least one
UART...perhaps a conflict? I typically use the UART that requires
gpu_freq=250 in the config.txt file.

> PPS: A ready to go distribution probably isn't going to help much as, 
> figuring out how to setup the boot process with u-boot from scratch is the 
> whole point of the project. Later on we want to repeat the process on some 
> old, exotic embedded system which is already known to be quite quirky. (Of 
> course, it has dropped out of support a long time ago...)

Sure...it's just that when you start with that you can understand what
it is doing, then follow along, building up your knowledge. When you
start from a blank slate it can be a bit of a shot in the dark.

Regards,
Simon


>
>
> -----Ursprüngliche Nachricht-----
> Von: Simon Glass <s...@google.com>
> Gesendet: Dienstag, 25. Juli 2023 23:29
> An: Robert Wenisch <rweni...@bfs.de>
> Cc: u-boot@lists.denx.de
> Betreff: Re: getting u-boot to work on raspi 3b (32bit)
>
> Hi Robert,
>
> On Tue, 25 Jul 2023 at 09:42, Robert Wenisch <rweni...@bfs.de> wrote:
> >
> > Hello,
> >
> > in order to study the boot process of embedded ARM systems, I decided to 
> > start with something well documented: booting as raspi 3b using u-boot.
> > I downloaded kernel sources and u-boot sources. I built the kernel
> > with
> >
> > CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm make bcmrpi_defconfig
> > CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm make -j6 zImage dtbs
> > modules cp arch/arm/boot/zImage /path/to/sdcard-boot-partition cp
> > arch/arm/boot/dts/bcm2710-rpi-3-b.dtb /path/to/sdcard-boot-partition
> > CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm INSTALL_MOD_PATH make
> > modules_install
> >
> > Further I compiled and setup u-boot:
> >
> > CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm make rpi_3_32b_defconfig
> > CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm make -j6
> >
> > cp u-boot.bin /path/to/ sdcard-boot-partition
> >
> > I then went on to edit the config.txt:
> >
> > kernel=u-boot-bin
> > enable_uart=1
> > arm_64bit=0
> > device_tree=bcm2710-rpi-3-b.dtb
> >
> > and boot.txt goes
> >
> > fatload mmc 0:1 ${fdt_addr_r} bcm2710-rpi-3-b.dtb fatload mmc 0:1
> > $kernel_addr_r} zImage setenv bootargs console=ttyS0,115200
> > root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw earlyprintk bootz
> > ${kernel_addr_r} - {fdt_addr_r}
> >
> > I produced an image of boot.txt
> >
> > mkimage -A arm -O linux -T script -d boot.txt boot.scr
> >
> > Frustratingly, it didn't go as smoothly as expected.
>
> You should really be using FIT [1] for this, rather than legacy images.
>
> >
> > With these setting I got up to state "Starting Kernel ..." over the serial 
> > port, then it freezes (or at least doesn't log anything on the tty).
> > I can't post the whole log as I only have it on my dev-machine.
>
> You could try things like earlycon to get some console output.
>
> > However some interesting bits for now:
> > I'm booting on u-boot 2023-07-0967-g94e7cb181a
> > 1 - Pretty much at the beginning it says "Loading Environment from FAT... 
> > *** warning - bad CRC, using default environment"
> > I suppose this only means we're not providing a .env file?
>
> Yes
>
> >
> > 2 - Upon "Scanning bus usb@7e980000 for devices... it's logging a lot of 
> > garbage (as in misinterpreted character codes), what might be going on 
> > there?
>
> No...some sort of clock problem?
> >
> > 3 - A bit further down it states "Found U-Boot script /boot.scr"
> >  [...]
> > "## Executing script at 02400000"
> > As this changes when I edit around the boot.txt and mkimage, I infer u-boot 
> > is indeed loading my boot instructions not just some default values.
>
> OK
>
> >
> > Then follow some info on kernel image flatted device tree blob and their 
> > respective memory addresses.
> > It the tries to load the kernel to little apparent success :/
> >
> > This procedure is what I gathered from a plethora of tutorial and howtos. 
> > Most of these are quite old, have there been breaking changes in u-boot's 
> > development in the meanwhile?
> > For example some sources state the kernel is launched via booti 
> > ${kernel_addr_r} - {fdt_addr_r}, however the booti command seem to be 
> > absent in my u-boot version.
>
> I believe booti is for arm64 but you are using the 32-bit build of rpi-3, so 
> you should be using bootm.
>
> >
> > Is there anything else I#m doing wrong?
> >
> > I'll be grateful for any hints at this point...
>
> You could send a patch to [1] to help others!
>
> There are also distros like Armbian which you can use out of the box.
>
> Regards,
> Simon
>
> [1] https://u-boot.readthedocs.io/en/latest/usage/fit/index.html
> [2] https://u-boot.readthedocs.io/en/latest/board/broadcom/raspberrypi.html

Reply via email to