IOMUX(引腳功能復用)是芯片廠商為高效利用有限引腳資源而設計的關鍵技術,它允許單個物理引腳通過軟件靈活配置為多種功能(如GPIO、UART、I2C等)。鑒于不同SoC的配置方式各異,本文將以【RK3588】ELF 2開發板的GPIO引腳為例,詳細闡述從硬件查找到軟件配置的完整流程。
1.引腳確認
在開始配置之前,首先需要了解【RK3588】ELF 2開發板的接口布局特點。【RK3588】ELF 2開發板的40Pin 2.54mm連接器兼容樹莓派40Pin連接器,集成了I2C、SPI、UART等常用通信接口及多路GPIO;而20Pin 2.54mm連接器則額外引出40Pin連接器未涵蓋的接口或拓展接口,包括SARADC、PWM和GPIO等。
引腳選擇原則:進行引腳復用時,應優先選擇40Pin或20Pin連接器上的引腳,這類引腳位于開發板標準排針接口,無需額外焊接,接線更加便捷。
1.1查看引腳復用表
引腳復用表路徑:ELF 2開發板資料包\05-硬件資料\05-4 管腳分配表
打開引腳復用表后,可以看到Alt0~Alt9列是引腳的核心復用功能區,這10列分別代表該引腳可配置的10種備選功能(部分未啟用列可能為空)。在Alt0中查看所有的寫有GPIOn_xy的引腳都是可以被復用成GPIO功能的。
結合"優先選擇40Pin或20Pin連接器引腳"的原則,選定P2_31引腳復用為GPIO1_D0功能。

1.2匹配開發板引腳
硬件原理圖路徑:ELF 2開發板資料包\05-硬件資料\05-0 PDF原理圖
從硬件原理圖可知,【RK3588】ELF 2開發板共使用4個連接器,其中"P2"代表第2號連接器。需要先定位到該連接器,再查找其31號引腳。
P2_31引腳對應開發板功能:I2C5--I2C7--SCL(左側I2C5為3576開發板引腳功能,右側I2C7為ELF2板卡引腳功能)。

1.3定位開發板物理位置
核心板的功能引腳通過連接器傳輸到底板,下面需要確認目標引腳在底板上的具體物理接口位置。
在原理圖中分別搜索I2C5--I2C7--SCL網絡標號:
I2C5--I2C7--SCL(P2_31引腳對應的網絡標號)對應開發板P26接口的32引腳。

2.源碼適配
在完成硬件引腳確認后,接下來需要進行軟件層面的配置工作,主要包括設備樹中的IOMUX配置和設備節點配置。
2.1IOMUX配置
如果引腳不進行其他功能的復用,引腳默認就是GPIO功能。
2.2設備節點配置
P2_31引腳開發板功能為I2C7,需要在設備樹中關閉i2c7節點,關閉I2C7功能之后默認就是GPIO功能。
打開以下文件 ,關閉i2c7節點引用。
(kernel/arch/arm64/boot/dts/rockchip/elf2-3588-common.dtsi)
&i2c7 { status = "disabled"; };

2.3編譯
配置完成后,需要重新編譯內核以生成包含新配置的鏡像文件。
執行編譯命令,生成內核鏡像:
elf@ubuntu:~/work/ELF2-linux-source$./build.sh kernel
編譯完成后,將在kernel目錄下生成boot.img內核鏡像文件。
3.燒錄與驗證
編譯生成新的內核鏡像后,需將其燒錄到開發板并完成基礎驗證。首先將kernel目錄下生成的boot.img內核鏡像文件燒錄到開發板。開發板啟動后,/dev目錄下I2C7對應的設備節點i2c-7已經不存在。
4.開發板測試
注意:GPIO引腳的電平范圍為0~3.3V,嚴禁對此引腳接入超過3.3V的電壓。
GPIO的命名規則為GPIOn_xy其中x的表現形式有ABCD四種。在GPIO計算編號的過程中,A對應1,B對應2,C對應3,D對應4。
計算公式為:

以GPIO1_D0為例,計算其GPIO編號。
GPIO1_D0=1×32+(4?1)×8+0=56
將GPIO引腳配置為輸出模式后,在完成相關設置操作后,可使用萬用表測量該引腳的電壓狀態,以驗證GPIO輸出模式是否配置成功。
root@elf2-buildroot:~# echo 56 > /sys/class/gpio/export //系統需要導出控制的GPIO引腳編號 root@elf2-buildroot:~# echo out > /sys/class/gpio/gpio56/direction //設置為輸出 root@elf2-buildroot:~# echo 1 > /sys/class/gpio/gpio56/value //設置IO輸出高電平 root@elf2-buildroot:~# echo 0 > /sys/class/gpio/gpio56/value //設置IO輸出低電平 root@elf2-buildroot:~# echo 56 > /sys/class/gpio/unexport //系統取消導出
將GPIO引腳配置為輸入模式后,通過向該引腳施加高電平或低電平信號,隨后可以使用cat命令讀取并查看該引腳的當前電平狀態。
root@elf2-buildroot:~# echo 56 > /sys/class/gpio/export //系統需要導出控制的GPIO引腳編號 root@elf2-buildroot:~# echo in > /sys/class/gpio/gpio56/direction //設置為輸出 root@elf2-buildroot:~# cat /sys/class/gpio/gpio56/value //查看引腳狀態 root@elf2-buildroot:~# echo 56 > /sys/class/gpio/unexport //系統取消導出
通過上述步驟操作,即可完成【RK3588】ELF 2開發板的GPIO功能復用配置。本文旨在為各位嵌入式開發愛好者提供切實可行的操作參考,若在實際調試過程中遇到任何問題,歡迎隨時交流探討。
-
單片機
+關注
關注
6076文章
45495瀏覽量
670299 -
嵌入式
+關注
關注
5198文章
20445瀏覽量
334002 -
開發板
+關注
關注
26文章
6290瀏覽量
118072 -
RK3588
+關注
關注
8文章
556瀏覽量
7323
發布評論請先 登錄
ElfBoard技術貼|如何在【RK3588】ELF 2開發板上進行根系統的定制
技術貼|【RK3588】ELF 2開發板如何添加exFAT和NTFS文件系統格式
ElfBoard技術貼|如何在【RK3588】ELF 2開發板上進行UART引腳復用配置
RK3588 EVB開發板原理圖講解【八】 RK3588 power Tree
rk3588有哪些開發板?
ElfBoard技術貼|【RK3588】ELF 2開發板開機自啟動詳解
ElfBoard技術貼|如何在【RK3588】ELF 2開發板用戶空間更換開機Logo
ElfBoard技術貼|如何在【RK3588】ELF 2開發板實現GPIO功能復用
評論