12-03-2020 12:38 AM
- Development Environment
ZynqMpsoc Part num : XCZU3CG-L1SBVA484I
Petalinux 2020.2
- Q
I use fpgautil to download fpga bit file to PL.
However, the download speed is significantly slow
It takes about 200ms in zcu104 board , but 4400ms as below in out custom board.
-------------------------------------------
root@elsa-es-bsp:/userdata# fpgautil -b elsa_es_201120_last_line_repeat_issue.bit
[ 1337.451422] fpga_manager fpga0: writing elsa_es_201120_last_line_repeat_issue.bit to Xilinx ZynqMP FPGA Manager
Time taken to load BIN is 4447.000000 Milli Seconds
BIN FILE loaded through FPGA manager successfully
-------------------------------------------
In Linux, when PM_FPGA_LOAD Command is sent as IPI message , it is known that PM Core used CSU_DMA to transmit to PCAP
Debugging in the PM firmware as shown below , it used CSU DMA, but the DMA transter rate to PCAP is to slow.
static void PmFpgaLoad(const PmMaster *const master, const u32 AddrHigh, const u32 AddrLow, const u32 KeyAddr, const u32 Flags) { u32 Status; XFpga XFpgaInstance = {0U}; UINTPTR BitStreamAddr = ((u64)AddrHigh << 32)|AddrLow; #if defined (ENABLE_WDT) && \ (XPFW_CFG_PMU_FPGA_WDT_TIMEOUT > XPFW_CFG_PMU_DEFAULT_WDT_TIMEOUT) PmNotifyR5AndModifyWdtTimeout(XPFW_CFG_PMU_FPGA_WDT_TIMEOUT, PM_NOTIFY_STL_NO_OP_ENTER); #endif Status = XFpga_Initialize(&XFpgaInstance); if (XST_SUCCESS != (s32)Status) { goto done; } XPfw_Printf(DEBUG_PRINT_ALWAYS,"%s: Start[KeyAddr %d, Flags %d ]\r\n",__func__,KeyAddr,Flags); Status = XFpga_PL_BitStream_Load(&XFpgaInstance, BitStreamAddr, KeyAddr, Flags); XPfw_Printf(DEBUG_PRINT_ALWAYS,"%s: End\r\n",__func__); if ((XST_SUCCESS == (s32)Status) && ((Flags & XFPGA_AUTHENTICATION_OCM_EN) == XFPGA_AUTHENTICATION_OCM_EN)) { FSBL_Store_Restore_Info.IsOCM_Used = TRUE; } #if defined (ENABLE_WDT) && \ (XPFW_CFG_PMU_FPGA_WDT_TIMEOUT > XPFW_CFG_PMU_DEFAULT_WDT_TIMEOUT) PmNotifyR5AndModifyWdtTimeout(XPFW_CFG_PMU_DEFAULT_WDT_TIMEOUT, PM_NOTIFY_STL_NO_OP_EXIT); #endif done: IPI_RESPONSE1(master->ipiMask, (u32)Status); }
//console output..
PmFpgaLoad: Start[KeyAddr 5568779, Flags 0 ]
// about it takes 4400ms PmFpgaLoad: End
- I'm curious about hot to speed up the transmission speed.