日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > ZYNQ
		


最近ZYNQ的項目需要,調(diào)試了PL中斷PS的部分,下面將其中了解到信息記錄下來,以防遺忘,如圖一,圖二所示,PL到PS的中斷分為16個共享中斷(SPI)和4個私有中斷(PPI)。本文用到了共享中斷,著重介紹SPI中斷。

PL 側(cè)16個SPI中斷硬件中斷號為6168,8491.支持高電平觸發(fā)和上升沿觸發(fā)兩種觸發(fā)方式。

PL中斷PS觸發(fā)方式可以在PS端編程控制對應(yīng)寄存器設(shè)置為高電平觸發(fā)和上升邊緣觸發(fā)。在這個我們認(rèn)為中斷源的滿足中斷和不滿足中斷分別用1和0表示。高電平就是中斷的條件滿足了,表現(xiàn)為邏輯1。上升邊緣觸發(fā)表示之前從中斷沒有發(fā)生到中斷發(fā)生的這個跳變,也就是從邏輯0到邏輯1的跳變。在Z7系統(tǒng)中允許設(shè)置PL的中斷觸發(fā)方式。

當(dāng)設(shè)置電平觸發(fā)時候,只要中斷條件一直滿足,也就是中斷請求線上電平是高,則觸發(fā)處理器產(chǎn)生中斷。當(dāng)設(shè)置上升邊緣觸發(fā)時候,當(dāng)且僅當(dāng)中斷條件從不滿足到滿足的跳變上,也就是中斷請求線表現(xiàn)成了一個上升邊緣,并且保持高電平至少2個CPU_2X3X周期(也就是說4個以上處理器的時鐘周期)。就會產(chǎn)生觸發(fā)處理器產(chǎn)生中斷。邊緣觸發(fā)方式下高電平最少保持處理器時鐘周期的兩倍,一般建議時間長一些,20NS。

這兩種中斷觸發(fā)方式強調(diào)的側(cè)重點不一樣,電平觸發(fā)強調(diào)的是特定中斷事件之要沒有撤銷就要反復(fù)進(jìn)行處理。比方說在具體應(yīng)用中一個來自外界的報警信號,只要報警信號存在說明危險沒有被消除,需要繼續(xù)中斷處理器,繼續(xù)處理。上升緣觸發(fā)方式強調(diào)特定中斷事件發(fā)生了,對于這個此次特定發(fā)生的中斷事件,處理器只要做一次處理就可以。如果外設(shè)還要再次請求中斷處理器,則需要將中斷再次產(chǎn)生一個上升邊緣進(jìn)行進(jìn)行請求。

在Linux下調(diào)試PL到PS側(cè)的中斷,在整個系統(tǒng)中,對于一個PL中斷源,存在三個中斷號,拿PL側(cè)的第一個SPI中斷為例,ZYNQ的硬件中斷號為61,在設(shè)備樹里面,此中斷的中斷號記錄為61-32=29,在linux系統(tǒng)內(nèi)的邏輯中斷號則又不同,在linux下調(diào)用int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)時,第一個輸入?yún)?shù)irq為何值,經(jīng)過測試,此irq應(yīng)為Linux分配的邏輯中斷號。那么問題來了,在linux下,如何獲得61硬件中斷號對應(yīng)的邏輯中斷號呢,此時就要用到設(shè)備樹和驅(qū)動的配合來獲得。

設(shè)備樹里面對中斷的主要描述如下:

irq: irq@0{
compatible = “hello,irq”;
interrupt-parent = <&intc>;
interrupts =;
};

compatible = “hello,irq”;這條語句在驅(qū)動里面與platform架構(gòu)的驅(qū)動匹配時需要用到

interrupt-parent = <&intc>;指明父節(jié)點

interrupts =;

  • 參數(shù)0代表是SPI中斷還是PPI中斷,0代表SPI中斷,1代表PPI中斷。

  • 參數(shù)29代表中斷號,經(jīng)過觀察發(fā)現(xiàn),這個地方所填的數(shù)值與硬件中斷號的關(guān)系為:當(dāng)中斷為SPI中斷時,為硬件中斷號-32;當(dāng)為PPI中斷時,為硬件中斷號-16。

  • 參數(shù)2代表觸發(fā)方式,2代表高電平觸發(fā),1代表上升沿觸發(fā)。Linux讀取設(shè)備樹的信息,然后為此中斷分配一個邏輯中斷號,以前注冊中斷號是通過手工在 C 代碼中填入中斷號,現(xiàn)在這種方法不可行了,請使用虛擬中斷號的方法。

如圖三所示,經(jīng)過查看,應(yīng)該是寫反了,SPI中斷加32,非SPI中斷加16。

設(shè)備樹里描述好中斷的信息后,再涉及到修改自己的Linux驅(qū)動了。Linux驅(qū)動要改為platform架構(gòu)方式,具體的platform架構(gòu)方式,網(wǎng)上查資料有很多。

如圖所示,這里一定要與設(shè)備樹里面中端部分的.compatible屬性對應(yīng)起來,驅(qū)動就是通過設(shè)備樹的這個屬性來進(jìn)行匹配并獲得Linux分配的邏輯中斷號的,通過irq=platform_get_irq函數(shù)獲得邏輯中斷號后,就可以將邏輯中斷號代入rquest_irq函數(shù)申請中斷了。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