我有一個linux嵌入式系統。我可以用shell命令管理I/O。這個命令改變了GPIO #48的狀態。
/sys/class/gpio# echo 48 > /sys/class/gpio/export
/sys/class/gpio# echo out > /sys/class/gpio/gpio48/direction
/sys/class/gpio# echo high > /sys/class/gpio/gpio48/direction
/sys/class/gpio# echo low > /sys/class/gpio/gpio48/direction
我怎樣才能有效地管理Goland的I/O?是否可以不通過 shell 命令來管理它們?
uj5u.com熱心網友回復:
在Linux上,GPIO介面是通過sys檔案系統在/sys/class/gpio層次中匯出的,所以在你的shell例子中,你只需要將資料寫入這些檔案中,類似于:
// 要匯出48號引腳(與echo 48 > /sys/class/gpio/export相同)
ioutil.WriteFile("/sys/class/gpio/export", []byte("48"), 0666)
...
根據你的平臺和需求,你可能要考慮一些預先存在的軟體包(例如,用于 Raspberry Pi 的 go-rpio 或 periph,它更通用,支持的內容遠遠超過 GPIO)。
如果你想要比撰寫sysfs檔案更有效/更快速的解決方案,你也可以考慮記憶體映射的GPIO訪問,你基本上可以通過內核給它的記憶體范圍直接訪問GPIO外圍。這需要對你的目標平臺有更深的了解(了解其GPIO暫存器和它們的映射)。您可以在本博文中詳細了解該方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313745.html
標籤:
