2013-03-06 55 views
4

雖然我在GPIOs上看過幾篇文檔,但我仍然無法理解GPIOs頂層複用。用於掛起/恢復的GPIO?

從代碼,我看到幾個的GPIO(如詮釋復位引腳)專用設備的多路複用期間暫停/*恢復特定的驅動程序的*回調。 我想知道究竟是什麼gpio多路複用,以及它如何影響系統的暫停/*恢復*?

+0

他們可能會關閉此問題,因爲多路複用是一種來自電信領域而不是編程的技術,因此我的回答如下: 它是如何工作的,例如在[Beagle](http://elinux.org/BeagleBoardPinMux)這樣的專用板上,個人爲不同目的設置不同的引腳。例如,一個引腳可用於I2C或GPIO。 – 2013-03-06 10:01:12

+0

@ondervloei:我想我問的是引腳複用。從內核文檔中,我明白這種多路複用是關於配置gpio設置並啓用所有上拉或下拉。可能這是我需要知道的。讓我知道是否還有更多要知道的事情? – Narain 2013-03-06 10:24:32

+0

是的,這就是我作爲嵌入式傢伙在pin muxing下理解的內容,另請參閱[lw.net](http://lwn.net/Articles/468759/),他們描述了引腳控制子系統。 如果一個特定的設備根據某種設備模式使用一個引腳用於多種目的,我可以想象會涉及到額外的「多路複用」,但似乎不太可能是物理板從時鐘線切換到驅動LED例如。 – 2013-03-06 11:37:12

回答

1

您提到的功能通常不被稱爲複用。爲了在GPIO上啓用掛起/恢復功能,您必須在GPIO上具有interrupt功能。然後,您可以將此標記爲可喚醒的interrupt。你這樣做與irq_set_irq_wake()gpio_to_irq()是有幫助的。底層的gpio以及Linux 驅動程序必須支持此;它不是真正的驅動程序,而是針對您的平臺的gpio子系統實例

如果您感興趣的驅動程序沒有使用這些功能,那麼這是非標準的Linux使用,您需要將我們指向適當的驅動程序源。

參見:LWN pinctrlLinux gpio docpinctrl+gpio device tree bindings

1

GPIO TLMM提供一個單一的GPIO管腳可用於多funcionalities,所以一個可以配置GPIO引腳的數據表中/示意圖指定功能的任何一個。當一個系統要掛起時,所有的GPIO將被配置爲相應的低功耗狀態以減少泄漏電流。如果gpio配置爲系統處於睡眠狀態時可以喚醒的中斷,那麼gpio中斷監視將從正常的gpio所有者切換到始終在電源控制模塊上。