ZYNQ7020进行调试时复位PL
参考 ZYNQ7000 UG585
在进行对FCLK_RESET0_N的对应寄存器写数据之前应该把"写保护"模式关闭,然后再将数据写入FCLK_RESET0_N的寄存器中,这样才能有效实现想要的功能。最后不要忘记再将"写保护"模式开启。
对应的开启和关闭"写保护"的寄存器地址以及FCLK_RESET0_N的寄存器地址,在UG585文档中都有相应的描述。它分别对应的寄存器名称为: SCLR_LOCK (寄存器地址为0xF8000004),SCLR_UNLOCK (寄存器地址为0xF8000008)和FPGA_RST_CTRL (寄存器地址为0xF8000240)。
通过 FCLK_RESET0_N 这个PS的端口直接复位PL(1才复位)。这个 FCLK_RESET0_N 在PS中对应的寄
存器是0xF8000240的bit0 ,但在操作这个寄存器之前需要解锁SLCR_UNLOCK ,所以代码如下:
SDK下 Xil_Out32(0xF8000008,0X0DF0D); //SLCR_UNLOCK KEY Xil_Out32(0xF8000240,1);//发出FCLK_RESET0_N=1 Xil_Out32(0xF8000240,0);//发出FCLK_RESET0_N=0 Xil_Out32(0xF8000004,0x0767B);//SCLR_LOCK KEY
Linux下 devmem 0xf8000008 32 0x0DF0D devmem 0xf8000240 32 1 devmem 0xf8000240 32 0 devmem 0xf8000004 32 0x0767B