Zynq MPSoC Debug Troubleshooting


#ProblemPossible reason(s)Fix(es) or workaround
1Debug freezes on DDR4 initDDR4 init can be done only once, if the PS DDR4 was initialized then any attempt of double init, by FSBL c code or psu_init.tcl will freezePower cycle or hardware reset is required to clear DDR4 registers
2Debug freezes on SERDES initOn TE0808 Si5345 is not initialized after power-up by default, and if the FSBL was generated from Vivado project that enables any PS GT, then FSBL or psu_init.tcl would freezeProgramming the Si5345 OTP, disabling all PS GT in Vivado, starting an FSBL that does init Si5345 then debugging without power cycle, using Silabs desktop programmer to init Si5345.
3JTAG Target not detected by SDK/DebuggerOn Zynq MPSoC JTAG is disabled by default after each power cycle or main reset and only enabled if bootrom does it under software control. If FSBL is not found or the FSBL found detects some error condition, then JTAG may be left disabled, and further debugging is not possible.Select JTAG bootmode. Use known good FSBL that releases JTAG for debug process.
4SDK FSBL Debugger show only Assembler Code, instead of C CodeBuild and BSP settings are not correct

FSBL is to big for OCM in case it's not optimised, so debugging with SDK is not so easy

Change following Settings

For fsbl:

  • right click on fsbl, select C/C++ Build settings
  • Select ARM A53 gcc compiler->Miscellaneous
  • remove "-Os -flto -ffat-lto-objects" from 'other flags'

For fsbl_bsp

  • right click on fsbl_bsp and select Board Support Package Settings
  • Select overview->standalone
  • change zynqmp_fsbl_bsp value from 'true' to 'false'
  • Slect drivers ->psu_cortex53_0
  • change extra_compiler_flags from '-g -Wall -Wextra -fno-tree-loop-distribute-pattern' to '-g -Wall -Wextra -Os'

FSBL Code, disable unused functions

  • fsbl_debug→ src → fsbl_config.h
    • include: 
          #define FSBL_NAND_EXCLUDE_VAL (1U)
          #define FSBL_SECURE_EXCLUDE_VAL (1U)
          #define FSBL_SD_EXCLUDE_VAL (1U)

      Note: '1' is disabled, and '0' enabled

See:



5

FSBL debug flags: https://www.xilinx.com/support/documentation/user_guides/ug1137-zynq-ultrascale-mpsoc-swdev.pdf


Check ZynqMP Links on AMD Answer Record

  • No labels