Armadillo-400シリーズのAtmark Distで標準でインストールされるbusyboxのバージョンは [ 1.00-rc3 ] です。 このbusyboxを [ 1.20.2 ] に上げてみた際の、作業メモです。
ブログ
-
at_takuya.sasaki
-
at_ito
ソースコードをビルドする際に、特定のファイルが必要で、それをDebianパッケージからインストールしたい場合があると思います。そういった際に便利な方法です。
-
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_nakai
久しぶりにArmadillo-420/440のブートローダー「hermit-at」をカスタマイズしたので記事にしてみました。
【要件】
ブートローダーがLinuxを起動する際に、USBデバイスが接続されていればフラッシュメモリに格納されているシステムイメージを利用して起動する上記が必要な場面は、電源ON/OFF(リセット)以外の制御が行えない状況下で、マイクロSDに格納されているシステムイメージを更新するといった場面です。
システムリカバリにも利用可能です。【カスタマイズ内容】
-
at_takuya.sasaki
過去に、Armadillo-810での作業中に、やらかしてしまった失敗談を参考まで。
とある問題の切り分けのためにフラッシュ用のboot loaderを、Hermit-At Winを使って、何回か書き換えている最中に、 hermitが立ち上がらなくなる事象が発生。
USBシリアル変換チップのスライドで、保守モードにしようがOS自動起動モードにしようが、シリアルコンソールには何も表示されない。 ハード故障かと思ったが、LEDは点灯しているし、問題はなさそう。
Hermit-At Winから再度書き換えたいが、targetにつながらないといわれる。 ふと再度Hermit-At Winの画面を見ると、前回フラッシュに書き込んだファイルが、SDカード用のboot loaderでした。
復旧方法は以下の通り。
- Armadillo-810の拡張ボートBに、boot loader入りのSDカードを挿入
- JP3をショートさせて、SDカード内からhermitを起動
- 再度Hermit-At Winからフラッシュ用のboot loaderに書き換え
以上
- Armadillo-810の拡張ボートBに、boot loader入りのSDカードを挿入
-
at_takuya.sasaki
Atmark Distで動かしていたQMLアプリケーションを、Debianへ移行した際のメモです。
Armadillo-840用のDebianユーザーランドにはQt5のパッケージがインストール済のため、 特にQt関係のパッケージ追加は必要なかった。
ただし日本語フォントが入っていなかったので、ひとまずtakaoフォントをインストールした。
#apt-get install ttf-takao-gothic
しかし以下のようにQMLを実行してみたが、タッチイベントに反応しない。
# QT_QPA_EGLFS_DISPLAY=1 # QT_QPA_EGLFS_WIDTH=800 # QT_QPA_EGLFS_HEIGHT=480 # qmlscene ./hoge.qml
調べた結果、pluginオプションでevdevtouchの指定が必要のようです。
# qmlscene ./hoge.qml -plugin evdevtouch:/dev/input/event0
以上
-
at_ito
開発したアプリケーションや、設定ファイルなどを、Atmark Distで作ったユーザーランドに配置する方法について紹介します。
-
at_kazutaka.bito
例として、 Howto : Armadillo-440でQt! 第3回 で作成されたMainWindowにラベルを貼りつけて3種類のフォントで「こんにちは」を表示する方法を示す。
1.Armadillo-440のROMのユーザーランド領域には、日本語Truetypeフォントを複数置けるサイズはないので、予め、Truetypeフォント書き込んだMicroSDをArmadillo-440に挿入して起動する。
(下記サンプルコードでは、TakaoGothic.ttf、TakaoMincho.ttf、sazanami-mincho.ttf をMicroSDに置いた場合である。これらのttfファイルは、ATDEの/usr/share/fonts/truetype/にある。)2.Armadilloの/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts のフォントファイルを削除する。(標準では、TakaoPGothic.ttfが存在。)
-
at_ito
Armadilloのユーザーランドには、「Atmark Dist」と「Debian GNU/Linux」が使用できます。 それぞれに特徴があり、どういった場面でどちらを使えば良いかわからない場合もあるかと 思います。 今回は、簡単にですが「Atmark Dist」と「Debian GNU/Linux」の選び方について紹介します。
-
at_kazutaka.bito
Howto : Armadillo-440でQt! 第2回に紹介されているQtに対応したATDE(atde4-qt-amd64)でビルドした場合、 フォントは、 atmark-dist/romfs/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts の下に置かれる。 (デフォルトは、TakaoPGothic.ttf)
簡易的にフォントを変更する場合は、TakaoPGothic.ttfを削除して 別のフォント(例えばTakaoPMincho.ttfや、sazanami-gothic.ttf等)を置いてmake imageする。
補足)ATDEだと、/usr/share/fonts/truetype/内にフォントファイルがある。
-
at_kazutaka.bito
例として、 Howto : Armadillo-440でQt! 第3回 で作成されたMainWindowにラベルを貼りつけて「こんにちは」を表示する方法を示す。
QtCreatorで、
1.「編集」を選択して、「mainwindow.cpp」をダブルクリックする。
->mainwindow.cppのソースの編集画面に変わる。2.mainwindow.cppのインクルードファイルに
#include <QLabel> #include <QTextCodec>
を追加。
MainWindow::MainWindowに下記のように
/***** Display Japanese: begin ****/
と/***** Display Japanese: end ****/
で囲んだ範囲を追加。 -
at_ito
Howto : Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法を参考に、Armadillo-400シリーズでPythonをインストールしたユーザーランドイメージを作成してみました。
インストールしたパッケージは以下の通りです。
-
at_takuya.sasaki
Armadillo-840でQMLを使ってテキストを90度回転させるサンプルコードを書いてみました。
10秒かけて[Hello World]という文字が90度回転し、さらに10秒かけて元の表示位置に戻ります。 -
at_kazutaka.bito
Armadillo上で、テキストファイルの改行コードがLFのものをLF+CRにする方法を試してみた。
例えば、改行コードがLFのテキストファイル"test0.txt"を、改行コードがLF+CRのテキストファイル"test1.txt"にするには 下記のようなコマンドになる。
[armadillo ~]# awk '{sub(/$/, "\r"); print}' test0.txt > test1.txt
trコマンドやsedコマンドでも可能かもしれないが、当方はうまい方法が見つからなかった。 nkfコマンドとiconvコマンドは標準イメージでは有効になっていなかった。
-
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_takuya.sasaki
Armadillo-840のDebianイメージでは、そのままではAVコーデックミドルウェアが使えません。 今回はDebianでAVコーデックミドルウェアを使ったH.264/AACデコードを試してみます。
<***注意***>
本ブログの内容はArmadillo-840のフラッシュメモリに書き込まれているファームウェアが <squashfs-a800-firmware-v3.00.img>の場合でのみ動作します。 それ以外のファームウェアでは動作しませんのでご注意ください。本文中に出てくる3つのファイルは、以下からダウンロードしてください。
acm_file.zip -
at_kazutaka.bito
Armadillo-440でlighttpd+php5-cgiの組み合わせで、phpinfoが見れるまでを確認した。
以下に手順を示す。
(ATDE上で、ビルド済みの環境(atmark-dist/romfs)が存在するものとする。)1.php5-cgiのdebianパッケージを下記からダウンロードする
- http://archive.debian.org/debian-archive/debian/pool/main/p/php5/php5-cgi_5.2.6.dfsg.1-1+lenny16_armel.deb
2.パッケージを展開する(以下、tempディレクトリに展開したものとする)
[atde ~]$ dpkg -x php5-cgi_5.2.6.dfsg.1-1+lenny16_armel.deb temp
3.上記2で展開してできたphp5-cgiをromfsに置く
-
at_takuya.sasaki
Armadillo-400シリーズに標準でインストールされているlighttpdではSSI( Server Side Include )が有効になっていません。 今回は、Armadillo-400シリーズでSSIを有効にしてみたいと思います。
-
at_ito
製品出荷時に、ArmadilloにLinuxカーネルイメージや、ユーザーランドイメージを書き込むことがあるかと思います。 Hermit-Atのtftpdlコマンド等でイメージを書き込んだ後に、正常にNORフラッシュに書き込まれたのかどうかを確認したい場合もあるかと思います。 ここでは、Hermit-Atのmd5sumコマンドを使用し、イメージが正常に書き込まれているかどうかを確認する方法を紹介します。
-
at_ito
Armadilloを使用している際に、作業用PCとのファイルの送受信を行いたい場合があるかと思います。 Ethernet経由や、USBメモリ等のストレージ経由でファイルを送受信することもできますが、 ネットワークの設定が必要であったり、ストレージを用意したりと面倒なこともあるかと思います。 そこで、Armadilloを使用する際に使うシリアル通信ソフト(ここではTeraTermを使用)のZMODEMを使い、 シリアル経由でファイルを送受信する方法を紹介します。
-
at_kazutaka.bito
WikiPediaのXlibの項目の例にあるプログラムをArmadillo-440開発セットで実行して、LCDに表示してみた。
1.ATDEで上記プログラムのファイル(下記例では、test_xlib.cとする)を作成し、下記のようにコンパイルする。 [atde ~]$ arm-linux-gnueabi-gcc test_xlib.c -o test_xlib -lX11 上記のようにコンパイルすると実行ファイル(本例では、test_xlib)ができる。 2.上記1の実行ファイルをArmadilloに転送する。 3.Armadillo上で実行ファイルに実行権限をつけて、実行する。 [armadillo ~]# chmod +x test_xlib [armadillo ~]# DISPLAY=:0 ./test_xlib
補足)Armadillo-440の標準のイメージファイルを使う場合はfunctesterというXwindowシステムを使うアプリが自動起動しているので、
-
at_kazutaka.bito
通常、Armadillo上でユーザを追加しても、電源をOFFにすると追加したユーザは消えてしまうので、 次の起動時に追加したユーザでログインできない。 電源をOFFにしても、次の起動時に追加したユーザでログインができるように、追加したユーザを保存する方法を試してみた。
-
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で動かせるようにビルドしてみます。
1. Debianのブートディスクを作成
https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.1.0/ch15.html
-
at_ito
ATDE5をデフォルトのまま使用していると、共有フォルダが自動的にマウントされません。 これはATDE5がopen-vmを使用しているためです。open-vmの代わりにVMware Toolsを インストールすると、自動的に共有フォルダがATDE5にマウントされます。 ここではopen-vmの変わりにVMware Toolsを使用するための方法について紹介します。
-
at_kazutaka.bito
Armadillo上でコンフィギュレーションを確認するには、下記のコマンドで可能。
zcat /proc/config.gz
-
at_ito
Armadillo-400シリーズでDebianを使用する場合には、標準でDebian lennyのアーカイブを展開して使うことになります。 Debian lennyは2012年にリリースされており古いため、使用するパッケージのバージョンが古い場合があります。 そのため、ここではArmadillo-400でDebian squeezeを使用する方法を紹介します。
-
at_kazutaka.bito
Armadillo-810カメラモデル開発セットで、カメラの画像をH.264エンコードして、MPEG2-TS形式のコンテナにしてみた。 gstreamerのmpegtsmuxというエレメントを使った。 コマンド例は下記の通り。 (画像データの保存先として、/mntにSDカード等、外部メモリマウントしているとする)
gst-launch-1.0 -e v4l2src device="/dev/video1" \ ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 \ ! acmh264enc ! queue \ ! mpegtsmux ! filesink location=/mnt/out.ts
-
at_takuya.sasaki
Armadillo-840のUSBホストにLightningケーブルでiPhone5/5Sを接続し、マウントをしてみた時の手順です。
1. まずは以下を参考にDebianのSDブートディスクを作成します
https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.1.0/ch15.html
-
at_kazutaka.bito
ATDE上で簡易にテキストファイルをビットマップファイルに変換する方法を考えてみた。
1. テキストファイルをUTF-8で保存
補足)
UTF-8かどうかは、geditエディタを使用している場合、- ファイル->別名で保存
を開いて、エンコーディング(H)の項目で確認できる。 UTF-8になっていない場合は、UTF-8を選択する。
2. convertでUTF-8ファイルをビットマップに変換
下記にスクリプト例(text2bmp.sh)を記載する。
このスクリプトでは- UTF-8のテキストファイル:utf-8.txt
について、
- 背景:黒
- 文字色:オレンジ
- フォント:ゴシック
- 文字サイズ:120
の
- ビットマップファイル:text.bmp
が生成される。
text2bmp.sh
-
at_ito
HDMIやDVIで接続するディスプレイでは、タッチパネルがUSBで接続するマルチタッチパネルになっている場合があります。 ここではUSBマルチタッチパネルを使用するための方法を紹介します。
-
at_takuya.sasaki
Armadillo-840でQMLを使ってテロップ表示をするサンプルコードを書いてみました。 10秒かけて[Hello World]という文字がArmadillo-840のLCDの右から左に流れます。 流れる速さは duration: 10000 のところで変更します。 ついでに文字も毎回色が変わるようにしています。
多少カクカクするかもしれませんが、参考まで。
-
at_takuya.sasaki
Armadillo-840を起動してもLCDには何も表示されませんが、 LCDに、シリアルコンソールに流れているログを表示する方法を試してみました。
-
at_kazutaka.bito
QMLで等幅フォントを使いたくなった。
make menuconfig を実行してユーザーランドコンフィグレーションで、TakaoGothicフォントを追加。Userland Configuration Fonts ---> [*] TakaoGothic // デフォルトは空白なので、*を付ける。
QMLのコードでは、Textの中で font.family: "TakaoGothic" のように指定する。
Armadillo-840製品マニュアル 14.5. QMLのhello_qmlの場合は、
<font.familyの追加箇所を抜粋> -
at_kazutaka.bito
Armadillo-440にArmadillo 実践開発ガイド第2部 4. Armadillo 上にDebian GNU/Linux を 構築するを参考にDebian環境を構築する際、rootユーザのパスワードを設定しておく必要がある。 (デフォルトはパスワード設定されてない。)
パスワードを設定してないと、一般ユーザでリモートログインした後、suコマンドを実行してもパスワードではじかれてしまう。
-
at_ito
Armadillo-840は、Armadillo-400シリーズに比べイメージサイズが大きくなっているため起動時間が遅くなりがちです。 最終的に製品化する際には、起動時間を早めたい場合もあるかと思います。 そこで、Armadillo-840の標準イメージに入っている機能をけずり、どこまで起動時間を短縮できるかを試してみました。
-
at_kazutaka.bito
Armadilloに電源を入れて、ログイン入力画面で、
- ユーザ名:root
- パスワード:root
でログインしようとしたとき、
armadillo440-0 login: root Password: Login incorrect armadillo440-0 login: armadillo440-0 login
のようにログインできない場合は、シリアル通信ソフトの改行コードの設定が CR+LFになっている可能性がある。
PCのシリアル通信ソフトの改行コードの設定を
- 受信:CR
- 送信:CR
にすると、ログインできる。
TeraTermだと、メニューの
- 設定->端末
の中に改行コードの設定項目がある。
-
at_ito
iperfコマンドを使用して、ネットワークのスループットを測る方法を紹介します。
-
at_takuya.sasaki
Armadillo-400シリーズではタクトスイッチ(SW1)を押しながら電源を入れると、オートブートがキャンセルされ保守モードで起動します。
https://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_software_manual_ja-1.9.0/ch03.html#sec-boot-modeこのオートブートキャンセル機能を無効にし、タクトスイッチを押しながら電源を入れても、オートブートする方法を紹介します。
-
at_kazutaka.bito
Howto : Armadillo-440でQt! 第2回のATDE4を使っていると画面ロックまでの時間が短いのが気になる。
下記の方法で、ATDEの画面ロックの間隔を延ばした。
ATDEが立ち上がった状態で、左上の「赤い渦巻模様」の右にあるメニューの システム->設定->スクリーンセーバー で、スクリーンセーバーの設定画面を開く。
設定画面内で、
- アイドル状態になるまでの時間 の項目で、デフォルトでは5分になっている。 この時間を延ばす。
ちなみに、
- アイドル状態になったらスクリーンセーバーを起動する
- スクリーンセーバーを起動したら画面をロックする
のチェックの有無で、アイドル状態、スクリーンセーバー、画面ロックの連動を選択することが可能。
-
at_ito
NPtcpコマンドを使用して、ネットワークのスループットを測る方法を紹介します。
-
at_takuya.sasaki
以下の環境で、USBカメラからの画像をLCDに表示しつつ、USBメモリにH.264形式でエンコードしてファイル保存をしてみました。
Armadillo-840液晶モデル開発セット
- kernel : linux-3.4-at9
- userland : atmark-dist-20140602
- USBカメラ: BUFFALO BSWHD06M http://buffalo.jp/product/multimedia/web-camera/bswhd06m/
保存用のUSBメモリをマウントします。
[root@armadillo840-0 (ttySC2) ~]# mount -t vfat /dev/sda1 /mnt
H.264エンコーダを有効にします。
-
at_ito
ATDEで開発をしていると、WindowsでダウンロードしたファイルをATDE上で扱ったり、ATDE上で作成したファイルをWindows上で扱ったり等のファイル共有を行いたい場合があると思います。その場合は、VMwareの共有フォルダ機能を使うことで実現できます。 ここではではVMwareの共有フォルダ機能を使うための手順を紹介します。
-
at_takuya.sasaki
以下のHowToで公開しているAtmark distを使っている場合に、タッチスクリーンの座標がずれている際の対処方法です。
[HowTo:Armadillo-440でQt! 第2回]
https://armadillo.atmark-techno.com/howto/armadillo-440-qt-2上記ユーザーランドには、キャリブレーションをするためのアプリケーション(ts_balibrate)が入っていません。
まずは、以下のHowTo内の[Appendix1. AtmarkDistとの統合]の手順内で、makeする前にユーザーランドのコンフィギュレーションで ts_calibrateを有効にしてください。
-
at_takuya.sasaki
Armadillo-440+Qtで、タッチパネルイベント以外に、タクトスイッチを押されたイベントを拾う方法です。
Armadillo-440のスイッチは、/dev/input/event0に割り当てられています。
https://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_software_manual_ja-1.8.1/ch09.html#sec-buttonsなので、Qtのキーボードデバイスとして、/dev/input/event0を割り当てることで、 比較的簡単に関連付けができそうです。
まずQtのソース側(ヘッダファイル)に、以下のソースを定義します。
-
at_takuya.sasaki
以下のHowtoに従い、ユーザランドにdebianを用いて構築したBluetooth環境を、 atmark-distに移行する手順を紹介いたします。
[Howto : Armadillo-400シリーズでBluetoothを使用する]
https://armadillo.atmark-techno.com/armadillo-400-bluetooth大まかな流れとしては、bluetoothを動作させるのに必要なアプリケーションとライブラリを ATDE3及びatmark-distのromfsにコピーをする作業となります。 尚、それぞれの作業は以下のHowtoに詳細が記載されていますのでご参考ください。
[Howto: debianパッケージに含まれるコンパイル済みのバイナリをArmadiilloで動作させる方法]
https://armadillo.atmark-techno.com/howto/use-debian-binary -
at_ito
開発時に、Linuxカーネルイメージ、ユーザーランドイメージを頻繁に変更することがあると思います。 その際に、毎回フラッシュに書き込むと時間がかかってしまいます。 そのため、起動時に自動的にTFTPサーバーからイメージをダウンロードし、そのイメージで起動する方法を紹介します。
-
at_ito
ATDE5を立ち上げた状態で、しばらく操作しない状況が発生すると、再度操作する際にパスワード入力が必要になります(ロック機能)が、 ATDE5はVMware上で動かすため、ロック機能が特に必要のないことが多いかと思います。
そのため、ここではATDE5でロック機能を無効化する手順を紹介します。
以下の画面のように、メニューから「システム設定」を選択してください。
以下の画面が表示されますので、「画面の明るさとロック」を選択してください。
-
at_ito
QWTは、Qt上でグラフ表示などを簡単に表示することができるライブラリです。 センサーからのデータを表示するときなどに使えます。 Armadillo-840でも動作させることが可能で、センサー等の結果を表示させる場合などに便利です。
-
at_kazutaka.bito
GPIOの出力電流の設定は、Armadillo-400シリーズハードウェアマニュアル
6.2.1入出力インタフェースの電気的仕様-「Armadillo-460」 http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hardware_manual_ja-1.10.0/ch06.html#sec-6-2-1 より、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)、プルアップ/プルダウンを変更することができます。
と記載されています。
実際にCON9の2ピンとCON9の14ピンの電流をmaxに設定変更してみました。
注意点としては、上記のとおり、SW_PAD_CTLで設定できるものと、 SW_PAD_CTL_GRPで設定できるものがありますので、電流設定のパラメータ(DSE)が あるレジスタを選択する必要がある点です。