Keil Logo

Technical Support

On-Line Manuals

µVision4 User's Guide (Japanese)

µVision4 の概要 ユーザインタフェース アプリケーションの作成 ユーティリティ デバッグ デバッガの使用 シミュレーション デバッグの開始 アプリケーションプログラムの実行 デバッグのウィンドウおよびダイアログ [ブレークポイント](Breakpoints) [コードカバレッジ](Code Coverage) [レジスタ](Registers) [逆アセンブリ](Disassembly)ウィンドウ [ロジックアナライザ](Logic Analyzer) 設定 設定の詳細 制約 [メモリ](Memory)ウィンドウ [メモリマップ](Memory Map) [コマンド](Command)ウィンドウ デバッグコマンド 変数とレジスタ デバッグ関数 実行プロファイラ [パフォーマンスアナライザ](Performance Analyzer) シリアルウィンドウ [シンボル](Symbols)ウィンドウ [ツールボックス](Toolbox) [ウォッチ](Watch)ウィンドウ [コールスタック](Call Stack) [命令トレース](Instruction Trace)ウィンドウ システムビューア 定数 システム変数 ペリフェラル変数 I/O ポート シリアルポート プログラム変数(シンボル) 行番号 ビットアドレス 型指定子 演算子 µVision4 と C の相違点 式の例 ヒントとテクニック ペリフェラルと CPU 設定の確認 I/O ポートのシミュレート 割り込みとクロック入力のシミュレート 外部 I/O デバイスのシミュレート PC COM ポートへのシリアル I/O の割り当て 不正なメモリアクセスの確認 ファイルからのコマンド入力 事前設定 I/O ポートまたはメモリコンテンツ ファイルへのデバッグ出力の書き込み キーボードショートカット デバッグコマンド デバッグ関数 シミュレーション フラッシュプログラミング ダイアログ サンプルプログラム コマンドライン 付録

プログラム変数(シンボル)

µVision4 では、名前を入力するだけで、ターゲットプログラムの変数やシンボルにアクセスできます。変数名やシンボル名は、数値やアドレスを表します。シンボルは、プログラムで使用する名前と同じ名前をデバッガで使用できるようにすることで、デバッグプロセスを簡略化します。

ターゲットプログラムモジュールをロードすると、シンボル情報がデバッガにロードされます。シンボルには、ローカル変数(関数内で宣言されたもの)、関数名、行番号情報が含まれます。[ターゲットのオプション](Options for Target)→[出力](Output)→[デバッグ情報](Debug Information)を有効にする必要があります。デバッグ情報がないと、µVision4 はソースレベルのシンボリックデバッグを実行できません。

モジュール名

モジュール名とは、ターゲットプログラムのすべてまたは一部を構成するオブジェクトモジュールの名前です。各モジュールには、ソースレベルのデバッグ情報とシンボリック情報が保存されます。

モジュール名は、ソースファイル名から派生します。ターゲットプログラムが MCOMMAND.C という名前のソースファイルで構成され、C コンパイラが MCOMMAND.OBJ というオブジェクトファイルを生成する場合、モジュール名は MCOMMAND となります。

シンボル命名規則

シンボルには次の規則が適用されます。

  • シンボルの大文字と小文字は区別されません。つまり、SYMBOL は Symbol と等しく処理されます。
  • シンボル名の先頭の文字は 'A' ~ 'Z'、'a' ~ 'z'、'_'、または '?' でなければなりません。
  • 後続の文字には 'A' ~ 'Z'、'a' ~ 'z'、'0' ~ '9'、'_'、または '?' を使用できます。

  • µVision4 で疑問符("?")で始まるシンボルを持つ三項演算子("?:")を使用する場合、三項演算子とシンボル名の間にスペースを挿入する必要があります。例えば、R5 = R6 ? ?symbol : R7 のようになります。

完全修飾シンボル

シンボルが定義されているモジュールの名前や関数の名前を含む完全修飾名を使用して、シンボルを入力できます。完全修飾シンボル名は、次のコンポーネントで構成されます。

  • ModuleName:シンボルが定義されているモジュールを指定します。
  • LineNumber:モジュールの特定の行のために生成されたコードのアドレスを指定します。
  • FunctionName:ローカルシンボルが定義されているモジュールの関数を指定します。
  • SymbolName:シンボル名を指定します。

このコンポ-ネントは、次の表のように連結できます。

