2013年7月17日水曜日

PIC C18 メモ(RAM の不足)

-----------------------------
RAM の不足( Error - section 'f1name' can not fit the section. )
-----------------------------
【例1】コンパイルエラー
#pragma udata f1name
static char fname1[8][16];
static char fname2[9][16];
  • これは、256バイト超でデータメモリのバンクをまたがってしまい、リンカエラーでる
【例2】
static char fname1[8][16];
static char fname2[8][16];
  • これは、256バイトに収まっているのでOK  #pragma 無くてもいい。
【例3】
#pragma udata f1name
static char fname1[16][16];
#pragma udata f2name
static char fname2[9][16];
  • これは、別々のバンクに配置され、OK。
  • 多くのメモリを使用する場合は、予めセクションを指定して配置しろという事か
【例4】
#pragma idata f1name
static char fname1[16][16] = { 0 };
#pragma udata f2name
static char fname2[9][16];
  •  idata セクションにして、ゼロで初期化できた
    (130バイト位プログラムメモリが増えた)
  •  idata セクションにしても、={ 0 } が無いと何も起こらない
整理にあたって、何度か目を通すも、わざわざ打ち込んでページを起こすかどうか迷った個所。結果的に、メモの内容より書き足すハメに。

2006.10 - 2013.07.17

【おまけ】
データメモリの配置を確認するには、Watch ウィンドウでもアドレスを知ることができるが、
[ File ]->[ Open ]->[ Map Files ]
で、全体の配置を示すマップファイルを表示できる。