非機密扱い | ![]() | ARM DUI0471JJ | ||
| ||||
ホーム > ARM アーキテクチャバージョンの主な機能 > ARM アーキテクチャ v7-M |
ARMv7-M は、マイクロコントローラプロファイルをターゲットにした ARMv7 アーキテクチャのバリアントです。これは、ARMv7 保護メモリシステムアーキテクチャのバリアントを実装し、Thumb 命令セットのみをサポートします。
以下の表に、便利なコマンドラインオプションを示します。
表 1-9 ARMv7-M の便利なコマンドラインオプション
コマンドラインオプション | 説明 |
---|---|
--cpu=7
|
Thumb 命令のみをサポートし、ハードウェア除算をサポートしない ARMv7a |
--cpu=7-M
|
Thumb 命令のみとハードウェア除算をサポートしている ARMv7 マイクロコントローラプロファイル |
--cpu=name
|
|
ARMv7-M の主な機能
SDIV
および UDIV
命令をサポートします。
ビットバンディングをサポートして、シングルビット値へのアトミックアクセスを有効にします。
割り込み組み込み関数を使用して、現在のプリエンプションの優先度を変更する CPSIE
または CPSID
命令を生成します(以下の表を参照)。例えば、__disable_irq
組み込み関数を使用する場合、コンパイラは、PRIMASK
を <g cms:ixia_locid="43" ctype="x-codeph" id="w1ab1b9b3b3b4ac11">1</g> に設定する CPSID i
命令を生成します。
1
.その結果、実行の優先度が 0
になり、設定可能な優先度を持つ例外が入力できなくなります。以下の表に、割り込み組み込み関数を示します。
表 1-10 割り込み組み込み関数
組み込み関数 | オペコード | PRIMASK | FAULTMASK |
---|---|---|---|
__enable_irq
|
CPSIE i
|
0 | |
__disable_irq
|
CPSID i
|
1 | |
__enable_fiq
|
CPSIE f
|
0 | |
__disable_fiq
|
CPSID f
|
1 |
ARM でサポートされているデータの境界整列の動作は、ARMv4 と ARMv7 で大幅に変更されました。ARMv7 実装は、非境界整列データアクセスをサポートする必要があります。ロードおよびストア命令の整列要求は、CP15 レジスタ c1 の A
ビットを使用して制御できます。
ARMv7 アーキテクチャは、ARMv6 より以前の境界整列をサポートしません。
コンパイラのコマンドラインオプション --littleend
および --bigend
を使用すると、それぞれリトルエンディアンコードまたはビッグエンディアンコードを生成できます。
ARMv7-M は、以下のエンディアンモードをサポートします。
リトルエンディアン形式
ビッグエンディアン形式
ARMv7 アーキテクチャは、従来の BE-32 モードをサポートしません。ビッグエンディアンのバイト順序が指定された命令を含む ARM v7 プロセッサ用の従来のコードがある場合、バイト順序の反転を実行する必要があります。
ARM v7 は認識された ARM アーキテクチャではありません。しかし、ARMv7-A、ARMv7-R、および ARMv7-M のすべてのアーキテクチャに共通の機能を示しています。