特集 : 最新組み込みLinux実践講座Part3

対象製品: Armadillo-500Armadillo-300Armadillo-9Armadillo-240Armadillo-230Armadillo-220Armadillo-210Armadillo(HT1070)Armadillo-J
先頭 Part 2 Part 4

(株)アットマークテクノ
中井真大
NAKAI Masahiro

この文書は技術評論社「Software Design」2007年11月号に掲載されたものです。

本章からは, ㈱アットマークテクノ「Armadillo-500」が搭載されている「Armadillo-500 開発ボード」を使い,実際に組み込みシステムを開発する手順を解説していきます.

はじめに

ここからは,実際に組み込みボードを使用して,組み込み機器を作成していきます.今回使用する組み込みボードは,㈱アットマークテクノ製「Armadillo-500開発ボード」です.このボードを使用して「アンケートツール」(後述)を作成していきます.本特集で,組み込みシステム開発の雰囲気を感じとっていただければ幸いです.

なお,以降の章で説明するソースコードやバイナリイメージは,http://download.atmark-techno.com/misc/softwaredesign_2007-11からダウンロードすることができます.必要に応じてダウンロードしてください.

本誌に掲載されていないArmadillo-500開発ボードの詳しい使い方は,Armadillo-500 の各マニュアルに記載されています.マニュアルは,http://download.atmark-techno.com/armadillo-500/documentからダウンロードできます.

Armadillo-500 開発ボード

Armadillo-500 とは

Armadillo-500開発ボードは,CPUやメモリといったコンピュータに必要な最低限のデバイスを実装したCPU モジュールと,各種コントローラおよびコネクタを実装しCPUモジュールの機能を最大限に活用することが可能なベースボードを組み合わせた組み込みボードです(写真1,2).CPUモジュールとベースボードのハードウェア仕様を表1,2に示します.

●写真1 Armadillo-500 CPU モジュール

●写真2 Armadillo-500 開発ボード

●表1 Armadillo-500 ハードウェア仕様(CPU モジュール)
プロセッサFreescale i.MX31L
ARM1136JF-S
I/Dキャッシュ 16Kバイト/16Kバイト
L2キャッシュ 128Kバイト
ベクタ浮動小数点コプロセッサ搭載
CPUクロック400MHz
メモリDDR SDRAM 64M バイト
NOR FLASH 16Mバイト
外形サイズ34mm × 54mm
コネクタFX10A-140S/14-SV(ヒロセ)


●表2 Armadillo-500 ハードウェア仕様(ベースボード)
メモリNAND FLASH 256Mバイト
Ethernet10BASE-T/100BASE-TX
シリアルRS232C 2ch, 230.4kbps(max)
汎用入出力(GPIO) 22 ビット(3V), 8 ビット(1.8V)
USBUSB 2.0 Host 2ch (High speed 対応)
コンパクトフラッシュType I/II 1 スロット(I/O, メモリカード対応)
SD/MMC1 スロット
画面出力アナログRGB 出力D-Sub15 ピン
オーディオヘッドホン出力/マイク入力
カレンダ時計搭載(バックアップ機能付き)
拡張I/F拡張メモリバス(16 ビット)
JTAG I/FMictor 38 ピンETM コネクタ, 標準20 ピンJTAG コネクタ
外形サイズ98mm × 146mm
コネクタFX10A-140P/14-SV(ヒロセ)
電源DC5V ± 5%

Armadillo-500 CPUモジュールはARMプロセッサを採用しています.ARMアーキテクチャの最大の利点は,低消費電力であるということです.消費電力を低く抑えることで,バッテリによる長時間駆動が可能になりますから,携帯電話やオーディオプレーヤにARMプロセッサが採用されている事例は少なくありません.もちろん,Armadillo-500 CPUモジュールを使用してそのようなハンディシステムを構築することも可能です.

また,CPUクロックが400MHzで,かつ2次キャッシュを持っている点も魅力の1つです.

Armadillo-500 開発セット(A5501-D00)

