Comments
Description
Transcript
クロス開発に関する研究
クロス開発に関する研究 浅山研究室 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