先说结论,利用debugfs进行操作
1. 挂载及进入挂载的路径
mount -t debugfs debug /proc/sys/debug
cd /proc/sys/debug/sunxi_pinctrl
2. ls看一下
# ls -l
-rw-rw-r-- 1 root root 0 Jan 1 1970 data
-rw-rw-r-- 1 root root 0 Jan 1 1970 dlevel
-rw-rw-r-- 1 root root 0 Jan 1 1970 function
-rw-rw-r-- 1 root root 0 Jan 1 1970 platform
-rw-rw-r-- 1 root root 0 Jan 1 1970 pull
-rw-rw-r-- 1 root root 0 Jan 1 1970 sunxi_pin
-rw-rw-r-- 1 root root 0 Jan 1 1970 sunxi_pin_configure
节点介绍:
data // 引脚当前的电平状态(一般情况下,0为低电平,1为高电平)
但有些芯片配置,起来时会将0和1所代表的的状态进行改变。
dlevel // 引脚的驱动等级(结合芯片手册,A40i/T3pro驱动等级为0,1,2,3)
function // 引脚的功能配置(结合芯片手册, 0为输入\ 1位输出 \ 其他功能复用)
platform // 当前平台
pull // 上下拉功能配置(此处的上下拉指引脚内部的上下拉配置,不是
指输出的高低电平)
sunxi_pin // 指定引脚
sunxi_pin_configure // 引脚所有的配置信息
3. 以PH6为例:要修改PH6时, 先指定PH6脚,写到sunxi_pin里
echo PH6 > sunxi_pin
注:此时操作的就是PH6,每次只能单独操作某一个IO口。
引脚的选定具有时效性,过一会当前选定引脚就会变为非选定状态。
但是已经设置的引脚状态不会被改变。如果需要重新操作该引脚,就需要重新选定。
4. 如要修改PH6对应的参数,则将想要的参数写到对应的节点
以下是一些操作示例,以PH6为例:
#======================================================
echo PH6 > sunxi_pin // 标识选定PH6引脚
cat sunxi_pin // 查询当前选定引脚
查询结果: PH6
#======================================================
echo PH6 1 > data // 配置引脚输出高电平
echo PH6 0 > data // 配置引脚输出低电平
cat data // 查询当前引脚电平状态
查询结果: pin[PH6] data: 0
pin[PH6] data: 1
#======================================================
echo PH6 1 > pull // 表示拉高(指内部上拉)
cat pull // 查询当前上下拉状态
查询结果: pin[PH6] pull: 0
pin[PH6] pull: 1
#======================================================
echo PH6 2 > dlevel // 表示输出驱动能力改为2
cat dlevel // 查询输出驱动能力
查询结果: pin[PH6] dlevel: 0
pin[PH6] dlevel: 1
pin[PH6] dlevel: 2
pin[PH6] dlevel: 3
#======================================================
echo PH6 0 > function // 配置引脚功能为输入
echo PH6 1 > function // 配置引脚功能为输出
echo PH6 2 > function // 配置引脚功能为3所代表的复用功能(需要查询芯片手册)
cat function // 查询选定引脚功能值
查询结果: pin[PH6] funciton: 0
pin[PH6] funciton: 1
pin[PH6] funciton: 2
其他
#======================================================
cat platform // 查询当前芯片平台
查询结果:SUN8IW50P1
#======================================================
cat sunxi_pin_configure // 查询当前选定引脚所有配置信息
查询结果: pin[PH6] funciton: 1
pin[PH6] data: 0
pin[PH6] dlevel: 3
pin[PH6] pull: 1
#======================================================