MB Demos

# マルチブートライブラリ(MB)サンプルデモ

## 場所

`$TwlSDK/build/demos/mb`

## コンパイル方法

`$TwlSDK/build/demos/mb`ディレクトリに移り、

> `% make`

と入力します。コンパイルが始まり、実行ファイルである `.srl` ファイルやバイナリ情報を記述した `.nef` または `.tef` ファイルが、

> `$TwlSDK/build/demos/mb/(サンプル名)/bin/(プラットフォーム)/(ターゲット)/`

の下に生成されます。例えば、

> `$TwlSDK/build/demos/mb/multiboot/bin/ARM9-TS/Release/main.srl`

が `multiboot` デモの実行ファイルとなります。

## 実行方法

### NITRO ROM の場合

IS-NITRO-DEBUGGER を用いる場合

- IS-NITRO-DEBUGGER で `*.nlf` ファイルを読みこんで実行する。
- IS-NITRO-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.exe` で IS-NITRO-DEBUGGER で `*.srl` を実行する。

IS-TWL-DEBUGGER を用いる場合

- IS-TWL-DEBUGGER で `*.nlf` ファイルを読みこんで実行する。
- IS-TWL-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.TWL.exe` で IS-TWL-DEBUGGER で `*.srl` を実行する。

### TWL/NITRO HYBRID ROM の場合

IS-NITRO-DEBUGGER を用いる場合

- IS-NITRO-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.exe` で IS-NITRO-DEBUGGER で `*.srl` を実行する。

IS-TWL-DEBUGGER を用いる場合

- IS-TWL-DEBUGGER で `*.tlf` ファイルを読みこんで実行する。
- IS-TWL-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.TWL.exe` で IS-TWL-DEBUGGER で `*.srl` を実行する。

### TWL LIMITED ROM の場合

IS-TWL-DEBUGGER を用いる場合

- IS-TWL-DEBUGGER で `*.tlf` ファイルを読みこんで実行する。
- IS-TWL-DEBUGGER で `*.srl` を実行する。
- コマンドラインから `loadrun.TWL.exe` で IS-TWL-DEBUGGER で `*.srl` を実行する。

MBライブラリのサンプルはマルチブート機能を使うため、同じ通信環境(無線あるいは有線)どうしの開発機材を複数必要とします。
`$TwlSDK/bin/ARM9-TS/Rom` ディレクトリにある `mb_child_[NITRO/TWL].srl` プログラムが最終実機におけるマルチブート子機と同等の機能を提供するサンプルになっていますので、このバイナリをサンプルプログラムと同じ方法で他の機材に読み込み、一緒に実行してください。
また IS-NITRO-DEBUGGER のオプション設定によっては、この `mb_child_[NITRO/TWL].srl` を読み込んだ時に
「ARM9プロセッサ側の転送先アドレスが異常です」という内容のダイアログが表示されますが、
このダイアログでは「いいえ」を選択して読み込んでください。
`mb_child_NITRO.srl`と`mb_child_TWL.srl`の動作の違いについては、`mb_child_[NITRO/TWL].srl`のリファレンスを参照してください。

## 説明

デモ名 | ディレクトリ | 動作
--- | --- | ---
`multiboot` | `demos` | マルチブート親機としてプログラムファイルを子機へダウンロードさせる単純なサンプルです。２つのプログラムファイルを公開し、接続に来た不特定の子機へダウンロードします。ダウンロード後、親機の START ボタンを押すことでダウンロードの完了している子機をブートします。
`multiboot-Model` | `demos` | マルチブート親機としてプログラムファイルを子機へダウンロードさせ、 ダウンロードした子機プログラムとデータシェアリング通信を行うまでの手順を示した規範的なサンプルです。
`cloneboot` | `demos` | 親機自身のプログラムを子機へダウンロードさせるという いわゆるクローンブート処理を実行するサンプルです。 プログラムの構造自体はmultiboot-Modelサンプルデモと同一のものです。
`fake_child` | `demos` | 擬似マルチブート子機としてマルチブート親機へエントリーをおこなうサンプルです。 GGIDをmultiboot-Modelのサンプルで使用しているものと同じ値に設定しているので、multiboot-Modelサンプルに対してマルチブート子機として擬似的にエントリーする事ができます。
`mbm` | `demos` | WM_MeasureChannel() を使用してワイヤレスの電波使用率を計測するサンプルです。
`multiboot-PowerSave` | `demos` | 省電力モード設定を明示的に変更し、マルチブート親機として起動する単純なサンプルです。 省電力モード設定以外の全ての設定をデフォルトに固定しているという点以外は、multibootサンプルと同様のものです。 省電力モードはデフォルトで有効であり、通常のプログラムがこの機能を明示的に変更する必要はありません。 詳細はMB_SetPowerSaveMode() の説明をご覧ください。
`multiboot-wfs` | `demos` | マルチブート親機としてプログラムファイルを子機へダウンロードさせ、 さらに子機がワイヤレスを経由してファイルシステムを使用するサンプルです。 $TwlSDK/build/demos/wireless_shared/wfsサンプルモジュールを使用しています。

## 動作

`MB ライブラリのデモは、ensata では正常動作しません。`

`cloneboot は NITRO ROM または HYBRID ROM でしか正常動作しません。`

## 参照

`MB関数一覧`

## 履歴

2009/03/02 mb_child_NITRO.srl と mb_child_TWL.srl についての記述を追加
2008/12/16 multiboot-Model, cloneboot サンプルの動作環境の記述を修正
2008/07/11 TWLに対応した記述に変更
2005/06/23 multiboot-wfsサンプルの説明を追加。
2005/05/10 mbmサンプルの説明を追加。
2005/04/28 multiboot-PowerSaveサンプルを追加
2004/11/16 clonebootサンプルを追加
2004/10/06 multiboot-Modelサンプルの説明抜けを修正
2004/09/13 mb_child.srl 読み込み時の注意を追加
2004/08/10 初版