2012-08-01 32 views
0

我們可以通過ic spec來讀取寄存器映射,我們可以發現有一些中斷的地址。 我們註冊片上控制器的中斷,如usb控制器等,我們使用資源類型來註冊中斷處理程序。如果我們檢查proc/interrupts中的信息,我們可以看到中斷類型是GIC(通用中斷控制器)。IORESOURCE_IRQ(地址)如何在soc芯片中工作?

中斷是如何工作的?這就像GPIO中斷嗎?爲什麼地址可以表示中斷信號?這是否意味着系統將gpio /地址映射到中斷號碼? 我想知道關於這方面的細節。

在此先感謝。

回答

0

我很高興與大家分享。

'因爲我只是在嵌入式設備上使用PowerPC,MIPS核心,所以我不會談論x86,對不起。

中斷信號通常由模塊控制器,例如SD控制器,UART控制器,SPI控制器等等觸發。

如您所知,信號表明該設備上發生了一個事件,需要CPU的注意。

在芯片上,通常有一箇中斷處理模塊,來自各種控制器的中斷信號將被髮送到該中斷處理模塊。

通常,中斷處理模塊中有多個信號引腳,但通常情況下,只有一個引腳從該模塊引出到CPU內核。

如果中斷信號引腳僅由一個器件使用,或者說,一個控制器,我們可以說中斷不共享。 我們引用共享中斷的原因是它的處理流程與非共享中斷不一樣。

即使存在一箇中斷,並且已經發送到內核,但如果沒有軟件願意爲其服務,則不會處理它。因此,在系統的引導或初始化過程中,通常情況下,每個模塊中都會有一個代碼塊,主要是設備模塊,它將負責irq的初始化,如調用request_irq()。

request_irq()的確切做法是將softare附加到某個中斷信號上,這樣就建立了硬件中斷信號和軟件ISR之間的關係。

通過調用request_irq(),系統被告知有人想要處理該事件,如果發生該事件,系統將通過調用傳遞給request_irq的函數來使該人知道)與irq號碼。順便說一下,當你說「有一些地址中斷」時,我不是很清楚。 你能提供更多的細節嗎?

+0

.name =「hdmi_irq」,.start = HDMI_IRQ,.end = HDMI_IRQ,.flags = IORESOURCE_IRQ,在linnux中定義,HDMI_IRQ,它在spec中定義的可能是一些地址,如0xcc0000 ... – user487363 2012-08-03 02:23:42

+0

您的回覆非常有用,謝謝!關於中斷的地址,我想我誤解了代碼和規範。請忽略它。:) – user487363 2012-08-03 02:42:00

+0

如果您願意,請詳細說明規格說明。 我只是非常好奇。因爲我只是Linux世界的新手,所以請告訴我,如果在我的帖子中有錯誤。 – 2012-08-03 10:38:16