Shell脚本学习笔记3——控制GPIO
在我參與維護的一個項目中,硬件上有一處設計失誤:本應該短接到地的一個GPIO沒有短接到地,導致某一個功能不能實現,正式出貨的時候會進行改版。
但目前還處于測試階段,只需要先把這個功能實現出來,方案有兩個,一是硬件上飛線去實現,而是通過軟件去拉低這個GPIO。鑒于硬件飛線比較麻煩,所以我們選擇軟件上寫一個腳本來實現。
我們可以先通過命令行來控制某一個GPIO(我要控制的GPIO編號是476)驗證一下,如果沒有問題,我們再將這些命令寫到腳本里,再增加一些邏輯判斷就可以。
1、首先我們來看看/sys/class/gpio/這個目錄下有什么:
aplex@aplex:~$ ls /sys/class/gpio/ export unexport
/sys/class/gpio/這個目錄是控制gpio的,而/sys/class/gpio/export文件是用于通知系統需要導出控制的GPIO引腳編號,
/sys/class/gpio/unexport文件是用于通知系統取消導出控制的GPIO引腳編號
2、既然我們要控制某一個gpio,那么就需要告訴系統需要導出控制的gpio是哪個,并且需要超級用戶的權限才可以(經過驗證,sudo獲取臨時的權限并不能執行,需要用su才可以):
aplex@aplex:~$ su Password: root@aplex:/home/aplex# echo 476 > /sys/class/gpio/export
一般情況下,執行了以上指令后,就可以在/sys/class/gpio/目錄下找到一個gpio476的文件夾,因為我現在是在虛擬機上操作,所以并沒有這個文件出現,但是有在真實環境下驗證過。
3、需要設置一下gpio的方向(輸入或者輸出),因為我要拉低這個引腳的電平所以必須設置為輸出:
root@aplex:/home/aplex# echo out > /sys/class/gpio/gpio476/direction
4、設置gpio的電平狀態,這里設置為低電平:
root@aplex:/home/aplex# echo 0 > /sys/class/gpio/gpio476/value
5、執行以上命令后,退出root用戶,切換到普通用戶:
root@aplex:/home/aplex# exit
經過以上操作后,用萬用表測量該引腳的電平,已經被拉低了。
那么接下來的工作就是寫腳本了。腳本的內容如下:
#!/bin/bash ls /sys/class/gpio if [ -d /sys/class/gpio/gpio476 ] then echo out > /sys/class/gpio/gpio476/direction echo 0 > /sys/class/gpio/gpio476/value else echo 476 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio476/direction echo 0 > /sys/class/gpio/gpio476/value fi
在執行這個腳本之前需要給這個腳本執行的權限,假設這個腳本的名稱保存為ioCtrlLow.sh:
aplex@aplex:~$ sudo chmod 777 ioCtrlLow.sh
接下來就是執行:
aplex@aplex:~$ sudo ./ioCtrlLow.sh
總結
以上是生活随笔為你收集整理的Shell脚本学习笔记3——控制GPIO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【百宝箱】CLion: Cound no
- 下一篇: window.hostory(浏览器的历