
Hi, I am currently using an ATSAMA5D27-WLSOM1-EK1. This boards embeds an ATSAMA5D27-WLSOM1, which in turns holds an ATSAMA5D27 and a 8MB QSPI flash. I have been wanting to program u-boot in the QSPI flash thanks to DFU, since the board is able to boot from QSPI and is supported in uboot. To do so, I have executed the following steps: - check out recent uboot version (2023.07.02, but issed described below is observed on master too) - load sama5d27_wlsom1_ek_qspiflash_defconfig - tune the configuration to enable DFU: - CONFIG_CMD_DFU=y - CONFIG_DFU_SF=y - CONFIG_USB_GADGET_DOWNLOAD=y - build uboot, upload and run it onto external ram thanks to snagrecover ([1]). - running "bdinfo" shows that board is properly defined/recognized - "sf probe" properly detects the qspi flash chip - in u-boot console, configure dfu: - setenv dfu_alt_info uboot raw 0 0x80000 - start DFU: - dfu 0 sf 2:0
Unfortunately, this step systematically and immediately leads to a data abort with the following log:
=> dfu 0 sf 2:0 data abort pc : [<2fda9ee0>] lr : [<2fd8dc08>] reloc pc : [<26f3fee0>]lr : [<26f23c08>] sp : 2f963fe8 ip : 2f9829cc fp : 00000000 r10: 2fde1cd9 r9 : 2f969e80 r8 : 2fdfc304 r7 : 00000000 r6 : 00000000 r5 : 2fdf3034 r4 : 2f982948 r3 : 0a299cfc r2 : ffffffec r1 : 00000000 r0 : 00000000 Flags: nzCv IRQs off FIQs off Mode SVC_32 Code: e5843058 e5950004 e3a01000 e5903008 (e5933008) Resetting CPU ...
resetting ... System reset not supported on this platform ### ERROR ### Please RESET the board ###
A quick translation with addr2line shows that the data abort occurs in include/linux/usb/gagdet.h, in usb_ep_alloc_request, likely because of ep being NULL, which seems confirmed by adding some custom logs in both usb_ep_alloc_request and its caller (composite_bind). Before digging further, does anyone have successfully used DFU on SAMA5D2 boards (and if so, am I missing something in the configuration) ? Or does this data abort show that some support is still missing to make it work for SAMA5D2 ?
Kind regards, Alexis
[1] https://github.com/bootlin/snagboot