プロジェクトの概要
このプロジェクトではiPhone上に組み込みOSの決定版であるToppers JSPを搭載することを目的にしています。
iPhoneアプリケーションで気軽に優先順位付きのOSが使用できます。iPhoneフレームワーク(Cocoa)上で動作するため、あまりReadltime性は期待できません。
現在iPhone Simulatorでのみ動作確認をしています。
動作確認をしていませんが、Mac上でもほとんど変更せずに動作させることができると思います。
Toppers JSP for iPhone について
- Cocoaとの連携について
- Toppers JSPはCocoaと別Threadで動作します。そのため、CocoaとJSPの両方が同時に動作します。
- CocoaからToppers JSPに対して割り込みをかけることができます。
- Realtime性について
- きちんと把握していませんが、Cocoa で動作するため、Realtime性は期待できません
- Timer分解能は10msです。CocoaのTimerですので精度はあまりよろしくないと思われます。
- Toppers for iPhoneを使用する利点について
- 完全優先順位ベースのプログラムが簡単に構築できます
- CocoaでもThreadを複数持つことができますが、それらを完全に優先順位ベースにするにはかなりの知識が要求されます。通常のThreadですとラウンドロビン型になり優先度が高いThreadがあったとしても優先度が低いThreadに処理が移ることがあり意図しない動作になることがあります。Toppersを使用すればこれを簡単に回避することができます。
- dispatchが高速です
- Toppersは1つのThreadのなかでsetjmp/longjmpを用いてdispatchを行います。Threadをたくさん作りその中で切り替えた場合と比べると、明らかにdispatch速度は高速です。
- 少ないリソースでマルチタスクを実現できます
- 複数のThreadを持つ場合は一つ一つのThreadにそこそこ大きなリソースが割り当てられます。あまり多くのThreadを作ってしまうとそれだけで管理処理が大きくなり全体的な動作が重くなってしまうことがあります。Toppers JSP for iPhoneでは多くのタスクを持ってもThreadは1つ(Timerを使用する場合は2つ)しかありませんので管理処理が軽くすみ、リソースが有効に活用できます。
sample1の始め方
現在はiPhone Simulator上での動作を確認しています。iPhone実機での動作確認はしておりません。
1. 用意するもの
- Intel Mac ( MacOS X 10.5.8 で確認しています)
- Xcode (アップルより無償でダウンロードができます。3.1.4で確認しています)
- Toppers JSP(ちらで無償ダウンロードができます)
2. プロジェクトのフォルダ構成を作成します
プロジェクトのフォルダを以下のような構成にします
- project ( Userが自由に名前を付けられます)
- example (当プロジェクトからダウンロードできます)
- iphone (当プロジェクトからダウンロードできます)
- jsp ( Toppersからダウンロードしたものを解凍して置きます )
3. Xcodeを立ち上げ、 プロジェクトを読み込みます
- 以下のプロジェクトファイルを読み込みます
- ¥project¥example¥srmple1¥sample1.xcodeproj
4. GDBの設定をします
SIGUSR1とSIGUSR2のDebuggerの設定を変更します。
この設定をしないとgdbにsignalが食われてしまい、DebugができませんBR
~/.gdbinit を作成し、以下のように編集します
handle SIGUSR1 noprint
handle SIGUSR2 noprint
5. Xcode からビルドし、実行します。 gdbにメッセージが出力されます