本文主要适用于飞凌 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
本文所提供的所有服务内容旨在协助用户加速产品的研发进度,在服务过程中所提供的任何程序、文档、测试结果、
方案、支持等资料和信息,都仅供参考,用户有权不使用或自行参考修改,不提供任何的完整性、可靠性等保证,若在用户使用过程中因任何原因造成的特别的、偶然的或间接的损失,本公司不承担任何责任。