ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS
【質問】
カバレッジマスターゼネラルを使用していますが、下記の様なエラーメッセージが表示されました。
Invalid address found [code = 18] (pc=xxxxxxxx)
%SYSTEMG-E-SEM, stopped simulation (status code = 12h)
`MEM::xxxxxxxx'
ステップ実行して、実行状態を調査していると、ある箇所でスタック領域(0x00100000〜0x00110003)の上限よりも上のアドレスまでスタックを使用してオーバーフローしている事が分かりました。カバレッジマスターゼネラルで、スタック領域を拡張するにはどうすれば良いですか?
【回答】
スタートアップコマンドファイルで、スタックエリアを拡張する事が可能です。スタートアップコマンドファイルに下記の記述を追加して下さい。拡張したスタック領域を「ポインタ割り当て設定」で使用している場合は、「ポインタ割り当て設定」のエリアを重複しないアドレスに変更してください。
例)スタックエリアを64Kから128Kに拡張する場合、スタートアップコマンドファイルに下記の記述を追加します。
; SPの拡大
assign 0x100000#0x20000 ; スタックエリアを拡大(拡張する領域で変更)
macro set_sp
set reg sp=0x11fff0 ; スタックポインタの初期値を設定(拡張する領域で変更)
mend
set do/exe = 0x40000058 set_sp
上記のスタック領域拡大後のメモリマップは、下記の様になります。
0x00100000〜0x0011fff3 スタック
0x0011fff4〜0x00FFFFFF 空き(カバレッジマスターのポインタ割り当てエリアとして利用可能)
0x01000000〜0x3FFFFFFF 変数領域(デフォルトのsbrkでは、ヒープはここ)
0x40000000〜0xFFFFFFFF プログラム領域
ゼネラルに内蔵されているテスト実行シミュレータ(汎用マイコンシミュレータ)のデフォルトのメモリマップは下記を参照して下さい。