8.17 --bitband

const 以外のすべてのグローバル構造体オブジェクトをビットバンド化します。1 ワード分のメモリをビットバンド領域内の個々のビットにマッピングすることが可能です。これにより、メモリアーキテクチャの SRAM 領域とペリフェラル領域にあるシングルビット値へのアトミックアクセスを効率化できます。

幅に依存するペリフェラルの場合、ビットバンド構造体のビットフィールドの char 型、 short 型、および int 型には、エイリアス空間に対するバイト、ハーフワード、およびワードのストアまたはロードがそれぞれ生成されます。

制約条件

以下の使用制限があります。
  • このオプションは、 struct 型にのみ作用します。共用体型、または共用体をメンバとして持つその他の集合型はビットバンド化できません。
  • 構造体のメンバは個別にビットバンド化できません。
  • ビットバンドアクセスは、シングルビットのビットフィールドでのみ生成されます。
  • const オブジェクト、ポインタ、およびローカルオブジェクトについては、ビットバンドアクセスは生成されません。
  • ビットバンディングが利用できるのは一部のプロセッサに限られます。たとえば、Cortex-M4 や Cortex-M3 プロセッサが該当します。

このサンプルでは、--bitband コマンドラインオプションを使用してコンパイルすると、ビットフィールド i および k への書き込みがビットバンド化されます。
typedef struct {
  int i : 1;
  int j : 2;
  int k : 1;
} BB;
BB value;
void update_value(void)
{
  value.i = 1;
  value.k = 1;
}
関連する概念
4.16 ビットバンディングに対するコンパイラおよびプロセッササポート
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.