Nios II Gen2 プロセッサー・リファレンス・ガイド

ID 683836
日付 10/28/2016
Public
ドキュメント目次

3.5.2. MPU の初期化

システム・ソフトウェアは、この章の「メモリー領域」の項で説明する領域情報を含んだデータ構造を、各アクティブスレッドに提供する必要があります。データ構造には、理想的には、mpubaseおよびmpuaccレジスター・フォーマットに対応する 2 つの 32 ビット値が含まれています。

システムリセット時に MPU は無効になります。MPU を使用可能にする前に、アルテラはすべての MPU 領域を初期化することを推奨します。目的の命令およびデータ領域を有効にするには、この章の「MPU 領域の読み出しおよび書き込み動作」の項に記載のとおりに、各領域の属性をmpubaseおよびmpuaccレジスターに書き込みます。未使用領域も無効にする必要があります。領域サイズを使用する場合、mpuacc.MASKをゼロにクリアーします。制限を使用する場合は、mpubase.BASEをゼロ以外の値に設定し、 mpuacc.LIMITを 0 にクリアーします。

注: 少なくとも 1 つの命令と 1 つのデータ領域を有効にする必要があり、有効にしない場合は予期しない動作が発生する可能性があります。

コンテキスト・スイッチを実行するには、wrctlを使用してconfigレジスターのPEフィールドにゼロを書き込んで MPU を無効にし、新しいスレッドのデータ構造からすべての MPU 領域を定義し、別のwrctlを使用してconfig.PEMPUを有効にします。

この章の「MPU領域の読み出しおよび書き込み動作」で説明のある、wrctl命令のペアを使用して各領域を定義します。必要なすべての領域が定義されるまで、このデュアルwrctl命令シーケンスを繰り返します。