轉至
關於zynq的中斷述,在網上和datesheet中已經有詳細的說明,但是在3.x的核心中,開始用dts來詳細所有device的infor和source,這裡就有關於中斷號的指定,但是在關於zynq的dts檔案中,我們看到指定的中斷號不是datesheet上說所的id,但是在proc下,我們可以看到每個裝置的中斷號對應關係:
zynq> more /proc/interrupts
cpu0 cpu1
27: 0 0 gic 27 gt
29: 233 282 gic 29 twd
35: 0 0 gic 35 f800c000.ps7-ocmc
39: 2 0 gic 39 f8007100.ps7-xadc
40: 0 0 gic 40 f8007000.ps7-dev-cfg
43: 530 0 gic 43 ttc_clockevent
45: 0 0 gic 45 f8003000.ps7-dma
46: 0 0 gic 46 f8003000.ps7-dma
47: 0 0 gic 47 f8003000.ps7-dma
48: 0 0 gic 48 f8003000.ps7-dma
49: 0 0 gic 49 f8003000.ps7-dma
51: 10 0 gic 51 e000d000.ps7-qspi
53: 0 0 gic 53 ehci_hcd:usb1
54: 0 0 gic 54 eth0
56: 35 0 gic 56 mmc0
72: 0 0 gic 72 f8003000.ps7-dma
73: 0 0 gic 73 f8003000.ps7-dma
74: 0 0 gic 74 f8003000.ps7-dma
75: 0 0 gic 75 f8003000.ps7-dma
82: 68 0 gic 82 xuartps
ipi1: 0 495 timer broadcast interrupts
ipi2: 1187 1239 rescheduling interrupts
ipi3: 0 0 function call interrupts
ipi4: 16 80 single function call interrupts
ipi5: 0 0 cpu stop interrupts
ipi6: 42 23 irq work interrupts
ipi7: 0 0 completion interrupts
err: 0
zynq>
在datesheet中,我們可以看到與上面的表述是相對應的:
這裡是相對應的,如eth0的中斷號為54,但是在dts中關於interrupte的指定如下,如關於eth0的表述:
ps7_ethernet_0: ps7-ethernet@e000b000 ;
} ;} ;
這裡指定中斷的型別為spi,中斷號為22,中斷是高電平觸發。這裡指定的中斷號22,其實不是datesheet上指定的中斷號,而是用的對應在spi_status暫存器中的序號,eth0是在spi_status_0中的bit22,所以這裡就指定為中斷號為22,如果是在spi_status_1中的22,這中斷號就是32+22=54. Linux下ZYNQ中GPIO中斷號獲取
使用提供的gpio to irq是最佳的選擇,裝置樹配置起來也比較方便,都不需要將中斷父結點設定為gpio0。key 驅動程式申請一下對映後的終端號key test.irq int key test.irq gpio to irq key test.key gpio 使用key test.irq就可...
常見的中斷號
最近工作需要用dos系統開發,以前一直搞linux,還容得下其他的系統 下面將pc機常用的中斷號貼出來,都怪自己大學的微機原理與接 術沒學好啊!int 00h 0 作為除數 int 01h 單步中斷 int 02h 非遮蔽中斷 int 03h 斷點中斷 int 04h 算數溢位錯誤 int 05h ...
zynq 的定時器中斷實驗
本文通過定時器中斷實驗,介紹zynq 的中斷和定時器的基本使用方法。本文是在helloworld 實驗的基礎上完成的,所以必須先完成了helloworld 的實驗。這個可以學習本部落格的helloworld 實驗,或者開發板提供的helloworld 實驗。1 中斷和定時器介紹 中斷對於保證任務的實...