SAMA5D3 Xplained(以下SAX)を購入したときに、LEDの点滅を行いました。SAXのLEDはLED制御クラスのデバイス・ドライバを使用しています。今回は新しく購入したArduinoシールドのLEDをGPIO経由で制御しました。
LEDとの接続
LEDにはJ18ヘッダの”7”ピンを接続しました。接続はLEDのアノードです。世代的にはICのピンはカソードに接続したいところですが、アノードしか基板から出ていないので仕方有りません。
SAX J18ヘッダの”7”ピンは、ユーザー・マニュアルによればPC5です。以下の図は、SAX ユーザー・マニュアルからの引用です。
GPIOの準備
GPIO PC5ピンを使うには準備が必要です。
まず、/sys/class/gpioに移動します。ディレクトリの中はこんな感じです。
root@sama5d3-xplained:/sys/class/gpio# ls
export gpiochip0 gpiochip128 gpiochip32 gpiochip64 gpiochip96 unexport
ここにあるのは全て補助デバイスと補助ディレクトリです。PC5を使うには、PC5に対応したディレクトリを作らなければなりません。
PC5対応ディレクトリを作るには、exportファイルを使います。このファイルは指定されたGPIOビットを有効にして制御可能にする特殊ファイルです。具体的にはGPIOビットの通算番号を与えることで、そのビットが利用可能になります。
PC5はPORT Cの5番ピンです。PORT Cは3番目のポートであり、通算番号のオフセットとして64を持っています。そこで、PC5の通算番号は64+5=69となります。早速69をexportしてみましょう。
root@sama5d3-xplained:/sys/class/gpio# ls
export gpiochip0 gpiochip128 gpiochip32 gpiochip64 gpiochip96 unexport
root@sama5d3-xplained:/sys/class/gpio# echo 69 > export
root@sama5d3-xplained:/sys/class/gpio# ls
export gpiochip128 gpiochip64 pioC5
gpiochip0 gpiochip32 gpiochip96 unexport
root@sama5d3-xplained:/sys/class/gpio#
pioC5ディレクトリが現れました。中に入って内容を見てみます。
root@sama5d3-xplained:/sys/class/gpio# cd pioC5
root@sama5d3-xplained:/sys/class/gpio/pioC5# ls
active_low device direction edge power subsystem uevent value
いくつかの機能ファイルが作られています。このうち今回使うのはdirectionとvalueです。directionにin/outを書き込むと、ピンが入力/出力になります。
root@sama5d3-xplained:/sys/class/gpio/pioC5# cat direction
in
root@sama5d3-xplained:/sys/class/gpio/pioC5# echo out > direction
root@sama5d3-xplained:/sys/class/gpio/pioC5# cat direction
out
これで準備完了です。あとは、valueに値を書き込めばLEDが点灯・消灯します。今回は1で点灯、0で消灯です。
root@sama5d3-xplained:/sys/class/gpio/pioC5# echo 1 > value
root@sama5d3-xplained:/sys/class/gpio/pioC5# echo 0 > value