ターゲットRL78/G13で発生した問題ですが・・・・
R_main.cで定義したグローバル変数に値が入らない問題が発生して、頭を抱えていました。
定義した変数は、volatile uint16_t 型の1次元配列です。初期値を定義したら変数に値が入るようになった。(変な話です)
マップファイルの内容を確認する為に、変数/関数配列情報の出力オプションを有効にしたら何故かしら問題が解決ししました。
経験のある方は、おられませんか。
制御CPU.zip
プロジェックトファイルです。
CS+ CACX開発環境ではこのような経験は有りません。CS+ CCと何か違いが有るのでしょうか。
tanuさん、こんにちは。NoMaYと申します。> シュミレータでは、問題が再現しません。過去、ビルド時のマイコンの型番とオンチップデバッグで実際にデバッグに使用していたマイコンの型番が違うことによる下記トラブル事例があったことを思い出しました。その辺りは大丈夫ですか?RL78 CS+のシュミレート と E1エミュレータ での設定の差japan.renesasrulz.com/cafe_rene/f/002-2095199602/6299/rl78-cs-e1switch 文使用時の挙動 (最適化なし時)japan.renesasrulz.com/cafe_rene/f/forum18/6147/switchもちろん、以下の点などは謎のままですけれども。(以下の1番目と2番目は上記と関連がありそうな予感はします。)> シングルステップで変数の状態を確認すると値が入ります。> 初期値を定義したら変数に値が入るようになった> 変数/関数配列情報の出力オプションを有効にしたら何故かしら問題が解決
tanuさん、こんにちは。NoMaYです。そうでしたか。大丈夫でしたか。以下の情報から考えると、私の場合、次のようなステップを踏むかと思います。> 起動時に、変数の初期化を行っていますが、ウオッチで確認すると初期化した値が入らないです。(0) 変数の初期化を行っている部分を、逆アセンブルウィンドウでステップ実行して、コードの動作を把握する(1) メモリに書いている命令(変数の初期化)の実行後、書き込んだアドレスのメモリの内容をメモリウィンドウで調べる(2) メモリの内容が期待した値でなければ、メモリウィンドウ上で値を変更出来るか調べる(3) メモリウィンドウ上で値を変更出来たなら、メモリに書いている命令のステップ実行でメモリの値が書き込んだ値にならない点にフォーカスした画面コピーを投稿する(4) メモリの内容が期待した値であれば、メモリウィンドウとウォッチウィンドウの表示が合わない点にフォーカスした画面コピーを投稿する(5) メモリウィンドウ上で値を変更出来なかったら、画面コピーを投稿する前に、何が起きていそうか再度考えてみる既に調べられているかも知れないですけど、画面コピーを見てみないと、うまく状況把握出来ないです。