使用ti am437x-gp-evm的内核和设备树文件,可以在ricoboard上正常启动,但是测试/sys/class/gpio/出现问题?
时间:10-02
整理:3721RD
点击:
如题所示,我通过ti的sdk包,编译生成了am437x-gp-evm的内核文件zImage和设备树文件,但是我通无法控制ricoboard引脚高低电平。测试如下:
echo 13 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio13/direction
echo 1 > /sys/class/gpio/gpio13/value
echo 0 > /sys/class/gpio/gpio13/value
该引脚的电平既没有变高也没有变低,这是什么问题呢?
是内核的问题或者是设备树的问题呢?
并且在/dev/目录下也没有串口ttyO0这个节点,
是不是设备树的问题啊?
需要先挂载debug内容,命令如下:
由于gpio5的寄存器地址是:
综合以上的debug信息可以知道gpio5-0~gpio5-31映射到了编号128~159这个范围,所以进行
echo的时候,应该echo 128+6=134
顺便再次看下debug信息
多出来了134号引脚。
我写了一个脚本gpio.sh
echo 13 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio13/direction
echo 1 > /sys/class/gpio/gpio13/value
echo 0 > /sys/class/gpio/gpio13/value
该引脚的电平既没有变高也没有变低,这是什么问题呢?
是内核的问题或者是设备树的问题呢?
并且在/dev/目录下也没有串口ttyO0这个节点,
是不是设备树的问题啊?
通过google,发现了解决这个问题的方法(主要感谢ti e2e社区):原帖链接AM437x-gp-evm gpio numbering
我的解决办法:(我想控制gpio5_6,也就是米尔ricoboard的J10-11)
要想执行如下命令,
需要先挂载debug内容,命令如下:
- mount -t debugfs debugfs /sys/kernel/debug
由于gpio5的寄存器地址是:
综合以上的debug信息可以知道gpio5-0~gpio5-31映射到了编号128~159这个范围,所以进行
echo的时候,应该echo 128+6=134
- echo 134 > /sys/class/gpio/export
顺便再次看下debug信息
多出来了134号引脚。
我写了一个脚本gpio.sh
- #!/bin/ash
-
- PIN=$1
-
- echo $PIN > /sys/class/gpio/export
- echo out > /sys/class/gpio/gpio$PIN/direction
- echo 1 > /sys/class/gpio/gpio$PIN/value
- sh gpio.sh 134