1.16 ARM アーキテクチャ v7-M

ARMv7-M は、マイクロコントローラプロファイルをターゲットにした ARMv7 アーキテクチャのバリアントです。これは、ARMv7 保護メモリシステムアーキテクチャのバリアントを実装し、Thumb 命令セットのみをサポートします。

以下の表に、便利なコマンドラインオプションを示します。

表 1-9 ARMv7-M の便利なコマンドラインオプション

コマンドラインオプション 説明
--cpu=7 Thumb 命令のみをサポートし、ハードウェア除算をサポートしない ARMv7a
--cpu=7-M Thumb 命令のみとハードウェア除算をサポートしている ARMv7 マイクロコントローラプロファイル
--cpu=name

name は特定の ARM プロセッサです以下に例を示します。

  • Thumb 命令のみ、ハードウェア除算、ARMv6 スタイル BE-8 と LE データエンディアン方式のサポート、および非境界整列アクセスが指定された ARMv7 の Cortex-M3

主な機能

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 は、以下のエンディアンモードをサポートします。

LE

リトルエンディアン形式

BE-8

ビッグエンディアン形式

ARMv7 アーキテクチャは、従来の BE-32 モードをサポートしません。ビッグエンディアンのバイト順序が指定された命令を含む ARM v7 プロセッサ用の従来のコードがある場合、バイト順序の反転を実行する必要があります。

関連する概念
1.9 ARM アーキテクチャプロファイル
関連情報
--cpu=name アセンブラオプション
--bigend アセンブラオプション
--littleend アセンブラオプション
--bitband コンパイラオプション
『ARMv7-Mアーキテクチャ リファレンス マニュアル』
a

ARM v7 は認識された ARM アーキテクチャではありません。しかし、ARMv7-A、ARMv7-R、および ARMv7-M のすべてのアーキテクチャに共通の機能を示しています。

非機密扱いPDF file icon PDF 版ARM DUI0471JJ
Copyright © 2010-2013 ARM.All rights reserved.