Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

MSP430 Flash Memory 特殊な利用テクニック -その2- (Info領域に定数tableを配置する) [JPIC]

$
0
0

Flash Memoryを下記のような特殊なケースに使う方法について、時々質問が参りますのでCCSv5を使って対応策を説明します。
下記を4回に分けて解説いたします。  添付exampleはCCSv5.4.0で生成してあります。

     InfoB,C,D領域をcode領域として利用する方法
     InfoB,C,D領域を定数table領域として利用する方法
     Flash memoryに定数tableを配置する方法とtableの入れ替え方法
     Flash Memoryに「更新頻度の低い変数データ」を配置する方法

今回は上記の②について説明します。

3 Information memory に定数テーブルを配置する方法

 1) 用途

  Flash領域が少しオーバーしてしまったとき、小さな定数や定数テーブルをInfoB,C,D領域に移すことができます。
  その方法例をG2553のケースで説明します。添付 G2553_infoTable がサンプルです。
(Please visit the site to view this file)

2) InfoDに定数を配置

  デフォルトのリンクコマンドに memory:INFOD section:.InfoD( “.”も名前の一部です、忘れずに) と定義がありますので、exampleはこれをそのまま使います。 

MEMORY
{
                          …
INFOD                   : origin = 0x1000, length = 0x0040

SECTIONS
{
                         …
                          .infoD     : {} > INFOD 

3) 定数テーブルを、section “.infoD” に配置します。

  ・ サイズ length = 0x00C0 に収まるようにします。 配置はリンクmapを見て確認します。
  ・ 下記で定数をsectionにアサインします。サイズに注意:8B+3*8*2B=56B <64B
    ** const 宣言必須です。 初期値付き変数は配置できません。 ** 

#pragma DATA_SECTION ( Ntable,".infoD");
const char Ntable[8]= “trout”;
#pragma DATA_SECTION (Udata,".infoD");
const int Udata [3][8]={                                            // segment size is 64B >3*8*2+8B
                            {1,2,3,4,5,6,7,8},
                            {11,12,13,14,15,16,17,18},
                            {21,22,23,24,25,26,27,28},  };

4) mainとInfoB,C,D領域をeraseしてロードする設定をします。

  ・  Projects->Properties->Debug->MSP430 Properties->
     Erase Options: ✔ Erase main and Information memory
    ** Note: protected… にチェックすると InfoAが消去されてしまいます。 **
  ・  この定数テーブルを残して、code部分のみ入れ替えるときは、✔ Erase main memory only に切り替えます。

5) 備考

  ・  CCSv5では、定数にアクセスする実体のcodeがないと、定数が配置されませんのでご留意ください。
  ・  InfoB,C,Dを一つにまとめて、定数tableを作るときは 2 (2),(3) を参考にしてください。

 (続く)

 

[JPIC, msp430info, trout, flash-memory]


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>