RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ELF 1技術(shù)貼|在NXP源碼基礎(chǔ)上適配開發(fā)板的按鍵功能

ElfBoard ? 2024-03-08 16:58 ? 次閱讀

本次源代碼適配是在NXP i.MX6ULL EVK評估板的Linux內(nèi)核源代碼(特定版本號為Linux-imx_4.1.15)的基礎(chǔ)中展開的。

首要任務(wù)集中在對功能接口引腳配置的精細(xì)調(diào)整,確保其能無縫匹配至ELF 1開發(fā)板。接下來,我們將詳細(xì)闡述適配過程中關(guān)于按鍵功能實(shí)現(xiàn)的完整步驟。

值得一提的是,ELF 1開發(fā)板上預(yù)置了標(biāo)識為K1、K2、K3的三個(gè)按鍵。為了啟用這些按鍵功能,需要在設(shè)備樹中進(jìn)行按鍵配置,以及在內(nèi)核中完成驅(qū)動(dòng)配置。

01、硬件原理

wKgZomXq0VSACd6wAACteqtgmVk554.pngwKgaomXq0VSAKH0OAAG45L17pqU876.png

02、IOMUX配置

從上圖可以看出GPIO5_4連接到了連接器的22腳,GPIO5_2連到了34腳,GPIO5_9連接到了43腳。接下來需要找到這幾個(gè)引腳在軟件上的信號名稱。在ElfBoard官網(wǎng)硬件資料中的 ELF 1開發(fā)板資料包\05-硬件資料\05-4 管腳分配表找到22、34、43引腳的信號名稱。

wKgZomXq0XCAdYhiAACnHoFvAG0891.png

可以看到連接器的34引腳信號名稱為SNVS_TAMPER2;22引腳的信號名稱為SNVS_TAMPER4;43引腳的信號名稱為SNVS_TAMPER9。

因?yàn)樾枰褂眠@幾個(gè)引腳控制按鍵,所以需要把它們復(fù)用成GPIO功能,在arch/arm/boot/dts/imx6ull-pinfunc-snvs.h中找到它們的宏定義,分別如下:

wKgaomXq0ZOAGnEDAAIHGYRCjJc639.png

然后打開設(shè)備樹文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,在&iomux_snvs節(jié)點(diǎn)下添加子節(jié)點(diǎn)pinctrl_keys:

pinctrl_keys: keysgrp { fsl,pins = < MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x80000000 MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x80000000 MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x80000000 >; };

添加后效果如下:

wKgZomXq0beATdElAADnaJ4o9Ss882.png

03、添加設(shè)備節(jié)點(diǎn)

在根節(jié)點(diǎn)下添加:

gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_keys>; #address-cells = <1>; #size-cells = <0>; autorepeat; key1 { label = "KEY1"; linux,code = ; gpios = <&gpio5 4 GPIO_ACTIVE_LOW>; }; key2 { label = "KEY2"; linux,code = ; gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; }; key3 { label = "KEY3"; linux,code = ; gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; }; };

添加后效果如下:

wKgaomXq0eGARx4dAAFqyMAtiss202.png

gpio-keys的compatible屬性值為“gpio-keys”,用于驅(qū)動(dòng)匹配。pinctrl-name屬性值為“default”,定義了pincrtl的名字為“default”。

pinctrl-0的屬性值為<&pinctrl_keys>,就是引用了之前在iomux_snvs中定義的pinctrl_keys也就是說,在此處對iomux_snvs的配置進(jìn)行了引用,類似函數(shù)的調(diào)用。status屬性值設(shè)置為“okay”,表示LED設(shè)備可用。

接下來三個(gè)子節(jié)點(diǎn),分別對應(yīng)三個(gè)具體按鍵。子節(jié)點(diǎn)的lable標(biāo)簽屬性是可選的。linux,code屬性表示鍵值,在include/dt-bindings/input/input.h文件中有其宏定義。

#define KEY_ENTER 28 #define KEY_UP 103 #define KEY_DOWN 108

gpios屬性值指定了具體的GPIO引腳以及引腳的極性配置。如:gpios = <&gpio1 10 GPIO_ACTIVE_LOW>。

指定是GPIO1_IO10引腳,極性是GPIO_ACTIVE_LOW,就是指高電平有效還是低電平有效,需要根據(jù)具體電路配合使用。


04、配置按鍵驅(qū)動(dòng)編譯進(jìn)內(nèi)核

