2013年4月15日 星期一

GPIO_UGLY for Cubieboard

快速認識 Cubieboard 後,我們知道 Cubieboard 背面有 96 支擴充針腳,我們可以利用這些 GPIO 針腳連接各種電子零件,譬如 LED、開關、馬達、光敏電阻、溫度感測器等等,藉以擴充 Cubieboard 的功能,製作各種電子專題。可惜的是,目前 Cubieboard 的 Linux 作業系統,其提供的 Kernel 大部份都還沒支援 GPIO 控制(官方比較新版的 Kernel 似乎已經有 GPIO 的 kernel module,不過我還沒試),所以如果你想使用 GPIO 針腳,也許可以試試 GPIO_UGLY 這個 Kernel module。

安裝

首先,請下載這兩個檔案:

kernel_a10_aufs.img 是給 Cubieboard 用的 Linux Kernel,我已經把 GPIO_UGLY 這個 Kernel module 編譯進去,適用於使用 berryboot 刷機的系統。Kernel 的版本是 3.4.24,我用 berryboot-cubieboard-beta6 測試過,可以正常運作。

下載後,把 SD Card 插到電腦 USB Port,然後把兩個檔案複製到 SD Card 覆蓋掉 berryboot 原來的版本,如果你擔心這個動作失敗從此開不了機,那麼可以把原始檔改個名字備份起來。完成後,把 SD Card 插回 Cubieboard,然後上電,開機。

image

使用說明

更新好 Kernel 後,就可以開始使用 GPIO 針腳了。

首先,先看看可以用的 GPIO 針腳有哪些:

    $ ls /sys/devices/virtual/misc/sun4i-gpio/pin

看到的結果應該會是:

image

算一算,總共有 67 支針腳可用。雖說有 96 支針腳,但其實有很多針腳是 PWR, GND 等電源針腳,還有一些針腳不能用,可能有特殊用途吧。

接著,我們選一支針腳來玩,但是要怎麼知道針腳的對應關係呢?方法是查 Cubieboard Expansion ports,總共有兩張對應表,一張是靠近 SATA 介面的兩排針腳的對應表,另一張是介於 Ethernet port 與 USB port 之間的兩排針腳的對應表。

以 SATA 介面的兩排針腳的對應表為例:

image

查表後,可知 Pin 1 是 PD0,而 Pin 2 是 GND:

image

好,PD0,就是你了,出列吧,誰叫你要排最前面啊。^o^

現在,在 PD0 上接一顆 LED,LED 接法是長腳接 PD0,短腳接 GND。

image

image

然後以底下的指令控制 LED 的明滅:

    $ echo 1 > /sys/devices/virtual/misc/sun4i-gpio/pin/pd0
    $ echo 0 > /sys/devices/virtual/misc/sun4i-gpio/pin/pd0

耶!完成囉!

也可以寫個簡單的 Shell Script 控制 LED 的明滅,例如底下的 blink.sh:

以 sudo ./blink.sh 執行後,接在 PD0 的 LED 燈就會亮一下,滅一下,不斷地循環。

參考資料

0 意見: