XU232-1024 - XUD stops working as DFU after exceeding firmware size

Technical discussions around xCORE processors (e.g. xcore-200 & xcore.ai).
VHEMaster
Junior Member
Posts: 5
Joined: Wed Feb 03, 2021 1:15 pm

XU232-1024 - XUD stops working as DFU after exceeding firmware size

Post by VHEMaster »

Dear colleagues and XCORE community,

I would like to report a bug and ask for advice about issue that our team has met. We are working with XMOS chip XU232-1024-FB374-C20 with embedded QSPI flash (XUF232) and as tile[4] XU208-256-TQ64-C10 is mounted on the device. Tile 1 has USB Device port and Tile 4 has the same as well. First one used to flash whole device with DFU. Also it is possible to flash it using JTAG port and XTAG3 debugger. Unfortunately, I had to disable binary compression with parameter --no-compression because it takes up to 16 minutes to process which is too long for debugging. Ridiculous part is that bug mentioned below is not repeating if compression is enabled.

The bug is about impossibility of USB XUD to work properly if firmware size is exceeded some threshold. I have done a research by commenting and uncommenting some calls of different tile's function on 'main' and got following results:

Firmware size (in bytes): 166656 - OK.
168192 (first firmware) - OK.
168192 (second firmware) - NG, USB doesn't bring up after reflash with DFU, but works after reflash with XTAG3. DFU reflash freezes on Stage 2 (Entering DFU mode), device is missing on device manager. After reset USB brings up and flashing continues.
169728 - NG, same as previous.
176128 - NG, same as previous but USB also does not bring up after XTAG3 reflash.
180224 - NG, need to reset device random number of times to bring up USB and make it flash with DFU as 168192 2nd. And it can freeze and gone from Device Manager in a few seconds after entering into DFU stage 3 (InProgress).

Has anyone encountered a similar situation? We need an advice about solving this issue.

Best Regards


VHEMaster
Junior Member
Posts: 5
Joined: Wed Feb 03, 2021 1:15 pm

Post by VHEMaster »

Hi all. As solution I have used both USB XUD libraries as source-codes, not the precompiled one as previously. And I had an issue with impossibility of USB port on tile[4] to work after exceeding some firmware size: it was UART code which worked on 4th core of this tile. So after removing it USB started to work fine... Strange behaviour of XMOS chips, isn't it?...