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 microcontroller 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 config files. The special R5 config file is necessary for DFU booting, whereas the default A53 config file contains configuration switches for both "normal" and DFU operation. 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 a terminal of your host computer (or in dmesg), 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:
Example output:
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:
Load the images:
Again, tiboot3.bin is the build result of building U-Boot with the am62x_var_som_r5_usbdfu_defconfig.
tispl.bin and u-boot.img are the build result of building U-Boot with am62x_var_som_a53_defconfig.
See Building U-Boot for details.
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
###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.