本章では、Armadillo-IoT を用いたシステム開発の一連の流れについて説明します。
ユーザーオリジナルアプリケーションを作成する
Atmark Distにユーザーオリジナルアプリケーションを組み込む
システムの最適化を行う
オリジナルプロダクトのコンフィギュレーションを更新する
以降では、上記ステップについて順を追って説明します。
13.1. ユーザーオリジナルアプリケーションを作成する
ここでは、システムのメイン機能となるアプリケーションプログラムを作成する方法を説明します。ほとんどのシステムでは、ユーザーオリジナルなアプリケーションを実装するものと思います。本章では定番である「Hello world!」を例に、C言語でアプリケーションプログラムのソースコードを作成し、コンパイル、動作確認する方法について説明します。
まずは、ATDE上で動作する「Hello World!」を作成してみましょう。テキストエディタ[]にはgeditを利用します。
作成したソースコードが意図した通りに動作するか、ATDE上で動作するようにコンパイルして実行し、動作の確認をしましょう。
意図した通りに実行できましたね。では次にArmadilloが実行できるようにコンパイルを行います。
Armadilloのアプリケーションを作成するには、クロスコンパイルが基本的な手法となります。先に示している、ブートローダー、Linuxカーネル、ユーザランドイメージもクロスコンパイルされています。
クロスコンパイルとは、別のアーキテクチャで動作する実行ファイルを作成することです。ATDEなど、通常のPCは、i386またはamd64と言われるアーキテクチャとなっています。Armadillo-IoT ではarmelというアーキテクチャが使われています。Armadillo-IoTで実行することができる実行ファイルをATDE上で作成する方法を説明します。
Armadillo-IoT 上で動作するようにコンパイルする場合は、コンパイラ(gcc)にarmhfアーキテクチャ用のもの(arm-linux-gnueabi-gcc)を利用します。
Armadillo-IoT に実行ファイルを転送して動作の確認を行います。ここではファイル転送にFTPを利用します。次の例では、Armadillo-IoT のIPアドレスが「192.0.2.10」であることを想定しています。
minicomなどを利用してArmadillo-IoT にログインすると/home/ftp/pubにhelloが転送されています。転送されたばかりのファイルには実行権限がついていないため、chmodコマンドで実行権限を付与して実行してみましょう。
13.2. Atmark Distにユーザーオリジナルアプリケーションを組み込む
「ユーザーオリジナルアプリケーションを作成する」では、Armadillo-IoT 上で動作することができる実行ファイルを作成することができました。続いて、Atmark Distにそのアプリケーションを組み込み、ユーザーランドのイメージファイル(romfs.img.gz)に自動的にインストールされるように作業を行います。
はじめにhelloアプリケーションをビルドするためのMakefileを作成します。このMakefileは、Atmark Distのビルドシステムにhelloを組み込むために必要となります。テキストエディタで作成します。
Makefileが正しく作成できたかを確認するために、一度ビルドしてみましょう。ビルドにはmakeコマンドを利用します。
| |
---|
makefileの記述ルールは次のようになります。
makeコマンドに続けて入力することによりターゲットを指定することができます。ターゲットを指定しない場合は、makefileのルールで最初に記述されているターゲットが実行されます。
図13.7「hello用のMakefile」では、ターゲット指定をしない場合は、"all"ターゲットが実行されます。cleanターゲットを指定しmakeすると、一時ファイルなどが消去されます。
|
Atmark Distでは、製品(システム)固有の設定やファイルなどを製品毎にディレクトリに分けて管理されています。このディレクトリをプロダクトディレクトリといいます。アットマークテクノ製品の場合、開発セット用の標準イメージに対応するプロダクトディレクトリが製品毎に用意されています。
ここでは、Armadillo-IoTのプロダクトディレクトリをコピーしてオリジナルプロダクトを作成し、そのオリジナルプロダクトにhelloを組み込みます。オリジナルプロダクトの名前は、"my-product"とします。なお、「~/atmark-dist」を配置していない場合は、「Linuxカーネル/ユーザーランドをビルドする」を参照して配置してください。
続いて、helloをAtmark Distのビルドシステムに組み込みます。
プロダクトディレクトリ(atmark-dist/vendors/AtmarkTechno/my-product/)にあるMakefileをテキストエディタで開き、次のように34行目を追加します。
図13.7「hello用のMakefile」では、romfsディレクトリ(atmark-dist/romfs/)にファイルをインストールするためのromfsターゲットに対応していないため、ビルドされた実行ファイルは作成されますが、ユーザーランドイメージに実行ファイルがインストールされることはありません。ユーザーランドイメージに自動的にインストールされるように、romfsターゲットを追加しましょう。ここでは、Armadillo上の/usr/bin/ディレクトリ以下にhelloがインストールされるように記述してみます。(18-19行目を追加)
これで、my-productにhelloが追加されました。my-productをビルドして、イメージファイルを書き換えてみましょう。「Linuxカーネル/ユーザーランドをビルドする」の手順の中で、AtmarkTechno Productsに"Armadillo-IoTG-Std"を選択している箇所では"my-product"を選択します。ビルドして出来上がったユーザーランド(romfs.img.gz)をフラッシュメモリに書き込むには、12章フラッシュメモリの書き換え方法を参照してください。
フラッシュメモリを書き換えた後Armadilloを再起動すると、/usr/bin/helloが組み込まれたユーザーランドとなっています。
ここでは、システム開発の最終段階の最適化について説明します。
ベースとしたArmadillo-IoT では、システムに不要なアプリケーションなどが含まれていると思います。不要なアプリケーションを省くことでイメージファイルがスリムになり起動速度が向上したり、空きメモリ容量が増えるなどのシステムの負荷が軽減します。
また、セキュリティーについても考慮すべきでしょう。Armadilloのデフォルトのrootパスワードは、「root」となっています。デフォルトのままにしてしまうと簡単にハッキングされてしまう恐れがあります。
必要のないアプリケーションを削除したり、パスワードの変更を行うには、make menuconfigなどを行いシステムを変更します。
手順13.1 必要のないアプリケーションを削除する
make menuconfigを行い「Kernel/Library/Defaults Selection --->」を選択します。
「Customize Vendor/User Settings」を選択して"Exit"を2回して「Do you wish to save your new kernel configuration?」で"Yes"とします。
Userland Configurationメニューが表示されます。
ここでは、例として「java」を削除してみます。「Miscellaneous Applications --->」を選択しメニューをスクロールすると java の項目があります。
「java」にカーソルを合わせて"N"を押下し選択を解除してください。そして、"Exit"を2回選択して「Do you wish to save your new kernel configuration?」で"Yes"とすることで設定を保存することができます。
手順13.2 rootパスワードを変更する
手順13.1「必要のないアプリケーションを削除する」と同様に、make menuconfigを使い「Userland Configuration」メニューを開きます。
「Vendor specific --->」を選択します。
「change root passwd」を選択すると、rootパスワードを変更することができます。
13.4. オリジナルプロダクトのコンフィギュレーションを更新する
make menuconfigで修正を加えたコンフィギュレーションは、一時ファイルとして保存されています。一時ファイルはmake cleanやmake distcleanなどでAtmark Distをクリーンアップした場合に削除されてしまいます。再度コンフィギュレーションを復元するためには、一からコンフィギュレーション手順を再現しなくてはなりません。
Atmark Distをクリーンアップした場合でも、設定したコンフィギュレーションを恒久的に復元させることができるように、プロダクトのデフォルトコンフィギュレーションを上書き更新する手順を説明します。
手順13.3 プロダクトのデフォルトコンフィギュレーションを上書き更新する
手順13.1「必要のないアプリケーションを削除する」と同様に、make menuconfigを使い「Kernel/Library/Defaults Selection」メニューを開きます。
「Update Default Vendor Settings」を選択しておきます。「Customize Vendor/User Settings」でコンフィギュレーションを変更した場合などに、自動的にプロダクトのデフォルトコンフィギュレーションが上書き更新されるようになります。
「Update Default Vendor Settings」を選択した場合に更新されるデフォルトコンフィグファイルを表13.1「デフォルトコンフィグファイル」に示します。
表13.1 デフォルトコンフィグファイル
対象 | デフォルトコンフィギュレーションファイル |
---|
Linuxカーネル | [プロダクトディレクトリ]/config.linux-2.6.x[] |
Userland | [プロダクトディレクトリ]/config.vendor |
Busybox-1.20.2 | [プロダクトディレクトリ]/config.busybox-1.20.2 |