AMD Xilinx MPSoC 在分别下载 PL bit文件、PS软件的情况下,PS软件如何访问 PL AXI寄存器?

在调试模式下,可以通过JTAG下载MPSoC PL的bit文件,再下载MPSoC PS的软件。这时候,PL已经下载,PS软件应该能够访问PL实现的AXI寄存器。但是PS的软件会卡住。如果使用同样的软件和bit文件,做成boot.bin,在QSPI/SD启动模式下,又一切正常。
或者boot.bin里只有PS的软件,启动过程中通过Vivado加载PL bit文件;然后在使用PS软件去访问PL的AXI寄存器,也会有问题。
这是因为在MPSoC PS和PL之间,有一个开关。如果不使能开关,PS软件就不能访问PL的AXI寄存器。

如果boot.bin里有PL的bit文件,FSBL在启动过程中就会加载PL bit文件;然后打开PS和PL之间的开关。相关代码如下:

#ifdef XFSBL_BS
	if (DestinationDevice == XIH_PH_ATTRB_DEST_DEVICE_PL) {
		Status = XFsbl_PLWaitForDone();
		if (Status != XFSBL_SUCCESS) {
			goto END;
		}

		/**
		 * PL is powered-up before its configuration, but will be in isolation.
		 * Now since PL configuration is done, just remove the isolation
		 */
		psu_ps_pl_isolation_removal_data();

		/* Reset PL, if configured for */
		(void)psu_ps_pl_reset_config_data();

        ......
	}
#endif

如果运行在PS-Only-Restart模式,也会自动打开PS和PL之间的开关。相关代码如下:

	if (FsblInstancePtr->ResetReason == XFSBL_PS_ONLY_RESET)
		{
		/**Remove PS-PL isolation to allow u-boot and linux to access PL*/
			(void)psu_ps_pl_isolation_removal_data();
			(void)psu_ps_pl_reset_config_data();
		}

如果应用或者调试需要分别下载 PL bit文件、PS软件,请参考上述代码,主动打开PS和PL之间的开关。

posted @ 2024-08-19 16:07  HankFu  阅读(32)  评论(0编辑  收藏  举报