posted by
rerofumi
2009/8/27 木曜日 2:41:07
そういえばアナウンスするのを忘れていたけれども、GP2X Wiz のページを作っていた。
PSPやGP2Xでおなじみの TCGS−CAR をイニシャルタイトルとして置いてある。
ひとまず開発環境が整って、無事動かせるようになったという事ですな。
以前言っていたタイマー問題なども調べたので GP2X Wiz の雑多な情報を書いておくことにしよう。
■ タイマー問題
GP2X とか通常のシステムでは 1ms の単位で取れていたタイマーが Wiz では 10ms でしか取れない。何とかならんかと調べていたけれども、どうやら Wiz のカーネルでは clock() 関数が(数字の精度はともかく)10ms単位のカウンタで更新されているということらしい。なのでこれを見ている多くのタイマー系が全部 10ms 単位になってしまうという結果。
何で10ms じゃダメなのかというと、60fps という数字は約 16ms だから。
タイマーを使ってゲームを定速で動かすのはきついのでどうするかというと、ハードウェアレジスタにアクセスして V-Sync を取ることにした。
このへんレジスタへのアクセス方法(/dev/mem を mmap() してアドレスを直接読み書きする)は mame4all あたりのソースコードを参考にするのが良い。
mame4all は SDL とかを使用しておらず、キー入力と画面描画は直接ハードにアクセスして行っているから。(サウンドはカーネルドライバをつかっている)
■ インターレース問題
Wiz をちょいと弄るとわかるのだけれども、ELディスプレイがちょいと変わったインタレースで描かれている。この辺ディスプレイをインタレースにして半分ずつ描くというのは携帯の安いディスプレイでは珍しくはなく、PSPも3000番台になってLCDが綺麗になったら実はインタレースだということが見えるようになってしまいコームノイズがやり玉に挙げられている。
Wiz の EL も 60Hz で半分ずつ描かれているようなのだが、その Even と Odd が対角線で分かれている。つまり、画面を三角形2つに分割してその2つを交互に描いている。
これがどういうことかというと60FPSでゲームを動かすと斜めに絵がずれる。画面半分の三角形は今のフレームだが、もう半分は前のフレームが表示されているのだから。
じゃあ画面上部からの描画ラスタというタイミングはないかというとこれもちゃんとある。
なので画面swapを VBlank で行わないとラスタとインタレースの両方でフレームギャップを生じてしまうというとほほさ。
Wiz の次ロットから LCD になるという噂もあるけれども、それはこの奇妙なインタレースを改善するためなのかもしれない。
■ タッチパネル
GP2X-F200 ではタッチパネルが付いていたものの、デバイスファイルを直接読みとる方式だったと思う。
Wizではカーネルのマウスドライバとして扱われているらしく、SDLのマウスで読めるらしい。
■ ボリューム
相変わらずただのボタンで、音量はアプリが自前で音量をコントロールするソフトウェアボリューム。
■ OpenGL
lib だけ提供されて開発が GL Quake のソースしか手がかりがないという状態が長らく続いていた OpenGL だが、このへんのデベロップリーダーである Pickle 氏による開発パッケージがようやく提供開始となった。
wizGLES, nanoGL というインタフェースでアクセスするのだが、今はSDL1.3 への OpenGLES 組み込み対応が進められている。
しかし、Wiz に入っているSDLは 1.2 なのでそのあたりが将来的に提供されてもライブラリインストールをユーザーに強いることになるかもしれない。
■ カーネルソース問題
ここに来てゆるゆるといろんな開発が立ち上がっているけれども、GPH から提供されているものは何もない。SDK もなければドキュメントもカーネルソースもない。
この辺にコミュニティのいらだちが募ってきておりどうなっとんじゃという声も高くなっている。
そんななかついにカーネルソースがアップされる。おおとうとう、と思ったがどうやらこれは協力デベロッパーがGPHに業を煮やして独断でアップしたものらしい。
そんなこんなで、勝手にやるぜとコミュニティ手動でがんがん進んでいる状況なのだけれども、あまりやりすぎるとファームウェアのライブラリと剥離が進むかもしれない。
■ 良いところ
なんのかんので SDL レベルで開発はできるし、2Dのピクセルフィルレートはかなり早い部類にいるので、320×240 という画面サイズに目をつぶれば 2Dスプライトゲームが作り易いターミナルかもしれない。
フラッシュプレイヤーがあるので、Flashでカジュアルゲームを作ってねというのがGPHの思惑だったっぽいが、皆そのへんに興味はないあたり。
posted by
rerofumi
2009/8/16 日曜日 18:43:17
前回の記事では、SDLとSDL_image,SDL_mixer をビルドする rake file を作った。
おかげで Cygwin 環境に自前 SDL ライブラリを導入するのが容易になって自分自身で満足していたり。
今度はこれを拡張して、本来の目的である arm-linux-gnu な環境へ対応したクロス開発ライブラリをビルドできるようにした。お目当ては GP2X wiz 用の開発環境構築だけれども、同じ arm-linux-gnu なターゲットである BeagleBoard や OpenPandora でも使う予定。
まあ、このへんをもにもに作成してクロス開発環境構築の経験値を積もうというのが一番の目的だったりするけれども。
てなわけで GP2X wiz の開発ができるところまで確認できたので Ver0.0.2 release
Download: fumi2_sdl_build-0.0.2.tar.gz (7kb, tar+gz)
前回の 0.0.1 では必要な patch や README がアーカイブから抜けていたので、あれ自体は動かしても最後まで動作しなかったかもしれない :-)
こいつでビルドするための toolchain は既に方々から提供されているものを使う。
このへんの gcc+glibc も同じような rakefile で提供してみたいものだが、最近は crosstools-ng を使うのが一般的だし、手応えとしてかなり難しそうだというのがあるので課題として積んでおくことにする。
今回ので GP2X wiz のクロス開発環境が構築できたのだけれども、その対応のために Ver0.0.2 ではいくつか変更を施している。一番大きいのが libjpeg を最新の v7 から v62 にダウングレードしているところ。
libjpeg v7 は 10年近くメンテナンスされていなかった(枯れていてメンテの必要がなかった) v62 の configure 周りを今時に合わせた待望の新版で 27-Jun-2009 にリリースされた。コレを使うと Darwin でも configure 一発だったりして楽ちんなんだけれども、GP2X の中に入っているのが v62 なので共有ライブラリ名に食い違いが発生してしまう。
なのでしぶしぶと v62 にダウングレードしているのだけれども、今 v62 のソースをダウンロードしようとすると地味に難しかったり、ビルドが難しかったり。
v62 の configure の問題は autoconf, automake が古すぎて libtool がちゃんと生成されないあたりにあるのだが、これは一緒にビルドする linpng に依存することにして libpng の configure で生成された libtool をコピーして使う事にした。
そいった面倒な手順を Rakefile に記述してあるよ、ということ。
ビルド手順を日本語でメモするかわりに rubyという言語でメモ。
posted by
rerofumi
2009/8/10 月曜日 1:41:19
posted by
rerofumi
2009/8/7 金曜日 4:13:58

