Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Palm OS Programmer's Companion Volume I/15-4

← 3 節に戻る ↑15 章トップへ 5 節に進む →


15-4 ARM デバッグ Nub の使用

※訳注:Nub という単語は要点、骨子といった意味ですが、文脈から
    適切な訳語をあてることができませんでした。ひとまず原文
    のまま記載しています。

 
ARM ベースのデバイスでは、ARM デバッグ Nub によって(PODSのような)デスクトップベースのデバッガでのブレイク、レジスタの検査などを ARM ネイティブコードに対して行なうことができます。ARM ベースのコードをデバッグするためには、デバッガ Nub のアクティベートと PNOの Palm OS デバッガへの登録の両方を行なう必要があります。

PNO の作成と ARMネイティブコードについては、14章の“Palm OS Garnet ARM プログラミング” を参照して下さい。

 

ARM デバッガ Nub のアクティベート

ARM デバッガ Nub は、アプリケーションによってアクティベートされるまでは ARM ベースのデバイス上でアクティブではありません。PNO はまず最初に AdnDebugEnableSet マクロをコールして ARM デバッガ Nub を有効にする必要があります。この様子をリスト 15.2 に示します。

リスト 15.2 ARM デバッガ Nub のアクティベート

// Tell the debugger we want to enable full debugging
UInt32 flags = AdnDebugEnableGet();
flags |= kAdnEnableMasterSwitch | kAdnEnableFullDebugging;
AdnDebugEnableSet(flags);

 

Palm OS デバッガへの登録

Palm OS デバッガは、それぞれの ARM サブルーチン(PNO)がメモリ上のどこに配置されるかという問題を解決できなければなりません。ARM サブルーチンは AdnDebugNativeRegister マクロを使用して Palm OS デバッガへの登録を行なう必要があります。AdnDebugNativeRegister はコードリソースがロックされてから呼び出す必要があります。通常、これは ARM サブルーチンの最初の呼び出し時点になります。

コードリソースは、アンロックする前に AdnDebugNativeUnregister マクロを使用して登録解除を行なう必要があります。

これらのマクロはブレークポイントではなく、デバイスの処理を停止させるわけではありません。しかし、これらのマクロによってブレークポイントの設定や解除ができるようになります。

リスト 15.3 に AdnDebugNativeRegister コールの例を示します。

リスト 15.3 PNO のデバッガへの登録

// Tell the debugger where our code lives in memory:
AdnDebugNativeRegister(sysFileTApplication, appFileCreator,
                       NativeResourceType, NativeResourceID);

ARM サブルーチンは、Palm OSデバッガが 対応するデバッグシンボルファイルをロケートできるように、appFileCreator、NativeResourceType、および NativeResourceID を定義する必要があります。

例えば、ID 0001 の ARMC リソースがあるとすると、デバッグシンボルファイルは通常 ARMC0001.bin.elf という形式になります。ELF ファイルはデバッグしている ARM サブルーチンを含む PRC ファイルと同じディレクトリになければなりません。

 


← 3 節に戻る ↑15 章トップへ 5 節に進む →