第12章 システム構成管理機能
RI850V4では,さまざまな実行環境に対応するために,システム構成管理機能のうち,RI850V4が処理を実行するうえで必要となるハードウエア依存処理(初期化ルーチン)をユーザ・オウン・コーディング部として切り出しています。
初期化ルーチンは,ユーザの実行環境に依存したハードウエア(周辺コントローラなど)を初期化するためにユーザ・オウン・コーディング部として切り出された初期化処理専用ルーチンであり,カーネル初期化部から呼び出されます。
なお,RI850V4では,初期化ルーチンを管理するに当たり,初期化ルーチンと一対一に対応した管理オブジェクト(初期化ルーチン管理ブロック)を用いることにより,初期化ルーチンが取り得る状態の管理,および初期化ルーチン自体の管理を行っています。
- 初期化ルーチンの基本型
初期化ルーチンを記述する場合,VP_INT型の引き数を1つ持ったvoid型の関数として記述します。
なお,引き数exinfには“初期化ルーチン情報で指定した拡張情報”が設定されます。
以下に,初期化ルーチンをC言語で記述する場合の基本型を示します。
初期化ルーチンを記述する場合,VP_INT型の引き数を1つ持ったvoid型の関数として記述します。
なお,引き数exinfには“初期化ルーチン情報で指定した拡張情報”が設定されます。
以下に,初期化ルーチンをC言語で記述する場合の基本型を示します。
#include <kernel.h> /*標準ヘッダ・ファイルの定義*/ void inirtn ( VP_INT exinf ) { ............ ............ return; /*初期化ルーチンの終了*/ } |
- 初期化ルーチン内での処理
RI850V4では,カーネル初期化部から初期化ルーチンに制御を移す際,独自の初期化前処理を行っています。また,初期化ルーチンからカーネル初期化部に制御を戻す際にも,独自の初期化後処理を行っています。このため,初期化ルーチンを記述する際には,以下に示す注意点があります。
RI850V4では,カーネル初期化部から初期化ルーチンに制御を移す際,独自の初期化前処理を行っています。また,初期化ルーチンからカーネル初期化部に制御を戻す際にも,独自の初期化後処理を行っています。このため,初期化ルーチンを記述する際には,以下に示す注意点があります。
- 記述方法
C言語,またはアセンブリ言語で記述します。
C言語で記述するときは通常の関数と同様に記述することができます。
アセンブリ言語で記述するときは使用するコンパイラの呼び出し規約にのっとって作成してください。
C言語,またはアセンブリ言語で記述します。
C言語で記述するときは通常の関数と同様に記述することができます。
アセンブリ言語で記述するときは使用するコンパイラの呼び出し規約にのっとって作成してください。
- スタックの切り替え
RI850V4では,初期化ルーチンに制御を移す際,基本情報において指定されたシステム・スタックへの切り替え処理を,カーネル初期化部に制御を戻す際に該当スタックへの切り替え処理を行っています。したがって,初期化ルーチン内でスタックの切り替えに関する記述を行う必要がありません。
RI850V4では,初期化ルーチンに制御を移す際,基本情報において指定されたシステム・スタックへの切り替え処理を,カーネル初期化部に制御を戻す際に該当スタックへの切り替え処理を行っています。したがって,初期化ルーチン内でスタックの切り替えに関する記述を行う必要がありません。
- EIレベル・マスカブル割り込みの受け付け状態
RI850V4では,初期化ルーチンに制御を移す際,EIレベル・マスカブル割り込みの受け付け禁止処理として,プライオリティ・マスク・レジスタPMRのPMnビットに対する操作,およびプログラム・ステータス・ワードPSWのIDビットに対する操作を行います。
なお,操作対象となるPMnビットは,コンフィギュレーション時に最大割り込み優先度maxintpriで定義した割り込み優先度範囲となります。
RI850V4では,初期化ルーチンに制御を移す際,EIレベル・マスカブル割り込みの受け付け禁止処理として,プライオリティ・マスク・レジスタPMRのPMnビットに対する操作,およびプログラム・ステータス・ワードPSWのIDビットに対する操作を行います。
なお,操作対象となるPMnビットは,コンフィギュレーション時に最大割り込み優先度maxintpriで定義した割り込み優先度範囲となります。
備考 RI850V4の初期化処理が未完了のため,基本情報で定義した基本クロック用タイマ割り込みの例外コードtim_intno,および,割り込みハンドラ情報で定義した例外コードinhnoに対応したEIレベル・マスカブル割り込みの受け付けは禁止されています。
備考1 RI850V4が時間管理用に利用するハードウエア(OSタイマ)を初期化する際には,システム・コンフィギュレーション・ファイル作成時に基本情報で定義した基本クロック周期tim_baseで基本クロック用タイマ割り込みが発生するような設定を行う必要があります。