Armadillo-500 開発ボードを入手する場合,「Armadillo-500開発セット」を購入することになります.このセットでは,ソフトウェアを開発するうえで必要となる開発環境やLinuxのソースコードといったものがすべて提供されています(写真3).

●写真3 Armadillo-500 開発セット

Armadillo-500開発セットに付属されているLinuxカーネルのバージョンは2.6.18で,Debian GNU/Linux 4.0と同じバージョンのものが使用されています.もちろん,Armadillo-500 開発ボード用の各種デバイスドライバも移植されています.

また,ARM クロス開発用のGNU 開発環境パッケージが用意されており,Debian 系Linux ディストリビューションであれば簡単にインストール可能です.Debian系Linux以外(WindowsやRed Hat系Linuxなど)の場合も,ATDE(Atmark Techno Development Environment)というVMware 用OSイメージが用意されているので,複雑なインストール作業なしですぐに開発が始められます.

本特集で作成するシステムについて

アンケートツールとは

今回作成するアンケートツールとは,アンケートハガキやアンケート用紙をビデオ出力に,記入するためのペンをマウスやタッチパネルに置き換えた組み込みシステムです(図1).大勢の人が集まるところ(たとえば展示会など)に設置して,市場調査などのデータ収集に使用することを目的に開発を行います.

●図1 アンケートツールの画面例

近年よく見かけるインターネットによるアンケートでは,CGI を利用して同じようなことを実現しています.ですが,ネットワークの有無や通信速度など設置場所に制限がかかること,ネットワークの設定などに悩まされます.今回作成するアンケートツールであれば,これらの煩わしい事象を回避し,電源を入れるだけで動作するのが最大のメリットとなります.

システム構成

システムを構築する前に,どの機能を何で実現するか考えてみます(表3,図2).

●図2 システム構成

●表3 実現したい機能と使用するデバイス(※は今回は実装しません)
機能使用する機器インターフェース
画面の表示ディスプレイVGA
ボタンの選択マウス,(タッチパネル) USB
データの保存USB メモリUSB
名刺のスキャン名刺スキャナUSB
音の再生 サウンドデバイスAudio

Armadillo-500 ボードならば「データの保存」に使用できるインターフェースはいろいろとあります.今回は,データの集計方法や手軽さといった観点からUSBメモリを使用することにします.

また「ボタンの選択」については,組み込みらしく各ボタンを汎用入出力などを使用して作成することもできますが,こちらも手軽さの観点からUSB マウスを使用することにします(図3,写真4).

●図3 接続図

●写真4 すべてを接続した様子

実際に組み込みシステムにする場合は,質問文と回答選択肢,また各回答選択肢用のチェックボタンや制御ボタンなどをビデオに出力させ,各ボタンは,マウスやタッチパネルで選択/入力できるようにします.回答データはUSBメモリに保存し,PCなどで閲覧/集計できるようにします.

次章以降のための下準備

ソースコードの下準備

次章からは,実際にソースコードを変更していきます.ここでは,そのベースとなる「AtmarkDist」「Linuxカーネル」の2つのソースコードを準備します.Atmark Distは,組み込みボード向けのイメージを生成できるディストリビューションです.本稿執筆時点での最新ソースコードは表4に示すとおりです.

●表4 Armadillo-500 ソースコード一覧
ソースアーカイブバージョン説明
atmark-dist-20070727.tar.gz 20070727(v1.10.0) 組み込みボード向けのイメージを生成できるディストリビ ューション「Atmark Dist」
linux-2.6.18-12-at0.tar.gz2.6.18-12-at0 Linux カーネル

これらのソースコードをダウンロードし,Armadillo-500用にコンフィギュレーション(make menuconfig)してビルド(make)しておきましょう(図4).

●図4 ソースコードの準備


