--bitband コンパイラコマンドラインオプション

--bitband コマンドラインオプションは、const 以外のすべてのグローバル構造体オブジェクトをビットバンド化します。

--bitbandExample 30foo.c に適用された場合、value.i への書き込みがビットバンド化されます。すなわち、value.i がビットバンド領域にマップするビットバンドエイリアスワードに、値 0x00000001 が書き込まれます。

value.j および value.k へのアクセスは、ビットバンド化されません。

Example 30. --bitband コマンドラインオプションの使用

/* foo.c */

typedef struct {
  int i :1;
  int j :2;
  int k :3;
} BB;

BB value __attribute__((at(0x20000040))); // 配置済みのオブジェクト

void update_value(void)
{
  value.i = 1;
  value.j = 0;
}

/* foo.c の終わり */

armcc は、絶対アドレスでアクセスされるオブジェクトのビットバンディングをサポートします。--bitbandExample 31foo.c に適用された場合、rts へのアクセスがビットバンド化されます。

Example 31. 絶対アドレスでアクセスされるオブジェクトのビットバンディング

/* foo.c */

typedef struct {
  int rts :1;
  int cts :1;
  unsigned int data;
} uart;

#define com2 (*((volatile uart *)0x20002000))
void put_com2(int n)
{
  com2.rts = 1;
  com2.data = n;
}

/* foo.c の終わり */

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0472BJ
Non-ConfidentialID011811