New U-Boot build

July 7, 2012 — 18 Comments

New build for Raspberry Pi. ChangeLog:

  • New firmware
  • Improved SD card performance
  • Added USB mass storage devices support
  • Added ext2 filesystem support (painfully slow with SD card, tolerable with USB memory stick)

Tarball: raspberry-pi-uboot-20120707.tar.gz

SD card image (32Mb): raspberry-pi-uboot-20120707.img

gonzo

Posts

18 responses to New U-Boot build

  1. You might want to make the partition in your SD card image line up with 4M boundaries. A co-worker mentioned that SDHC cards have some optimization in them and he got a 4–5x performance boost by doing so.

  2. Thanks for all of your hard work. This is awesome. :)

  3. Can this boot Ubuntu? You mention ext2 support, does that mean that the filesystem of the system has to be ext2 or can it be ext3/4? The Mini6410 can boot Ubuntu but it uses u-boot instead of a Linux kernel. The Mini6410 is hardware similar to the Raspberry Pi.

    http://www.minidevs.com/Mini6410/Ubuntu.html

    • U-Boot is not used instead of Linux, it’s just additional step in boot process. Videocore firmware has some knobs but it’s not as flexible and feature-rich as U-Boot.

  4. Hi,

    got a question, im building a usb stack for my baremetal raspi project and i took your stripped down usb driver from u-boot rpi.
    i encounter the following error and only 2 usb devices are found:
    USB: Core Release: 2.80a
    scanning bus for devices… USB hub found
    1 ports detected
    ganged power switching
    standalone hub
    global over-current protection
    power on to power good time: 0ms
    hub controller current requirement: 0mA
    port 1 is removable
    get_hub_status returned status 0, change 0
    local power source is good
    no over-current condition exists
    enabling power on all ports
    port 1 returns 0
    i: 0
    Port 1 Status 501 Change 1
    port 1 connection change
    portstatus 501, change 1, 480 Mb/s
    hub_port_reset: resetting port 0…
    portstatus 503, change 2, 480 Mb/s
    STAT_C_CONNECTION = 0 STAT_CONNECTION = 1 USB_PORT_STAT_ENABLE 1
    hub_port_reset: resetting port 0…
    portstatus 501, change 2, 480 Mb/s
    STAT_C_CONNECTION = 0 STAT_CONNECTION = 1 USB_PORT_STAT_ENABLE 0
    portstatus 503, change 2, 480 Mb/s
    STAT_C_CONNECTION = 0 STAT_CONNECTION = 1 USB_PORT_STAT_ENABLE 1
    USB hub found
    Error condition at line 672: XACTERR
    0 ports detected
    ganged power switching
    standalone hub
    global over-current protection
    power on to power good time: 0ms
    hub controller current requirement: 0mA
    Error condition at line 672: XACTERR
    get_hub_status returned status 0, change 0
    local power source is good
    no over-current condition exists
    enabling power on all ports
    2 USB Device(s) found
    ————————

    Any clue about the :

    Error condition at line 672: XACTERR
    ?

    • At a guess, I’d say that might be power related.

    • I saw these messages with low-speed devices plugged in. Current U-Boot driver does not support SPLIT protocol.

      Or it might be insufficient power as Hexxeh mentioned.

    • For the record: might be unaligned buffer passed to HCDMA register. It seems that all addresses should be 8-bytes aligned.

  5. Hmm, if i use your u-boot everything works. is there a parameter i have to set? at first i could only find one USB device (HUB). Then i found the Mailbox code for PowerManagement:
    volatile UINT32 *mbox0_read = (volatile UINT32 *)BCM2835_ARM_MBOX0_BASE;
    volatile UINT32 *mbox0_write = (volatile UINT32 *)BCM2835_ARM_MBOX1_BASE;
    volatile UINT32 *mbox0_status = (volatile UINT32 *)(BCM2835_ARM_MBOX0_BASE + 0×18);
    volatile UINT32 *mbox0_config = (volatile UINT32 *)(BCM2835_ARM_MBOX0_BASE + 0x1C);
    UINT32 val = 0;

    val |= 8 << 4;
    val |= 1 << 4;

    while (*mbox0_status & 0×80000000) {
    }

    *mbox0_write = MBOX_MSG(0, val);

    • One device is virtual hub, so it’s always there. Power management part is required because without it hardware is just not enabled. And accesses to EEPROM area might freeze CPU.

      Could you publish your version of USB driver so I’ll be able to identify the stage where XACTERR condition occurs.

  6. oh and i have nothing plugged in.. just the “raw” raspi.

  7. Thanks for your hard work on this.
    Can I just ask… where is the source code?

    Thanks
    Alex Owen

  8. Great work, this is awesome. Thank you!
    Is there a way to convert stock RPi kernel.img to uImage?

    Getting rid of the first 32k and running mkimage on it didn’t work for me.
    Maybe I’m missing something. Anyone got pointers for this one?

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>