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