在根目錄下使用make menuconfig命令,在如下路徑查看是否有配置:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig

找到以下位置,Keyboards驅(qū)動(dòng)默認(rèn)已經(jīng)編譯進(jìn)內(nèi)核。

-> Device Drivers ->Input device support ->Keyboards

wKgZomXq0kSAVD0kAAGe-8d-m5k156.png

05、編譯測試

由于使用build.sh全編譯時(shí)間太長,我們可以將build.sh當(dāng)中的第4行注釋掉:

wKgaomXq0l2ARbNbAADI_10z6Nc921.png

編譯內(nèi)核并拷貝到開發(fā)板:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage root\@172.16.0.175:/run/media/mmcblk1p1/ elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf\1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

進(jìn)行sync操作后重啟開發(fā)板:

wKgaomXq0qKAduI_AAAdZ8LYDwM472.png

使用cat /proc/bus/input/devices命令查看key設(shè)備對應(yīng)的event事件:

root@ELF1:~# cat /proc/bus/input/devices

wKgaomXq0rqAcy7aAAD4lBlEDLg363.png

可以看到其對應(yīng)的是event2,如果連接了其他設(shè)備,比如觸摸屏,event事件可能會有變化,請以實(shí)際為準(zhǔn)。

終端輸入evtest命令,選擇event number為2,然后分別按鍵K1,K2,K3,會看到上報(bào)數(shù)據(jù)。

root@ELF1:~# evtest

wKgZomXq0t-AGu3UAAGZ6A13tl4073.png

可以看到KEY1上報(bào)的鍵值是28,KEY2上報(bào)的鍵值是103,KEY3上報(bào)的鍵值是108,與在設(shè)備樹中配置的鍵值一致。

