在全志T507開發板上新增兩個GPIO按鍵

ningmengzier發表於2022-10-14
本文將為大家介紹如何在飛凌 OKT507-C開發板上新增兩個GPIO按鍵,希望能夠對各位工程師有所幫助,本文章以PE5、PE6兩個引腳為例。話不多說,下面我們進入主題。
一、GPIO按鍵新增方法

1. 新增核心配置

Linux核心原始碼中整合了很多功能,一般的使用者只會用到其中的部分功能。使用者從中挑選自己需要的功能,這就叫核心配置。下面我們開始進行配置。
注意:
(1)在進行配置前,需要對
OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig檔案提前做好備份;
(2)以下所有圖中的紅框為修改後的內容。
vi OKT507-linux-sdk/kernel/linux-4.9/.config

在全志T507開發板上新增兩個GPIO按鍵
編輯

2. 新增key節點
新增結點需要我們到裝置樹中進行新增,裝置樹是一個描述硬體的資料結構,甚至你可以將其看成一個大結構體(這個結構體就是平臺,成員就是具體的裝置),將硬體的配置從linux核心的原始碼中提取出來。

下面開啟我們的T507裝置樹檔案,如下:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi

在全志T507開發板上新增兩個GPIO按鍵
編輯

其中按鍵鍵值設定如下。
在全志T507開發板上新增兩個GPIO按鍵
編輯

相關鍵值可透過檢視input-event-codes.h的檔案確定。
vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h

在全志T507開發板上新增兩個GPIO按鍵
編輯

在全志T507開發板上新增兩個GPIO按鍵
編輯


3. 新增引腳定義

新增引腳定義需要用到pinctrl,下面給大家簡單介紹下pinctrl。pinctrl就是系統中pin引腳的控制。

假如在使用到GPIO、I2C等功能時,若按引腳逐一地去找對應的暫存器進行配置非常浪費時間和精力,所以核心引入了pinctrl子系統,把引腳的複用和配置抽象出來,只需要晶片廠商把自家晶片的支援進去,就可以很方便的配置引腳。

下面開啟我們的pinctrl檔案,如下:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi

在全志T507開發板上新增兩個GPIO按鍵
編輯

4. 關閉衝突功能
因為有些功能結點使用的引腳與我們這次複用的引腳發生衝突,會發生引腳不生效的錯誤,所以我們一定要檢查好,然後將其關閉。  
如下開啟裝置樹檔案:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi

在全志T507開發板上新增兩個GPIO按鍵
編輯 切換為居中



在全志T507開發板上新增兩個GPIO按鍵
編輯

vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi

注意:
因攝像頭csi複用的引腳與我們這裡的衝突,雖然前面將狀態disabled了,pinctrl這裡也有可能會造成衝突,為了避免不必要的麻煩,我們也將這裡註釋掉。

在全志T507開發板上新增兩個GPIO按鍵
編輯 切換為居中

5. 驅動修改
gpio-keys是基於input子系統實現的一個通用按鍵驅動,該驅動基於platform_driver架構,實現了驅動和裝置分離,符合Linux裝置驅動模型的思想,也符合linux驅動實現模型,即driver和device分離模型。

一般按鍵驅動,都是基於gpio-keys進行開發的。驅動檔案如下:
vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c

在全志T507開發板上新增兩個GPIO按鍵
編輯


在全志T507開發板上新增兩個GPIO按鍵
編輯


在全志T507開發板上新增兩個GPIO按鍵
編輯 切換為居中


在全志T507開發板上新增兩個GPIO按鍵
編輯 切換為居中
新增圖片註釋,不超過 140 字(可選)


在全志T507開發板上新增兩個GPIO按鍵
編輯 切換為居中


二、測試方法
終端視窗輸入evtest,選擇 7。

在全志T507開發板上新增兩個GPIO按鍵
編輯 切換為居中

從上圖紅框可以看出,透過evtest測試工具將核心裝置讀取並列印裝置描述的事件,到這裡,GPIO按鍵就做完了,可以用它來實現很多的功能,比如說按一下切換燈的狀態,蜂鳴器響等。

當然不只是這些啦,我們還可以利用它去實現很多其他功能,歡迎各位聰明的工程師小夥伴自行發揮!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989353/viewspace-2918348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章