ワークディレクトリを作成
$ mkdir ~/work.sd
ワークディレクトリに移動
$ cd ~/work.sd
ソースコードをダウンロード
$ wget http://download.atmark-techno.com/dist/atmark-dist-20070727.tar.gz
$ wget http://download.atmark-techno.com/kernel-source/linux-2.6.18-12-at/linux-2.6.18-12-at0.tar.gz
ソースコードを展開
$ tar zxf atmark-dist-20070727.tar.gz
$ tar zxf linux-2.6.18-12-at0.tar.gz
$ cd atmark-dist-20070727
$ ln -s ../linux-2.6.18-12-at0 linux-2.6.x
$ make menuconfig
Vendor/Product Selection --->
        (AtmarkTechno) Vendor
        (Armadillo-500) AtmarkTechno Products
Kernel/Library/Defaults Selection --->
        (default) Cross-dev
        (None) Libc Version
        [*] Default all settings (lose changes)
        [ ] Customize Kernel Settings
        [ ] Customize Vendor/User Settings
        [ ] Update Default Vendor Settings

$ make

以降の章について

本章でアンケートツールのシステム概要は理解できたと思います.以降の章では,このシステムを構築する手順を解説していきます.

第4 章では,システムのベースとなるDirectFBを利用するために必要となるAPI の使い方などについて,第5 章では,USB 名刺スキャナを扱うアプリケーションの構築とタッチパネルドライバについて,第6章では画面のフレームワークやデータ保存などシステムのメインアプリケーションの作成について,そして第7章では,システムを運用するための全体の設定を説明していきます.

COLUMN

Linux のGUI フレームワークについて

GUI フレームワークは,ハードウェアインターフェースを抽象化する「バックエンド」,ボタンやメニュー,テキストボックスなどのコントロールを作成/表示する「ウィジェットツール」,アプリケーションのウィンドウ管理やそれらを制御する「ウィンドウマネージャ」から構成されます.これらの各コンポーネントについて,組み込み用途で使われるものをピックアップして紹介します.

■バックエンド

ビデオやマウス,キーボードなどのハードウェアインターフェースを抽象化することで,上位のコンポーネントに同様のソフトウェアインターフェースを提供します.組み込みLinux において代表的なものは,Linux フレームバッファやDirectFB,KDrive などがあります.

  • Linux フレームバッファ
  • フレームバッファは,グラフィックカードなどのハードウェアインターフェースを抽象化したインターフェースとして見せることができます.これを使うソフトウェアからアクセスする場合には,規定された手順を用いて制御することが可能となります.

    しかし,各ハードウェアが持つグラフィックアクセラレーション機能を使用できないため,専用のドライバと比較した場合には性能がずいぶん劣ってしまいます.また,複数のアプリケーションから安全にアクセスするための排他制御ができないことが弱点です.

  • DirectFB
  • DirectFB(http://www.directfb.org/)は,フレームバッファ上で動作する高度なグラフィックAPIです.グラフィック処理の高速化や入力デバイスのサポート,ウィンドウ管理などを提供します.DirectFBは,小さいにもかかわらず強力な機能をサポートしているので,組み込みLinux に向いているでしょう.

  • KDrive

    デスクトップLinux 環境で一般的に使用されているX Window System のX サーバ機能を計量化したものです.

■ウィジェットツール

GUI アプリケーションを作成するうえで,各コントロール(ボタンやメニュー,テキストボックスなど)を簡単に作成/表示するためのAPI です.ウィジェットツールには,GTK+ やQT/Embedded などがあります.これらに対応したアプリケーションは多く,組み込みLinux システムにおいても使用される機会は少なくありません.

  • GTK+

    GNOME アプリケーションでユーザインターフェースを構築するのに利用される基礎的なライブラリで,XWindow System 上で動作します(http://www.gtk.org/).フレームバッファやDirectFB 上などでも動作するように設定することができます.

■ウィンドウマネージャ

ウィンドウマネージャは,一般的なデスクトップ環境を実現するためのソフトウェアで,アプリケーションのウィンドウ管理や装飾したウィンドウなどを提供します.組み込み用途向けには,Matchbox やIceWMなどがあります.

  • Matchbox

    限られたリソースで動作するように設計されたウィンドウマネージャです
    http://matchbox-project.org/).PDA などのディスプレイが小さな組み込み機器に使われています.ウィンドウを1 つしか表示できないところが特徴です.

先頭 Part 2 Part 4