U-Boot for Raspberry Pi, the last step

June 22, 2012 — 20 Comments

Yes, the last step. It doesn’t mean that I’m abandoning this project. Not at all. It just that it has reached the state I wanted it to reach from the very beginning: fairly stable, flexible u-boot distribution suitable to be used as an environment for OS bring-up. So now it’s time to get back to the original idea: get FreeBSD running on Raspberry Pi.

So, current state of affairs is raspberry-pi-uboot-20120621.tar.gz. It includes:

  • USB support
  • SD card support (FAT filesystem)
  • Support for built-in USB ethernet
  • Autoimport environment from uEnv.txt
  • Autorun of boot script (boot.scr)

Known problems:

  • two usb start in row without power cycle does not work
  • USB transaction errors when USB device is plugged into R-Pi
  • bootm command is not properly tested

Of course there is place for improvements and there will be some bugfixes for this branch. I’ll prepare USB driver (and, probably, SDHC) for upstream but it will be background activity and my primary objective for nearest future will be FreeBSD on R-Pi.



20 responses to U-Boot for Raspberry Pi, the last step

  1. So is it as simple as extracting the tar to an SD card and booting?

    • If you already have RPi-bootable SD card – yes. Just replace content of “boot” partition with content of the archive. Tomorrow I’ll write post on how to get u-boot SD card from the scratch.

  2. Have you considered using the FreeBSD USB stack’s DWC OTG driver for the boot loader?

    • Yes, but decided to go with linux one for couple of reasons:
      - Linux and U-Boot APIs are very close, so I could almost copy-paste code
      - I can have working copy of almost the same code running on the device so I can compare register accesses

  3. Hum, good work. I don’t know if it could be hard for you, but why not add ext* filesystem support?
    I’m thinking about ext2.

  4. Awesome, thanks! However… your tarball is seriously uncool– I just lost a file on my Desktop called config.txt– can you add a warning that it extracts to .?

  5. Hi,

    u-boot for the R-Pi is great, but this was only a prelim step to porting FreeBSD to it.

    I just checked your github repo and it seems that this is the vanilla source a this very point. Do you know about the couple other guys who are doing similar work? CoolTrainer stuff seems to have been integrated into upstream and she’s more focussed on armv5 systems. Damjan Marion has his own project forcussed on Armv6 and v7. No R-Pi at this point but I’m sure there is leverage to get from each other.

  6. Hi, great work! I am having only one problem, there is a limit of 8 args on a command line in your rpi u-boot. This is preventing me from being able to edit the ‘bootargs’ variable while at the u-boot monitor console. Most boards are set for 16 or 32. With this limitation I am unable to pass needed cmdline parameters to my kernel. Any chance of getting this limitation increased?

  7. Hey, awesome you seem to be the only person who has even tried this. I have got your images but they dont seem to be working, all i get on the hdmi is a coloured gradient square (presumably the gpu code has worked).

    I am trying to port qnx to the pi hence why i would like uboot.

    • Do you use latest images? The latest I believe is this one.

      • Thanks i managed to get uboot on screen witrh that…. however i have decided to build it myself as i need USB support and upon looking at the rpi_b config file seems as though usb and usb keyboard is not defined. When u-boot is built what do i want in my boot directory. Just the files that rpi-deploy.sh is copying across or do i need more (ie get a bootable image a copy and replace the other files.) I dont mind if you repsond to this via email rather than in comments :)


        • rpi-deploy script is outdated I really should fix it :( I suggest following procedure: get bootable image, build custom u-boot.bin. use mkimage util from raspberry pi github and replace u-boot image on SD card with newly generated once.

          As for keyboard – unfortunately it’s not supported yet. USB keyboard requires support for SPLIT transactions in DWC OTG driver and it’s not there yet. I suggest using serial port for communicating with u-boot.

  8. Did you make it open-source? Where to get it?

  9. Hi, I’m using u-boot revision 6709570cdc947c2a546f96d571551acf4474778c with kernel rpi-3.2.27 (uImage).
    It boots the kernel but hangs saying:
    ‘bcm2835-cpufreq: switching to governor powersave’.

    The same kernel (converted to kernel.img) boots successfully without u-boot.
    No problems instead using the uboot.img from http://people.freebsd.org/~gonzo/arm/rpi/freebsd-uboot-20121129.tar.gz but if i convert u-boot.bin to uboot.img with imagetool-uncompressed.py I have the same problem.

    Where are the differences?

    • the most likely reason – command line passed to linux kernel is different for u-boot and non-u-boot cases.
      Less likely – different firmware version.

  10. Hello, I use the u-boot version but I met tftpboot hanging problem.
    The problem is same as here:

    Do you have any idea ? Thanks.

Trackbacks and Pingbacks:

  1. U-Boot for Raspberry Pi | FreeBSD News - July 9, 2012

    [...] Next stage is to get FreeBSD working on Raspberry Pi. [...]

  2. Raspberry Piの資料リンク集 « nanoblog - September 9, 2012

    [...] notebook U-Boot for Raspberry Pi, step 8: SDHC support ≪ FreeBSD developer’s notebook U-Boot for Raspberry Pi, the last step ≪ FreeBSD developer’s notebook FreeBSD/Pi setup HowTo ≪ FreeBSD developer’s notebook [...]

Leave a Reply


Text formatting is available via select HTML. <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>