了解!你使用的是 Rockchip RK3588S 平臺,需要操作 GPIO3_D5_d
這個引腳(即 MCU_JTAG_TMS_M1/.../GPIO3_D5_d
)。以下是基于你提供的系統信息的具體操作步驟:
🔍 第一步:確認 GPIO 系統編號
在 RK3588 芯片中,GPIO 編號規則為:
GPIO 全局編號 = bank編號 × 32 + 組內序號
根據引腳 GPIO3_D5
:
- bank 編號:3(對應 GPIO3)
- 組內序號:D5 = 5 + 24 = 29(D組偏移24)
(RK3588 GPIO分組:A=0~7, B=8~15, C=16~23, D=24~31)
👉 計算 GPIO 全局編號:
3 × 32 + 29 = 125
你需要操作的 GPIO 編號是 125
?? 第二步:操作 GPIO(兩種方法)
方法1:通過 sysfs 文件系統(直接操作)
# 1. 導出 GPIO125(激活控制權限)
echo 125 > /sys/class/gpio/export# 2. 查看生成的 GPIO 目錄(確保出現 gpio125)
ls /sys/class/gpio# 3. 進入 GPIO125 目錄
cd /sys/class/gpio/gpio125# 4. 設置為輸出模式
echo out > direction# 5. 拉高電平
echo 1 > value# 6. 拉低電平
echo 0 > value# 完成后取消導出(可選)
echo 125 > /sys/class/gpio/unexport
方法2:使用 libgpiod 工具(推薦更可靠的方式)
# 1. 安裝工具包
sudo apt update
sudo apt install gpiod# 2. 查找 GPIO 對應的芯片編號(GPIO3 屬于 gpiochip96)
gpiodetect # 輸出示例:# gpiochip0 [......]# gpiochip96 [......] # ← GPIO3 在這里# 3. 操作 GPIO:
# 語法:gpioset <芯片名> <組內序號>=<值>
gpioset gpiochip96 29=1 # 拉高(D5 = 組內偏移29)
gpioset gpiochip96 29=0 # 拉低
?? 關鍵注意事項
-
復用功能沖突:
如果該引腳被設備樹配置為其他功能(如UART9_TX_M2
),操作會失敗。
解決方案:# 查看當前引腳復用狀態(需安裝 io 工具) sudo apt install rockchip-io rockchip_io -p PD5 # PD5 對應 GPIO3_D5
若顯示
MUX: UART9_TX
,需修改設備樹將其設為GPIO
。 -
權限問題:
- 操作
/sys/class/gpio
需要 root 權限 - 可將用戶加入
gpio
組避免 sudo:sudo usermod -aG gpio $(whoami) # 重啟后生效
- 操作
-
快速電平切換限制:
sysfs 最大頻率約 100Hz,如需高速控制需:- 編寫內核驅動
- 使用
/dev/mem
直接映射寄存器(高風險,需 root)
📌 操作結果驗證
用萬用表測量引腳電壓:
- 執行
echo 1 > value
→ 應顯示 3.3V(或 SOC 工作電壓) - 執行
echo 0 > value
→ 應顯示 0V
💡 提示:若操作失敗,檢查
dmesg | grep gpio
查看內核報錯信息,通常原因包括復用沖突或物理驅動未啟用。