SBL_DFU is a bootloader which boots the multicore application received via USB DFU. It is analogous to SBL UART
To parse and load an mcelf file via DFU bootloader, use the project examples/drivers/boot/sbl_dfu_multicore_elf
When an mcelf image is received, the SBL parses it, loads each segment to its respective core. Then the core is released from reset. For more information refer Understanding the bootflow and bootloaders
The steps to run the example is same irrespective of the image format.
Parameter | Value |
---|---|
CPU + OS | r5fss0-0 nortos |
Toolchain | ti-arm-clang |
Boards | am261x-lp |
Example folder | examples/drivers/boot/sbl_dfu |
Since this is a bootloader and is used as a SOC initialization binary, the example will be run every time you boot an application using this example. It is generally run from a boot media (OSPI Flash, SD Card or over UART) unlike other examples which are usually loaded with CCS. Nevertheless, you can build this example like you do for the others using makefile or build it via CCS by importing as a project.
The standard DFU-Utility is not compatible with the AM261x device. Instead, please use the dfu-util executable located in ${SDK_INSTALL_PATH}/tools/boot/usb_dfu_utility, depending on your operating system, to carry out DFU operations.
sudo dfu-util -i 0 -a 0 -D <path to mcu_plus_sdk>/tools/boot/sbl_prebuilt/am261x-som/sbl_dfu.release.hs_fs.tiimage
4 Run the following command which uses dfu-util tool to send the appimages. SBl DFU receives that and boots the application.
sudo dfu-util -i 0 -a 0 -D <path to appimage>
If the flashing fails, the error message will give a hint as to why it failed. Some common error messages, reasons and potential solutions are listed below.
Error | Possible Reason | Solution |
---|---|---|
No DFU capable USB device available | AM261x ROM USB enumeration failed. | Check the USB connection between host machine and AM261x. Power cycle the AM261x and try running 'dfu-util -l' command to see the enumerated device list. |
Transfering .appimage gets stuck (LIBUSB_ERROR_PIPE) | AM261x USB did not respond to Host request or the Host Stopped communicating with AM261x | Power cycle EVM and try again. |
DFU Timeout while transfering large .appimage (LIBUSB_ERROR_TIMEOUT) | DFU-UTIL tool timed out | Reduce the size of application image if the dfu-util tool is facing time-out issues due to large appimage OR create a custom dfu-util tool with increased timeout which suits your requirements. |