只需5步,教你添加GPIO按鍵
本文硬件平臺(tái)采用飛凌嵌入式T507開發(fā)板,主要講解T507的GPIO配置相關(guān)知識(shí)點(diǎn),本文使用的思路和方法僅供參考使用,其它arm開發(fā)板雖然芯片不同,但思路和方法有很多的共性,希望對(duì)您在板卡的使用中能夠有所幫助,更多ARM開發(fā)板相關(guān)資訊,關(guān)注飛凌嵌入式。 如對(duì)本文講解有不明之處,您也可以聯(lián)系飛凌的技術(shù)支持團(tuán)隊(duì)咨詢了解。
硬件平臺(tái):OKT507-C開發(fā)板 操作系統(tǒng): Linux4.9
本文將為大家介紹如何在飛凌OKT507-C開發(fā)板(基于全志T507設(shè)計(jì))上添加兩個(gè)GPIO按鍵,希望能夠?qū)Ω魑还こ處熡兴鶐椭疚恼乱訮E5、PE6兩個(gè)引腳為例。話不多說(shuō),下面我們進(jìn)入主題。
一、GPIO按鍵添加方法
1. 添加內(nèi)核配置
Linux內(nèi)核源代碼中集成了很多功能,一般的用戶只會(huì)用到其中的部分功能。用戶從中挑選自己需要的功能,這就叫內(nèi)核配置。下面我們開始進(jìn)行配置。
注意:
(1)在進(jìn)行配置前,需要對(duì)
OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig文件提前做好備份;
(2)以下所有圖中的紅框?yàn)樾薷暮蟮膬?nèi)容。
vi OKT507-linux-sdk/kernel/linux-4.9/.config
2. 添加key節(jié)點(diǎn)
添加結(jié)點(diǎn)需要我們到t507設(shè)備樹中進(jìn)行添加,設(shè)備樹是一個(gè)描述硬件的數(shù)據(jù)結(jié)構(gòu),甚至你可以將其看成一個(gè)大結(jié)構(gòu)體(這個(gè)結(jié)構(gòu)體就是平臺(tái),成員就是具體的設(shè)備),將硬件的配置從linux內(nèi)核的源碼中提取出來(lái)。
下面打開我們的T507設(shè)備樹文件,如下:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
其中按鍵鍵值設(shè)置如下。
相關(guān)鍵值可通過查看input-event-codes.h文件確定。
vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h
3. 添加引腳定義
添加引腳定義需要用到pinctrl,下面給大家簡(jiǎn)單介紹下pinctrl。pinctrl就是系統(tǒng)中pin引腳的控制。
假如在使用到GPIO、I2C等功能時(shí),若按引腳逐一地去找對(duì)應(yīng)的寄存器進(jìn)行配置非常浪費(fèi)時(shí)間和精力,所以內(nèi)核引入了pinctrl子系統(tǒng),把引腳的復(fù)用和配置抽象出來(lái),只需要芯片廠商把自家芯片的支持進(jìn)去,就可以很方便的配置引腳。
下面打開我們的pinctrl文件,如下:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
4. 關(guān)閉沖突功能
因?yàn)閠507有些功能結(jié)點(diǎn)使用的引腳與我們這次復(fù)用的引腳發(fā)生沖突,會(huì)發(fā)生引腳不生效的錯(cuò)誤,所以我們一定要檢查好,然后將其關(guān)閉。
如下打開設(shè)備樹文件:
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
注意:
因攝像頭csi復(fù)用的引腳與我們這里的沖突,雖然前面將狀態(tài)disabled了,pinctrl這里也有可能會(huì)造成沖突,為了避免不必要的麻煩,我們也將這里注釋掉。
5. 驅(qū)動(dòng)修改
gpio-keys是基于input子系統(tǒng)實(shí)現(xiàn)的一個(gè)通用按鍵驅(qū)動(dòng),該驅(qū)動(dòng)基于platform_driver架構(gòu),實(shí)現(xiàn)了驅(qū)動(dòng)和設(shè)備分離,符合Linux設(shè)備驅(qū)動(dòng)模型的思想,也符合linux驅(qū)動(dòng)實(shí)現(xiàn)模型,即driver和device分離模型。
一般按鍵驅(qū)動(dòng),都是基于gpio-keys進(jìn)行開發(fā)的。驅(qū)動(dòng)文件如下:
vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c
二、測(cè)試方法
終端窗口輸入evtest,選擇 7。
從上圖紅框可以看出,通過evtest測(cè)試工具將內(nèi)核設(shè)備讀取并打印設(shè)備描述的事件,到這里,GPIO按鍵就做完了,可以用它來(lái)實(shí)現(xiàn)很多的功能,比如說(shuō)按一下切換燈的狀態(tài),蜂鳴器響等。
當(dāng)然不只是這些啦,我們還可以利用它去實(shí)現(xiàn)很多其他功能,歡迎各位聰明的工程師小伙伴自行發(fā)揮!
以上就是小編為大家?guī)?lái)的在飛凌T507開發(fā)板上添加GPIO按鍵的全過程,想要了解有關(guān)OKT507-C開發(fā)板更多的功能和詳情,可以點(diǎn)擊下圖查看t507詳情。
相關(guān)產(chǎn)品 >
-
OKT507-C 開發(fā)板
CPU: T507 工業(yè)級(jí)處理器,超低功耗,10年+生命周期|推薦全志工業(yè)級(jí)T507開發(fā)板系列,飛凌OKT507-C開發(fā)板采用全志T507 四核工業(yè)級(jí)處理器 T507設(shè)計(jì)開發(fā),Cortex-A53架構(gòu),工業(yè)級(jí)寬溫,性能強(qiáng),低功耗,是一款高性價(jià)比的工業(yè)級(jí)產(chǎn)品,提供豐富的開發(fā)設(shè)計(jì)資料,提供產(chǎn)品規(guī)格書,軟硬件手冊(cè)等,全志的T507適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域。
了解詳情 -
FETT507-C核心板
推薦T507,全志T507核心板采用工業(yè)級(jí)處理器設(shè)計(jì)開發(fā),提供T507規(guī)格書,T507各類設(shè)計(jì)資料。FETT507-C核心板集成全志T507四核工業(yè)級(jí)處理器設(shè)計(jì)開發(fā),Cortex-A53架構(gòu),主頻1.5GHz,集成G31 GPU,內(nèi)存2GB DDR3L,存儲(chǔ)8GB eMMC。整板工業(yè)級(jí)運(yùn)行溫寬,支持絕大部分當(dāng)前流行的視頻及圖片格式解碼,具有穩(wěn)定可靠的工業(yè)級(jí)產(chǎn)品性能、低功耗以及豐富的用戶接口等優(yōu)勢(shì),搭載Linux、Android、Ubuntu*操作系統(tǒng),適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域 了解詳情