[U-Boot] Booting Wandboard through USB

Nikolay Dimitrov picmaster at mail.bg
Mon Jun 1 18:08:43 CEST 2015


Hi Stefano,

On 06/01/2015 11:10 AM, Stefano Babic wrote:
> Hi Nikolay,
>
> (jumping a little later in the discussion but trying to sumarize all
> topics..)

Np, you're welcome.

> IMHO we should find a way without constraining SPL to work differently
> as thought only to allow loading from USB. For this reason I will tend
> to a solution as much as possible "tools" only, that is extending
> imx-usb-loader as try to bind together SPL and u-boot.bin and convince
> SPL to load from memory. This becomes an artifact, because in the
> reality, SPL loads from a storage.

Well, there's no need to work differently. There are already config
options that select which interface should be used to load the next
boot stage or OS image:

void board_init_r(gd_t *dummy1, ulong dummy2)
{
...
#ifdef CONFIG_SPL_NOR_SUPPORT
	case BOOT_DEVICE_NOR:
		spl_nor_load_image();
		break;
#endif
...
#ifdef CONFIG_SPL_USB_SUPPORT
	case BOOT_DEVICE_USB:
		spl_usb_load_image();
		break;
#endif
...
}

Also, current SPL loads not only from storage, but also from some
interfaces like serial port, ethernet, usb-eth. We can just add one
more here. To me it looks like a natural extension, thanks to the hard
work done so far on the current code.

> On 01/06/2015 01:15, Nikolay Dimitrov wrote:
>> Hi guys,
>>
>> Here's a proposal how to avoid changing the host boot software for the
>> SPL case:
>>
>> - Power on
>> - Boot ROM announces usb device (0x15a2:0x0054 or 0x15a2:0x0054 or
>> 0x15a2:0x0063)
>> - Host software uploads SPL over OTG
>> - Board initializes DDR
>> - Board initializes USB-OTG and announces again as a usb device with
>> slightly different PID (0x15a2:0x0055 or 0x15a2:0x0056 or
>> 0x15a2:0x0064) or a special PID (0x15a2:0xffff), thus needs to
>> implement FSL boot protocol
>
> It looks like a straightforward solution. I guess that the USB-OTG
> initialization is done as fallback when SPL cannot load from storage,
> allowing us to have a single binary for "standard" booting and USB
> booting. When load fails, USB is initialized.

If you're commenting how the FSL boot ROM works, I doubt that there's a
2nd attempt to load via USB-OTG once the SPL is downloaded, and
regardless of the plugin flag.

If you're commenting about a possible future imx6 SPL implementation in
U-Boot - that would be entirely possible, as long as we fit in OCRAM.

>> - Both imx-usb-loader and mfgtool already have easy mechanism to detect
>> boards' by vid-pid and to sequence actions based on it. So basically
>> we'll just need an additional config for the host boot programs, which
>> need to feed the 2nd boot stage (one more file for imx-usb-loader, and
>> one more config section for the mfgtool), but otherwise it will be
>> quite straight-forward.
>
> Agree, this looks like a straight-forward solution.
>
>>
>> Overall, from the PC host this boot sequence will look like 2 boot
>> sequences for 2 separate usb devices (1 for SPL, 1 for u-boot.img).
>>
>> Probably the most important question is "how easy is to implement the
>> FSL boot protocol in the remaining OCRAM free space". What do you think?

Regards,
Nikolay


More information about the U-Boot mailing list