2021年8月20日 星期五

當要 export GPIO, 或是使用 gpio_request 遇到 write error: Device or resource busy 的解決方法

 當使用  echo 0 > /sys/class/gpio/export
kernel卻拋出 -sh: echo: write error: Device or resource busy

這表示此GPIO正被某個driver占用,因此你沒辦法申請這個GPIO來使用
而這個問題的解決方法,只能找出是哪個driver code, 做完 gpio_request()之後 卻沒有做 gpio_free()的地方

另外可以使用下面指令來查看那些gpio被占用

cat /sys/kernel/debug/gpio

=======================================================

另外下面記錄一些gpio操作的指令

第一步可以先ls /sys/class/gpio,有的可以從這邊看到gpio的base值 

(例如base=268, gpio0在下面的操作就要echo 268+0, gpio10就會是 268+10)

1. request gpio
echo 0 > /sys/class/gpio/export

2. check dicrection value
cat /sys/class/gpio/gpio0/direction

3. change direction
echo out > /sys/class/gpio/gpio0/direction

4. check output value
cat /sys/class/gpio/gpio0/value

5. change output value to high
echo 1 > /sys/class/gpio/gpio0/value

6. free the gpio
echo 0 > /sys/class/gpio/unexport




沒有留言:

張貼留言