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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

飛凌嵌入式技術帖——i.MX9352的GPIO怎么用?

飛凌嵌入式 ? 2023-05-16 15:07 ? 次閱讀

之前小編為大家介紹過在飛凌嵌入式i.MX6ULL開發(fā)板上操作GPIO的方法。本期,讓我們一起走近i.MX9352處理器,深入了解這位i.MX系列新成員的GPIO該如何操作,以及它與前輩i.MX6ULL處理器又有哪些異同。

01 硬件原理分析

以點燈和按鍵為例,打開飛凌嵌入式OK-MX9352-C開發(fā)板的原理圖,可以看到一顆LED燈,它由MX93_PAD_CCM_CLKO4控制。由于這一個GPIO屬于1.8V電平域,所以在OK-MX9352-C開發(fā)板的底板上并沒有直接將GPIO接到LED上,而是用GPIO控制了一個MOS管,再由MOS管去控制LED的亮滅——當GPIO電平為高時,MOS導通,LED點亮;當GPIO電平為低時,MOS關斷,LED熄滅。

wKgaomRjF1-AWSTsAABGtg1BjBM254.pngwKgaomRjF1-AVW1EAAAerCuNmac840.png

02 設備樹引腳復用

打開飛凌嵌入式OK-MX9352-C開發(fā)板的設備樹:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/OK-MX93-C.dts

在iomuxc節(jié)點下新建一組引腳復用,復用的兩個GPIO分別是底板上的LED燈D6和按鍵K1。

wKgZomRjF16ACL_MAAATfyF_Olg250.png

接下來新建一個GPIO節(jié)點,內容如下:

wKgaomRjF16AKpUNAAAmjqr9Eow472.png

注釋掉LED和KEY部分,防止復用沖突:

wKgZomRjF16AbyaBAABZpM4COkY809.png

保存退出后重新編譯設備樹。

執(zhí)行環(huán)境變量:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ . environment-setup-aarch64-toolchain

單獨編譯設備樹:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ make ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- dtbs

編譯完成后,單獨更新設備樹。首先將U盤插到虛擬機上,將生成的設備樹文件拷貝到U盤:

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk/OKMX93-linux-kernel$ cp arch/arm64/boot/dts/freescale/OK-MX93-C.dtb /media/forlinx/2075-A0A7/

將生成的dtb文件使用U盤拷貝到OK-MX9352-C開發(fā)板上,替換掉:/run/media/Boot-mmcblk0p1/OK-MX93-C.dtb

root@ok-mx93:/run/media/Boot-mmcblk0p1# cp /run/media/sda/OK-MX93-C.dtb ./

重啟OK-MX9352-C開發(fā)板。

03 通過命令測試

在OKMX6ULL-S開發(fā)板中,操作GPIO的方式是通過操作/sys/class/gpio下的文件來實現的。而在OK-MX9352-C上,引入了新的Lingpiod的方式,而原有的基于sysfs的操作方式已經不再被支持。

Libgpiod是一種字符設備接口,GPIO訪問控制是通過操作字符設備文件(比如/dev/gpiodchip0)實現的。OK-MX9352-C共有4組GPIO,可以在/dev下查看GPIO設備文件。

Libgpiod可以通過shell終端和C庫兩種方式使用,本節(jié)介紹在shell終端控制GPIO的方法,下一節(jié)我們將會介紹使用C庫的方式控制GPIO。

wKgZomRjF1-AQoHrAAAHLminmek601.png

3.1 gpiodetect

查看所有GPIO設備

wKgZomRjF1-AbcnMAAAMpimzTtA883.png

這里的gpiochip0- gpiochip4分別對應的是設備樹當中的GPIO1-GPIO4這四組GPIO,但是順序并不是一一對應的,這是由于對應的寄存器地址順序問題導致的。那么goiochip0如何跟設備樹對應起來呢?我們可以打開設備樹當中的dtsi文件,文件路徑為:

OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

forlinx@ubuntu:~/ok-mx93/OKMX93-linux-sdk$ vi OKMX93-linux-kernel/arch/arm64/boot/dts/freescale/imx93.dtsi

查看GPIO3的寄存器基地址為:gpio3: gpio@43820080,對應的是gpiochip1,而GPIO4對應的是gpiochip2。

wKgZomRjF2CAHik-AAB1NzeewXk669.png

其余GPIO的對應關系如下,可供大家參考:

wKgaomRjF1-AWclaAAAV7bS4So8225.png

3.2 gpioinfo

由3.1可知,LED燈對應的是GPIO4,即gpiochip2;按鍵對應的是GPIO3,即gpiochip1。列出gpiochip2控制器的引腳情況:

wKgaomRjF2CAHSkaAAAhG0pXgmU001.png

3.3 gpioset

該命令用于設置GPIO電平,2代表gpiochip2,即GPIO4,28是GPIO pin,當設置該GPIO為1時,底板上的D6點亮。

wKgaomRjF2CAF1sVAAAGNfjER6Q831.png

3.4 gpioget

