ARMコンパイラで小さいサイズのグローバル変数を必ずZIセクションに配置する方法


質問

ARMコンパイラで、小さいサイズのグローバル変数が、ゼロ初期化しているにも関わらずZIデータセクションではなく、RWデータセクションに配置されてしまいます。
これらをZIデータセクションに配置させたいのですが、どうすればよいですか?

 

回答

コンパイラツールチェイン「ARM Compiler」のデフォルト動作では、8byte以下のグローバルZIデータ項目は、RWデータセクションに配置される場合があります。
ZIデータセクションに配置するために、eBinder IDEで対象プロジェクトが開かれた状態で以下の手順をおこなってください。
なお、コンパイラツールチェイン「ARM Compiler 6」の場合、このオプションはなくなったため、これらの設定は使用できません。

特定のC/C++言語ソースファイルのみを変更する方法

  1. プロジェクトビュービルドツリーで、該当ソースファイルのビルドノードの一つ上のビルドノード(ビルド設定「Building ARM/Thumb C Objects」、「Building ARM/Thumb C++ Objects」または「Building ARM Assembly Objects with CPP」のファイル)を選択し右クリック
  2. 表示されたコンテキストメニューの中から、ビルド設定を選択
  3. ツリーメニューCode generation から Code generation 2 を選択
  4. ドロップダウンボックスPlaces small global ZI data items inZI data sections に変更
  5. OKを押す

既存のC/C++言語ソースファイルをまとめて変更する方法

  1. プロジェクトビューからビルドツリー以下のビルドノード(ビルド設定「Building ARM/Thumb C Objects」、「Building ARM/Thumb C++ Objects」または「Building ARM Assembly Objects with CPP」のファイル)を選択し右クリック
  2. 表示されたコンテキストメニューの中から、共通ビルド設定を選択
  3. ツリーメニューCode generation から Code generation 2 を選択
  4. ドロップダウンボックスPlaces small global ZI data items in  ZI data sections に変更
  5. OKを押す

C/C++言語ソースファイルの初期設定を変更する方法

  1. プロジェクトビューからビルドツリー以下のビルドノードを選択し右クリック
  2. 表示されたコンテキストメニューの中から、デフォルトビルド設定を選択
  3. ツリーメニュー「Building ARM/Thumb C Objects」、「Building ARM/Thumb C++ Objects」または「Building ARM Assembly Objects with CPP」から初期設定を変更したいビルド設定を選択
  4. ツリーメニューCode generation から Code generation 2 を選択
  5. ドロップダウンボックスPlaces small global ZI data items in  ZI data sections に変更
  6. OKを押す

更新履歴:
2018-06-26 新規作成