ATMEL SAMA5D3 Xplained

思うところあってLinuxの組み込み応用を学んでみたくなったので、学習用の教材としてAtmelのSAMA5D3 Xplainedボードを購入しました。

低価格のボードですが、円安のためdigikeyで1万円チョイかかりました。

IMGP2107

スペック

ここ数年よく見かける「Linuxが移植されたARM v7a SoC マイコンボード」の一つです。この手のボードはいろいろな目的で開発されていますが、SAMA5D3 XplainedはAtmelのSoCマイコンの販売促進用に開発されたようです。ボードのスペックは以下のような感じです。

  • SAMA5D36 SoCマイコン
    • Cortex-A5 536MHz シングルCPU
    • I 32kB/D 32kBキャッシュ
    • VFPU搭載。NEON無し
  • 256MB DDR2
  • 256MB NAND Flash
  • 3x USBコネクタ(2Host + 1Device)
  • 1x SD/eMMCスロット。microSDのパターンはあるが、スロットは未実装
  • Arduino R3シールド互換拡張ヘッダー
  • 2x Ethernetコネクタ
  • 2x ユーザーLED
  • 1x ユーザー・プッシュボタン・スイッチ

中核となるSAMA5D36は最近のSoCマイコンらしく何でもかんでも内蔵しており、周辺チップが非常に少ないボードになっています。搭載されている周辺ICとしては

  • 電源コンパニオン・チップACT8865
  • NAND Flash
  • SDRAM x2
  • Ethernet Phy x2
  • USB Hub

くらいのものです。そのほか回路図上には

  • SPI Flash
  • 1 wire EEPROM x2

を見ることが出来ますが、基板には実装されていません。

通電

同梱のマイクロUSBケーブルをつかってPCと接続すると、USB電源で起動します。工場出荷状態ではLinuxがすでにNAND Flashに焼かれていますので、特に苦も無く起動します。Ubuntuの場合は /dev/ttyACMx、Windowsの場合はCOMxを通じて端末を接続できますので、kermitなりTeratermで接続してください。通信回線は115200baud, 8bit, 1 stop bit, non-parityです。

ログインアカウントはrootで、パスワードはありません。

image

この状態で、基板上の青色LED(D2)が2回光って一回休むという、少し変った点滅をしています(レールの継ぎ目が「ガタンガタン」と音を立てるテンポ)。

回路図上ではこのD2がユーザーLEDであり、隣の赤色LED(D3)が電源LED件ユーザーLEDです。各種ドキュメントをあさるとD3は電源投入と同時に点灯するはずですが、このような気配はみじんもありません。困ったものです。

LEDを操作する

SAMA5D3に搭載されているLinuxでは、LEDを操作するには/sys/class/leds/d2および/sys/class/leds/d3を使用します。

root@sama5d3_xplained:~# cd /sys/class/leds/d3

root@sama5d3_xplained:/sys/class/leds/d3# ls
brightness  device  max_brightness  power  subsystem  trigger  uevent

/sys/class/leds/d3はsysfsとして実装されたLEDの操作用デバイス・ファイルです。いくつかのファイルとディレクトリがありますがまず扱うべきはbrightnessです。このファイルに1を書き込むとLEDが点灯し、0を書き込むとLEDが消灯します。

echo 1 > brightness

echo 0> brightness

次に電源投入時から点滅しているD2を見てみましょう。D2を点滅させているのはタスクでは無く、D2自身の設定です。

root@sama5d3_xplained:/sys/class/leds/d3# cd /sys/class/leds/d2

root@sama5d3_xplained:/sys/class/leds/d2# cat trigger
none nand-disk timer [heartbeat] gpio mmc0 mmc1

/sys/class/leds/LED名/triggerは、LEDを点灯させる条件を指定します。catで内容を表示すると、可能な選択肢の一覧が表示され、そのうち現在選択中のものが[]でくるまれて表示されます。D2は[heartbeat]となっており、つまり電源投入時からのLEDの点滅パターンは「心臓の音」のつもりなのでした。

点滅は以下のコマンドを実行すると停止します。

echo none > trigger

まとめ

当初LEDは/sys/class/gpioで操作するものだと思っていたため、思いの外時間が掛かりました。ファイルシステム上にマッピングしたデバイス操作は、Unixらしい重々しい統一感を感じさせます。

参考リンク

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください