Booting from USB using DFU (USB Device Firmware Upgrade)¶
Introduction¶
The VAR-SOM-AM62 supports booting U-Boot (R5 SPL -> A53 SPL -> A53 U-Boot) from USB using dfu-util.
dfu-util is a host side implementation of the DFU 1.0 and DFU 1.1 specifications of the USB forum. DFU is intended to download and upload firmware to/from devices connected over USB. It ranges from small devices like micro-controller boards to mobile phones. Using dfu-util you can download firmware to your DFU-enabled device or upload firmware from it. dfu-util has been tested with the Openmoko Neo1973 and Freerunner and many other devices. For more information, see https://dfu-util.sourceforge.net/
This guide is derived from TI's USB Device Firmware Upgrade (DFU) guide and walks through the process of booting U-Boot from USB.
Installing dfu-util¶
In order to avoid using sudo in all commands, create a custom udev rule to set the appropriate access permissions for your PC to the dfu USB device:
$ echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="6165", GROUP="plugdev", MODE="0666"' | sudo tee /etc/udev/rules.d/99-dfu-util.rules
$ sudo udevadm control --reload-rules && sudo udevadm trigger
dfu-util is available in the Ubuntu apt repositories:
Alternatively, DFU is shipped with the Yocto SDK and can be used after installing and sourcing the SDK setup script.
Building U-Boot¶
Build the bootloader images using the am62x_var_som_r5_usbdfu_defconfig and am62x_var_som_a53_defconfig configs files. The configs required for DFU boot as well as DFU in U-Boot are already enabled. For instructions to build the bootloader images please refer to the Build U-Boot from source code guide.
Booting using DFU¶
Hardware Setup¶
Prepare the VAR-SOM-AM62 and Symphony board to boot from DFU:
- Power off the Symphony board
- Change SW3 to boot from the SD Card
- Remove the SD Card
- Plug a USB OTG cable from J26 to your host computer
- Plug a USB cable to the J29 serial debug console.
- Apply power to the Symphony board
In the serial debug console, you should see:
[2085050.210604] usb 3-4.2.3: new high-speed USB device number 34 using xhci_hcd
[2085050.334776] usb 3-4.2.3: New USB device found, idVendor=0451, idProduct=6165, bcdDevice= 2.00
[2085050.334779] usb 3-4.2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2085050.334780] usb 3-4.2.3: Product: AM62x DFU
[2085050.334782] usb 3-4.2.3: Manufacturer: Texas Instruments, Inc.
[2085050.334783] usb 3-4.2.3: SerialNumber: 01.00.00.00
Load images using dfu-util¶
If the hardware is configured correctly, you should see the VAR-SOM-AM62 using dfu-util:
dfu-util -l
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
Found DFU: [0451:6165] ver=0200, devnum=37, cfg=1, intf=0, path="3-4.2.3", alt=1, name="SocId", serial="01.00.00.00"
Found DFU: [0451:6165] ver=0200, devnum=37, cfg=1, intf=0, path="3-4.2.3", alt=0, name="bootloader", serial="01.00.00.00"
After building the Build U-Boot from source code guide, load the images:
Export Environment Variables if not already done so:
$ export WORKDIR=~/am62x-var-som-u-boot && \
export UBOOT_DIR=$WORKDIR/ti-u-boot
Load the images:
$ dfu-util -R -a bootloader -D $UBOOT_DIR/out/r5/tiboot3.bin
U-Boot SPL 2021.01-00010-ge7ae7212f8-dirty (Apr 27 2023 - 14:31:25 -0500)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.6.4--v08.06.04 (Chill Capybar')
...
Trying to boot from DFU
$ dfu-util -R -a tispl.bin -D $UBOOT_DIR/out/a53/tispl.bin
################################################DOWNLOAD ... OK
...
Trying to boot from DFU
$ dfu-util -R -a u-boot.img -D $UBOOT_DIR/out/a53/u-boot.img
###DOWNLOAD ... OK
Ctrl+C to exit ...
U-Boot 2021.01-00010-ge7ae7212f8-dirty (Apr 27 2023 - 14:31:33 -0500)
...
You will see each image print to the console after they are loaded.