個人別ブログ

at_ito さんのブログ

  • at_ito

    M2MやIoTの実現に適したシンプルで軽量なプロトコルとしてMQTTというものがあります。MQTTはセンサー等のデバイスからデータを送受信する用途に使われることを想定しています。
    Armadillo-IoTには、Rubyから簡単にMQTTが扱えますので、Armadillo-IoTの内部温度センサーの値を送信するサンプルプログラムを紹介します。

  • at_ito

    Armadillo-IoTを使用する際に、簡単にWebアプリケーションを作成したい場合があると思います。HTTPサーバーとCGIを利用してWebアプリケーションを作成することもできますが、事前知識が必要であまりお手軽ではありません。
    ここではArmadillo-IoTに標準で入っているRubyのWebアプリケーションフレームワークであるSinatraを使用して、簡単にWebアプリケーションを作成し、動かしてみます。

  • at_ito

    Armadillo-IoTには有線LAN、無線LANや3Gが搭載されており、ルーターとしても使用できます。ルーターにはIPマスカレード、DHCPサーバー、DNSサーバー等の機能が必要になります。 ここでは、DNSキャッシュサーバーとDHCPサーバーとして利用できるdnsmasqをインストールする方法を紹介します。

  • at_ito

    Debianのデフォルトのエディタはnanoになっています。visudoコマンドや、gitコマンド等を使用した場合に、デフォルトのエディタが使われることがあります。nanoは単機能なコマンドなため、vimやemacs等の多機能なエディタに変更したい場合があるかと思います。 そのため、ここではATDE(Debian)のデフォルトのエディタを変更する方法を紹介します。

  • 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

    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_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_ito

    Armadillo-IoTとHeroku(Node.js)でHello Worldをやってみましたので、 その際の作業手順をまとめてみます。

    1. ATDE5にnode.jsをインストール

    ここではATDE5でNode.jsを動かすために、Node.jsをインストールします。(ローカルで動作させる環境が不要な場合はこの章の手順は不要です)

    Node.jsのパッケージ(nodejs, nodejs-legacy)は、ATDE5のベースであるDebian wheezyにはパッケージがありません。そのためbackportから取ってくる必要があります。

    ここでは以下のURLを参考にATDE5にNode.jsをインストールします。

    • http://kotak.hatenablog.com/entry/2014/06/18/190500

    まずは/etc/apt/sources.list.d/backports.listファイルを以下の内容で作成してください。

  • at_ito

    Armadillo-IoTでIoTができるということで、データ分析を試してみたくなった。

    簡単に試せる環境がないか探していると、どうもkibanaというモノでデータを可視化して分析できるらしい。

    ということで、kibanaをATDEにインストールしてみたので、その時のメモを貼り付ける。

    elasticsearchのインストール

    どうもkibanaというのは、データを可視化するためだけのアプリケーションのようで、データはelasticsearchに入っているものを使うらしい。

    ということで、まずはelasticsearchをインストールする。

    elasiticsearchの公式ページのインストール方法を参考に、apt-getでelasticsearchが取れるようにしてみる。

  • at_ito

    ATDEをVMware Player等(以降VMware)を使用していると、VMwareのウインドウにフォーカスが 移ってしまうとAlt+Tabでタスク切り替えをしようと思っても、ホストOSのタスクに切り替わらない。(ゲスト側でタスク切り替えすることになる) キーボードを使ってタスク切り替えをすることが多いので、これでは不便ということでVMwareのユニティモードを使い、ホストOSのウインドウとして、ATDEのアプリケーションを立ち上げる方法を紹介します。

  • at_ito

    Armadillo-810/840のfirmwareパーティションは、SquashFSファイルシステムで作成されています。 firmwareパーティションは、Armadillo特有のAVコーデックミドルウェアや、OpenGL ES2 ライブラリが含まれます。

    今回は、AVコーデックミドルウェアや、Qt(OpenGLが必要)等を使わない場合で、 firmwareパーティションを変更したい時に、SquashFSファイルシステムのイメージを作成する方法を紹介します。

    SquashFSファイルシステムのイメージを作るためには、mksquashfsコマンドを使用します。

    以下の様にコマンドを実行することで、SquashFSファイルシステムのイメージが作成されます。

    [atde ~]$ mksquashfs イメージ化したいディレクトリ イメージファイル名 -comp xz

    ※: 「イメージ化したいディレクトリ」、「イメージファイル名」は適宜変更してください。

  • 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_ito

    Armadilloのユーザーランドには、「Atmark Dist」と「Debian GNU/Linux」が使用できます。 それぞれに特徴があり、どういった場面でどちらを使えば良いかわからない場合もあるかと 思います。 今回は、簡単にですが「Atmark Dist」と「Debian GNU/Linux」の選び方について紹介します。

  • at_ito

    DebianパッケージをAtmark Distにインストールする際に、依存関係を考慮する必要がある場合があります。 その際に、依存しているパッケージをインストールするのにさらに依存パッケージが存在していたりして、インストールするのに手間がかかります。 そのため、簡単にDebianパッケージの依存関係を再帰的に検索し、表示する方法を紹介します。

  • at_ito

    製品出荷時に、ArmadilloにLinuxカーネルイメージや、ユーザーランドイメージを書き込むことがあるかと思います。 Hermit-Atのtftpdlコマンド等でイメージを書き込んだ後に、正常にNORフラッシュに書き込まれたのかどうかを確認したい場合もあるかと思います。 ここでは、Hermit-Atのmd5sumコマンドを使用し、イメージが正常に書き込まれているかどうかを確認する方法を紹介します。

  • at_ito

    Armadilloを使用している際に、作業用PCとのファイルの送受信を行いたい場合があるかと思います。 Ethernet経由や、USBメモリ等のストレージ経由でファイルを送受信することもできますが、 ネットワークの設定が必要であったり、ストレージを用意したりと面倒なこともあるかと思います。 そこで、Armadilloを使用する際に使うシリアル通信ソフト(ここではTeraTermを使用)のZMODEMを使い、 シリアル経由でファイルを送受信する方法を紹介します。

  • at_ito

    ATDE5をデフォルトのまま使用していると、共有フォルダが自動的にマウントされません。 これはATDE5がopen-vmを使用しているためです。open-vmの代わりにVMware Toolsを インストールすると、自動的に共有フォルダがATDE5にマウントされます。 ここではopen-vmの変わりにVMware Toolsを使用するための方法について紹介します。

  • at_ito

    Armadillo-400シリーズでDebianを使用する場合には、標準でDebian lennyのアーカイブを展開して使うことになります。 Debian lennyは2012年にリリースされており古いため、使用するパッケージのバージョンが古い場合があります。 そのため、ここではArmadillo-400でDebian squeezeを使用する方法を紹介します。

  • at_ito

    Armadillo-840は、Armadillo-400シリーズに比べイメージサイズが大きくなっているため起動時間が遅くなりがちです。 最終的に製品化する際には、起動時間を早めたい場合もあるかと思います。 そこで、Armadillo-840の標準イメージに入っている機能をけずり、どこまで起動時間を短縮できるかを試してみました。

  • at_ito

    ATDEで開発をしていると、WindowsでダウンロードしたファイルをATDE上で扱ったり、ATDE上で作成したファイルをWindows上で扱ったり等のファイル共有を行いたい場合があると思います。その場合は、VMwareの共有フォルダ機能を使うことで実現できます。 ここではではVMwareの共有フォルダ機能を使うための手順を紹介します。

  • at_ito

    開発時に、Linuxカーネルイメージ、ユーザーランドイメージを頻繁に変更することがあると思います。 その際に、毎回フラッシュに書き込むと時間がかかってしまいます。 そのため、起動時に自動的にTFTPサーバーからイメージをダウンロードし、そのイメージで起動する方法を紹介します。

  • at_ito

    ATDE5を立ち上げた状態で、しばらく操作しない状況が発生すると、再度操作する際にパスワード入力が必要になります(ロック機能)が、 ATDE5はVMware上で動かすため、ロック機能が特に必要のないことが多いかと思います。

    そのため、ここではATDE5でロック機能を無効化する手順を紹介します。

    以下の画面のように、メニューから「システム設定」を選択してください。

    以下の画面が表示されますので、「画面の明るさとロック」を選択してください。