本章では、Armadilloを用いたシステム開発の一連の流れについて説明します。
ユーザーオリジナルアプリケーションを作成する
Atmark Distにユーザーオリジナルアプリケーションを組み込む
システムの最適化を行う
オリジナルプロダクトのコンフィグレーションを更新する
以降では、上記ステップについて順を追って説明します。
13.1. ユーザーオリジナルアプリケーションを作成する
ここでは、システムのメイン機能となるアプリケーションプログラムを作成する方法を説明します。ほとんどのシステムでは、ユーザーオリジナルなアプリケーションを実装するものと思います。本章では定番である「Hello world!」を例に、C言語でアプリケーションプログラムのソースコードを作成し、コンパイル、動作確認する方法について説明します。
まずは、ATDE上で動作する「Hello World!」を作成してみましょう。テキストエディタ[]にはgeditを利用します。
作成したソースコードが意図したとおりに動作するか、ATDE上で動作するようにコンパイルして実行し、動作の確認をしましょう。
意図したとおりに実行できましたね。では次にArmadilloが実行できるようにコンパイルを行います。
Armadilloのアプリケーションを作成するには、クロスコンパイルが基本的な手法となります。先に示している、ブートローダー、Linuxカーネル、ユーザランドイメージもクロスコンパイルされています。
クロスコンパイルとは、別のアーキテクチャで動作する実行ファイルを作成することです。ATDEなど、通常のPCは、i386またはamd64と言われるアーキテクチャとなっています。Armadillo-810ではarmhfというアーキテクチャが使われています。Armadillo-810で実行することができる実行ファイルをATDE上で作成する方法を説明します。
Armadillo-810上で動作するようにコンパイルする場合は、コンパイラ(gcc)をarmhfアーキテクチャ用のもの(arm-linux-gnueabihf-gcc)を利用します。
Armadillo-810に実行ファイルを転送して動作の確認を行います。ここではファイル転送にUSBガジェット経由のFTPを利用します。ATDEとArmadillo-810がUSBケーブルで接続され、且つArmadillo-810の起動ができていると、図13.5「ArmadilloにFTPでhelloを転送」のようにファイルを転送することができます。
minicomなどを利用してArmadilloにログインすると/home/ftp/pubにhelloが転送されています。転送されたばかりのファイルには実行権限がついていないため、chmodコマンドで実行権限を付与して実行してみましょう。
13.2. Atmark Distにユーザーオリジナルアプリケーションを組み込む
「ユーザーオリジナルアプリケーションを作成する」では、Armadillo上で動作することができる実行ファイルを作成することができました。続いて、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-810のプロダクトディレクトリをコピーしてオリジナルプロダクトを作成し、そのオリジナルプロダクトにhelloを組み込みます。オリジナルプロダクトの名前は、"my-product"とします。なお、「~/atmark-dist」を配置していない場合は、「Linuxカーネル/ユーザーランドをビルドする」に従い、Atmark DistとLinuxカーネルの配置を行なってください。
続いて、helloをAtmark Distのビルドシステムに組み込みます。
プロダクトディレクトリ(atmark-dist/vendors/AtmarkTechno/my-product/)にあるMakefileをテキストエディタで開き、次のように27行目を追加します。
先ほど作成したMakefileでは、Atmark Distのインストール(romfs)ターゲットに対応していないため、ビルドされた実行ファイルは作成されますが、ユーザーランドイメージに実行ファイルがインストールされることはありません。ユーザーランドイメージに自動的にインストールされるように、romfsターゲットを追加しましょう。ここでは、Armadillo上の/usr/bin/ディレクトリ以下にhelloがインストールされるように記述してみます。(18-19行目を追加)
これで、my-productにhelloが追加されました。my-productをビルドして、イメージファイルを書き換えてみましょう。「Linuxカーネル/ユーザーランドをビルドする」の手順の中で、AtmarkTechno Productsに"Armadillo-810"を選択している箇所では"my-product"を選択します。ビルドして出来上がったユーザーランド(romfs.img.gz)をフラッシュメモリに書き込むには、12章フラッシュメモリの書き換え方法を参照してください。
フラッシュメモリを書き換えた後Armadilloを再起動すると、/usr/bin/helloが組み込まれたユーザーランドとなっています。
ここでは、システム開発の最終段階の最適化について説明します。
ベースとしたArmaidllo-810では、システムに不要なアプリケーションなどが含まれていると思います。不要なアプリケーションを省くことでイメージファイルがスリムになり起動速度が向上したり、空きメモリ容量が増えるなどのシステムの負荷が軽減します。
また、セキュリティーについても考慮すべきでしょう。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メニューが表示されます。
ここでは、例として「gstreamer」を削除してみます。「Miscellaneous Applications --->」を選択しメニューをスクロールすると「Multimedia tools」にgstreamerの項目があります。
「gstreamer」にカーソルを合わせて"N"を押下し選択を解除してください。そして、"Exit"を2回選択して「Do you wish to save your new kernel configuration?」で"Yes"とすることで設定を保存することができます。
ビルドを行う前に、atmark-dist/romfs/ディレクトリを一旦削除しておきます。この操作は、選択を解除したアプリケーションがromfs/ディレクトリに残ってしまうことを防止するために必要となります。
手順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-3.x[] |
Userland | [プロダクトディレクトリ]/config.vendor |
Busybos-1.20.2 | [プロダクトディレクトリ]/config.busybox-1.20.2 |