2017-05-06 74 views
0

我想寫一個輸出到GPIO引腳1秒的腳本。 我發現最好的方法是通過GPIO sysfs命令,但我一直隨機地收到「Segmentation Fault」。這主要發生在設定方向時。在bash腳本和終端中運行時也會發生這種情況。分割錯誤sysfs gpio linux odroid

sudo echo 227 > /sys/class/gpio/export 
sudo chmod 777 /sys/class/gpio/gpio227/* 
sudo echo "out" > /sys/class/gpio/gpio227/direction # sometimes segmentation fault 
sudo echo "1" > /sys/class/gpio/gpio227/value 
# wait a bit 
sudo echo "out" > /sys/class/gpio/gpio227/direction # almost always segmentation fault 
sudo echo "0" > /sys/class/gpio/gpio227/value 

我在ODROID-XU4與Ubuntu MATE 1.12.1並用的ARMv7處理器REV 3(v7l)運行此。我也在運行無密碼的sudo。

有關爲什麼發生這種情況以及如何預防它的任何建議?

編輯:我想我最初上ODROID-XU3運行,但它實際上是一個XU4。通常當用戶空間程序讀取或寫入一個非法存儲器地址發生

+0

這是什麼'sudo chmod 777/sys/class/gpio/gpio227/*'for ?!除此之外,請閱讀文檔如何與用戶空間中的GPIO子系統進行通信,特別是使用**低**和**高**代替單獨的命令。最重要的是,您是否確切地知道您在切換GPIO時所做的工作? – 0andriy

+0

'chmod 777'用於爲gpio227文件啓用寫入權限,因爲它們不以它開始。沒有它,當運行任何回聲方向或價值時,我會收到權限錯誤。我不必使用'777',但它更快。我會嘗試運行**低**和**高**,看看是否有效。 – user2449725

+0

看起來您的gpio 227未導出爲將其配置爲GPO,這就是您沒有寫入權限的原因。在嘗試覆蓋它的屬性之前,檢查硬件引腳的重要性 –

回答

0

測試一些其他的方法後設置GPIO值,我發現其他框架似乎工作正常,沒有分段錯誤。

總之,使用回波寫入到GPIO引腳是分割故障源。我不知道爲什麼。

我的工作是圍繞要麼使用GPIO模塊從節點或使用wiringPi爲Odroid因爲這些似乎都工作得很好。

發佈這個讓人們知道。

1

分段故障。這種情況發生在一個簡單且經過良好測試的程序(如回聲)上並不常見。

它可以由內核/ GPIO驅動是越野車,或者甚至硬件損壞造成的。我會建議直接運行命令爲根,以確保它是回聲,這是造成分段錯誤,然後使用strace的弄清楚,如果分割故障在同一地點總是發生......