前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

2.5. 実機上での動作確認

2.5.1. ライセンスコードの設定

アプリを実機で動作確認するには、アプリの ClassID に対応したライセンスコードを helloworld.cpp 内の SFCApplet::Boot ブートローダ関数内のコード

*license = "heap://"

に設定する必要があります。

例 2.3. SFCApplet::Boot 関数: ライセンスコード設定前

// ブートローダ
SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license)
{
	*license = "heap://";
	
	return (id == AEECLSID_HELLOWORLD) ? (&helloworld::Factory) : (null);
}

例 2.4. SFCApplet::Boot 関数: ライセンスコード設定後

// ブートローダ
SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license)
{
	*license = "heap://"
               "TIXDRQXNU5WHU8Y3Z9WOHWQR6Z3VPSDHDV5CR1S4XASPWLUHWAS7Z5Z2TGS3XMSAT3UPUQTLTARCYPSF"
               "UEJZ6ROSJWGUQSEYKR6V2U4VESMTQLHKZ6X7Y2VKXHWIX3XBU0Z7VHWHXIZBSGT5SPU3XLX0Z1Y4R3TC"
               "U6WGT9WHWIVNYHYCUCR9T3SMTEWPRNVAX1Y4VPW2YCY9YQV5R7Z9UIVHT6SDUPU2SIW6VCRCWBR2S4WQ"
               "UPYFWCYGT4VIT1WHXGYPTQSFYPWNV3ULRNWFW7RBRFVKUKS2YQSQYHW1TPUPXBZ6UEY2WOYKR7S3TAU4"
               "TQS6UHVFVEVLU3R5SDSKW7RPTNTPVQU2T4R8Z4VLUGEW3U98TLDR8/";
	
	return (id == AEECLSID_HELLOWORLD) ? (&helloworld::Factory) : (null);
}
[Note] ライセンスコード

SFCApplet::Boot 関数内の

"TIXDRQXNU5WHU8Y3Z9WOHWQR6Z3VPSDHDV5CR1S4XASPWLUHWAS7Z5Z2TGS3XMSAT3UPUQTLTARCYPSF"
"UEJZ6ROSJWGUQSEYKR6V2U4VESMTQLHKZ6X7Y2VKXHWIX3XBU0Z7VHWHXIZBSGT5SPU3XLX0Z1Y4R3TC"
"U6WGT9WHWIVNYHYCUCR9T3SMTEWPRNVAX1Y4VPW2YCY9YQV5R7Z9UIVHT6SDUPU2SIW6VCRCWBR2S4WQ"
"UPYFWCYGT4VIT1WHXGYPTQSFYPWNV3ULRNWFW7RBRFVKUKS2YQSQYHW1TPUPXBZ6UEY2WOYKR7S3TAU4"
"TQS6UHVFVEVLU3R5SDSKW7RPTNTPVQU2T4R8Z4VLUGEW3U98TLDR8"

は helloworld アプリのライセンスコードです。

