ブログ

  • at_takuya.sasaki

    ATDEをVmware Workstationから起動すると、エラーメッセージが表示されて起動できない場合があります。
    この場合、WindowsのUAC(User Account Control)による制限である可能性が高いです。 UACを無効化するか、VMware Workstationを起動する際、VMwareのアイコンを右クリック→「管理者として実行」を選択してみてください。

  • at_ito

    アプリケーションやドライバーの作りによりカーネルパニックが発生し、意図通りにソフトウェアが動作しない場合があるかと思います。その際、すでにフィールドに出している製品等ですと復帰ができず困る場合もあるかと思います。
    そのような場合の対策として、カーネルパニックが発生すると、自動的に再起動する機能がありますので紹介します。

  • at_kazutaka.bito

    Armadillo-810開発セットをPCとLANで接続して、PCのWebブラウザから  カメラの画像の動画(MJPG:10fps)
     カメラの画像の5秒毎の静止画(JPEG)
     静止画を10枚分のファイルのダウンロード
    ができるサンプルデモを作ってみました。

  • at_kazutaka.bito

    Armadillo-810開発セットに簡単にトグルスイッチを付ける方法を検討してみました。
    ここでは、スイッチを1個つけれればいい、ということで、ピンコネクタが実装済みの起動モード設定のジャンパ(JP1)を使うことにします。

  • at_takuya.sasaki

    前回のeclipseのインストールまで完了した後は、Cで記述したソースコードをビルドしてみます。

    1. Cプロジェクトの新規作成

    GNOMEからEclipseを起動してください。 メニューの[ファイル]->[新規]->[Cプロジェクト]を選択すると以下のウィンドウが表示されます。

    プロジェクト名に任意の名前(今回は hello とします)を入力して、[次へ]を押すと以下のウィンドウが表示されます。

  • 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_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_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.html

    2. ビルドに必要なパッケージをインストールします

     $ apt-get install dpkg-dev

    3. ソースコードを持ってきます。

    hwclockコマンドはutil-linuxパッケージに含まれます

  • at_takuya.sasaki

    Armadillo-840でLANで受信したパケットをダンプして解析する手順をまとまめてみました。今回はRTPプロトコルで流れてくるH.264データをダンプ/解析してみたいと思います。

    1. Debianパッケージからtcpdumpを持ってきます

    今回はtcpdumpのバイナリはDebianパッケージから持ってきます。

  • at_takuya.sasaki

    Armadillo-840では、AVコーデックミドルウェアによりカメラからの入力画像をH.264にエンコードすることができます。 今回は、USBカメラからの画像をJPEGファイルに連続して保存し、ffmpegで動画ファイルに変換するということを試してみます。 ffmegはDebianパッケージのバイナリを使うことにします。

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

    ATDE5の VMware仮想イメージファイルは、Oracle社のVirtual BOXでも起動することが可能です。

    1. VirtualBoxのインストール

    インストール方法は省略いたします。このブログではバージョン 4.3.12 を使用しています。

    2. ATDE5イメージの展開

    任意のフォルダに弊社Webサイトで公開しているATDE5の仮想イメージファイルを展開してください。 展開の方法は以下のHowToも参考にしてください。
    https://armadillo.atmark-techno.com/howto/tar_xz-extract

    3. VirtualBoxを起動します

  • at_ito

    プログラムを作成した際に、依存しているライブラリのライセンスを確認する必要があると思います。その際に、リンクしているライブラリのソースコードを取得する必要があるため、指定のバイナリが使用しているライブラリのDebianパッケージ名、Debianソースパッケージ名を調べるためのシェルスクリプトを作ってみました。

    以下のシェルスクリプトを作成し、ATDEで動かしてみてください。

  • at_takuya.sasaki

    Armadillo-810の標準イメージではUVCガジェットが起動しているので、USBカメラのように使うことも可能です。 以下のマニュアルには、ATDE5上で guvcviewというツールを使ってArmadillo-810で撮影した画像を確認する方法が 記載されています。

    [ 6.2.1. UVCガジェット ]
    https://manual.atmark-techno.com/armadillo-810/armadillo-810_product_manual_ja-1.6.0/ch06.html#sct.usb_gadget-uvc

    ただしPCのスペックなどによりリソース不足でguvcviewが起動できないケースもあるかもしれません。 ATDE5上ではなく、以下のようなWindowsアプリケーションをインストールすることで、ATDE5を介さずに、直接Windows上でArmadillo-810の画像を確認することができますよ。

  • at_takuya.sasaki

    以下に公開しているHowToでは、OpenCVのサンプルコードをATDE5上でクロスビルドしています。 これだと、サンプルを直すたびに、Armadillo-810への転送が必要になるので面倒です。

    [ Howto : Armadillo-810でOpenCVを用いた画像処理 ]
    https://armadillo.atmark-techno.com/howto/armadillo-810-opencv

    ここではArmadillo-810上にコンパイルに必要な環境と、OpenCVのライブラリをインストールして、 Armadillo-810上でビルドする方法をご紹介します。

  • 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_takuya.sasaki

    Armadillo-840/810開発セットに付属しているUSBシリアル変換アダプタ(FTDI 社製FT232RL内臓)をPCに接続しても、 自動でドライバが認識しない場合は、以下のサイトからダウンロードしてください。

    http://www.ftdichip.com/Drivers/VCP.htm
     「Currently Supported VCP Drivers」のx86(32bit) OR x64(64bit)

    お使いのPCに合わせたOS/アーキテクチャのものをダウンロードしてください。

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

    Armadillo-810/840でHALCONを利用したアプリを実行するとエラーが出力される場合があります。 2014年11月7日時点でHALCONエラーの要因が判明しているものについて記載します。

    HALCON error #2036: could not find license.dat in operator set_system

    ライセンスファイル(/opt/halcon/license/license.dat)が存在しない場合に出力されます。

    HALCON error #2076: Message checksum failure in operator set_system

    ライセンスファイル(/opt/halcon/license/license.dat)の内容がおかしい場合に出力されます。

    HALCON error #5101: Error while opening the window in operator open_window

    Xサーバーに接続できない場合や、ウィンドウを開けない場合に出力されます。

  • at_takuya.sasaki

    過去に、Armadillo-810での作業中に、やらかしてしまった失敗談を参考まで。

    とある問題の切り分けのためにフラッシュ用のboot loaderを、Hermit-At Winを使って、何回か書き換えている最中に、 hermitが立ち上がらなくなる事象が発生。

    USBシリアル変換チップのスライドで、保守モードにしようがOS自動起動モードにしようが、シリアルコンソールには何も表示されない。 ハード故障かと思ったが、LEDは点灯しているし、問題はなさそう。

    Hermit-At Winから再度書き換えたいが、targetにつながらないといわれる。 ふと再度Hermit-At Winの画面を見ると、前回フラッシュに書き込んだファイルが、SDカード用のboot loaderでした。

    復旧方法は以下の通り。

    1) Armadillo-810の拡張ボートBに、boot loader入りのSDカードを挿入
    2) JP3をショートさせて、SDカード内からhermitを起動
    3) 再度Hermit-At Winからフラッシュ用のboot loaderに書き換え

    以上

  • at_ito

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

  • at_takuya.sasaki

    以前のブログでは USBでArmadillo-840とプリンタを接続しました。
    https://users.atmark-techno.com/blog/750/969 今回試しているNP-2511はUSB以外にもRS232Cで接続することが可能で、ユーザーズガイドにもプリンタの 追加のための手順も記載されています。 今回はArmadillo-840とNP-2511をRS232Cで接続してみたいと思います。

  • 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_takuya.sasaki

    Armadillo-840で日本プリメックス社のUSBプリンタ(NP-2511)を動かそうと思います。
    http://www.primex.co.jp/NPIServlet?viewpage=2&nextpage=3&BLGCode=40&ModelCode=57

    ただしドライバがUbunts向けのrpmパッケージ(およびソースパッケージ)になります。 よってまずは、Ubunts向けのドライバをDebianで動かせるようにビルドしてみます。

  • at_ito

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