モニタ

モニタは、デバッガとの通信やソフトウェアデバッグを行うための機能です。 ターゲット上でシリアル等の通信デバイスを介してデバッガと接続し、ブレークや レジスタの参照などのデバッグ機能を提供します。

モニタはハードウェアに強く依存するため、通信デバイスの制御は 要実装関数 としてBSP側で実装します。

API

モニタ機能のAPIを使用するには、solid_mon.h をインクルードしてください。

#include "solid_mon.h"

注釈

solid_mon.h にはモニタ内部やデバッガが使用する関数も多数定義されて いますが、ここではユーザーが使用する可能性のあるもののみを記載します。

SOLID_MON_PollComm

void SOLID_MON_PollComm(void)

モニタの通信処理をポーリングで行います。

通信の受信割り込みが使用できない環境において、受信データの処理を進めるために 定期的に呼び出してください。受信割り込みが利用できる場合は、通常この関数を 呼び出す必要はありません。

要実装関数

モニタの要実装関数の定義は、impl_mon.h にあります。

#include "impl_mon.h"

通信デバイスの初期化・送受信・割り込み処理などを、ターゲットのハードウェアに 合わせて実装してください。多くの関数は物理=仮想アドレス状態と物理≠仮想アドレス 状態の両方で呼び出される点に注意してください。

SOLID_MON_INFO

typedef struct _SOLID_MON_INFO_ SOLID_MON_INFO
struct _SOLID_MON_INFO_

説明

モニタの初期化情報を格納する構造体

定義

typedef struct _SOLID_MON_INFO_ {
    int intno;
    int bEdgeTrigger;
    int bUseFiq;
    int logMode;
} SOLID_MON_INFO;

メンバー

int intno

モニタが使用する割り込みID

int bEdgeTrigger

割り込みの形式

0:

レベルトリガ

1:

エッジトリガ

int bUseFiq

モニタでFIQを使用するかどうか

0:

使用しない

1:

使用する

int logMode

起動後のログ出力方法

0:

出力しない

1:

IMPL_Log経由で行う

2:

モニタ経由で行う

IMPL_MON_Init

int IMPL_MON_Init(SOLID_MON_INFO *pInfo)

モニタを初期化します。

使用するシリアル等の初期化を行い、初期化情報を pInfo に格納してください。 この呼び出しは物理=仮想アドレス状態で呼ばれます。

パラメータ:
  • pInfo -- モニタ初期化情報の格納先

戻り値:

  • 2: ソフトデバッグを直ちに開始する

  • 1: 監視状態のみで処理を継続する

  • 0: ソフトデバッグ自体を行わない

IMPL_MON_Suspend

void IMPL_MON_Suspend(void)

モニタを一時停止します。

コアサービスの初期化のためにモニタを一時的に停止する際に呼ばれます。 このときにデバイスの割り込みやCTS等を不可状態にしてください。 この呼び出しは物理=仮想アドレス状態で呼ばれます。

IMPL_MON_Resume

void IMPL_MON_Resume(void)

モニタを再開します。

コアサービスが初期化し、モニタが再開される際に呼ばれます。 この呼び出しは物理≠仮想アドレス状態で呼ばれます。

IMPL_MON_DoReset

void IMPL_MON_DoReset(void)

ハードウェアのリセットを行います。

この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

IMPL_MON_Putc

void IMPL_MON_Putc(unsigned char c)

1byte送信します。

この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

パラメータ:
  • c -- 送信するデータ

IMPL_MON_Getc

unsigned char IMPL_MON_Getc(void)

1byte受信します。

この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

戻り値:

受信したデータ

IMPL_MON_Poll

int IMPL_MON_Poll(void)

受信データがあるかどうかを判定します。

この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

戻り値:

  • 0: 受信データなし

  • 1: 受信データあり

IMPL_MON_ClearInterrupt

void IMPL_MON_ClearInterrupt(void)

受信データ割り込みをクリアします。

この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

IMPL_MON_EnterBreakMode

void IMPL_MON_EnterBreakMode(void)

ブレーク状態に突入します。

ブレーク状態中は割り込み等の処理が行われないため、この中でウォッチドッグ等を 停止してください。 この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

IMPL_MON_LeaveBreakMode

void IMPL_MON_LeaveBreakMode(void)

ブレーク状態を解除します。

この中で、IMPL_MON_EnterBreakMode で一時停止した処理を再開してください。 この呼び出しは物理=仮想アドレス状態、物理≠仮想アドレスの両状態で呼ばれます。

IMPL_MON_Flush

void IMPL_MON_Flush(void)

(任意実装) 送信バッファをフラッシュします。

データ送信がバッファリングされている場合、このFlushで送信がすべて行われている ことを保証してください。

IMPL_MON_Write

int IMPL_MON_Write(const void *pBuf, int size)

(任意実装) データを複数バイト送信します。

データ送信が複数バイトを同時に送信できる場合、このAPIを実装することで IMPL_MON_Putc の代替になります。

パラメータ:
  • pBuf -- 送信するデータへのポインタ

  • size -- 送信するバイト数

戻り値:

送信したバイト数

IMPL_MON_Read

int IMPL_MON_Read(void *pBuf, int size)

(任意実装) データを複数バイト受信します。

データ受信が複数バイトを同時に受信できる場合、このAPIを実装することで IMPL_MON_Getc の代替になります。

パラメータ:
  • pBuf -- 受信したデータの格納先

  • size -- 受信するバイト数

戻り値:

受信したバイト数

IMPL_MON_SetJumpAddr

int IMPL_MON_SetJumpAddr(SOLID_ADDRESS addr)

(任意実装) リセット時のジャンプアドレスを指定します。

パラメータ:
  • addr -- ジャンプ先アドレス

戻り値: