本文主要適用于飛凌 OKT507-C 平臺 Linux4.9.170 操作系統,其他平臺也可以參考,但是不同平臺之間會存在差異,需客戶自行修改以適應自己的使用。
如果您需要在 uboot 階段設置 GPIO 輸出高低電平,可以在設備樹中進行配置,可參考飛凌的 LVDS的電源引腳。
目前支持 gpio0-gpio31 共計 32 個引腳進行配置。關于 pinctrl 的含義請參考網盤資料\原廠資料目錄的《T507_pinctrl 接口使用說明文檔.pdf》。
二、內核階段的 GPIO 配置方法
以用于 UA
RT5_TX 的 PH2 引腳為例,做一下 gpio 配置的介紹。
1、關閉所使用引腳默認配置的功能:
修改設備樹,將 PH2 原功能關閉后,該引腳可用作普通 GPIO。
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.dtsi
2、測試方法
計算 gpio 對應引腳的數值=(n-1)*32+x
(設 A 為 1,B 為 2,以此類推,PH2 中 H 對應的是 8,x 表示 2)
PH2 對應的數值為:(8-1)x32+2=226
?PH2 設置為輸出:
echo 226 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio226/direction
echo 1 > /sys/class/gpio/gpio226/value //此時用萬用表測 PH2 引腳的電壓,應該為高電平
echo 0 > /sys/class/gpio/gpio226/value //此時用萬用表測 PH2 引腳的電壓,應該為低電平
?PH2 設置為輸入:
echo 226 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio226/direction //設置為輸入模式
?系統取消導出:
echo 226 > /sys/class/gpio/unexport
三、去掉 io 擴展芯片并保留擴展引腳功能的實現
擴展芯片上的 io 口被 wifi、藍牙、mipi 攝像頭 tp2854、dvp 攝像頭和 lineout 口電源使能引腳引用,若想保留這些功能,就要把這些引腳復用到
核心板的引腳。
本文以選用開發板上 lcd 所用引腳為例,用戶可根據自己的實際情況選擇。關閉所用引腳使用的功能,將其配置到所用功能的設備樹中。方法參考如下:
1、選用引腳
2、關掉 gpio_ext 及復用引腳原來功能
修改設備樹,將 lcd 功能關閉后,該組引腳可用作普通 GPIO。
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C Common.dtsi
2.1 關掉 io 擴展芯片功能
因為擴展芯片已經拆除,所以要關掉擴展芯片節點
2.2 關閉需要復用引腳功能
關閉 lcd 功能,本文以選用 lcd 上的引腳用作功能復用,用戶需根據實際情況關閉所用引腳功能。
lcd_used 改為 0
Lcd0 節點添加 status = “disabled”;
3、更改設備節點中引用的 gpio
3.1 mipi-5640 引腳配置
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
3.2 TP2854 引腳配置
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common-TP2854M.dtsi
注意:mipi5640 和 tp2854 共用一個 mipi 接口,兩個功能都用到了 MIPI_PWRDN 引腳,實際使用時只能選擇一種功能,因此本文在兩個功能測試時選的同一個引腳。
3.3 dvp-5640 引腳配置
3.4 wifi 引腳配置
3.5 藍牙引腳配置
3.6 音頻引腳
4、測試方法
測試方法參考《OKT507-C_Linux_用戶使用手冊》。
四、OKT507 增加 GPIO 按鍵
本文添加了兩個 GPIO 按鍵,以 PE5、PE6 兩個引腳為例,引腳選擇可參考用戶資料中的《FETT507-C引腳復用對照表.xlsx》。
1、GPIO 按鍵添加方法
1.1 添加內核配置
注意:
客戶在進行配置前,需要對
OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_defconfig 文件提前做好備份。
vi OKT507-linux-sdk/kernel/linux-4.9/.config
1.2 添加 key 節點
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
其中按鍵鍵值設置如下。
相關鍵值可通過查看 input-event-codes.h 確定。
vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h
1.3 添加引腳定義
vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
1.4 關閉沖突功能
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
1.5 驅動修改
vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c
2、測試方法
終端窗口輸入 evtest,選擇 7
本文所提供的所有服務內容旨在協助用戶加速產品的研發進度,在服務過程中所提供的任何程序、文檔、測試結果、
方案、支持等資料和信息,都僅供參考,用戶有權不使用或自行參考修改,不提供任何的完整性、可靠性等保證,若在用戶使用過程中因任何原因造成的特別的、偶然的或間接的損失,本公司不承擔任何責任。