クロス開発に関する研究

クロス開発に関する研究
浅山研究室
I01I087 中岡茂昭
I00N031 川瀬和哉
1.はじめに
2.1
I00N058 竹内聖
GBA の特徴
[1][5]
携帯型ゲーム機器である GBA の性能
最近,全自動洗濯機,電子炊飯器,電
は,RISC CPU[2],組み込み機器として
気ポット,電子レンジなどの組み込み機
は潤沢なメモリ,デジタルサウンド,2.9
器では,8bit や 16bit のプロセッサを使
インチ TFT カラー液晶,入力ボタンを搭
い ROM や RAM の容量が限られているよ
載した高性能 32bit コンピュータである.
うなシステムでは,OS が使われていない
また,ニンテンドーゲームキューブのコ
ことが多い.
ントローラとしても使用できる.
今回,GBA(ゲームボーイアドバンス)
GBA には,メインプロセッサである
は,組み込み機器として扱えることが分
ARM7[6]が搭載されている
(図 1).
また,
かった[1].そこで Linux と GBA を用い
ゲームの高速化のために,ARM7 の内部
てクロス開発環境を構築した.C 言語を
には 32bit バス幅の 32KBRAM が埋め込
使い GBA 上で動くプログラムを作成す
まれている.入力キーは,十字キー,6
ることにより,クロス開発に関する研
つのボタンの計 10 種類の入力キーがあ
究・調査を行った.
る.通信ポートには,通信ケーブルを接
続することで,任天堂独自の通信プロト
2.組み込み機器の特徴[2][3][4]
コルにより GBA 同士のシリアル通信が
可能になる.通信ケーブルを用いたゲー
組み込み機器とは,携帯電話,カーナ
ムの中に,子機用のゲームパックを必要
ビ,デジタルカメラなどの中に組み込ま
としないタイプがあるが,これは子機起
れたコンピュータである.電子炊飯器な
動時に,通信ケーブルを通じてプログラ
どの簡単なものから,DVD/HDD レコー
ムを親機から転送することで実現してい
ダなどの高機能なものまで,今ではさま
る.
ざまなものに使われている.
一般的なコンピュータとは異なり,物
理的に狭い場所に入れる必要があること,
消費電力に厳しい制限があること,操作
に対し十分な速さで処理できること(リア
ルタイム性),低価格にするために最低限
のメモリで動作させなければならないこ
と等,いくつかの要求や制限が必要な機
器である.
2.2
組み込み機器としての GBA
GBA と組み込み機器でメモリ1のよう
な差異がある.組み込みプログラムでは,
3.クロス開発環境[3][4]
クロス開発環境とは,ホスト(プログラ
ROM,RAM,VRAM などの正確なアド
ムを開発するマシン)と,ターゲット(コン
レスが分からなければ,プログラムをメ
パイルされたプログラムを実行するマシ
モリ上に配置できないので,標的機器の
ン)が異なる場合のことである.
ハードウェア資源を直接制御しなければ
家電製品や家庭用ゲーム機器などは,
ならない.この場合,必要な情報がメモ
それ自体では開発環境を持たないため,
リマップである(表2).
別のコンピュータ(ホストマシン)を用い
てソフトウェアを開発し,完成したプロ
表1
組み込み機器と GBA の比較
グラムをターゲットに送り込んで実行す
る.
比較項目
組み込み機器
GBA
CPU 性能
数 十 ~ 数 百
32 ビット CPU
記述したソースコードは,ターゲット
で動作するオブジェクトコードに変換す
MHz
搭載メモリ量
~数 Mbytes
256Kbytes
る必要がある.このような変換機能を持
電源
バッテリ駆動の
単 3 乾電池,も
った特殊なコンパイラやアセンブラを,
場合あり(省電
しくは専用バッ
クロスコンパイラ,またはクロスアセン
力対策が必要)
テリ
ブラという.
タッチパネル,
ボタン 10 種
入力手段
3.1クロス開発環境の構築[3][4]
ハードウェアキ
今回用いた開発環境は,Unix 系 OS に
ー,リモコン
特徴
・高速立ち上げ
32000 色の表示
・電源オフで即
が可能
る OS をホストとして用いた.
ARM プロセッサ上でプログラムを実
座に停止
開発手法
Vine Linux というフリーで配布されてい
PC 上でクロス
PC 上 で ク ロ ス
開発
開発
行するために,GNU[7]で配布されている
ソフトを Linux に展開し,ARM 版のク
ロスアセンブラ,リンカーローダーを作
表2
GBA のメモリマップ
内容
メモリ領域
領域長
BIOS ROM
00000000-0003FFFF
16KB
外部 RAM
02000000-0203FFFF
256KB
I/O レジスタ
04000000-040003FF
1KB
パレット RAM
05000000-050003FF
1KB
VRAM
06000000-06017FFF
96KB
成する.次に GNU で配布されている
GCC を Linux に展開し,ARM 版のクロ
スコンパイラを作成する.
ホストである Vine Linux と,ターゲッ
トである GBA を専用ケーブルで繋ぎ,ホ
スト上で組み込み機器用のプログラムを
作成し,ターゲットに転送して動作確認
をするということを繰り返した.(図2)
パレットを用意すると,プログラムのサ
イズが大きくなるため,パレットを一つ
に統一することでプログラムのサイズを
小さくした.
大吉,吉,凶,大凶を決定する方法と
しては,ランダムではなく左右に振る動
作にあわせて決定している.結果を決定
4.組み込みプログラム [1]
今回私たちが作成したプログラムは,
する基準はあるが,ゲームを何度か繰り
返すことにより次にでる結果を分かりづ
らくしている.
入力の確認ができること,入力に連動し
て画像を動かすことができること,複数
枚の画像を切り替えることができること
などの,GBA の様々な機能を 1 つのプロ
グラムに組み込めるために,御神籤(お
みくじ)のプログラムを作成した.
また,GBA は画像表示形式が MODE0
と MODE3 の2通りあり,MODE0 は 8
図3
mozi256.h
×8 のタイルに分けて画像を表示するの
で,高速で表示することができる.表示
で き る 色 数 は 256 色 で あ る . 対 し て
MODE3は 1 ドットずつ書き換えるため,
綺麗に画像を表示することができる.し
かし,その分画像表示は遅くなる.表示
できる色数は 32000 色である.今回のプ
ログラムでは,MODE3 では画像の切り
図4
art256.h
図5
結果画像
替えが遅く,御神籤を左右に振るときに
動くように見えなかったため,MODE0
を使用した.
プログラムに必要なヘッダファイルは
256 色のパレット情報,画像をタイル化
した情報である.最終結果である大吉,
吉,凶,大凶は,図3に含まれる「大」
「吉」
「凶」の画像と図4に含まれる絵の組み
合わせにより,図5のように表示する.
また色の情報も一枚の画像につき一つの
5. 結果
Unix 系 OS の中で,日本語による運用
参考文献
[1]
西田
亙著,Linux から目覚めるぼ
を前提とした Vine Linux を用いた.Vine
くらのゲームボーイ!,2003 年 12 月 10
Linux を PC にインストールし,クロス
日初版,ソフトバンク
パブリッシング株
開発環境としてのホストマシンを作成し, 式会社
Linux と GBA を用いたクロス開発環境を
[2]
構築した.C 言語を使い GBA 上で動くプ
http://e-word.jp/
ログラムを作成することができた.
[3]
今回のプログラムは全て自作した.本
IT 用語辞典
組み込み向けクロス開発環境の構築
http://www.embedded.jp/article/cross.ht
来ならば最終結果は 4 枚用意しなくては
ml
いけないが,メモリが不足するため 2 枚
[4]山際 伸一 著,Interface,2005 年 1 月
の画像の一部を組み合わせることにより
号,pp.44~53,CQ 出版社
表示した.結果は完全なランダムではな
[5]Wikipedia
いが,ランダムに見せるために左右の振
http://ja.wikipedia.org/wiki/
りと振った回数,実行回数により,結果
[6]
を決めている.
http://www.itmedia.co.jp/mobile/news/0
IT media Mobile
108/20/arm.html
6. 考察
GBA 上で動くプログラムの作成におい
ては,メモリが小さく,計算速度が遅い
などの制限がある.メモリはプログラム
の容量を小さくするために,画像の枚数
を減らし,全ての画像のパレットを共通
にする必要がある.計算速度は計算回数
を減らし,速度の遅い CPU でも違和感な
く動くようにしなければならない.
[7]
GNU プロジェクト
http://www.gnu.org/home.ja.shtml