もあさんが「奏」インスパイアなMIDIコントロールターミナルの「もなか」を公開開始したもよう。
同じくもあさんが作成している、GingerのファームをUSB-MIDIに置き換えて奏っぽくした代物。V-USB(旧AVR-USB)というAVRで動くUSBスタックを利用しているので、PCとはUSBで直接つないでつなげるという優れもの。このV-USBはObjective Development社が提供していてフリーで使えるUSBスタックなのだけれども、USBベンダーIDを ObDev 社が提供していて、アマチュアでも容易にベンダーIDとデバイスIDを付けることができるといったあたりがすばらしい。通常USBデバイスを作っても、USB Implementers Forum に数十万のお金を払ってベンダーIDを取得しないとそれを配布することはできない。なのでアマチュアがUSBデバイスを作ることができても、頒布することはまず無理なのだよな。V-USB はそのベンダーID部分を ObDev 社が肩代わりしてくれている。その代わり、5個以上配布するときはデバイスIDをコマーシャルライセンスで購入してね、といったビジネスモデル。
前書きが長くなったけれども、ようするに「もなか」はUSB接続できる「奏」なのですな。便利な。
インスパイア元としては一つ作ってみるしかないだろう。といっても、Gingerは持っていないので、適当に部品を買い集めてGingerクローンを自作することにした。


出力のピンソケットはGinger互換ではなく、奏互換で 10ピン×2 としてみたあたり。
単に部品箱に余っていたというのもあるけれども。

裏は相変わらずこきたない。
制作自体はさほど問題はなかったのだけれども、AVR慣れしていないのもあって動くまで4日くらいかかってしまったあたり。
Read the rest of this entry »
posted by
rerofumi
2009/8/1 土曜日 22:43:47
PSoC3/5 の開発環境は新規に提供される “PSoC Creator” というものになる。PSoC1 の “PSoC Designer” とはまた違った感じの特徴がある代物。

