ZYNQ筆記(4) PL觸發中斷

2022-05-05 19:36:07 字數 2542 閱讀 5028

一、zynq中斷框圖

pl到ps部分的中斷經過icd控制器分發器後同時進入cpu1 和cpu0。從下面的**中可以看到中斷向量的具體值。pl到ps部分一共有20個中斷可以使用。其中4個是快速中斷。剩餘的16個是本章中涉及了,可以任意定義。如下表所示。

二、zynq中斷分類

1.軟體中斷(sgi)

zynq 2 個 cpu 都具備各自 16 個軟體中斷。通過 icdsgir 暫存器寫入 sgi 中斷號,以及指定目標 cpu 來產生乙個軟體中斷。通過 cpu 私有匯流排實現寫操作。cpu 能中斷自己或者其他 cpu,或者所有的 cpu。通過讀 icciar(interrupt clear pending)暫存器相應的位元位寫1,可以清楚中斷。所有的 sgi 為邊沿觸發,用於 sgi 的敏感性是固定的,不能修改。 icdicfr0 暫存器是唯讀暫存器。

2.私有外設中斷(ppi)

每個 cpu 連線乙個私有的5個共享的外設中斷,所有的中斷敏感型別是固定的,不能修改。這裡有 2 個 pl 到 cpu 的快速中斷 nfiq,私有中斷包括 global timer、private timer 、watch dog 等。將來自 pl 的快速中斷訊號 fiq 和中斷訊號 irq 翻轉,然後送到中斷控制器中。因此儘管在 icdicfri 暫存器內反映他們是活動低敏感訊號,但是在 ps-pl介面為高電平活動。

3.共享外設中斷(spi)

共享中斷就是 pl 的中斷可以傳送給 ps 處理。有 16 個 pl 的中斷,它們可以設定為高電平或者低電平觸發。中斷控制器用於管理中斷的優先順序和接收用於 cpu 的這些中斷。預設情況下,所有共享外設中斷的復位是乙個活動高電平。然而軟體使用 icdicfr2 和 icdicfr5 暫存器將中斷32、33和92程式設計為上公升沿敏感。

ps:私有外設中斷和共享外設中斷都含有pl側引入的中斷,而軟體中斷是沒有的。

三、zynq中斷步驟

1.文字描述

第一步:初始化 cpu 的異常處理功能

第二步:初始化中斷控制器

第三步:向 cpu 註冊異常處理**函式;

第四步:將中斷控制器中的對應中斷 id 的中斷與中斷控制器相連線

第五步:設定 gpio 的中斷型別,比如高電平中斷、低電平中斷、上公升沿中斷、下降沿中斷等。

第六步:設定 gpio 中斷**函式,這裡設定的**函式是用於使用者使用的。

第七步:使能 gpio 的對應 pin 的中斷

第八步:使能中斷控制器

第九步:使能異常處理功能

2.框圖描述四、操作注意事項1.配置zynq核心時需要將 interrupts --- fabric interrupts 勾選上

2.因為是 pl 端,往往涉及引腳,所以需要新增約束檔案,並且生成 bit 流檔案,以此載入 sdk 開發環境

3.可以在 system.mss --- gpiops --- important examples --- xgpiops intr_example 中得到典型的 gpio 中斷的**。

五、補充

儲存處理器當前狀態,設定中斷遮蔽位和各條件標誌位

設定當前程式狀態暫存器cpsr中相應位

將lr_mode暫存器設定成返回位址

跳轉到中斷向量位址執行,從而跳轉到相應的中斷程式中執行

執行中斷處理函式內容

恢復被遮蔽的中斷遮蔽位

返回到被中斷指令的下一條指令處繼續執行

zynq中低32位元組作為中斷向量表,每個中斷佔據4位元組,這4位元組通常儲存乙個跳轉指令,從而跳轉到中斷解析程式中。這低32位元組中斷向量表如:

ZYNQ 用PL按鍵通過中斷控制PS端LED亮滅

實現功能 pl端五個按鍵,可以觸發中斷,改變led燈的亮滅狀態 開發板 zedboard axi interconnect 實際是乙個開關,管理和只會axi介面之間的通訊 包括一對 一 一對多 多對 一 多對多 processing system7 0 為整個處理器系統提供復位訊號 axi gpio...

UE4學習筆記8 花的觸發型顏色漸變

製作材質 用顏色節點4和數值節點1分右鍵 轉化為引數 然後做如下重新命名和連線 節點 lerp 實現乙個選擇的作用,當alpha為0時輸入a,為1時輸入b,當 colorvariateprogress 節點值由0到1變化時,lerp 節點輸出結果便綜合a b的輸入值。因此a輸入的時花當前的顏色,而b...

STM32F4學習筆記8 NIVC向量中斷

cortex m4核心支援128級中斷巢狀,他有乙個8位暫存器,使用者可以通過這個暫存器設定中斷優先順序,但考慮到現在有些晶元不可能有這麼多中斷源,且支援這麼多級中斷巢狀堆疊也吃不消,大部分廠家都根據自己生產的晶元做出了調整,stm32f1和f4只是用了這個8位暫存器的高四位,低四位取零,這樣 16...