言葉の説明(ベクタ、フェッチ)
code:c
ベクタ(Vector)とフェッチ(Fetch)は、コンピュータやマイクロコントローラの動作やプログラムの実行に関連する用語です。
ベクタ(Vector):
ベクタは、イベントや割り込みが発生したときにプログラムの実行を制御するための特定のメモリアドレスを指します。
例えば、割り込み要求(IRQ)が発生すると、マイクロコントローラは割り込みベクタテーブルと呼ばれる特定のメモリ領域を参照し、割り込み処理の開始アドレスを取得します。
ベクタは、特定のイベントや割り込みが処理されるための目的地を示す参照ポイントです。
フェッチ(Fetch):
フェッチは、プログラムの命令をメモリから取得する処理を指します。コンピュータやマイクロコントローラは、メモリ内の特定のアドレスから次の命令をフェッチして実行します。フェッチは、プログラムカウンタ(Program Counter)と呼ばれる特殊なレジスタを使用して行われます。プログラムカウンタは、次に実行する命令のメモリアドレスを保持し、フェッチされる次の命令の場所を指定します。
プログラムの実行中、プロセッサは命令をフェッチし、それを実行します。割り込みや例外などのイベントが発生すると、プロセッサは対応するベクタを参照し、そのイベントの処理に必要なアドレスを取得します。ベクタテーブル内のアドレスからフェッチされた命令が実行されることで、イベントや割り込みが適切に処理されます。
つまり、ベクタはイベントや割り込みの処理の目的地を示し、フェッチは次の命令をメモリから取得して実行するための処理を指します。これらの概念は、プログラムの制御フローとイベントハンドリングの重要な要素として理解されます。
フォルト
code:c
PRIMASK(優先度マスクレジスタ):
PRIMASKは、割り込み優先度のマスクを制御するためのレジスタです。PRIMASKが1に設定されると、マスクされていない例外(割り込み)が受け付けられなくなります。割り込みを無効にするために使用されます。
BASEPRI(ベース優先度レジスタ):
BASEPRIは、優先度ベースマスクを制御するためのレジスタです。BASEPRIが設定されると、その値以上の優先度の割り込みが受け付けられなくなります。PRIMASKよりも優先度制御の粒度が細かくなります。
FAULTMASK(フォルトマスクレジスタ):
FAULTMASKは、フォルトハンドラの実行中にフォルト(例外)をマスクするためのレジスタです。FAULTMASKが1に設定されると、フォルトハンドラの実行中に別のフォルトが割り込むことを防ぎます。
CONTROL(コントロールレジスタ):
CONTROLは、コアの実行状態を制御するためのレジスタです。CONTROLのビットフィールドは、スタックポインタの選択(MSPまたはPSP)および実行状態の制御(スレッドモードまたはハンドラモード)を行います。
MSP(メインスタックポインタ):
MSPは、メインスタックのベースアドレスを保持するためのレジスタです。メインスタックは、スレッドモードで実行されるコードのスタックとして使用されます。
PSP(プロセススタックポインタ):
PSPは、プロセススタックのベースアドレスを保持するためのレジスタです。プロセススタックは、ハンドラモードやタスクスイッチング時など、ユーザーモードのコンテキストを保存するためのスタックとして使用されます。
これらのレジスタは、ARM Cortex-Mアーキテクチャ上で一般的に使用されるものであり、マイクロコントローラの割り込み制御やスタックの管理に関与します。ただし、具体的なアプリケーションやマイクロコントローラの設定によっては、一部またはすべてのレジスタが使用されない場合があります。詳細な情報は、該当するマイクロコントローラのリファレンスマニュアルやデータシートを参照してください。