cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
owesterm
Newbie
Newbie
309 Views
Registered: ‎03-05-2021

Petalinux 2020.2 - USB Boot fails sporadically

Hey,

We're having an issue with USB Boot for a Xilinx ZynqMP zu3eg on a custom board. We're using Petalinux 2020.2 with minimal modifications and we're trying to boot the Xilinx SoC using DFU boot.

What we did:
We followed the “Xilinx Zynq UltraScale+ MPSoC: Embedded Design Tutorial” UG1209 and double-checked against https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841701/U-Boot+USB+Driver . We've changed our u-boots bootcmd to call ``

dfu 0 ram 0 ; bootm <loadaddr>

 which works fine for us most time:

We can load the FSBL, the U-Boot followed by a FitImage of our Kernel and ramfs.

 

But sometimes, we have a problem with the dfu command: 

Regularly the U-Boot image fails to fully set up the DFU command on the Xilinx side, resulting in the ZynqMP not enumerating on the host side. I traced the process back to the USB Gadget level where I see a missing IRQ_WAKE_THREAD and the dwc interrupt checking again and again, but that wakeup never occurs. At that point I can access the U-Boot shell, abort & restart the DFU Command, and it will lead to a successful enumeration on the second try most times.

We can reproduce this error with 2020.2 and 2019.1 Versions of Petalinx and there are no changes in the used code-paths from the default U-Boot. I’ve attached two logs comparing the successful / failure cases, maybe this rings a bell on something that was already seen in other cases? If there is any other info we can provide that would help narrow this down, feel free to ask.

Best regards, Oliver Westermann

0 Kudos
0 Replies