MSP430 の information memory にコードを配置
テクニカル・ノート 39271
アーキテクチャ:
MSP430
コンポーネント:
general
更新日:
2018/08/13 1:25
はじめに
MSP430ファミリには、「Information Memory」と呼ばれるエリアに(最大)256バイトのフラッシュメモリが搭載されています。容量が小さいMSP430の派生品向けにアプリケーションが作成されている場合、アプリケーションの一部を「Information Memory」に置くと便利です。
解決方法
「指定セグメントへの関数の配置」を使用すると、この問題を素早く解決できます。
または、.xclファイルを変更すると、より効率的にこの問題を解決できます。
「指定セグメントへの関数の配置」を使用する
特定の関数をINFOメモリに配置するには、@演算子を使用するか、#pragma locationディレクティブを使用します。これは以下のようになります。
void g(void) @ "INFO"
{
}
#pragma location="INFO"
void h(void)
{
}
.xclファイルを変更する
上記の方法は素早く簡単に行えますが、作成したコードをリンカに配置させることはできません。IAR XLINKリンカにコードの配置場所を最適化させるには(すなわち、Information Memoryに置く関数をリンカに選択させて配置させるには)、お使いの派生品に合わせて.xclファイル(のコピー)を編集する必要があります。
(ここでは、1kバイトflashのプログラムメモリ、128バイトflashのInformation Memory、128バイトのRAMが搭載されたMSP430F1101Aの例について説明します。)
- \430\config\ディレクトリからlnk430F1101.xclをコピーします。
- コピーしたファイルを、.ewpファイル(プロジェクトファイル)と同じフォルダに置きます。
- IAR Embedded Workbench for MSP430を開きます。プロジェクト(Project) > オプション(Options) > リンカ(Linker) > 設定(Config) > リンカ設定ファイル(Linker command file)を選択し、デフォルトのオーバーライド(Override Default)にチェックを入れます。
以下の記述を、$TOOLKIT_DIR$\CONFIG\lnk430F1101.xcl
以下のように変更します。 -
$PROJ_DIR$\lnk430F1101.xcl
- コピーしたlnk430F1101.xclを開きます。以下の記述を、
- a
-Z(CODE)CODE=FC00-FFDF
以下のように変更し、 -
-Z(CODE)CODE=1080-10FF,FC00-FFDF
変更内容を保存します。
これで、IAR XLINKリンカでもCODEセグメントがInformation Memoryに配置されるようになりました。
(注: これ以外の方法で.xclファイルを変更しなかった場合、INFOセグメントに配置されたシンボル(データや関数のシンボル)がCODEセグメントに配置されたシンボルよりも優先されます。これは、.xclファイルにおいて、INFOセグメントの-ZオプションがCODEセグメントの-Zオプションよりも前に配置されているためです。)
全ての製品名は、それぞれの所有者の商標または登録商標です。