デバッグ(動作環境) (overview)

# 動作環境 (overview)

## 説明

動作環境や動作モードを取得する API に関して説明します。

TWL-SDK には現在の実行環境を取得するための関数が用意されています。例えば NITRO と TWL のハイブリッドROM で起動プラットフォームによって動作を分けたい場合や、実機動作とデバッガ動作で処理を変えたい場合などに判定関数として使用することができます。

このカテゴリに属する関数として

> ・ `OS_GetConsoleType()`
> ・ `OS_GetRunningConsoleType()`
> ・ `OS_IsRunOnEmulator()`
> ・ `OS_IsRunOnDebugger()`
> ・ `OS_IsRunOnTwl()`

が用意されています。

## 動作環境と動作モード

「動作環境」 と 「動作モード」 について説明します。

「動作環境」は、そのプログラムが動作している ハードウェアの情報で、ハードウェア種別、メモリ搭載量、ブートされたデバイスといった情報を含みます。例えば「32MBのメモリを搭載した IS-TWL-DEBUGGER でカードバスから起動された」といった情報です。

> ・ハードウェア種別は、「TWL実機」「DS実機」「IS-TWL-DEBUGGER」「IS-NITRO-DEBUGGER」「Ensata Emulator」のいずれかとなります。

> ・メモリ搭載量は、環境によって「4MB」「8MB」「16MB」「32MB」のいずれかとなります。

> ・ブートデバイスは、「カード」「カートリッジ」「NAND」「SDカード」「メモリ」「ダウンロード」 のいずれかとなります。

「動作モード」は、そのプログラムが TWLアプリケーションとして動作しているか、NITRO アプリケーションとして動作しているかの区別を表します。従って、動作モードには NITRO モード と TWL モード の２つしかありません。

> ・NITRO 専用 ROM は NITRO モードでしか動作しません。TWL本体上で動作してもNITROモードです。

> ・TWL 専用 ROM は TWL モードでしか動作しません。

> ・NITRO/TWL ハイブリッドROM は NITROモードとなる場合もありますし、TWL モードとなる場合もあります。

## 動作環境取得関数

動作環境は `OS_GetConsoleType()` または `OS_GetRunningConsoleType()` で知ることができます。
２つの関数の違いは、以下の通りです。

> ・`OS_GetConsoleType()` は最終版 ROM (FINALROM) ではそれが動作する機器によらず最終版を表す定数を返します

> ・`OS_GetRunningConsoleType()` は最終版 ROM (FINALROM) でも現状の動作環境を返します。

すなわち、ビルド種別が FINALROM の時だけ2つの関数は異なります。DEBUGとRELEASE では同じ値を返します。
取得できる値などの詳細は `OS_GetConsoleType()` のリファレンスを参照してください。

また、`OS_GetConsoleType()` の値を利用した `OS_IsRunOnDebugger()` と `OS_IsRunOnEmulator()` が用意されています。

> ・`OS_IsRunOnDebubger()` は動作している環境がデバッガかどうかを調べることができます。

> ・`OS_IsRunOnEmulator()` は動作している環境が Ensata エミュレータかどうかを調べることが出来ます。

## 動作モード取得関数

動作モードは `OS_IsRunOnTwl()` で知ることができます。この関数が「TRUE」を返すときは TWL モードで動作していることを表します。「FALSE」ならば NITRO モードです。

> ・ NITRO 専用ROM では、`OS_IsRunOnTwl()` は定数 FALSE となります。

> ・ TWL 専用 ROM では、 `OS_IsRunOnTwl()` は定数 TRUE となります。

> ・ NITRO/TWL ハイブリッドROM では、`OS_IsRunOnTwl()` はIOレジスタなどの情報から動作モードを決定します。その結果、TWL モードであると判断されれば TRUE を、そうでなければ FALSE を返します。

## 参照

`OS関数一覧(動作環境)
`

## 履歴

2008/04/15 初版