ブログ

Armadillo-410: ソフトウェアからUSBの電源のON/OFFを行う(Linux 2.6.26系の場合)

at_ito
2016年12月4日 16時41分

USB機器を接続してシステムを構築する際に、連続動作を行うとまれに異常な状態が発生し、デバイスの再起動が必要になるケースがあります。 その際にUSB電源をON/OFFすることが解決策になりますので、その方法を紹介します。

参考)Armadillo-420/440の場合は、Armadillo-420/440:USB電源のON/OFFを簡易的に行う方法(Linux 2.6.26の場合)をご参考ください。

1. 概要

Armadillo-410 ハードウェアマニュアルに記載されている電源構成に記載されているUSB_PWRSELをユーザーランドから制御できるようLinuxカーネルを修正します。

2. Linuxカーネルの修正

添付のパッチ(ファイル名: linux-2.6.26-at27-usb-powersel.patch)をダウンロードし、以下のようにパッチを適用してください。

[atde ~/linux-2.6.x]$ patch -p1 < linux-2.6.26-at27-usb-powersel.patch

※: 上記のパッチは、Linux-2.6.26-at27用に作成しています。異なるバージョンをお使いの場合は、若干変更が必要になる可能性もあります。その際には、パッチではなく個別に修正してください。

パッチを適用後、Atmark Dist上でmakeを実行し、Linuxカーネルイメージを作成後、Armadilloに書きこんでください。

3. USB電源のON/OFFの実行

前述の手順で作成したLinuxカーネルで起動すると、/sys/class/gpio/USB_PWRSEL/valueというファイルが作成されます。このファイルを操作することでUSB電源のON/OFFが可能です。

例として、コマンド実行例を以下に示します。(//以降の文字列はコメントです)

[armadillo]# cd /sys/class/gpio/USB_PWREN
[armadillo]# cat value                      //デフォルト値の確認
0                                           //USB電源はON
[armadillo]# echo 1 > value                 //USB電源をOFFに設定
[armadillo]# cat value                      //USB電源の状態の確認
1                                           //USB電源はOFF