該命令用于獲取GPIO引腳狀態(tài),以按鍵為例,按鍵對應的是GPIO3-27,即gpiochip1 27。按鍵沒有按下時,讀取到按鍵狀態(tài)為1,當按鍵按下時,讀到按鍵狀態(tài)為0。

wKgZomRjF2CANHvRAAAL40vcZt8746.png

3.5 gpiomon

監(jiān)控GPIO的狀態(tài)是否發(fā)生變化,同樣以按鍵為例,當按鍵按下時:

wKgZomRjF2CANHvRAAAL40vcZt8746.png

04 使用Libgpiod庫編程

Libgpiod是用于與Linux GPIO交互的C庫和工具,Linux官方于Linux 4.8 版本引入了Libgpiod的功能。而在OK-MX9352-C開發(fā)板搭載的Linux5.15內核版本中,已經不再支持sysfs的方式操作GPIO。與sysfs相比,Libgpiod更加可靠,具備更多功能,例如,可一次讀寫多個GPIO值。

4.1 源碼獲取

如果想要在PC上交叉編譯出能夠在開發(fā)板上運行的應用,則交叉編譯時鏈接的庫文件應該與開發(fā)板上的保持一致,可以直接把開發(fā)板上的庫拷貝到開發(fā)環(huán)境進行使用。該庫文件在開發(fā)板上的路徑為:

wKgZomRjF2GARzmWAAAM_nXlj88959.png

從上圖可以看出,Libgpiod庫的版本為libgpiod.so.2.2.2,軟鏈接到libgpiod.so.2。

在飛凌嵌入式提供的OK-MX9352-C開發(fā)板資料中,已經將所需的庫文件、頭文件以及相關例程進行了打包,用戶可以直接使用。資料路徑為:用戶資料/應用筆記/ OK-MX9352-C-GPIO接口_Linux應用筆記/Libgpiod測試源碼。

4.2 編譯測試例程

將Libgpiod測試源碼目錄下的gpiotest.c、gpio-toggle.c、lib.tar.bz2拷貝到開發(fā)環(huán)境中:

wKgaomRjF2GAY8-jAAAQ5gIV5o4612.png

將lib.tar.bz2解壓到本目錄下,編譯時會使用到里邊的gpiod.h文件和Libgpiod庫文件:

wKgZomRjF2GALoDlAAATjAvwfrw081.png

示例1

循環(huán)控制LED亮和滅,時間間隔為1s

交叉編譯gpio-toggle.c

設置環(huán)境變量(注意 . 后邊有空格)

wKgaomRjF2GABx-iAAAVJNGqGrE241.png

交叉編譯

wKgaomRjF2KAZjX0AAARcZZaIII411.png

將可執(zhí)行文件gpio-toggle拷貝到開發(fā)板中并執(zhí)行可看到LED(D6)燈1s亮,1s滅。其中輸入參數2、28為:gpiochip2 line28。

wKgZomRjF2GAMFPqAAAIC66XYOg923.png

示例2

按鍵控制LED亮滅,每按一次狀態(tài)翻轉

交叉編譯gpio-test.c

設置環(huán)境變量(注意點后邊有空格)

交叉編譯

wKgZomRjF2KAcLYtAAAc_uLCE9c706.png

將可執(zhí)行文件gpio-test拷貝到OK-MX9352-C開發(fā)板中并執(zhí)行,可看到每按一次按鍵,LED燈的狀態(tài)就翻轉一次,其中輸入參數1、27為:gpiochip1 line27 ;2、28為:gpiochip2 line28。

wKgaomRjF2KAFWIBAAANjFPs8Uo836.png

以上就是為OK-MX9352-C開發(fā)板配置GPIO的過程,希望能夠對屏幕前的各位工程師小伙伴有所幫助。

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

    關注

    5082

    文章

    19126

    瀏覽量

    305195
  • NXP
    NXP
    +關注

    關注

    60

    文章

    1278

    瀏覽量

    184226
  • GPIO
    +關注

    關注

    16

    文章

    1204

    瀏覽量

    52098
