gpiolib管理gpio過程

2021-07-05 01:08:26 字數 2244 閱讀 2289

一、重點關注的相關的結構體:

gpiolib.c檔案,被移植到driver/gpio/目錄下。

structgpio_desc ;

對於上面這個結構體,現在只關心structgpio_chip *chip;

structgpio_chip ;

二、把目光轉到龍芯自身的

gpio

檔案。在

1b的內容是放在

arch/mips/loongson/sb2f-board/gpio.c

staticstruct gpio_chip ls2f_chip = ;

staticint __init ls2f_gpio_setup(void)

arch_initcall(ls2f_gpio_setup);

arch_initcall

函式在核心啟動的時候被初始化。(詳細情況,以後再寫)

跟著呼叫了

ls2f_gpio_setup -> gpiochip_add

增加了ls2f_chip。

注意ls2f_chip

裡面的函式指標(我們姑且成為介面吧)已經在本檔案(

gpio.c

裡面實現。)

三、現在跳到

gpiochip_add

函式(在

driver/gpio/gpiolib.c

中)

intgpiochip_add(struct gpio_chip *chip)

……}上述的**初始化了

gpio_desc

陣列。在

gpiolib.c

中定義:

staticstruct gpio_desc gpio_desc[arch_nr_gpios];

直到這裡,

gpio_desc

已經可以和龍芯下面的函式介面關聯起來!

四、在驅動中利用這些介面

如在驅動中呼叫函式:

gpio_direction_output(57,0);

函式定義位

gpiolib.c

檔案中

intgpio_direction_output(unsigned gpio, int value)

第三點已經說明了是如何關聯起來的。於是相當於呼叫龍芯晶元下的函式:

staticint ls2f_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,int level)

else

return0;

}直到這裡,

gpio

的呼叫過程已經完成了。

其餘的函式:

ls2f_gpio_direction_input,

ls2f_gpio_get_value,

ls2f_gpio_direction_output,

ls2f_gpio_set_value,

的函式類似。 五、

debugfs

除錯gpio埠

可以利用mount-t debugfs none /mnt

那麼可以在/mnt下面看到gpio檔案

通過echo57 w1 > gpio

就可以對gpio的第57個關鍵寫入1

疑問:為什麼這樣可以除錯呢?

檢視檔案 ~/driver/gpio/gpiolib.c

staticconst struct file_operations gpiolib_operations = ;

staticint __init gpiolib_debugfs_init(void)

subsys_initcall(gpiolib_debugfs_init);

gpiolib_debugfs_init函式在核心啟動的時候被呼叫。

於是建立了乙個gpio檔案,同時關聯上了gpiolib_operations;

於是,echo57 w1 > gpio

相當於呼叫 gpiolib_write函式;

staticssize_t gpiolib_write(struct file *file, const char __user *buf,size_t size, loff_t *ppos)

}

} }

if(info[3]== 'r')elseif(info[3] == 'w')

returnsize; }

這就很明顯了。

gpiolib管理gpio過程

在linux2.6.38中提供了統一管理外部io的模組。本文的內容是跟蹤這些模組,是如何關聯起來的。環境 龍芯1b開發板 一 重點關注的相關的結構體 gpiolib.c檔案,被移植到driver gpio 目錄下。structgpio desc 對於上面這個結構體,現在只關心structgpio c...

gpiolib管理gpio過程

在linux2.6.38中提供了統一管理外部io的模組。本文的內容是跟蹤這些模組,是如何關聯起來的。環境 龍芯1b開發板 一 重點關注的相關的結構體 gpiolib.c檔案,被移植到driver gpio 目錄下。structgpio desc 對於上面這個結構體,現在只關心structgpio c...

GPIO配置和管理

bootloader階段 bootloader階段可以呼叫gpio tlmm config 函式完成gpio cfgn暫存器的配置,舉例如下 define tlmm vol up btn gpio 85 gpio tlmm config tlmm vol up btn gpio,0,gpio inp...