2012-06-26 73 views
10

我正在做一個項目,我需要在Linux中處理中斷。如何知道Linux中特定引腳的中斷/ GPIO編號

我使用的板是由三星(臂11處理器)的基礎上S3C6410 MCU的ARM9Board和它具有以下的I/O接口:

enter image description here

作爲圖像顯示我有EINTx引腳用於外部中斷,GPxx引腳用作GPIO引腳,我不介意使用它們中的任何一個,但我沒有他們的號碼!

對於EINTx引腳:

當我打電話

int request_irq(unsigned int irq, void (*handler)(int, struct pt_regs *), 
unsigned long flags, const char *device); 

我需要的中斷號把它作爲函數的第一個參數,則讓我怎樣才能得到例如IRQ號EINT16引腳?

對於GPxx引腳: ,因爲我需要的GPIO引腳nuumber將它傳遞給那些功能

int gpio_request(unsigned gpio, const char *label); 
int gpio_direction_input(unsigned gpio); 
int gpio_to_irq(unsigned gpio); 

同樣的故事即我怎麼知道該GPP8引腳GPIO多少?

我搜索了董事會文件和數據表,但它不包含任何關於如何獲得這些數字,任何想法或幫助在哪裏看?

回答

8

您正在使用的嵌入式Linux應該有一個GPIO驅動程序,該驅動程序具有針對GPIO引腳的#define語句。然後,您可以使用類似獲得特定GPIO的IRQ號:

irq_num = gpio_to_irq(S3C64XX_GPP(8));

針對特定芯片的Linux的GPIO LIB的支持是在以下文件中提供:

LINUX /弓/arm/mach-s3c6400/include/mach/gpio.h

在那裏,你會發現所有的各種GPIO的#define語句。

參見GPIO約定的部分在其文檔中:

http://www.kernel.org/doc/Documentation/gpio/gpio.txt

+0

隨板提供的內核在/ drivers/gpio上有一個GPIO驅動程序,但沒有那個c文件的那個有針對這個引腳的#define,而且我找到/include/linux/gpio.g,但它只包含gpio_request和gpio_to_irq等函數的聲明,但沒有#define –

+0

您使用的是什麼板卡? –

+0

這一個http://www.arm9board.net/sel/prddetail.aspx?id=365&pid=200 –

0

我在做GPIO引腳上的一些工作很好,但它是在不同的板,AM335x。只是爲了讓你知道,有很少的辦法可以做到這一點。我們正在使用的一種方法是使用內存板訪問(寫入或讀取)GPIO引腳。

這是一篇非常好的文章,可以幫助我完成工作。 Register access to the GPIOs of the Beaglebone via memory mapping