zynq的ps是基於arm架構,使用兩個arm cortex a9處理器和gic pl390中斷控制器。
系統中斷框圖如下:
interrupt controller(中斷控制器)框圖如下:
中斷詳細分為sgi(software generated interrupts)軟體中斷,ppi(private peripheral interrupts)私有外設中斷,spi(shared peripheral interrupts)共享外設中斷。
1. sgi軟體中斷
存在16個軟體產生的中斷,通過向icdsgir暫存器寫入sgi中斷號,以及指定目標cpu,來產生乙個軟體中斷,通過讀icciar暫存器或者向icdicpr暫存器相應的位元位寫1,可以清楚中斷。所有的sgi為邊沿觸發。
2. ppi私有外設中斷
每個cpu連線乙個私有的共享5個外設中斷,素有中斷的敏感型別是固定的,不能改變,upi全域性定時器,nfiq,cpu私有定時器,awdt,nirq。
3. spi共享外設中斷。
由ps和pl上的各種i/o控制器和儲存器控制器產生,這些中斷訊號會被路由到cpu。ps的外設產生的spi中斷也會路由到pl上。預設地,所有共享外設中斷型別在復位時是高電平,然後軟體使用的icdicfr2和icdicfr5暫存器程式設計中斷32,33和92為上公升沿敏感。
暫存器表
主要用到的中斷函式有:
xscugic_lookupconfig 中斷設定查詢
xscugic_cfginitialize gic初始化
xscugic_setprioritytriggertype 設定中斷優先順序及中斷觸發方式
xscugic_connect 設定中斷服務程式入口位址
xscugic_enable gic允許
xgpio_interruptglobalenable gpio全域性中斷允許
xgpio_interruptenable 相應gpio中斷允許
xil_exceptioninit 異常處理函式
xil_exceptionregisterhandler
xil_exceptionenable
ZYNQ中斷實驗
程式中編寫了 3 個函式,乙個是 main 主函式,乙個是中斷建立函式,另乙個是中斷呼叫 函式。首先在 main 函式中初始化定時器 timer,指定 timer 的裝置號為 xpar xscutimer 0 device id,此裝置號在 xparameters.h 的標頭檔案中定義了的。再設定定...
zynq中mgtx應用 ZYNQ中斷體系
arm中斷體系 01 arm體系中,在儲存位址的低位,固化了乙個32位元組的硬體中斷向量表。異常中斷發生時,程式計數器pc所指的位置不同,異常中斷就不同。中斷結束後,中斷不同,返回位址也不同。但是,對於系統復位中斷,不需要返回,因為整個應用系統就是從復位中斷中開始的。快速中斷請求 外部引腳的快速中斷...
32 配置引腳中斷 ZYNQ中斷體系
arm中斷體系 01 arm體系中,在儲存位址的低位,固化了乙個32位元組的硬體中斷向量表。異常中斷發生時,程式計數器pc所指的位置不同,異常中斷就不同。中斷結束後,中斷不同,返回位址也不同。但是,對於系統復位中斷,不需要返回,因為整個應用系統就是從復位中斷中開始的。快速中斷請求 外部引腳的快速中斷...