SOC平台各类GPIO构建原理是大道一统的,在各个诸如状态、数据、中断和屏蔽等寄存器具体含义用法,有少许差异。玩好RK的GPIO,需要先理解这类通用接口的框架。
介绍RK3568的GPIO,认为讲2类重要地址和记录几种编程实践方法即可。
一、2类地址
RK3568的MUX复用配置地址和通用寄存器类地址。
1、MUX功能复用配置类寄存器,基址:0xFDC20000(GPIO0 Bank)、0xFDC60000(GPIO1-GPIO4 Banks)。
2、GPIO通用类数据、状态、中断、MASK类寄存器,基址:0xFDD60000(GPIO0)、0x0xFE740000(GPIO1)、0xFE750000(GPIO2)、0xFE760000(GPIO3)、0xFE770000(GPIO4)。
二、几种操作方式
1、io tool
io -4 -w 0xFDD6000C 0xffff4000
io -4 -w 0xFDD60004 0xffff4081
io -4 -r 0xFDD6000C
io也可以单字节操作,参考io -h
2、用户态类调用
内核注册了gpio接口操作命令行,
查看以注册gpio端口:cat /sys/kernel/debug/gpio;
申请和释放:echo n > /sys/class/gpio/export,echo n > /sys/class/gpio/unexport;
3、uboot或kernel编程
裸机直接对寄存器物理地址进行读写操作,如writel和readl;
上系统接口的话,有标准的gpio接口,dts和of_xxx那一套;