コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 8月, 2007


hatena bookmark

組み込み開発における開発手法のひとつ、について。

組み込みのマイコンにおけるソフトウェア開発も、コードがある程度の規模になってくるとだんだん面倒になってくる。
主な理由がターゲットへのダウンロードと、ターゲットデバッグによるのだが、大抵の場合はダウンロードに時間がかかったりターゲットデバッグに苦労させられたりする。特にデバッグの様な頻繁にチェック&エディットが必要なターンに、毎回ダウンロードしていたのでは結構な時間を消費してしまう事になる。
そういった場面を想定して上手いこと開発を行うにはどうしたら良いのだろうかというのは、開発者のスキルの見せ所なのではないだろうか。

私はできるだけ PC 上で開発するようにしている。
PC上であれば高速にコーディングやデバッグができるので、かなり理想的な開発速度を得ることができる。
ではどうやって?

V850_interface
これが今回 V850 上で作成したコメベーダーの概略図。
インベーダーゲームを作成するのに必要な要素として考えると「画像」「音声」「入力」の三つであることがわかる。そしてそれぞれの要素を用意していたわけだが、それらの動作を司るルーチンとして “kome_*_drv” というルーチンを用意して処理をまとめてある。
そこより上位のコードにおいてはこれらドライバルーチン「だけ」を介してシステムリソースにアクセスする形に抽象化することで、ハードウェアの仕様を「ある程度」忘れることができる。そのことによって、上位コードはインベーダーゲームというアプリケーションの実現のみに思考を割くことができるというわけ。

さて、上の図を眺めていて欲しい。
上位のコードはドライバルーチンのみをコールしているので、ターゲットへの依存性は無くなっている。ハードウェアをドライバルーチンが抽象化しているためだ。
ならば “kome_*_drv” とインタフェースは全く同じで、おおよそ同じ動作をしてくれるルーチンを用意すれば、上位コードについてはPC上でも開発・動作可能なのではないか。
SDL_interface
そこで、このようにPCで開発できるようインタフェースは同じだけれども、中身が違うドライバルーチンを用意した。画面を表示したり、音声を出力したりするためのメディアライブラリとして libSDL を使用している。

komevader_sdl_windows
これで、Windows上で開発ができることとなる。
実際コメベーダーに関しては先にこのような仕組みを作ってあり、ゲーム部分の開発とデバッグは Windows 上で全て済ませてしまっている。

今回、下部分を SDL に頼ったが、この SDL 自体オープンソースかつ他機種向けに用意されているので、コメベーダーSDL版もコードの変更無しで様々な機種に持っていく事ができる。
komevader_sdl_macosx
MacOSX版

kv_ss_linux_01.jpg
Linux版(スクリーンショットは PS3 Linux のもの)

komevader_sdl_gp2x
OS に Linux を使っている韓国産オープンソースゲーム機 GP2X。

とまあ、こんな風に C言語基調で機種依存性を減らすように組み立てると色々できるというお話。多少無駄なコードは増えるけれどもね。

こんな開発の仕方もあるんですよというお話までに。
SDL版のソースコードは GP2X の方に置いておく。


hatena bookmark

てなわけで、V850とCPLD CRTCによるインベーダーゲームの完成です。
タイトルはプロジェクト名だった「コメベーダー」をそのままタイトルにしてしまいました。考えるの面倒だったので。

まずは作成成果物の提示ということで、動作している所を紹介するムービーとスクリーンショットから。

ムービーはニコニコ動画にあるのと同じもの。

コメベーダースクリーンショット1 コメベーダースクリーンショット2 コメベーダースクリーンショット3

作成成果物としてのソースコード。

komevader V850 ソースコード

komevader CPLD VHDL ソースコード

CPLDは以前から変わっていないはず。
V850のソースコードも画面周りはCPLDとSRAMが無いと意味がないので参考程度に。でも、音声出力周りは使い回しが効くんじゃないかと。


hatena bookmark

トータルでは長いこと続けてきたインベーダーゲームとそれを動作させるハードウェアの制作ですが、ついに完成。
動作の様子はニコニコ動画にアップしてあるので、見てやってくださいな。

ニコニコ動画はアカウントがなくて見れないよ、という方用の動画や、ソフトウェア部分のソースコードと解説などはまたこのあと少しずつ用意していく予定。


hatena bookmark

V850 KOMEVADER snapshot
これまでの色々な要素はこれを作るために必要なものだったから。
といった感じで、V850+CPLD CRTC 基板によるインベーダーゲームを制作中。
スクリーンショットは、一応V850+CPLD CRTC 基板実機で動いているものを撮影しているけれども、まだまだ未完成品。

今はソフトウェア作成のターンなので、なかなかここに進捗とかが書きづらく間が空いてしまう次第。(ソフトウェアは本業なもんでいまいち語る事がないのです)

ちなみに、Interface誌の V850 アプリケーションコンテストに応募する予定はありません。
テレビゲーム製作は既に記事になっていることだし。