PSoC Creater にはARMのGCCが含まれており、PSoC5ではそれを利用することとなる。
PSoC3 の 8051 Cコンパイラは Keil の C51 を利用するが、別ダウンロードでインストールする必要あり。C51 は30日間の free trial なので一応すぐ利用する事が可能。そのあとはライセンスをアクティベートする必要があるのだけれども、ここではとりあえず省略。
CD 内にある PSoC DevelopmentKit つーのはドキュメントやサンプルをインストールしたり Keil C51 をダウンロードしてインストールしたりするお役立ちバッチの模様。

PSoC1 の時は PSoC Designer を立ち上げるといきなり内部ブロック配線図が表示されてびっくりしたけれども、PSoC Creator の場合は回路図エディタがでんと表示されてそれなりに度肝を抜かれる。
必要なユーザーモジュールを配置していくところから始まるのは変わらないっぽい。
まずは PSoC の定番、プログラムに依らずにモジュールだけで LED チカチカでもやってみましょか。
Read the rest of this entry »
posted by
rerofumi
21:00:06

Cypress から PSoC DEVELOPMENT BOARD CY8CKIT-001 が届く。意外にでかいプラスチックパッケージにちとびびり。
全国のピーソッカー(今適当に作った単語)待望の PSoC3/5 が姿を見せ始めている。この CY8CKIT-001 は PSoC3 の ES(Engineering Sample)版が付属した最初のテストボードとなる。注文を受け付け開始したと聞いて早速申し込み本日届いた次第。