ライセンスコードは長いので、上の例にあるように適当な個数に分割し、 それらをダブルクォーテーション( " )で括り、複数行に分けて設定します。 ライセンスコード設定時、最後のスラッシュ( / )は省略しても構いません。

参照: ライセンスコード

[Caution] シミュレータでの動作確認

アプリをシミュレータで実行する場合、SFCApplet::Boot ブートローダ関数内のコード

*license = "heap://"

にライセンスコードを設定する必要はありません(この部分は変更不要です)。

RVCTB 1.2 使用の場合は、Visual Studio アドインでこれ以降の操作を自動化することができます。

その他の実機開発環境の場合は、各々メイクファイルを作成しビルドを行います。

メイクファイルの書き方については、RVCTB 3.0 用メイクファイルGNUARM 4.1.1 用メイクファイルYAGARTO 4.4.2 用メイクファイル を参照してください。

2.5.2. Visual Studio アドインによる開発 (RVCTB 1.2 のみ)

STEP 1. Visual Studio アドインを確認または設定します。

次の 2 つのアドインが Visual Studio ツールバー上に表示されていることを確認します。

図 2.22. Visual Studio ツールバー

Visual Studio ツールバー

図 2.23. BREW SDK 付属のアドイン

BREW SDK 付属のアドイン

図 2.24. SophiaFramework UNIVERSE 付属のアドイン

SophiaFramework UNIVERSE 付属のアドイン

これらのアドインが表示されない場合は、Visual C++ のバージョンに応じて以下の処理を行います。

■ Visual C++ 6.0 : [ ツール ]->[ カスタマイズ ] を選択し、 [ アドインおよびマクロ ファイル ]タブにある [ BREWAddins.DSAddIn.1 ] および [ SophiaFramework UNIVERSE Addin ] を選択します。

[Note] 注意
  1. BREW SDK 3.0 以降、Visual Studio アドインの設定に必要な BREW SDK Tools は BREW SDK とは別にダウンロードする必要があります。
  2. [ アドインおよびマクロ ファイル ] タブにおいて [ BREWAddins.DSAddIn.1 ] が表示されない場合は、Visual Studio を終了させた状態で BREW SDK および BREW SDK Tools を再インストールします。
  3. [ アドインおよびマクロ ファイル ] タブにおいて [ SophiaFramework UNIVERSE Addin ] が表示されない場合は、Visual Studio を終了させた状態で SophiaFramework UNIVERSE を再インストールします。
[Note] SophiaFramework 4.1 Addin の表示について[SophiaFramework UNIVERSE 5.0.3 で解決]

SophiaFramework UNIVERSE 4.1 をインストールしたことのある PC に SophiaFramework UNIVERSE 5.0 をインストールした場合、 Visual C++ 6.0 用アドインの名前が『SophiaFramework 4.1 Addin』と表示される問題は、 SophiaFramework UNIVERSE 5.0.3 で解決されました。

■ Visual C++ .NET2003 : [ ツール ]->[ アドイン マネージャ ] を選択し、[ BREW Addins for Visual Studio 7.1 (NET 2003) ] および [ SophiaFramework Addin ] を選択します。

[Note] 注意
  1. BREW SDK 3.0 以降、Visual Studio アドインの設定に必要な BREW SDK Tools は BREW SDK とは別にダウンロードする必要があります。
  2. [ 使用できるアドイン ] の列に [ BREW Addins for Visual Studio 7.1 (NET 2003) ] が表示されない場合は、Visual Studio を終了させた状態で BREW SDK および BREW SDK Tools を再インストールします。
  3. [ 使用できるアドイン ] の列に [ SophiaFramework Addin ] が表示されない場合は、Visual Studio を終了させた状態で SophiaFramework UNIVERSE を再インストールします。

■ Visual C++ 2005 : [ ツール ]->[ アドイン マネージャ ] を選択し、[ BREW Addins for Visual Studio 8.0 (NET 2005) ] および [ SophiaFramework Addin ] を選択します。

[Note] 注意
  1. BREW SDK 3.0 以降、Visual Studio アドインの設定に必要な BREW SDK Tools は BREW SDK とは別にダウンロードする必要があります。
  2. [ 使用できるアドイン ] の列に [ BREW Addins for Visual Studio 8.0 (NET 2005) ] が表示されない場合は、Visual Studio を終了させた状態で BREW SDK および BREW SDK Tools を再インストールします。
  3. [ 使用できるアドイン ] の列に [ SophiaFramework Addin ] が表示されない場合は、Visual Studio を終了させた状態で SophiaFramework UNIVERSE を再インストールします。

STEP 2. メイク ファイルを生成し編集します。

1. ツールバーにある [ ARM MAK ] アイコンをクリックして、メイク ファイル helloworld.mak を生成します。

2. ツールバーにある [ SF MAK ] アイコンをクリックして、メイク ファイル helloworld.mak を更新します。

[Note] 「プロジェクトが開いていない可能性があります」というエラーが表示される場合

ツールバーにある [ SF MAK ] アイコンをクリックして、メイク ファイル helloworld.mak を更新しようとしたときに、 「プロジェクトが開いていない可能性があります」というエラーが表示される場合は、プロジェクト内の .hpp および .cpp ファイルを開けてみてください。 この操作により、メイク ファイル helloworld.mak の更新が可能となります。

[Note] メイク ファイル helloworld.mak を手動で変更する方法

STEP 2-1. APP_INCLUDES 変数に -I オプションと SophiaFramework UNIVERSE の Include ディレクトリを設定します。

[Note] SFHOME とは

SFHOMEは、SophiaFramework UNIVERSE がインストールされているフォルダのパスが設定されている環境変数です(SophiaFramework UNIVERSE インストーラによって自動的に設定されます)。

[Note] ARMHOME とは

ARMHOMEは、ARM コンパイラがインストールされているフォルダのパスが設定されている環境変数です。

[Note] BREWDIR とは

BREWDIRは、BREW SDK がインストールされているフォルダのパスが設定されている環境変数です。

STEP 2-2. -g オプションを変更します。

#DBG = -g                        # Enable debug
DBG = -g-
[Note] -g オプション

g- はデバッグ情報を出力しないというオプションです。コンパイルの速度も向上します。

STEP 2-3. -entry オプションを変更します。

#LFLAGS = $(ROPILINK) -rwpi -entry 0x8000#
LFLAGS = $(ROPILINK) -rwpi -entry AEEMod_Load
[Caution] 設定を忘れると…

リンク後のアプリサイズが大きくなります。

STEP 2-4. APP_OBJS 変数に SophiaFramework UNIVERSE の実機用ライブラリを設定します。

APP_OBJS =  $(OBJS) "$(SF_HOME)\Library\SophiaFrameworkBrew400JpnRVCTB12.a"
[Caution] ライブラリ名

BREW 4.0 の場合は SophiaFrameworkBrew400JpnRVCTB12.a、BREW 3.1 の場合は SophiaFrameworkBrew310JpnRVCTB12.a を指定します。

なお、ライブラリの拡張子は .lib ではなく .a です。

[Note] Thumb の利用

SophiaFramework UNIVERSE 5.1.2 から Thumb でビルドされたライブラリを利用することができるようになりました。

BREW 4.0 の場合は SophiaFrameworkBrew400JpnRVCTB12Thumb.a、BREW 3.1 の場合は SophiaFrameworkBrew310JpnRVCTB12Thumb.a を指定します。

アプリケーション自体を Thumb でビルドする場合、メイクファイルにおいて ARM コンパイラ (armcpp) を指定している箇所を Thumb コンパイラ (tcpp) に変更します。

例 2.5. Thumb を使用する場合の変更箇所

# ... (省略) ...

ARMCPP   = $(ARMBIN)\armcpp
TCPP     = $(ARMBIN)\tcpp

# ... (省略) ...

#.cpp.o:
#	$(ARMCPP) $(CFLAGS) $(INC) $(OBJ_FILE) $(SRC_CPP_FILE)

.cpp.o:
	$(TCPP) $(CFLAGS) $(INC) $(OBJ_FILE) $(SRC_CPP_FILE)

APP_OBJS = $(OBJS) "$(SF_HOME)\Library\SophiaFrameworkBrew400JpnRVCTB12Thumb.a"

# ... (省略) ...

STEP 3. 実機用実行ファイル helloworld.mod をビルドします。

Visual Studio で [ ツール ] -> [ BREW Application 'Make' ] を選択し、実機用実行ファイル helloworld.mod を生成します。

■ Visual C++ 6.0 の場合

■ Visual C++ .NET 2003 / Visual C++ 2005 の場合

2.5.3. RVCTB 3.0 用メイクファイル

SophiaFramework アドインは RVCTB 3.0 に対応していないためメイクファイルを自作する必要があります。

典型的なメイクファイルのテンプレートはこちらにあります。

メイクファイル内の TARGET 変数、OBJS 変数および依存リストをアプリごとに適宜設定します。

これらの値は BREW アドインから生成された値を流用することができます。

例 2.6. Example/chelloworld アプリの例

# ... (省略) ...

TARGET      = chelloworld
OBJS        = chelloworld.o

# ... (省略) ...

# BREW SDK 4.0.1 用の SophiaFramework ライブラリをリンクする
# BREW SDK 3.1.2 用ならここを SophiaFrameworkBrew310JpnRVCTB30.a に変更する
LIBS        = "$(SF_HOME)\Library\SophiaFrameworkBrew400JpnRVCTB30.a"

# ... (省略) ...

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

chelloworld.o:  chelloworld.cpp
chelloworld.o:  chelloworld.hpp
chelloworld.o:  chelloworld.bid

例 2.7. Example/chelloworld アプリ (Thumb コードを使用する場合) の例

# ... (省略) ...

TARGET      = chelloworld
OBJS        = chelloworld.o

# ... (省略) ...

# アプリケーションを Thumb でビルドする
ARMCPP      = "$(ARMBIN)\tcpp"

# ... (省略) ...

# Thumb ビルドの SophiaFramework ライブラリをリンクする
LIBS        = "$(SF_HOME)\Library\SophiaFrameworkBrew400JpnRVCTB30Thumb.a"

# ... (省略) ...

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

chelloworld.o:  chelloworld.cpp
chelloworld.o:  chelloworld.hpp
chelloworld.o:  chelloworld.bid

例 2.8. kddiappli アプリ (KDDI 社提供 BREW 日本拡張パッケージの SophiaFramework ラッパークラスライブラリを使用する場合) の例

# ... (省略) ...

TARGET      = kddiappli
OBJS        = kddiappli.o

# ... (省略) ...

# KDDI 社提供 BREW 日本拡張パッケージの SophiaFramework ラッパークラスライブラリを使用する
DYNAPP      = -DDYNAMIC_APP -DTARGET_EXTENSION_KDDI

# ... (省略) ...

LIBS        = "$(SF_HOME)\Library\SophiaFrameworkKDDI400JpnRVCTB30.a" "$(SF_HOME)\Library\SophiaFrameworkBrew400JpnRVCTB30.a"

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

kddiappli.o: kddiappli.cpp

2.5.4. GNUARM 4.1.1 用メイクファイル

SophiaFramework アドインは GNUARM に対応していないためメイクファイルを自作する必要があります。

典型的なメイクファイルのテンプレートはこちらにあります。

メイクファイル内の TARGET 変数、OBJS 変数および依存リストをアプリごとに適宜設定します。

これらの値は BREW アドインから生成された値を流用することができます。

例 2.9. Example/chelloworld アプリの例

# ... (省略) ...

TARGET      = chelloworld
OBJS        = chelloworld.o

# ... (省略) ...
# BREW SDK 4.0.1 用の SophiaFramework ライブラリをリンクする
# BREW SDK 3.1.2 用ならここを -lSophiaFrameworkBrew310JpnGNUARM41 に変更する
LIBS        = -lSophiaFrameworkBrew400JpnGNUARM41 -lgcc

# ... (省略) ...


# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

chelloworld.o:  chelloworld.cpp
chelloworld.o:  chelloworld.hpp
chelloworld.o:  chelloworld.bid

例 2.10. Example/mathematicsexplainer アプリ (数学関数を使う場合) の例

# ... (省略) ...

TARGET      = mathematicsexplainer
OBJS        = mathematicsexplainer.o

# ... (省略) ...

# YAGARTO 付属の数学関数ライブラリのインクルードパスを追加する
LIBDIRS     = -L"$(GCC_LIBPATH)\interwork" -L"$(GCC_HOME)\arm-elf\lib\interwork" -L"$(SF_HOME)\Library"

# ... (省略) ...

# YAGARTO 付属の数学関数ライブラリをリンクする (記述するライブラリの順番を変えてはいけない)
LIBS        = -lSophiaFrameworkBrew400JpnGNUARM41 -lm -lgcc -lc

# ... (省略) ...

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

mathematicsexplainer.o: mathematicsexplainer.cpp

例 2.11. Example/mathematicsexplainer アプリ (さらに Thumb コードを使用する場合) の例

# ... (省略) ...

TARGET      = mathematicsexplainer
OBJS        = mathematicsexplainer.o

# ... (省略) ...

# アプリケーションを Thumb でビルドする
TARG        = -mthumb

# ... (省略) ...

# Thumb 用のインクルードパスを追加する
LIBDIRS     = -L"$(GCC_LIBPATH)\thumb\interwork" -L"$(GCC_HOME)\arm-elf\lib\thumb\interwork" -L"$(SF_HOME)\Library"

# ... (省略) ...

# ARM/Thumb インターワーキング用にリンカのオプションを追加する
LINK_CMD    = -script $(LINKERSCRIPT) --gc-sections --emit-relocs --stub-group-size=2 --pic-veneer -o

# Thumb ビルドの SophiaFramework ライブラリをリンクする
LIBS        = -lSophiaFrameworkBrew400JpnGNUARM41Thumb -lm -lgcc -lc

# ... (省略) ...

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

mathematicsexplainer.o: mathematicsexplainer.cpp

例 2.12. kddiappli アプリ (KDDI 社提供 BREW 日本拡張パッケージの SophiaFramework ラッパークラスライブラリを使用する場合) の例

# ... (省略) ...

TARGET      = kddiappli
OBJS        = kddiappli.o

# ... (省略) ...

# KDDI 社提供 BREW 日本拡張パッケージの SophiaFramework ラッパークラスライブラリを使用する
DYNAPP      = -DDYNAMIC_APP -DTARGET_EXTENSION_KDDI

# ... (省略) ...

LIBS        = -lSophiaFrameworkKDDI400JpnGNUARM41 -lSophiaFrameworkBrew400JpnGNUARM41 -lgcc

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

kddiappli.o: kddiappli.cpp

2.5.5. YAGARTO 4.4.2 用メイクファイル

SophiaFramework アドインは YAGARTO に対応していないためメイクファイルを自作する必要があります。

典型的なメイクファイルのテンプレートはこちらにあります。

メイクファイル内の TARGET 変数、OBJS 変数および依存リストをアプリごとに適宜設定します。

これらの値は BREW アドインから生成された値を流用することができます。

例 2.13. Example/chelloworld アプリの例

# ... (省略) ...

TARGET      = chelloworld
OBJS        = chelloworld.o

# ... (省略) ...
# BREW SDK 4.0.1 用の SophiaFramework ライブラリをリンクする
# BREW SDK 3.1.2 用ならここを -lSophiaFrameworkBrew310JpnYAGARTO44 に変更する
LIBS        = -lSophiaFrameworkBrew400JpnYAGARTO44 -lgcc

# ... (省略) ...


# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

chelloworld.o:  chelloworld.cpp
chelloworld.o:  chelloworld.hpp
chelloworld.o:  chelloworld.bid

例 2.14. Example/mathematicsexplainer アプリ (数学関数を使う場合) の例

# ... (省略) ...

TARGET      = mathematicsexplainer
OBJS        = mathematicsexplainer.o

# ... (省略) ...

# YAGARTO 付属の数学関数ライブラリのインクルードパスを追加する
LIBDIRS     = -L"$(GCC_LIBPATH)\interwork" -L"$(GCC_HOME)\arm-elf\lib\interwork" -L"$(SF_HOME)\Library"

# ... (省略) ...

# YAGARTO 付属の数学関数ライブラリをリンクする (記述するライブラリの順番を変えてはいけない)
LIBS        = -lSophiaFrameworkBrew400JpnYAGARTO44 -lm -lgcc -lc

# ... (省略) ...

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

mathematicsexplainer.o: mathematicsexplainer.cpp

例 2.15. Example/mathematicsexplainer アプリ (さらに Thumb コードを使用する場合) の例

# ... (省略) ...

TARGET      = mathematicsexplainer
OBJS        = mathematicsexplainer.o

# ... (省略) ...

# アプリケーションを Thumb でビルドする
TARG        = -mthumb

# ... (省略) ...

# Thumb 用のインクルードパスを追加する
LIBDIRS     = -L"$(GCC_LIBPATH)\thumb\interwork" -L"$(GCC_HOME)\arm-elf\lib\thumb\interwork" -L"$(SF_HOME)\Library"

# ... (省略) ...

# ARM/Thumb インターワーキング用にリンカのオプションを追加する
LINK_CMD    = -script $(LINKERSCRIPT) --gc-sections --emit-relocs --stub-group-size=2 --pic-veneer -o

# Thumb ビルドの SophiaFramework ライブラリをリンクする
LIBS        = -lSophiaFrameworkBrew400JpnYAGARTO44Thumb -lm -lgcc -lc

# ... (省略) ...

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

mathematicsexplainer.o: mathematicsexplainer.cpp

例 2.16. kddiappli アプリ (KDDI 社提供 BREW 日本拡張パッケージの SophiaFramework ラッパークラスライブラリを使用する場合) の例

# ... (省略) ...

TARGET      = kddiappli
OBJS        = kddiappli.o

# ... (省略) ...

# KDDI 社提供 BREW 日本拡張パッケージの SophiaFramework ラッパークラスライブラリを使用する
DYNAPP      = -DDYNAMIC_APP -DTARGET_EXTENSION_KDDI

# ... (省略) ...

LIBS        = -lSophiaFrameworkKDDI400JpnYAGARTO44 -lSophiaFrameworkBrew400JpnYAGARTO44 -lgcc

# --------------------------------------------
# DEPENDENCY LIST, DO NOT EDIT BELOW THIS LINE
# --------------------------------------------

kddiappli.o: kddiappli.cpp

2.5.6. 実機用実行ファイルのビルド

作成したメイクファイルを "chelloworld.mak" とし、アプリのフォルダを "chelloworld" とすると、

コマンドプロンプトから以下のコマンドを実行します。

cd chelloworld
nmake /f chelloworld.mak

実機用実行ファイル chelloworld.mod が生成されれば成功です。

[Caution] nmake コマンドの実行パス

nmake コマンドを使用するには Visual Studio C++ に付属の nmake.exe への実行パスが環境変数 PATH に登録されている必要があります。

[Note] アドインからビルド

RVCTB 1.2 使用の場合、アドインからビルドすることができます。