RAM の不足( Error - section 'f1name' can not fit the section. )
-----------------------------
【例1】コンパイルエラー
#pragma udata f1name
static char fname1[8][16];
static char fname2[9][16];
static char fname1[8][16];
static char fname2[9][16];
- これは、256バイト超でデータメモリのバンクをまたがってしまい、リンカエラーでる
static char fname1[8][16];
static char fname2[8][16];
static char fname2[8][16];
- これは、256バイトに収まっているのでOK #pragma 無くてもいい。
#pragma udata f1name
static char fname1[16][16];
#pragma udata f2name
static char fname2[9][16];
static char fname1[16][16];
#pragma udata f2name
static char fname2[9][16];
- これは、別々のバンクに配置され、OK。
- 多くのメモリを使用する場合は、予めセクションを指定して配置しろという事か
#pragma idata f1name
static char fname1[16][16] = { 0 };
#pragma udata f2name
static char fname2[9][16];
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 ]
で、全体の配置を示すマップファイルを表示できる。