ベクタ割り込みコントローラ (VIC)¶
注釈
ここで説明する要実装関数は、CPUが割り込みコントローラとして GICではなくVICを 使用している場合にのみ 実装が必要です。GICを使用するターゲットでは、これらの 関数を実装する必要はありません。
一部のターゲットでは、GICの代わりにベクタ割り込みコントローラ(VIC)を割り込み コントローラとして使用します。VICを使用する構成では、VICハードウェアの制御を 要実装関数として実装する必要があります。
要実装関数¶
VICの要実装関数の定義は、impl_vic.h にあります。
#include "impl_vic.h"
一部の関数は、初期化時に IMPL_VIC_Init で設定する IMPL_VIC_INFO の
feature によって実装要否が決まります。対応する IMPL_VIC_FEATURE_NOxxx を
feature に設定して「その機能を持たない」ことを通知した場合、対応する関数を実装する
必要はありません(コアサービスから呼び出されません)。各関数の説明を参照してください。
IMPL_VIC_INFO¶
-
typedef struct _IMPL_VIC_INFO_ IMPL_VIC_INFO¶
-
struct _IMPL_VIC_INFO_¶
説明
VICの構成情報を格納する構造体です。
IMPL_VIC_Initで設定します。定義
typedef struct _IMPL_VIC_INFO_ { uint32_t feature; int maxIntNo; int maxPriority; } IMPL_VIC_INFO;
メンバー
-
uint32_t feature¶
VICの機能を表すフラグ(
IMPL_VIC_FEATURE_XXXの組み合わせ)
-
int maxIntNo¶
扱える割り込み番号の最大値
-
int maxPriority¶
指定可能な優先度の最大値
-
uint32_t feature¶
-
IMPL_VIC_FEATURE_NONVECTORMODE¶
-
IMPL_VIC_FEATURE_NOPRIORITYMASK¶
-
IMPL_VIC_FEATURE_NOMODIFYPENDING¶
-
IMPL_VIC_FEATURE_NOEDGECONFIG¶
IMPL_VIC_INFOのfeatureに指定する、VICがサポートしない機能を表す フラグです。名前
値
説明
IMPL_VIC_FEATURE_NONVECTORMODE0x00000001
ベクタモードをサポートしない
IMPL_VIC_FEATURE_NOPRIORITYMASK0x00000002
優先度マスクをサポートしない
IMPL_VIC_FEATURE_NOMODIFYPENDING0x00000004
Pending状態の変更をサポートしない
IMPL_VIC_FEATURE_NOEDGECONFIG0x00000008
エッジ/レベル設定をサポートしない
IMPL_VIC_Init¶
-
void IMPL_VIC_Init(IMPL_VIC_INFO *pInfo)¶
VICを初期化し、構成情報を
pInfoに格納します。- パラメータ:
pInfo -- VIC構成情報の格納先
IMPL_VIC_SetVector¶
-
void IMPL_VIC_SetVector(int intno, SOLID_ADDRESS vector)¶
指定した割り込みのベクタ(ジャンプ先アドレス)を設定します。
- パラメータ:
intno -- 割り込み番号
vector -- ベクタアドレス
IMPL_VIC_Enable¶
-
void IMPL_VIC_Enable(int intno)¶
指定した割り込みを有効化します。
- パラメータ:
intno -- 割り込み番号
IMPL_VIC_Disable¶
-
void IMPL_VIC_Disable(int intno)¶
指定した割り込みを無効化します。
- パラメータ:
intno -- 割り込み番号
IMPL_VIC_SetPending¶
-
void IMPL_VIC_SetPending(int intno)¶
指定した割り込みをPending状態にセットします。
featureにIMPL_VIC_FEATURE_NOMODIFYPENDINGを設定しない場合 (Pending状態の変更をサポートする場合)に実装が必要です。- パラメータ:
intno -- 割り込み番号
IMPL_VIC_ClearPending¶
-
void IMPL_VIC_ClearPending(int intno)¶
指定した割り込みのPending状態をクリアします。
featureにIMPL_VIC_FEATURE_NOMODIFYPENDINGを設定しない場合 (Pending状態の変更をサポートする場合)に実装が必要です。- パラメータ:
intno -- 割り込み番号
IMPL_VIC_SetConfig¶
-
void IMPL_VIC_SetConfig(int intno, int config)¶
指定した割り込みのエッジ/レベル設定を行います。
featureにIMPL_VIC_FEATURE_NOEDGECONFIGを設定しない場合 (エッジ/レベル設定をサポートする場合)に実装が必要です。- パラメータ:
intno -- 割り込み番号
config -- Config値(SOLID_INTC_CONFIG_XXX)
IMPL_VIC_GetConfig¶
-
int IMPL_VIC_GetConfig(int intno)¶
指定した割り込みのエッジ/レベル設定を取得します。
featureにIMPL_VIC_FEATURE_NOEDGECONFIGを設定しない場合 (エッジ/レベル設定をサポートする場合)に実装が必要です。- パラメータ:
intno -- 割り込み番号
- 戻り値:
Config値
IMPL_VIC_IsEnabled¶
-
int IMPL_VIC_IsEnabled(int intno)¶
指定した割り込みが有効かどうかを問い合わせます。
- パラメータ:
intno -- 割り込み番号
- 戻り値:
0以外: 有効
0: 無効
IMPL_VIC_IsPending¶
-
int IMPL_VIC_IsPending(int intno)¶
指定した割り込みがPending中かどうかを問い合わせます。
- パラメータ:
intno -- 割り込み番号
- 戻り値:
0以外: Pending中
0: Pendingでない
IMPL_VIC_IsActive¶
-
int IMPL_VIC_IsActive(int intno)¶
指定した割り込みがActive中かどうかを問い合わせます。
- パラメータ:
intno -- 割り込み番号
- 戻り値:
0以外: Active中
0: Activeでない
IMPL_VIC_SetPriority¶
-
void IMPL_VIC_SetPriority(int intno, int priority)¶
指定した割り込みの優先度を設定します。
- パラメータ:
intno -- 割り込み番号
priority -- 優先度
IMPL_VIC_GetPriority¶
-
int IMPL_VIC_GetPriority(int intno)¶
指定した割り込みの優先度を取得します。
- パラメータ:
intno -- 割り込み番号
- 戻り値:
優先度
IMPL_VIC_GetRaisedInterrupt¶
-
int IMPL_VIC_GetRaisedInterrupt(void)¶
発生した割り込みの番号を取得します。
- 戻り値:
発生した割り込み番号
IMPL_VIC_ClearInterrupt¶
-
void IMPL_VIC_ClearInterrupt(int intno)¶
指定した割り込みの終了処理(EOI)を行います。
- パラメータ:
intno -- 割り込み番号
IMPL_VIC_SetPriorityMask¶
-
void IMPL_VIC_SetPriorityMask(int maskLevel)¶
優先度マスクレベルを設定します。
featureにIMPL_VIC_FEATURE_NOPRIORITYMASKを設定しない場合 (優先度マスクをサポートする場合)に実装が必要です。- パラメータ:
maskLevel -- マスクレベル
IMPL_VIC_GetPriorityMask¶
-
int IMPL_VIC_GetPriorityMask(void)¶
優先度マスクレベルを取得します。
featureにIMPL_VIC_FEATURE_NOPRIORITYMASKを設定しない場合 (優先度マスクをサポートする場合)に実装が必要です。- 戻り値:
マスクレベル
IMPL_VIC_RaiseSoftwareInterrupt¶
-
void IMPL_VIC_RaiseSoftwareInterrupt(int intno)¶
ソフトウェア割り込みを発生させます。
- パラメータ:
intno -- 割り込み番号
IMPL_VIC_ClearSoftwareInterrupt¶
-
void IMPL_VIC_ClearSoftwareInterrupt(int intno)¶
ソフトウェア割り込みの発生状態をクリアします。
- パラメータ:
intno -- 割り込み番号