中身はこんな感じ。
PSoC3/5 というのは、周辺回路がソフトウェアで(ある程度)配置決定可能なフレキシブルマイコンとして好評だった PSoC の新世代プロダクツ。
コンフィギュアブルな周辺回路といった部分はおおよそそのままにマイクロプロセッサコアをこれまでの M8C から 8051 と Cortex-M3 に変更したといった感じのもの。ちと非力でださかった M8C からパワフルなコアになって魅力倍増な感じ。
現在は MyCypress (https://my.cypress.com/) でひっそりと半クローズドベータ展開中。要アカウント登録。
8051コアの方が “PSoC3” で、Cortex-M3(ARM) コアの方が “PSoC5” となる。ちなみにこれまでの M8C コアの奴は “PSoC1” としてそれなりにスケーラブルに展開していく様子。
今回は PSoC3 のES2サンプルが出てきたので提供開始といった感じの開発ボード。PSoC5 はまだ存在していないためおあずけ。でも 3 と 5 は本当にコアが違うだけで構成とかは同じものっぽい。
現在のところは本当に Engineering Sample なんで Errata ももりもり存在している。ESをいち早く入手したいというマニア心とともに、Errataドキュメントを読んで笑うとかそんなレベルで。
とりあえず PSoC をよく知っているとして PSoC3/5 で何が変わったのかから眺めてみよう。
Read the rest of this entry »
posted by
rerofumi
2009/7/28 火曜日 1:53:40
結局 GP2X wiz の方はまだなんにも触っていない状態。
なんでかというと、クロスコンパイル環境がまだ手元で確立していないからなんですな。
ここしばらくはずーっとクロスコンパイラのビルドに挑戦しまくっていたり、その他のライブラリ群のビルドに挑んでくじけていたりの繰り返し。まあ、Open2Xの成果を使えば良い話なんだけれども、cygwin上でのtoolchainが不完全だったり、自分で環境を作るのが色々修行になったりするのでやめられないとかそんなあたりで。
そうこうしているうちに MacOSX 向けの toolchain がリリースされてきた。ふむ、MacOSX 上で GP2x wiz の開発をするほうが手っ取り早いかもしれないなあ。
んがふと気がついてみると、手元のMacBook(白、けいおんモデルと同じ奴)に SDL が入っていない事に気がつく。昔の環境には入れていたけれども、こいつになってからはまだ一度もいれていなかったっけ?
そんなわけで SDL, SDL_image, SDL_mixer をインストールすることにしたのだけれども、周辺ライブラリもたくさんあって地味にめんどい。
ところで、最近は toolchain の提供はバイナリよりもインストールスクリプトによる方が主流っぽい。オープンソースなんでバイナリのみの配布だと波風たつのかね?
CrossTool や ct-ng なんかもこの類だねえ。これらは自動ビルドスクリプトではあるけれども、スクリプトを読むことで環境構築手順がわかる教材でもあったりする。
Open2X もそういったスクリプトを用意しているのだけれども、いまいち使い勝手が悪かったりターゲットが linux だけだったり。
うむ、自分で作るか。
どうせ、ちまちまインストールしていく途中で configure につけるスイッチをメモしたりするんだから、それをスクリプトにメモしていくと思えば同じことだろう。
で、そのスクリプトに ruby で書かれた make 代替コマンドである rake を採用する。
前々から使えるようになりたかったんだよね、rake。
shスクリプトとmakefileでなんでもできるというのは嘘じゃないけれども、いまいち自分で書こうとは思わない。どうせ書くなら楽しいコーディングしたいじゃない。
rake だと ruby そのままに make みたいな依存関係記述ができるので、今回の用途にはぴったりじゃないかと。
てなわけで今回作成したのがこちら
Download: fumi2_sdl_build-0.0.1.tar.gz (4kb, tar+gz形式)
SDL のインストールだけでなく rake に興味ある人もどぞ。
ターゲットは MacOSX/Cygwin/Linux の 3種類。一応手元で動作確認済み。
まーご利用に際しては as is ということで。
posted by
rerofumi
2009/7/11 土曜日 15:59:43
シリコンハウス共立とツールベンダーのハッコーが「ハンダ付け道場」なるイベントをやるらしい。
うんうん、こういった入門!やってみよう!って企画は良いよね。
で、そんな記事を Make: JAPAN blog 経由で、イベント告知のBlogページにたどり着いて知ったわけだけれども。
……
なんか右の写真に見覚えが。
ああ、コレか。
元の記事もハンダ付け入門のすすめだったので、このように写真を使っていただいて光栄でありまする。
posted by
rerofumi
2009/7/7 火曜日 1:31:36
20セットを用意して、4/7からひっそりと受け付けていた「奏」のキットがおかげさまを持ちまして完売となりました。
お買い上げいただいた方を始め、皆様にお礼申し上げます。
是非とも MINIprog を手に入れてPSoC開発にも足を踏み入れてみてくださいね。とPSoCの布教も忘れない。つか、AVRクローンでも作った方が受けそうだ。
そうこうしているうちに Arduino がビッグウェーブになってしまいさっぱり目立たないプロジェクトではありましたが、それでも多くの人に注視していただくことができ感謝の限り。
少量ではありましたが、個人頒布も行えて色々勉強させてもらいました。
とりあえず「奏」については追加生産の予定はありません。
現在は、もうちょっと色々に使える大きめのPSoCテストボードを設計しようかなと準備を進めているところです。まあ、この辺はまた気が向いたときにでも。
posted by
rerofumi
2009/6/28 日曜日 2:08:52
パラレルポート接続のJTAGタウンロードケーブルと決別してWindows7 RC 64bit を使い始めて数週間。結局 Xilinx と Lattice についてはUSB接続ダウンロードケーブルを買ってしまったので、VMwareのXPから特に問題なく利用も開発もできている状態。しかしALTERAデバイスのダウンロードケーブルだけがない。
ALTERA用についてはTERASIC BLASTERが安いし、それ以前にALTERAは使わないから良いかなーと思って後回し。

一応Cyclone2のブレッドボードとか手元にあったりもするので使えるに超したことはない気がする。
そんなとき「USB-Blasterもどきの制作記事」なるものを知る。おー、なんか使用頻度も高くないからこれで良いんじゃねって気がしてきた。
部品箱をあさったら無事全部そろえることができたのでさくっと作ってみようか。

PIC18F2550 は秋月電子のモジュールを使用する。別件でテストしていたものを使い回し。USB接続のシリアルコンバータ+ちょっとしたマイコンが欲しいときに一番使いやすいモジュールなんじゃなかろうか。
水晶や電源周りにUSBコネクタと一通りケアされているので便利。つか、今回の目的だとこれに抵抗とコネクタ付けるだけ。


適当に作成。間にバッファでも挟むとより使えるものになりそうだけれども、今回はEasyに作りたかったので省略。
マイコンにファームを書き込んで完成。

おお、本当に USB-Blaster として認識されてコンフィグレーションもできた。もちろん、AS Programing もOK。
いやいや、これはお手軽で良いですなあ。
そいや、xilprg派生でUSB-BlasterをImpactからIP利用するプロキシなんてのがあるんだっけ?それを使えばXilinxもコンフィグレーションできるかもね。