添加uart2支持
PH6,7,8,9默认为SPI
PH4,5默认为I2C
要将PH5 PH6作为UART2使用,则原先的默认功能就要关闭,uart2功能要打开
cf9c366bb88d7214bc93412cbc0accb3 sys gpio控制
将GPIO释放出来,通过/sys/class/gpio进行控制
步骤一 修改管脚状态
/sys/class/gpio/export 只能导出UNCLAIMED状态的 gpio
查看所需管脚是否是UNCLAIMED状态
Copy cat /sys/kernel/debug/pinctrl/300b000.pinctrl/pinmux-pins
管脚非UNCLAIMED状态 说明管脚被内核注册了,需要修改设备树,注释掉其默认功能
PH2 PH3 做举例
查询管脚状态,发现PH2 PH3作为了uart5
Copy vim longan/device/config/chips/h618/configs/p2/linux-5.4/board-*.dts //android
vim source/kernel/linux-5.4-h618/arch/arm64/boot/dts/sunxi/sun50iw9-kickpi-k2b.dts //Linux
关闭默认功能
步骤二
编译镜像,重新烧录
步骤三
确认gpio未被注册
Copy root@kickpi:~# cat /sys/kernel/debug/pinctrl/300b000.pinctrl/pinmux-pins | grep PH
能够看到PH2 PH3未被使用,且对应 pin 值为 226 227
步骤四
通过 /sys/class/gpio/export 注册 PH2,PH3 并进行控制
通过结点下的内容控制 gpio , 常用如下
设置GPIO方向
Copy echo in > /sys/class/gpio/gpio226/direction
echo out > /sys/class/gpio/gpio226/direction
设置GPIO值
Copy cat /sys/class/gpio/gpio226/value // 读取
echo 1 > /sys/class/gpio/gpio226/value // 配置高电平
echo 0 > /sys/class/gpio/gpio226/value // 配置低电平
示例功能配置
GPIO输出
K2B开发板默认配置两路GPIO输出功能,分别为PC12(12脚)、PC7(14脚)
注意:其他引脚已配置为其他功能,若要配置为GPIO功能,则需要先把默认功能去掉
其中PC管脚输出电压为1.8V,PH管脚输出电压为3.3V
GPIO输出 提供两种控制方式,分别为gpio-leds、gpio_para
gpio-para
是全志的GPIO控制驱动,可实现简单的电平高低控制
系统中目录位于/sys/class/gpio_sw
以下示例为 扩展引脚PC7、PC12的配置
增加或删减注意修改gpio_num的值
Copy &soc {
gpio_para {
gpio_num = <2>;
gpio_pin_1 = <&pio PC 7 GPIO_ACTIVE_HIGH>;
gpio_pin_2 = <&pio PC 12 GPIO_ACTIVE_HIGH>;
status = "okay";
};
};
gpio-leds
gpio-leds 是LINUX内核自带的GPIO控制驱动,可实现丰富的控制方式
系统中目录位于/sys/class/leds
以下示例为 系统运行指示灯配置,实现心跳闪烁功能
Copy /{
gpio-leds {
compatible = "gpio-leds";
status = "okay";
sys_led {
label="sys_led";
gpio = <&pio PI 16 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
};
};
GPIO按键
Copy /{
gpio-keys {
compatible = "gpio-keys";
status = "okay";
autorepeat;
power {
label = "Power Key";
linux,code = <KEY_POWER>;
gpio = <&pio PC 2 GPIO_ACTIVE_LOW>; /* PC7 */
wakeup-source;
debounce-interval = <100>;
};
};
};