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