開発のヒント
CPU
Arm® Cortex®-M unprivileged(非特権)状態でできないこと
Arm Cortex-Mコアでは、ソフトウェア実行の特権レベルは「特権 (privilege)」、「非特権(unprivileged)」の2つがあります。
特権
– ソフトウェアはすべての命令を使用でき、すべてのリソースにアクセスできます。
非特権
– MSR命令とMRS命令によるコア特殊レジスタへのアクセスが制限されます。
– CPS命令が使用できません。
– システムタイマ(SysTick)、NVIC、またはシステム制御ブロック(SCB)にアクセスできません。
– メモリまたはペリフェラルへのアクセスが制限される場合があります。
下記、補足。
—————————————————————————————————–
MSR命令 : 汎用レジスタの内容を指定した特殊レジスタに転送する命令。
特殊レジスタ ==> APSR、IPSR、EPSR、IEPSR、IAPSR、EAPSR、PSR、MSP、PSP、PRIMASK、または CONTROL のいずれか。
現在の実行モードに特権がない場合、APSR 以外のレジスタを変更しようとする試みはすべて無視されます。
MRS命令 : 特殊レジスタの内容を汎用レジスタに転送する命令。
特殊レジスタ ==> MSR命令の場合と同様。
現在の実行モードに特権がない場合、APSR 以外のすべてのレジスタの値はゼロとして読み取られます。
CPS命令:PRIMASK の特殊レジスタの値を変更して割込みを有効、無効にする命令。
—————————————————————————————————–
過去の開発のヒントはこちら