GPIO 操作方式有三种,分别如下:
1、如果要手动检查或操作 GPIO,需要进入 linux shell 后手动操作设备文件。
以操作 GPIO_F1(5x8+1=41)为例,控制该 GPIO 为输出,并输出 0。
OpenBMC 中 GPIO 序号基数为 816(/sys/class/gpio/gpiochip816),要操作
GPIO_F1(41)时需要使用的序号为 857(
816+41)。
默认未操作过的 GPIO 在系统下不可见,/sys/class/gpio 下无 gpio857。
1)启用 GPIO:
echo 857 > /sys/class/gpio/export
2)修改 GPIO 方向为输出
echo out > /sys/class/gpio/gpio857/direction
3)修改 GPIO 输出值
echo 0 > /sys/class/gpio/gpio857/value
2、通过devmem操作
读值:
devmem 0x1e780080
devmem 0x1e780084
写值:先改output再改value
devmem 0x1e780084 w 0x00080000
devmem 0x1e780080 w 0x00D20000
GPIO地址可以参考ast2600的datasheet
Base Address of GPIO = 0x1E78 0000
Register Address of GPIO = (Base Address of GPIO) + Offset
3、使用gpiotool操作
gpiodetect、gpiofind、gpioget、gpioinfo、gpiomon、gpioset
使用gpiodetect可以获取gpio chip列表
使用gpioget获取当前值
gpioinfo可以列举所以chip和line name