Zynq 7000系列 PS 軟件復位,原來是這么回事?
掃描二維碼
隨時隨地手機看文章
復位系統(tǒng)
復位系統(tǒng)包括由硬件,看門狗定時器,JTAG控制器和軟件產(chǎn)生的復位。
Zynq-7000SoC器件中的每個模塊和系統(tǒng)都包含一個由復位系統(tǒng)驅(qū)動的復位。
硬件復位由上電復位信號(PS_POR_B)和系統(tǒng)復位信號(PS_SRST_B)驅(qū)動。
看門狗定時器
PS 中有三個看門狗定時器,它們可以產(chǎn)生復位。
JTAG控制器可以生成一個重置,該重置僅重置PS的調(diào)試部分和系統(tǒng)級重置。
軟件可以生成單個子模塊重置或系統(tǒng)級別重置。
重置是由許多不同的來源引起的,并且到達許多不同的目的地。
本章確定所有重置,并說明其功能或提供指向另一章或另一文檔的指針
重置系統(tǒng)的主要功能
-
從硬件,看門狗定時器,JTAG控制器和軟件收集復位
-
驅(qū)動每個模塊和子系統(tǒng)的復位
-
是設備安全系統(tǒng)的組成部分
-
執(zhí)行三個階段的序列:開機,內(nèi)存清除和系統(tǒng)啟用
系統(tǒng)軟件復位
用戶可以通過斷言軟件重置來重置整個系統(tǒng)。
通過斷言PSS_RST_CTRL [SOFT_RST],整個系統(tǒng)被重置,最終結(jié)果與用戶按下PS_SRST_B引腳(REBOOT_STATUS寄存器的值不同)。
就像其他系統(tǒng)重置一樣,所有RAM都將清除,PL也將重置。
怎么實現(xiàn)呢?
Register SLCR_UNLOCK寫入解鎖密鑰0xDF0D,以允許寫入slcr寄存器。
所有slcr寄存器0xF800_0000可以寫入0xF800_0B74,直到使用鎖定為止SLCR_LOCK寄存器。讀該寄存器返回零。
Register PSS_RST_CTRL處理系統(tǒng)軟件復位控制信號。
-
0:無影響
-
1:置位PS軟件復位脈沖(整個系統(tǒng)時鐘發(fā)生器除外)不需要寫0,硬件每次寫入1都會產(chǎn)生一個脈沖。
代碼實現(xiàn)
1//PSS_RST_CTRL寄存器,絕對地址, 2#define PSS_RST_CTRL_REG 0xF8000200 3 4//SLCR_UNLOCK寄存器,絕對地址, 5#define SLCR_UNLOCK_ADDR 0xF8000008 6 7#define UNLOCK_KEY 0xDF0D //使能碼 8 9#define PSS_RST_MASK 0x01 //復位碼 10 11void PsSoftwareReset(void) 12{ 13 Xil_Out32(SLCR_UNLOCK_ADDR, UNLOCK_KEY); //寫使能 14 Xil_Out32(PSS_RST_CTRL_REG, PSS_RST_MASK); //復位 15}
總結(jié)
那么就實現(xiàn)了系統(tǒng)軟件復位了,只要在需要的地方調(diào)用PsSoftwareReset()函數(shù)了。
最后說下ug585是很好的資料,在需要解決問題的時候是需要詳細解析的。只是你的英文就需要好好學習啦!