收藏 人收藏

    評論

    相關推薦

    嵌入式獲批建設「河北省嵌入式計算機控制系統(tǒng)技術創(chuàng)新中心」

    河北省科學技術廳公示了2024年度擬新建省重點實驗室和省技術創(chuàng)新中心的名單,保定嵌入式技術
    的頭像 發(fā)表于 12-27 10:45 ?141次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>獲批建設「河北省<b class='flag-5'>嵌入式</b>計算機控制系統(tǒng)<b class='flag-5'>技術</b>創(chuàng)新中心」

    嵌入式受邀亮相TI嵌入式技術創(chuàng)新發(fā)展研討會

    10月22日,“2024年德州儀器嵌入式技術創(chuàng)新發(fā)展研討會”(北京站)順利舉行,本次研討會邀請了眾多業(yè)界領先的企業(yè)和專家到場,嵌入式作為
    的頭像 發(fā)表于 10-23 14:27 ?406次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>受邀亮相TI<b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>創(chuàng)新發(fā)展研討會

    嵌入式作為首個嵌入式板卡合作伙伴入駐「恩智浦云實驗室」

    嵌入式作為恩智浦云實驗室的首個嵌入式板卡合作伙伴,已經攜OK-MX95xx-C和OK-MX8
    的頭像 發(fā)表于 10-15 08:01 ?427次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>作為首個<b class='flag-5'>嵌入式</b>板卡合作伙伴入駐「恩智浦云實驗室」

    嵌入式技術創(chuàng)新日(深圳站)圓滿落幕

    2024年8月26日下午,嵌入式技術創(chuàng)新日深圳站在深圳威尼斯英迪格酒店盛大舉行,此次活動匯聚了近200位嵌入式
    的頭像 發(fā)表于 08-30 15:42 ?359次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>創(chuàng)新日(深圳站)圓滿落幕

    再見深圳!嵌入式技術創(chuàng)新日圓滿落幕

    2024年8月26日下午,嵌入式技術創(chuàng)新日深圳站在深圳威尼斯英迪格酒店盛大舉行,此次活動匯聚了近200位嵌入式
    的頭像 發(fā)表于 08-29 16:35 ?994次閱讀
    再見深圳!<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>創(chuàng)新日圓滿落幕

    嵌入式技術創(chuàng)新日(深圳站)精彩回顧

    2024年8月26日下午,嵌入式技術創(chuàng)新日深圳站在深圳威尼斯英迪格酒店盛大舉行,此次活動匯聚了近200位嵌入式
    發(fā)表于 08-28 09:06

    嵌入式技術創(chuàng)新日(北京站)圓滿落幕,共創(chuàng)嵌入式技術的美好未來

    2024年6月25日下午,嵌入式技術創(chuàng)新日(北京站)在北京中關村皇冠假日酒店盛大舉行。此次活動匯聚了近300位嵌入式
    的頭像 發(fā)表于 06-28 11:05 ?717次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>創(chuàng)新日(北京站)圓滿落幕,共創(chuàng)<b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>的美好未來

    劇透!「嵌入式技術創(chuàng)新日」3大亮點搶先看

    6月25日,嵌入式技術創(chuàng)新日(北京站)即將開幕,一場嵌入式前沿科技的高端局就在眼前。
    的頭像 發(fā)表于 06-20 17:05 ?872次閱讀
    劇透!「<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>創(chuàng)新日」3大亮點搶先看

    嵌入式「端午節(jié)放假通知」

    嵌入式「端午節(jié)放假通知」
    的頭像 發(fā)表于 06-07 08:02 ?435次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>「端午節(jié)放假通知」

    下周見!嵌入式即將亮相2024上海國際嵌入式

    ,聚焦人工智能、智慧交通、工業(yè)互聯網、智慧醫(yī)療、電力與儲能等領域,為全球客戶帶來一場技術與創(chuàng)新的盛宴。誠摯地邀請大家蒞臨3號館646嵌入式展位,讓我們共創(chuàng)
    的頭像 發(fā)表于 06-07 08:02 ?643次閱讀
    下周見!<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>即將亮相2024上海國際<b class='flag-5'>嵌入式</b>展

    嵌入式亮相上海CPSE,展現智能充儲技術新力量

    分享,展位號Z15。嵌入式與眾多客戶和行業(yè)伙伴進行了深入的交流和合作洽談,達成了多項合作意向。
    的頭像 發(fā)表于 05-24 09:01 ?933次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>亮相上海CPSE,展現智能充儲<b class='flag-5'>技術</b>新力量

    正點原子i.MX93開發(fā)板

    我計劃申請正點原子i.MX93開發(fā)板,因為我希望利用其強大的NXP i.MX9352處理器進行中高端嵌入式Linux開發(fā)。這款處理器具備雙核
    發(fā)表于 05-16 14:57

    圓滿收官|嵌入式CACLP 2024精彩回顧

    本屆CACLP,嵌入式展示了多款嵌入式主控產品,這些產品覆蓋了體外診斷、醫(yī)學影像、生命體征監(jiān)測以及新興的5G醫(yī)療應用等多個領域,充分體現了
    的頭像 發(fā)表于 03-22 10:48 ?446次閱讀
    圓滿收官|<b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>CACLP 2024精彩回顧

    嵌入式T113-i開發(fā)板的調屏方法,就是這樣簡單

    嵌入式不久前推出的FET113i-S作為一款兼具高效計算能力與泛性的全國產核心板,擁有豐富的接口資源。其中“顯示”接口也很多樣,RGB
    的頭像 發(fā)表于 01-12 11:50 ?2237次閱讀
    <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T113-<b class='flag-5'>i</b>開發(fā)板的調屏方法,就是這樣簡單

    技術 | 嵌入式T113-i開發(fā)板的休眠及喚醒操作

    嵌入式OK113i-S開發(fā)板支持兩種休眠方式:freeze和mem。本篇內容小編會為大家介紹如何讓
    的頭像 發(fā)表于 12-29 08:02 ?1250次閱讀
    <b class='flag-5'>技術</b><b class='flag-5'>帖</b> | <b class='flag-5'>飛</b><b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T113-<b class='flag-5'>i</b>開發(fā)板的休眠及喚醒操作