まずクロス開発環境を整備してPC上でARM用バイナリをコンパイルできるようにし、そのプログラムをArmadilloに組み込む手順を解説する
前回は、Armadillo-9とホストPCを接続して、シリアルポート経由でターゲット(Armadillo-9)のLinuxにアクセスするところまで解説しました。
今回は、Armadillo-9に自作アプリケーションを組み込む方法について解説します。また、Armadillo-9上のディスクイメージを書き換えて、電源投入時に自作プログラムが自動起動するようにしてみます。この手順をマスターすれば、Armadillo-9上のLinux環境を自由にカスタマイズできるようになります。
まず、Armadillo-9に組み込むアプリケーションを作成するのに必要な開発環境を準備しましょう。必要な道具は、ホストPC(OS:Red Hat Linux 9)とArmadillo-9付属のCD-ROMです。このCD-ROMに収録されているクロスコンパイラを、ホストPCのLinuxにインストールします。
では、作業を始めましょう。以下、インストール作業はroot権限を持ったユーザーで実施してください。
最初に、CD-ROMをマウントします。Linuxの設定によっては、自動的にマウントが行われる場合があります。デバイスファイル名(/dev/cdrom)やマウントポイントはディストリビューションなどによって異なる場合があります。自分の環境に応じて適宜読み替えてください。
# mount /dev/cdrom /mnt/cdrom |
CD-ROMには、各種ファイルがRPMパッケージで収録されています。rpmコマンドを用いて必要なパッケージのインストールを行います。
# cd /mnt/cdrom/cross-dev/rpm |
rpmコマンド実行例 |
なお、rpmコマンド実行時に警告メッセージが出る場合があります。インストールファイルに標準で適用されているグループ情報などの不一致によるものなので、無視しても問題ありません。
参考までに、Armadillo-9付属CD-ROMの/cross-dev/rpmディレクトリに収録されているファイルを紹介します。 binutils-arm-linux-2.14.90.0.7-8.i386.rpm クロスアセンブラ、ライブラリアン(総称名:binutils) cpp-arm-linux-3.4.1-4sarge1.i386.rpm C言語クロスプリプロセッサ gcc-arm-linux-3.4.1-4sarge1.i386.rpm C言語クロスコンパイラ linux-kernel-headers-arm-cross-2.5.999_test7_bk-16.noarch.rpm クロスコンパイル用ヘッダファイル一式 libc6-arm-cross-2.3.2.ds1-13.noarch.rpm クロスCライブラリ:Shared libraries and Timezone data libc6-dev-arm-cross-2.3.2.ds1-13.noarch.rpm クロスGNU Cライブラリ:Development Libraries and Header Files libc6-pic-arm-cross-2.3.2.ds1-13.noarch.rpm クロスGNU Cライブラリ:PIC archive library libc6-prof-arm-cross-2.3.2.ds1-13.noarch.rpm クロスGNU Cライブラリ:Profiling Libraries libdb1-compat-arm-cross-2.1.3-7.noarch.rpm クロス用Berkeleyデータベースルーチンライブラリ libgcc1-arm-cross-3.4.1-4sarge1.i386.rpm クロスGCCサポートライブラリ 以下のファイルは、C++機能を使用する場合に必要になります。今回は同言語を使用しないため、特にインストールする必要はありません。 g++--arm-linux-3.4.1-4sarge1.i386.rpm C++クロスコンパイラ libstdc++6-0-arm-cross-3.4.1-4sarge1.i386.rpm クロスGNUスタンダードC++ライブラリ(v3) libstdc++6-0-dbg-arm-cross-3.4.1-4sarge1.i386.rpm クロスGNUスタンダードC++ ライブラリ(v3)(debugging files) libstdc++6-0-dev-arm-cross-3.4.1-4sarge1.i386.rpm クロスGNUスタンダードC++ライブラリ(v3)(development files) libstdc++6-0-pic-arm-cross-3.4.1-4sarge1.i386.rpm クロスGNUスタンダードC++ライブラリ(v3)(shared library subset kit) |
インストールが正常に完了したかどうかの確認は、クロスコンパイラのコマンドが使用可能かどうかで判断可能です。
# arm-linux-gcc -v |
正常にインストールされた場合 |
# arm-linux-gcc -v |
インストールができていない場合 |
参考用に、コマンド名と機能の一部を抜粋します。
arm-linux-gcc | : | Cクロスコンパイラ | |
arm-linux-as | : | クロスアセンブラ | |
arm-linux-ld | : | クロスリンカ |
Armadillo-9にはすぐ使えるクロスコンパイラが付属しており、環境構築は非常に簡単です。ただし、実際の組み込みLinux開発においては、クロスコンパイラを自分でコンパイル(ビルド)して構築することもあります。いずれ詳述する機会を設けたいと思いますが、ここで簡単にクロスコンパイラを自分で構築する方法を紹介しておきます。
binutilsとGCCのソースコードを展開した後、configureにて環境設定を行います。この際に注意しなければいけないのは、単純にconfigureを行うとセルフコンパイラのビルド設定になってしまうので、必ずクロスコンパイラ設定(同時に対象とするターゲットCPU種別の設定)をすることです。 同時に、コマンドプリフィックスを指定し、セルフコンパイラと異なるコマンド名にする設定を行うのが理想です。Armadillo-9付属のクロスコンパイラもこの設定がなされているため、gccなどのコマンド名には頭に「arm-linux-」という文字列が付いています。 configureが終わったらビルド(make)を行います。前述したとおり、GCCのビルドの際は組み込みLinuxのヘッダファイルを必要とすることがあるので要注意です。 概要だけを見るとこれだけの作業で構築可能なのですが、実際にはGCCのビルドにかなり手間が掛かるので、腰を据えて行うことをお勧めします。 |
Copyright © ITmedia, Inc. All Rights Reserved.