Armadillo-400シリーズでUSBカメラを接続し、
静止画を撮りたい場合の方法をご紹介します。
Armadillo-410/440の場合での例です。
ブログ
-
at_mangetsu
-
at_mangetsu
USBハードディスクを使いたい場合などで、 Armadillo上でNTFSファイルシステムを使う方法をご紹介します。
機種依存がないため、 以下、ATDEとatmark-distの準備が済んでいる前提にて手順を紹介します。 -
at_takuya.sasaki
Armadilloシリーズのオプションである無線LANモジュール AWL13をユーザランドコンフィギュレーションで有効化 したにも関わらず、ドライバのロードが失敗することがあります。
以下はその際のログメッセージです。 -
at_ito
コンソールを標準のシリアルインターフェース以外に変更する際など、起動中に/etc/inittabを変更し、動作を確認したい場合があるかと思います。
initはLinuxカーネル初期化終了後に必ず最初に起動されるプロセスです。従いまして、/etc/inittabを変更するだけでは、設定変更をすぐに変更することができません。
init起動中に/etc/inittabファイルの変更を反映させるには、以下のコマンドを実行してください。 -
at_ito
特定プロセスのCPU使用率が変化した場合に、シェルスクリプトで何かの処理を行いたいなどの場合があるかと思います。そのような場合に使える、psコマンドで特定プロセスのCPU使用率を調べる方法を紹介します。
-
at_mangetsu
Armadilloの起動直後から時刻を扱いたい場合などにおいて、 タイムゾーンのJSTへの切り替えを止めてUTCのまま動作させたい場合の方法を紹介します。 ※以下、Armadillo-840の場合の例です。
-
at_kazutaka.bito
USBデバイスが接続されたときのドライバの挙動にはVendorID、ProductIDが使用さます。
代表的なUSBデバイスについては、VendorID、ProductIDはドライバに登録済みですが、 登録されていないUSBデバイスを使う場合は、VendorID、ProductIDを確認して、登録する必要があります。
Armadillo上でUSBデバイスのVendorID、ProductIDを確認する場合は、USBデバイスを接続した状態で /proc/bus/usb/devices ファイルで確認できます。 -
at_ito
カーネルパニック発生時に自動的に再起動する方法等のテストを行う際に、カーネルパニックを簡単に発生させる方法を紹介します。
-
at_takuya.sasaki
ATDEをVmware Workstationから起動すると、エラーメッセージが表示されて起動できない場合があります。
この場合、WindowsのUAC(User Account Control)による制限である可能性が高いです。 UACを無効化するか、VMware Workstationを起動する際、VMwareのアイコンを右クリック→「管理者として実行」を選択してみてください。 -
at_ito
アプリケーションやドライバーの作りによりカーネルパニックが発生し、意図通りにソフトウェアが動作しない場合があるかと思います。その際、すでにフィールドに出している製品等ですと復帰ができず困る場合もあるかと思います。
そのような場合の対策として、カーネルパニックが発生すると、自動的に再起動する機能がありますので紹介します。 -
at_kazutaka.bito
Armadillo-400シリーズの標準カーネルでは、タクトスイッチ、LCD拡張ボードのスイッチ(Armadillo420を除く)のボタン入力が実装されています。
ここでは、下記のようにGPIOを使ったボタン入力を追加してみます。 -
at_mangetsu
Armadillo-420上でPerl5を動かしてみました。
-
at_kazutaka.bito
Armadillo-400シリーズでWebページ上で表とグラフを表示するサンプルデモを作ってみました。
-
at_ito
Aramdilloの開発環境であるATDEを使用する場合には、VMware等の仮想マシンを動作させるためのソフトウェアが必要になります。VMwareは多数の製品があるため、ここではVMwareの選び方を簡単に説明します。
-
at_ito
Armadillo出荷時等にLinuxカーネルイメージ、ユーザーランドイメージを自動的に書き換える必要がある場合も多いかと思います。
ここではTeraTermマクロを使用して、Linuxカーネルイメージ、ユーザーランドイメージを書き換えるためのTeraTermマクロを紹介します。 -
at_kazutaka.bito
Armadillo-400シリーズでWebページ上で表を表示するサンプルデモを作ってみました。
-
at_kazutaka.bito
Armadillo-400シリーズハードウェアマニュアに記載されている 「i.MX257のSoftware Pad Control Register(SW_PAD_CTL)とDrive Voltage Select Group Control Register(SW_PAD_CTL_GRP_DVS)で、 出力電流(Std, High, Max)、スルーレート(Slow, Fast)、プルアップ/プルダウンを変更することができます。」 について、端子の出力電流の設定を実際にしてみました。
-
at_kazutaka.bito
用意するもの
- USB電源ケーブル
- USB電流電圧チェッカ
- USBバッテリ(PC、モバイルバッテリなど)
USBバッテリ--USB電源ケーブル--USB電流電圧チェッカ と接続する。
Armadillo-440開発セットで標準イメージで起動したとき 通常動作時の電圧(標準イメージ内のサンプルソフトfunctesterが動作中)
Armadillo-440開発セットで標準イメージで起動したとき 通常動作時の電流(標準イメージ内のサンプルソフトfunctesterが動作中)
Armadillo-440開発セットで標準イメージで起動したとき スリープ時の電圧(power-on suspend)
-
at_ito
ここでは、Linux上で.NET Framework互換の環境を実現するMonoを使用して、.NETアプリをArmadillo-440にて動かしてみます。
-
at_ito
Debianのデフォルトのエディタはnanoになっています。visudoコマンドや、gitコマンド等を使用した場合に、デフォルトのエディタが使われることがあります。nanoは単機能なコマンドなため、vimやemacs等の多機能なエディタに変更したい場合があるかと思います。 そのため、ここではATDE(Debian)のデフォルトのエディタを変更する方法を紹介します。
-
at_ito
テストを行う際に、自動的にコマンドを実行したり等、テストの自動化を行いたい場合があるかと思います。 今回は例として、シリアル通信ソフトウェアであるTera Termマクロを使って、起動テストを行う方法を紹介します。
-
at_ito
Atmark Dist等ダウンロードして展開しようとした場合に、エラーがでて正常に展開できない場合があるかと思います。その際に、ダウンロードしたファイルが壊れているかどうかを調べる方法について紹介します。
-
at_ito
Linuxカーネルのコンフィギュレーションを設定する場合に、 BACKLIGHT_LCD_SUPPORT等のシンボルはわかるものの、設定項目が どこにあるのかわからない時があるかと思います。 ここでは、「BACKLIGHT_LCD_SUPPORT」を元に設定項目が どこにあるのかを調べる方法を紹介します。
-
at_ito
Linuxにはteeというコマンドがあります。このコマンドは標準出力とファイルの両方へ出力することができます。ここではAtmark Distのmakeコマンド実行結果を例に、コマンド実行結果をファイルに保存しつつ、コンソールにも表示する方法を紹介します。
例えば、make.logファイルにコマンド結果を保存しつつ、コンソールにも表示するには、以下のようなコマンドになります。
[ATDE ~/atmark-dist]# make 2>&1 | tee make.log
ソースコードのビルド時にエラーを記録するときなどに便利ですので、ぜひ使用してみてください。
-
at_ito
製品化の際に、アプリケーションが動かなくなった場合などに再起動するためウォッチドッグタイマーを使用する場合があるかと思います。ここではウォッチドッグタイマーの使用方法について説明します。
ウォッチドッグタイマーにはハードウェアウォッチドッグタイマーと、ソフトウェアウォッチドッグタイマーがあります。
ハードウェアウォッチドッグタイマーはCPUのウォッチドッグタイマーの機能を使用しており、ブートローダー(Hermit-At)もしくは、Linuxカーネルで使用しています。そのため、ブートローダーやLinuxカーネルが正常に動作せず、ハードウェアウォッチドッグタイマーをキックできない場合にのみ自動的に再起動が行われます。そのため、アプリケーションが正常に動作しない場合等に使うことには向いていません。
ソフトウェアウォッチドッグタイマーは、Linuxカーネルが提供している機能です。アプリケーション等の死活監視を行う場合に使用することができます。製品化の際に、実装する場合はほぼソフトウェアウォッチドッグタイマーを使用する形になるかと思います。
そのため、ここではソフトウェアウォッチドッグタイマーを使用する方法を以下に紹介します。
-
at_ito
Atmark Distにはシリアル-イーサネット変換通信を行うためのseri2ethというアプリが入っています。ここではseri2ethの使用方法について説明します。
-
at_kazutaka.bito
Armadilloをインターネットに接続している状態で、グローバルIPアドレスは下記コマンドで確認できる。
[armadillo ~]# wget -q -O - ipcheck.ieserver.net
-
at_kazutaka.bito
Armadillo-440でGPIOをI2Cにするドライバ(i2c-gpio)を実際に動作させてみた。
1.I2CにするGPIOの選択
Armadillo-400シリーズハードウェアマニュアル5.3.6. CON9(拡張インターフェース1) - 「Armadillo-420/440」 の表5.16 CON9信号マルチプレクス - 「Armadillo-420/440」を参考に CON9_1(GPIO3_17)をSCL CON9_2(GPIO3_14)をSDA にすることにした。
-
at_ito
netflashコマンドでイメージをフラッシュ書いた後、正しく書かれたかチェックしたい場合があるかと思います。
ここでは、netflashコマンドで、正しくイメージが書かれたかどうかをチェックする機能について紹介します。
1. チェック方法
netflashには-Cオプションがあり、このオプションを付けることによって、指定されたイメージと同じイメージが、フラッシュにかかれているかどうかをチェックすることができます。
コマンド例としては、以下のようになります。
netflash -knubC -r /dev/flash/kernel linux.bin.gz
2. ベリファイ実行例
2.1. kernel領域に、linux-a400-1.08.bin.gzイメージを書き込む
以下のコマンドを実行して、kernel領域にlinux-a400-1.08.bin.gzイメージを 書き込みます。この際オプションに"-b"を付けて自動的に再起動しないように しておきます。
-
at_kazutaka.bito
ネットワーク経由でArmadillo-440の赤LEDを点灯->消灯するプログラムをCGIで作ってみた。
1.下記のようなプログラムredled.cを作成する。
redled.c -
at_kazutaka.bito
Armadillo-400シリーズハードウェアマニュアル3.2.2. 電源回路の構成 -「Armadillo-420/440」の 「Armadillo-420/440のUSBインターフェースからUSBデバイスに供給する電源は、 CON12(またはCON13)の電源入力VINと電源ICで生成される+5V電源のどちらかを選択することが可能です。」 より、USB電源の供給源を設定してみる。
USB電源の供給源が、電源入力(VIN)か、電源ICの5Vかは、Linuxカーネルのソースコード atmark-dist/linux-2.6.x/arch/arm/mach-mx25/board-armadillo400.h の80行目付近で下記のように指定されている。
-
at_kazutaka.bito
atmark-distにdiffコマンドは含まれていない。 Howto : Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法を参考に Armadilloでdiffコマンドを実行できるようにした。
1.DebianパッケージをATDEにダウンロードする
[atde ~]$ wget http://archive.debian.org/debian-archive/debian/pool/main/d/diffutils/diff_2.8.1-12_armel.deb [atde ~]$ ls diff_2.8.1-12_armel.deb
2.パッケージを展開する(本例では、~/temp-dirに展開)
-
at_takuya.sasaki
Armadillo-400シリーズで、Debianのrsh-clientパッケージをもってきて、とあるrsh-serverに対して任意のコマンドを実行しようとしたところ、connection timeoutとなりました。
ATDE3(Debian)から同様なことを実施したところ成功したので、rsh-server側の問題ではありません。
こういった場合、WireSharkなどを使うと便利です。
http://sourceforge.jp/projects/wireshark/実際にパケットをキャプチャすると、rsh-server側からArmadilloの1022および1023ポートに対して接続に来ていることがわかりました。このポートはArmadilloのiptableで弾いています。
よって、以下のようにArmadilloの1022、1023ポートを解放することで、解決できました。
-
at_ito
ATDEをVMware Player等(以降VMware)を使用していると、VMwareのウインドウにフォーカスが 移ってしまうとAlt+Tabでタスク切り替えをしようと思っても、ホストOSのタスクに切り替わらない。(ゲスト側でタスク切り替えすることになる) キーボードを使ってタスク切り替えをすることが多いので、これでは不便ということでVMwareのユニティモードを使い、ホストOSのウインドウとして、ATDEのアプリケーションを立ち上げる方法を紹介します。
-
at_kazutaka.bito
カーネル起動時にUSBのプローブが有効になっていると、 認識された順番にデバイスファイルの末尾の番号がつく。
例えば、Armadillo-IoT開発セットの場合、3Gモジュールには、ttyUSB[0-4]が割り当てられるが、 USBコネクタにUSB-シリアル変換ケーブルを挿入した状態で起動すると、 USB-シリアル変換ケーブル:ttyUSB0 3Gモジュール:ttyUSB[1-4] のように3Gモジュールのデバイスファイルの番号がずれる。 補足)本例では、カーネルコンフィギュレーションのUSBサポートの機能で、シリアル変換のサポートを有効にしているものとする。
このような番号ずれを防ぐ方法としては、delayed_probeという方法がある。
本例について、USBコネクタにさしたデバイスを、3Gモジュールより後で認識させる場合は、 make menuconfigでカーネルコンフィギュレーションを
-
at_takuya.sasaki
ATDE3の VMware仮想イメージファイルは、Oracle社のVirtual BOXでも起動することが可能です。
1. VirtualBoxのインストール
インストール方法は省略いたします。このブログではバージョン 4.3.12 を使用しています。
2. ATDE3イメージの展開
任意のフォルダに弊社Webサイトで公開しているATDE3の仮想イメージファイルを展開してください。
3. VirtualBoxを起動します
4. [新規(N)]を押して、[名前](任意)を入力し、[タイプ][バージョン]を選択してください。
-
at_ito
プログラムを作成した際に、依存しているライブラリのライセンスを確認する必要があると思います。その際に、リンクしているライブラリのソースコードを取得する必要があるため、指定のバイナリが使用しているライブラリのDebianパッケージ名、Debianソースパッケージ名を調べるためのシェルスクリプトを作ってみました。
以下のシェルスクリプトを作成し、ATDEで動かしてみてください。
-
at_ito
DebianパッケージをAtmark Distで作ったユーザーランドに追加する際に、バイナリを実行しても必要なファイルが見つからずに正常に起動しないことがあるかと思います。その際に、何が必要なファイルかを調べる方法を紹介します。
バイナリ実行時に必要なファイルは、open()システムコールで開かれます。そのため、バイナリ実行時にどのシステムコールが使用されたかを調べるstraceを使うことで、どのファイルをopen()しようとしたかを調べることができます。このstraceはLinuxのデバッグユーティリティであり、引数に渡されたバイナリが使用するシステムコールを見ることができます。
Atmark Distのコンフィギュレーションで選択できるstraceでは、ビルド時にエラーが発生するため、Debian Packagesからstraceのバイナリを持ってくる必要があります。
以下のページを参考に、straceをユーザーランドに追加してください。
-
at_ito
Armadillo-810 製品マニュアルでは、/sys/class/video4linux/videoN/name(Nは数字が入ります)でどのデバイスファイルがどのカメラに対応するかを確認する方法が記載されています。この方法の場合、複数のカメラが接続されているとコマンドを複数回打つ必要があり面倒です。そのため、2014年11月の製品アップデートで追加されたv4l-utilsを使って、どのデバイスファイルが、どのカメラに対応しているか調べる方法を紹介します。
例として、Armadillo-810 カメラモデル開発セット(標準イメージ)の場合で説明します。 起動時には、以下のように/dev/video0と/dev/video1が作成されています。
[root@armadillo810-0 (ttySC2) ~]# ls -1 /dev/video* /dev/video0 /dev/video1
v4l-utilsに含まれるv4l2-ctlコマンドを、以下のように実行することで、どのデバイスファイルが、どのカメラに対応しているか調べることができます。
-
at_kazutaka.bito
1.ATDEを起動して、MicroSDカードを接続してアンマウントする
SDカードを接続すると自動的にマウントされる
[atde ~]$ mount /dev/sdb1 on /media/略
ので、下記コマンドでアンマウントする。
[atde ~]$ sudo umount /dev/sdb1
2.fdiskコマンドでMicroSDカードのパーティションを構成
-
at_kazutaka.bito
準備)
Armadilloで、転送したいファイルを /home/www-dataに置く。下記例において、
- ArmadilloのIPアドレス:192.168.10.10
- 転送したいファイル:log10.txt
とする。
方法1:htmlを使う
<a href="http://192.168.10.10/log10.txt" download="log10.txt"> Armadillo log </a> </br>
という内容のhtmlファイルを作る。
htmlファイルをダブルクリックするとWebブラウザが開いて。 Armadillo log という文字が表示される。
当方が使ったWebブラウザはFirefox。
Armadillo logの文字を右クリックして、 名前を付けてリンク先を保存 すると、log10.txtがダウンロードされる。
-
at_kazutaka.bito
Armadilloを標準イメージで起動すると、 /etc/network/interfaces の
auto lo eth0 iface eth0 inet dhcp
に基づきDHCPでアドレスを取得するようにネットワーク設定される。
上記の設定でArmadilloを起動後、固定IPアドレスに変更するには、下記のようにifconfigコマンドで設定できる。
[armadillo ~]# ifconfig eth0 192.168.10.0 up
ただし、長時間たつとIPアドレスが変更されることがある。
これは、DHCPクライアントのプロセス
- atmark-distを使用している場合、udhcpc
- Debianを使用している場合、dhclient3
が動作していることが要因のようなので、DHCPクライアントを止める。
・恒久的な方法:DHCPクライアント動作させない
-
at_takuya.sasaki
Armadillo-400シリーズのドライバにはLEDクラスが用意されています。
https://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_software_manual_ja-1.9.1/ch09.html#sec-led-classArmadillo-420/440に標準で用意されている red / yellow / green のLED以外に、 新しいLEDを追加する際の手順です。
今回は、例としてCON9_28ピンをLEDクラスに割り当てます。 また諸事情により、kernel2.6.35に対する修正方法を記載していますが、2.6.26でも大きな違いはないと思います。
まずは以下のソースを編集します。
-
at_takuya.sasaki
Armadillo-400シリーズのSoCであるi.MX257には、CANコントローラは2つ(CAN1、CAN2)あります。 しかし、現在のカーネルソースでは、CON14のCAN2のみを有効にできるようになっています。
CON11にマルチプレクサされているCAN1を有効化する手順を紹介します。
(注意)
こちらはハードウェアを接続しての検証はしておりません。またCAN2を有効化している環境を想定しています。CAN2を有効化するには以下を参照してください。
https://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_software_manual_ja-1.9.1/ch09.html#sec-CAN環境: linux-2.6.26-at20
-
at_kazutaka.bito
Armadillo上で動作しているプロセスの物理メモリ使用量を調べてみます。
Armadillo-440の標準イメージで自動起動されるfunctesterの場合、まずは
[root@armadillo440-0 (ttymxc1) ~]# ps | grep functester PID Uid VmSize Stat Command 1358 root 6352 S functester
でPIDを確認します。
/proc/[プロセスのID]/status
をcatで確認します。 上記のfunctesterの場合は、プロセスIDは1358なので、
-
at_kazutaka.bito
Armadillo-400シリーズのUART2は、標準のカーネルコンフィギュレーションでは ハードフロー制御が有効になっており、make menuconfigからは設定変更できない。
そこで、ハードフロー制御を無効にできるようにする。
備考)以下の説明において、、ディレクトリ構成は、 Armadillo実践開発ガイド第1部7.2. Atmark Distを使ったルートファイルシステムの作成に基づいて環境構築しているものとする。
1. Kconfigの編集
atmark-dist/linux-2.6.x/arch/arm/mach-mx25のKconfig内で、Armadillo-410/420/440については、 デフォルトでUART2のハードフロー制御が有効になるように設定されているので、その設定を削除する。
-
at_takuya.sasaki
Armadillo-400シリーズのAtmark Distで標準でインストールされるbusyboxのバージョンは [ 1.00-rc3 ] です。 このbusyboxを [ 1.20.2 ] に上げてみた際の、作業メモです。
-
at_ito
ソースコードをビルドする際に、特定のファイルが必要で、それをDebianパッケージからインストールしたい場合があると思います。そういった際に便利な方法です。
-
at_nakai
久しぶりにArmadillo-420/440のブートローダー「hermit-at」をカスタマイズしたので記事にしてみました。
【要件】
ブートローダーがLinuxを起動する際に、USBデバイスが接続されていればフラッシュメモリに格納されているシステムイメージを利用して起動する上記が必要な場面は、電源ON/OFF(リセット)以外の制御が行えない状況下で、マイクロSDに格納されているシステムイメージを更新するといった場面です。
システムリカバリにも利用可能です。【カスタマイズ内容】
- USBコントローラ(USBOH)へクロックを供給
- USBデバイスの接続状態を検出する関数を実装
- Linux起動時にUSBデバイスの接続状態によって起動処理を変更
- USBデバイスが接続されていれば、setbootdevice / setenv / bootコマンドの引数を無視してフラッシュメモリから起動されるように修正
【パッチ】
-
at_ito
開発したアプリケーションや、設定ファイルなどを、Atmark Distで作ったユーザーランドに配置する方法について紹介します。