モニタ¶
モニタは、デバッガとの通信やソフトウェアデバッグを行うための機能です。 ターゲット上でシリアル等の通信デバイスを介してデバッガと接続し、ブレークや レジスタの参照などのデバッグ機能を提供します。
モニタはハードウェアに強く依存するため、通信デバイスの制御は 要実装関数 として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:
モニタ経由で行う
-
int intno¶
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 -- ジャンプ先アドレス
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー