Armadillo-840でFullHD(1920x1080)のH.264動画を再生しようと試みましたが、以下のメッセージが出力されて、再生されませんでした。
ブログ
-
at_takuya.sasaki
-
at_takenoshita
トレジャーデータさんからfluent bitというものがリリースされたので、Armadillo-IoTで動かしてみました。
-
at_ito
Armadillo-IoT: dnsmasqをインストールするでインストールしたdnsmasqを使ってArmadillo-IoTをDNSキャッシュサーバーとして利用する方法を紹介します。
-
at_ito
Armadillo-IoT: dnsmasqをインストールするでインストールしたdnsmasqを使ってArmadillo-IoTをDHCPサーバーとして利用する方法を紹介します。
-
at_ito
Armadillo-IoTには有線LAN、無線LANや3Gが搭載されており、ルーターとしても使用できます。ルーターにはIPマスカレード、DHCPサーバー、DNSサーバー等の機能が必要になります。 ここでは、DNSキャッシュサーバーとDHCPサーバーとして利用できるdnsmasqをインストールする方法を紹介します。
-
at_takuya.sasaki
前回のeclipseのインストールまで完了した後は、Cで記述したソースコードをビルドしてみます。
1. Cプロジェクトの新規作成
GNOMEからEclipseを起動してください。 メニューの[ファイル]->[新規]->[Cプロジェクト]を選択すると以下のウィンドウが表示されます。
プロジェクト名に任意の名前(今回は hello とします)を入力して、[次へ]を押すと以下のウィンドウが表示されます。
-
at_takuya.sasaki
Armadillo上でCSVファイルをパースして、それぞれの要素ごとに処理を分岐させたい場合があるかと思います。今回は awk を使って簡単なスクリプトを書いてみました。
以下は、test.csvというCSVファイルをパースして、第1カラムが " ls" の場合、第2カラムに指定されたパスのlsを実行するという例です。 CSVファイル内をすべて処理し終わった後に、何らかの処理をしたい場合には、ENDの中に処理を記述できます。
awk ' BEGIN{ FS = "," } { for (i = 1; i <= NF; i++) { param[i] = $i } if( param[1] == "ls" ){ system("ls "param[2]""); } } END{ }' test.csv
-
at_takuya.sasaki
Armadillo-800シリーズの開発環境であるATDE5にeclipseをインストールして、C/C++のプログラムをビルドしてみたいと思います。 今回はeclipseのインストールまでを試してみました。
1. eclipseのインストール
eclipseは以下のサイトからダウンロード可能です。
http://www.eclipse.org/downloads/OSにはLinux、アーキテクチャは環境に合わせてください。今回はJavaではなく、C/C++のビルドを試しみたいので、パッケージには [Eclipse IDE for C/C++ Developers]を選択しました。
-
at_kazutaka.bito
用意するもの
- USB電源ケーブル
- USB電流電圧チェッカ
- USBバッテリ(PC、モバイルバッテリなど)
USBバッテリ--USB電源ケーブル--USB電流電圧チェッカ と接続する。
Armadillo-440開発セットで標準イメージで起動したとき 通常動作時の電圧(標準イメージ内のサンプルソフトfunctesterが動作中)
Armadillo-440開発セットで標準イメージで起動したとき 通常動作時の電流(標準イメージ内のサンプルソフトfunctesterが動作中)
Armadillo-440開発セットで標準イメージで起動したとき スリープ時の電圧(power-on suspend)
-
at_kazutaka.bito
当方がテストに使っていること以外に用途があるのかわからないが、備忘録的にメモしておく。
Armadilloと対抗機(USBキーボード等)を接続して、とりあえずイベントを拾えているかどうかの確認に、
[armadillo ~]# hexdump /dev/input/event0 0000000 f5d3 38c3 09ab 0000 0004 0004 005d 0007 0000010 f5d3 38c3 09cc 0000 0001 004c 0001 0000 0000020 f5d3 38c3 09d9 0000 0000 0000 0000 0000 0000030 f5d3 38c3 16ef 0003 0004 0004 005d 0007 0000040 f5d3 38c3 1709 0003 0001 004c 0000 0000
といった感じでhexdumpで反応を確認している。
この出力をファイルに残したいと思って、
-
at_kazutaka.bito
tarの解凍先を指定したい場合は、-Cオプションで指定できる。
例)temp.tar.gzを~/tmpに直接展開したい場合
tar zxvf temp.tar.gz -C ~/tmp/
-
at_kazutaka.bito
Armadillo-IoTで、3Gの接続状態を監視する方法は、 Armadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアルの9.3.1. ifplugd でできる。
-
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_takuya.sasaki
Armadillo-IoTのマニュアルでは、AWL13をアクセスポイント(AP)に接続させてIPアドレスを固定で割り振る方法を紹介しています。
[ 6.2.4.2. 手動で無線LANインターフェースを有効化する ]
https://manual.atmark-techno.com/armadillo-iot/armadillo-iotg-std_product_manual_ja-1.2.0/ch06.html#sec-net-wlanこの場合、インターネットに接続しようとしても、ホスト名解決ができず失敗するはずです。
-
at_takuya.sasaki
Armadillo-840にUSBカメラを接続し、LCDにUSBカメラの画像をQtで描画するサンプルは、以前以下のフォーラムでサンプルコードが提供されています。
[ QtでUVCカメラを表示させる ]
https://users.atmark-techno.com/forum/armadillo/1343このサンプルでは yuyv_to_rgb.h というソースコード内で、USBカメラからのYUYVの画像データを、LCDに表示するために RBG形式に変換しています。 この変換処理は、ARM Cortex-A9のNEONを使うことで高速化することが可能で、すでに実装もされています。
(#ifdef __ARM_NEON__
で囲まれた箇所です)[NEONについて]
http://www.arm.com/ja/products/processors/technologies/neon.php -
at_kazutaka.bito
Armadillo-IoT+Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00で、 マグネットセンサーの接点のオープン/クローズ状態を取得して、Herokuに通知する仕組みを作ってみた。 ここでは、株式会社日本アレフの人感センサーAPX-101を使用する。 この人感センサーは動体を検知すると、赤い光が点灯して警報出力用にパルスを出力する。 Armadillo-IoTで警報出力のパルスの立ち上がりエッジを検出して、検出した時刻をHeroku送信する仕組みを作る。
-
at_kazutaka.bito
Armadillo-IoT+Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00で、 マグネットセンサーの接点のオープン/クローズ状態を取得して、Herokuに通知する仕組みを作ってみた。 ここでは、株式会社日本アレフのマグネットセンサーAD-1001/AD-1011を使用する。 このマグネットセンサーは、 マグネットが近いと、接点がクローズ マグネットが遠いと、接点がオープン になるようだ。
-
at_kazutaka.bito
Armadillo-440シリーズのプロダクトディレクトリにあるGPIO制御のプログラムのgpioctrlを Armadillo-IoTで使用できるようにしてみた。
1.Armadillo-IoTのプロダクトディレクトリにgpioctrlを置く
ここでは、標準のプロダクトディレクトリ"Armadillo-IoTG-Std"を"my-iot"という名前にコピーした プロダクトディレクトリを使う。
-
at_takuya.sasaki
過去にフォーラムで投稿されていた gst-plugins-bad をビルドする方法を、実際に試してみた際のメモです。
1. Debianブートディスクの作成
以下を参照して、SDカードに Debian環境を構築してArmadillo-840をDebianで起動してください。
https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.1.0/ch15.html2. パッケージのアップデート/アップグレード
インターネットに接続できる状態にした後、まずは時刻合わせをします。
root@debian:~# date --set="2015/05/05 18:57" Tue May 5 18:57:00 JST 2015
apt-getでパッケージのアップデート/アップグレードを実施してください。
-
at_takuya.sasaki
Windows向けに作成されたサンプルコードなどを、ATDE5で修正しようとすると、日本語や改行が正しく表示されないというケースがあるかと思います。
今回はATDE5上で、このようなファイルを一括で UTF-8に変換してみます。
まずはファイルの文字コードを調べてみます。コマンドは [ file ] を使います。
atmark@atde5:~$ file test.cpp test.cpp: C source, Non-ISO extended-ASCII text, with CRLF line terminators
Shift-JIS + 改行コードは CRLF のようです。
一括置換は [find] と [nkf] を組み合わせて使います。
atmark@atde5:~$ find . -name "*.cpp"|xargs nkf -Luw --overwrite
これで、カレントディレクトリ配下の 拡張子が cpp のファイルを一括して UTF-8 + LF に変換してくれます。
nkfコマンドのオプションを知りたい場合には、manコマンドで調べてみましょう。
-
at_kazutaka.bito
Armadilloで標準で動作するエディタはviエディタでした。 viエディタは、テキスト入力時とファイル操作時でモードの切り替えが必要なので、慣れるまでが大変です。
Armadillo-IoTでは、joeエディタが動作します。 joeエディタは、テキスト入力時とファイル操作時でモードの切り替えが必要ありません。 joeエディタの基本操作は以下のとおりです。
・ファイルを開く
joe [ファイル名]viエディタは、ファイルを開いた後、iまたはaを入力してテキスト入力モードに移行しないと、テキストが入力できませんでした。 joeエディタは、ファイルを開いた後、そのままテキスト入力できます。
・ファイル操作
Ctrl + c:終了
Ctrl + k, x:保存して終了
Ctrl + k, d:保存
Ctrl + Shift + -:undo・ファイル操作
Ctrl + k, h:ヘルプヘルプを開いたままテキストを編集できます。
-
at_kazutaka.bito
Armadillo-IoT + Heroku(Node.js)でHello World に手を加えて、 Armadillo-IoTからHerokuに送信した文字をWebブラウザで見れるようにします。
-
at_ito
Atmark Distに標準で入っているPythonはバージョンが古いため、ここではDebianパッケージを使用してPythonをユーザーランドに追加する方法を紹介します。
-
at_ito
Atmark Dist等ダウンロードして展開しようとした場合に、エラーがでて正常に展開できない場合があるかと思います。その際に、ダウンロードしたファイルが壊れているかどうかを調べる方法について紹介します。
-
at_takuya.sasaki
Armadillo-840+Qt(QML)でデモを作成してる中で、コマンド引数のようにQMLに対して何らかのパラメータを渡せないかを検討してみました。
-
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-460+LCD拡張ボード(OP-A400-LCD43EXT-L01)でQtを使ってみた。
-
at_takuya.sasaki
USBメモリはmountコマンドで、マウントすることができます。 マウントコマンドについては、以下のマニュアルにも説明があります。
-
at_kazutaka.bito
Armadillo-IoTのRS232アドオンモジュールのテストインタフェースのSPIを使ってみた。
1.SPI端子の確認
Armadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアル Armadillo-IoTベースボードマルチプレクス表 から、今回は、Armadillo-IoTのCON1にRS232アドオンモジュールを接続して、 RS232アドオンモジュールの CON4の35ピン:CSPI2_SCLK CON4の36ピン:CSPI2_MISO CON4の37ピン:CSPI2_MOSI CON4の50ピン:CSPI2_SS0 を使う。
-
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_takuya.sasaki
以前、tcpdumpでArmadillo-840が受信したパケットをキャプチャする方法をご紹介しました。
Armadillo-840でtcpdumpを使うこのキャプチャしたデータを再送するためのツールに、tcpreplayというものがあります。
今回、こちらを使って見ましたので、ご紹介します。1. ATDE5を起動する
パケットを再送信するのは、ATDE5からにしますので、ATDE5を用意します。
以下を参照してください。
http://manual.atmark-techno.com/armadillo-810/armadillo-810_product_manual_ja-1.4.0/ch04.html#sct.before-work.setup-atde5 -
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_takuya.sasaki
Armadillo-840のDebian環境で動く hwlockコマンドのデバッグをするために、Debianパッケージをソースから持ってきてビルドした際のメモです。
1. SDカードにDebian環境を構築して、SDブートします
以下を参照してください。
https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.1.0/ch15.html2. ビルドに必要なパッケージをインストールします
$ apt-get install dpkg-dev
3. ソースコードを持ってきます。
hwclockコマンドはutil-linuxパッケージに含まれます
-
at_takuya.sasaki
Armadillo-IoTに搭載している3Gモジュール Sierra Wireless製 MC8090 は、/dev/ttyUSB3に対してATコマンドを発行することで、各種設定情報を参照可能ですが、今回は電波強度を調べてみました。
3Gがリンクアップしている状態で、以下のコマンドを発行します。
[armadillo ~]$ tip -l /dev/ttyUSB3 -s 115200 Connected. AT+WPOWER=1 ←ATコマンドを入力 +WPOWER: ENABLED! OK AT+WPOWER? ←ATコマンドを入力 +WPOWER: Status: 1 average RxM Power -68dBm, total samples 200 no valid WCDMA RxD Power value available! average Tx Power -18dBm, total samples 46 OK
以上
-
at_takuya.sasaki
Armadillo-840でLANで受信したパケットをダンプして解析する手順をまとまめてみました。今回はRTPプロトコルで流れてくるH.264データをダンプ/解析してみたいと思います。
1. Debianパッケージからtcpdumpを持ってきます
今回はtcpdumpのバイナリはDebianパッケージから持ってきます。
-
at_ito
Heroku(Ruby+Sinatra)でHello Worldをやってみましたので、 その際の作業手順をまとめてみます。
1. Herokuの使用準備
以下のURLでHerokuのアカウントを作成してください。
- https://id.heroku.com/login
以下のURLを参考にしHeroku toolbeltをインストールします。
- https://toolbelt.heroku.com/
以下のコマンドを実行し、toolbeltをATDE5にインストールしてください。
[atde ~]$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
2. Sinatraを使用したアプリを作成
以下のように適当なディレクトリを作成し、そこに移動します。
-
at_kazutaka.bito
ネットワーク経由でArmadillo-440の赤LEDを点灯->消灯するプログラムをCGIで作ってみた。
1.下記のようなプログラムredled.cを作成する。
redled.c -
at_kazutaka.bito
Armadillo-WLANのアクセスポイントモードでdhcpdを動かして、IPアドレスを自動取得できるようにする。
今回は、Armadillo-810+ATB-A810WLANで確認した。
前提) Armadillo-810製品マニュアル第11章 ビルド手順に従い、ソースコードの準備ができているものとする。
1.ATDEにawl13のソースコードをダウンロードして、atmark-dist/awl13にリンクを貼る
-
at_takuya.sasaki
Armadilloのカーネルソースにパッチを当てるときにpatchコマンドを使うが、なぜか「そのようなファイルやディレクトリはありません」といわれることがある。
atmark@atde5:~/work840/atmark-dist/linux-3.x$ patch -p1 < ../../hoge.patch bash: ../../hoge.patch: そのようなファイルやディレクトリはありません
ファイルはちゃんと~/work840に存在しているし、そもそも[../../hoge.patch]はTABキーによるファイル名補完で出てきたファイル名。
これはpatchを実行しているのがシンボリックリンクで指定されているディレクトリだからのよう。 linux-3.xはシンボリックリンクで、実際には一つ上のlinux-3.4-at4である。
-
at_takuya.sasaki
Armadillo+Debian環境などでインターネットに接続して、apt-getなどで外部サーバに接続する必要があるが、外部接続時にGWに対してBasic認証によるユーザ名/パスワード入力を求められる環境があるかもしれません。
PCなどの場合は、ブラウザから適当なサイトにアクセスしてユーザ名/パスワードを入力してあげることで、後は認証不要でアクセスが可能になりますが、Armadiloの場合、X-Window、ブラウザなどの環境を構築するのは面倒です。
そういった場合は、以下のようにwgetで任意のページにアクセスし、その際にユーザ名、パスワードを一度指定することで、以降は、apt-getなども普通に使えます。
(xxxにはユーザ名、パスワードが入ります。)[root@armadillo840-0 (ttySC2) ~]# wget --http-user=xxx --http-passwd=xxx http://armadillo.atmark-techno.com/files/downloads/armadillo-810/image/linux-a810-v1.04.bin.gz
以上
-
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_ito
Armadillo-IoTの標準のユーザーランドにruby-serialportが入っているので、 rubyでシリアルエコーサーバーを作ってみました。
以下、ソースコードです。
-
at_nakai
Armadillo-IoTにはfluentdがプリインストールされているので、
簡単にTreasureDataなどのデータベースに計測データやログなどを入れることができます。今回は、FluentdプロジェクトのスポンサーであるTreasureDataにデータを溜める方法を紹介します。
TreasureDataにアカウント作成
まずは、TreasureDataを利用するのに必要なアカウントを作成します。
14日間無償で利用できるので、評価や使い方を学ぶ程度であれば問題ないと思います。TreasureDataのWebサイトで「今すぐ試す」をクリックして、サインアップします。
メールアドレスのみでアカウントを作成できます。