至此,已在NXP提供的源代碼基礎(chǔ)上成功完成了對ELF 1開發(fā)板按鍵功能的適配工作,期待這一實(shí)踐教程能夠切實(shí)為屏幕前的小伙伴帶來實(shí)質(zhì)性指導(dǎo)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304793
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209322
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
收藏 人收藏

    評論

    相關(guān)推薦

    如何在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的PWM功能

    本次源碼適配項(xiàng)目是NXP i.MX6ULL EVK評估所搭載的Linux內(nèi)核源碼(版本為Li
    的頭像 發(fā)表于 09-10 10:00 ?917次閱讀
    如何在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的PWM<b class='flag-5'>功能</b>

    ElfBoard技術(shù)|如何在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的UART功能

    UART即通用異步收發(fā)器,是一種支持全雙工串行通信協(xié)議的接口。i.MX6ULL處理器平臺上,該處理器原生支持多達(dá)8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1開發(fā)板
    的頭像 發(fā)表于 09-25 13:56 ?2295次閱讀
    ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的UART<b class='flag-5'>功能</b>

    嵌入式學(xué)習(xí)-ElfBoard ELF 1板卡-nxp源碼基礎(chǔ)上適配ELF 1開發(fā)板的LED功能

    源碼適配即在NXP i.MX6ULL EVK評估對應(yīng)的Linux內(nèi)核源碼(linux-imx_4.1.15 版本)
    發(fā)表于 01-05 14:35

    飛凌嵌入式ElfBoard ELF 1板卡-NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板按鍵功能

    的鍵值是103,KEY3上報(bào)的鍵值是108,與設(shè)備樹中配置的鍵值一致。 至此,就完成了NXP源碼基礎(chǔ)上
    發(fā)表于 07-03 09:07

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板按鍵功能

    的鍵值是103,KEY3上報(bào)的鍵值是108,與設(shè)備樹中配置的鍵值一致。 至此,就完成了NXP源碼基礎(chǔ)上
    發(fā)表于 07-04 09:11

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介

    ,所以講解均以4.1.15版本內(nèi)核為例。(二)可以選擇使用git克隆,也可以選擇下載ZIP壓縮包。獲取ELF 1開發(fā)板源碼ELF
    發(fā)表于 12-13 09:03

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介

    開發(fā)板資料包\\02-Linux 源代碼\\02-0 出廠內(nèi)核和uboot源碼\\內(nèi)核源碼\\linux-4.1.15-elf1.tar.bz2 后面我們也會介紹如何在
    發(fā)表于 12-16 13:08

    ELF 1技術(shù)|NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的LED功能

    本次源碼適配工作是NXPi.MX6ULLEVK評估的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)
    的頭像 發(fā)表于 12-29 10:04 ?852次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的LED<b class='flag-5'>功能</b>

    ELF 1 開發(fā)板實(shí)現(xiàn)讀取攝像頭視頻進(jìn)行目標(biāo)檢測

    當(dāng)前,將AI或深度學(xué)習(xí)算法(如分類、目標(biāo)檢測和軌跡追蹤)部署到嵌入式設(shè)備,進(jìn)而實(shí)現(xiàn)邊緣計(jì)算,正成為輕量級深度學(xué)習(xí)算法發(fā)展的一個(gè)重要趨勢。今天將與各位小伙伴分享一個(gè)實(shí)際案例:ELF1開發(fā)板上成功部署
    的頭像 發(fā)表于 01-24 10:38 ?686次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b> <b class='flag-5'>開發(fā)板</b><b class='flag-5'>上</b>實(shí)現(xiàn)讀取攝像頭視頻進(jìn)行目標(biāo)檢測

    ELF 1技術(shù)|如何移植Boa 到開發(fā)板

    Boa作為Web服務(wù)解決方案顯得尤為適宜。接下來,將跟各位小伙伴詳細(xì)介紹一下基于ELF1開發(fā)板移植Boa的方法。1、Boa官網(wǎng)下載源碼官網(wǎng)網(wǎng)址:Boadownlo
    的頭像 發(fā)表于 02-04 09:30 ?365次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何移植Boa 到<b class='flag-5'>開發(fā)板</b><b class='flag-5'>上</b>

    ELF 1技術(shù)|如何將Python3.6.9移植到開發(fā)板

    ELF1開發(fā)板的Linux4.1.15eMMC鏡像中,默認(rèn)預(yù)裝了Python2.7。為了適應(yīng)更多應(yīng)用場景,有些小伙伴可能需要移植其他版本的Python,下面將以Python3.6.9為例詳細(xì)介紹
    的頭像 發(fā)表于 02-22 14:06 ?429次閱讀
    <b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何將Python3.6.9移植到<b class='flag-5'>開發(fā)板</b><b class='flag-5'>上</b>

    ELF技術(shù)|如何在開發(fā)板實(shí)現(xiàn)對Java的支持

    Java作為一種功能強(qiáng)大且廣泛應(yīng)用的編程語言,具有廣泛的適應(yīng)性和實(shí)用性。ELF1開發(fā)板上集成Java支持,無疑將賦予嵌入式開發(fā)者更廣闊的選
    的頭像 發(fā)表于 03-13 16:47 ?504次閱讀
    <b class='flag-5'>ELF</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>開發(fā)板</b><b class='flag-5'>上</b>實(shí)現(xiàn)對Java的支持

    ElfBoard技術(shù)|NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板按鍵功能

    本次源碼適配工作是NXPi.MX6ULLEVK評估的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)
    的頭像 發(fā)表于 07-10 09:54 ?594次閱讀
    ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|<b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b><b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的<b class='flag-5'>按鍵</b><b class='flag-5'>功能</b>

    ElfBoard技術(shù)|如何在ELF 1開發(fā)板搭建流媒體服務(wù)器

    流媒體服務(wù)器是一種專門用于傳輸實(shí)時(shí)數(shù)據(jù)流的服務(wù)器軟件,廣泛用于視頻直播、視頻會議、音頻播放等應(yīng)用場景。嵌入式開發(fā)領(lǐng)域,將流媒體服務(wù)器部署到開發(fā)板可以實(shí)現(xiàn)諸如視頻監(jiān)控、實(shí)時(shí)數(shù)據(jù)傳輸?shù)?/div>
    的頭像 發(fā)表于 08-20 14:48 ?564次閱讀
    ElfBoard<b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>上</b>搭建流媒體服務(wù)器

    NXP源碼基礎(chǔ)上如何適配ELF 1開發(fā)板的UART功能

    UART即通用異步收發(fā)器,是一種支持全雙工串行通信協(xié)議的接口。i.MX6ULL處理器平臺上,該處理器原生支持多達(dá)8路的UART接口,提供了豐富的串行通信能力。 針對ELF 1開發(fā)板,
    的頭像 發(fā)表于 09-29 11:49 ?337次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>NXP</b><b class='flag-5'>源碼</b><b class='flag-5'>基礎(chǔ)上</b>如何<b class='flag-5'>適配</b><b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>開發(fā)板</b>的UART<b class='flag-5'>功能</b>
    RM新时代网站-首页