シンボルコンポーネント 完全修飾シンボル名が指定するもの
\ModuleName\LineNumber ... ModuleName の行番号 LineNumber。
\ModuleName\FunctionName ... ModuleName の FunctionName 関数。
\ModuleName\SymbolName ... ModuleName のグローバルシンボル SymbolName。
\ModuleName\FunctionName\SymbolName ... ModuleName の FunctionName 関数のローカルシンボル SymbolName。

次に、完全修飾シンボル名の例を示します。

完全修飾シンボル名 指定するもの
\MEASURE\clear_records\idx ... MEASURE モジュールの clear_records 関数のローカルシンボル idx。
\MEASURE\MAIN\cmdbuf ... MEASURE モジュールの MAIN 関数のローカルシンボル cmdbuf。
\MEASURE\sindx ... MEASURE モジュールの sindex シンボル。
\MEASURE\225 ... MEASURE モジュールの行番号 225。
\MCOMMAND\82 ... MCOMMAND モジュールの行番号 82。
\MEASURE\TIMER0 ... MEASURE モジュールの TIMER0 シンボル。このシンボルには関数またはグローバル変数を使用できます。

非修飾シンボル

シンボルは、参照する変数または関数の名前のみを使用して入力できます。これらのシンボルは、完全に修飾されておらず、一致するシンボル名が見つかるまで多数のテーブルで検索されます。この検索は、次のように実行されます。

  1. CPU のレジスタシンボル(R0 – R15、RL0 – RH7、DPP0 – DPP3)。
  2. ターゲットプログラムの現在の関数のローカル変数。現在の関数は、プログラムカウンタの値によって決定されます。
  3. 現在のモジュールの静的変数。現在の関数と同様に、現在のモジュールはプログラムカウンタの値によって決定されます。現在のモジュールのシンボルは、モジュール内(ただし関数の外)で宣言された変数を表します。
  4. ターゲットプログラムのグローバルまたはパブリックシンボル。µVision4 によって定義されたペリフェラルレジスタシンボルは、パブリックシンボルと見なされ、検索対象になります。
  5. µVision4 DEFINE コマンドを使用して作成されたシンボル。これらのシンボルは、デバッグで使用され、ターゲットプログラムには含まれません。
  6. デバッガの特性を監視および変更するシステム変数。これらはターゲットプログラムの一部ではありません。詳細については、「システム変数」を参照して下さい。
  7. CPU ドライバによって定義された CPU ドライバシンボル(VTREG)。VTREG シンボルの説明については、「ペリフェラル変数」を参照して下さい。

  • ユーザ関数またはシグナル関数を作成すると、シンボルの検索順序は変更されます。µVision4 では、まずユーザ関数またはシグナル関数で定義されたシンボルのテーブルが検索されます。次に、上のリストが検索されます。ユーザ関数とシグナル関数の詳細については、「デバッグ関数」を参照して下さい。
  • 逆引用符(‘)が先頭に付いたリテラルシンボルによって、検索順序が変更されます。CPU レジスタシンボルの代わりに CPU ドライバシンボル(VTREG)が検索されます。

リテラルシンボル

逆引用符(‘)を使用してリテラルシンボル名を取得します。次の項目にアクセスする際はリテラルシンボルを使用する必要があります。

  • 定義済みの予約されているワードと同一のプログラム変数またはシンボル。予約されているワードとは、µVision4 デバッグコマンドとオプション、データ型名、CPU レジスタ名、アセンブラニーモニックです。
  • プログラム変数名と同一である CPU ドライバシンボル(VTREG)。

リテラルシンボル名が指定されると、前述の非修飾シンボルの検索順序は変更されます。リテラルシンボルの場合、CPU レジスタシンボルの代わりに CPU ドライバシンボル(VTREG)が検索されます。

リテラルシンボルの使用例

プログラムで R5 という変数を定義し、これにアクセスしようとする場合、実際は R5 CPU レジスタにアクセスすることになります。R5 変数にアクセスするには、変数名に逆引用符の接頭文字を使用する必要があります。

R5 レジスタへのアクセス R5 変数へのアクセス
>R5 = 121
>‘R5 = 212

プログラムに clock という関数が含まれ、VTREG をクロックしようとする場合、clock 関数のアドレスを取得することになります。clock VTREG にアクセスするには、変数名に逆引用符の接頭文字を使用する必要があります。

clock 関数へのアクセス clock VTREG へのアクセス
>clock
0x00000DB2
>‘clock
20000000
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.