RL78 CS+のシュミレート と E1エミュレータ での設定の差

CS+でシュミレータ動作確認とE1エミュレータでデバッグしていますが、RAM変数の動作が違います。

タイマー割り込みと、メインルーチンで簡単なプログラムを確認しています。

タイマー割恋でRAM変数にセットしますが、メインに戻りIOポートをアクセスすすると

RAM変数がクリアーされます。

CS+の設定の問題なのでしょうか。

教えてください。

 

 

以下。テストプログラムです。

 

/***********************************************************************/
/* */
/* FILE :Main.c */
/* DATE : */
/* DESCRIPTION :Main Program */
/* CPU TYPE : */
/* */
/* NOTE:THIS IS A TYPICAL EXAMPLE. */
/* */
/***********************************************************************/
#include "iodefine.h"

#define DI __DI
#define EI __EI

#define RXDDT P0_bit.no0
#define LEDBIT P0_bit.no1
#define HARISW P0_bit.no2
#define PWBIT P0_bit.no3
#define BUZZPT P0_bit.no4
#define HIMO_SW P13_bit.no7

int Sycnt1;

 

void mainjob(void);
void R_TAU0_Channel0_Start(void);

 

void timerjob(void)
{
if(Sycnt1-- == 0)
{
Sycnt1 = 1000;

}

}


void mainjob(void)
{
R_TAU0_Channel0_Start();
EI();

for(;;)
{
if(PWBIT == 1) // 電源?
{
if(HARISW == 1) // 貼り付けSW ON?
{
P0_bit.no1 = 1;
}
}
}
}

Parents
  • きたさん、こんにちは。NoMaYと申します。

    宜しければ、シュミレータでうまく動いた状況が分かるCS+の画面コピーと、E1エミュレータでうまく動かなかった状況が分かるCS+の画面コピーの、2つの(それ以上でも可)の画面コピーを添付して、見せて頂けないでしょうか?(どんな操作をされて確認されたのかというイメージが沸いて来ないですので、、、)

  • NoMaYさん
    こんばんは、ご返事ありがとうございます。

    サイトの使い方が分からなくて、あれこれやっていました。
    画像フィル送ったのですが、届きましたでしょうか。

    E1でタイマー処理でブレークしてトレースで送り右側のウォッチで変数表示しています。
    同じように、シュミレータでも行っています


    ご教授ください。
Reply
  • NoMaYさん
    こんばんは、ご返事ありがとうございます。

    サイトの使い方が分からなくて、あれこれやっていました。
    画像フィル送ったのですが、届きましたでしょうか。

    E1でタイマー処理でブレークしてトレースで送り右側のウォッチで変数表示しています。
    同じように、シュミレータでも行っています


    ご教授ください。
Children
  • きたさん、こんにちは。NoMaYです。

    画面コピー、どうも有難う御座いました。状況が理解出来ました。奇妙な症状ですね。次は、すみませんが、timerjob()の逆アセンブルウィンドウの画面コピーを見せて頂けませんか?

  • NoMaYさん

    おはようございます。

    timerjob()の逆アセンブルウィンドウの画面コピーを送ります。

     

  • きたさん、おはようござます。NoMaYです。

    逆アセンブルウィンドウの画面コピー、どうも有難う御座いました。命令コード列としては、こういう奇妙な症状と結び付きそうな点は存在しないですね、、、次は、timerjob()の以下の行をステップ実行する時の、ステップ実行前とステップ実行後の、CPUレジスタウィンドウでのレジスタ値表示の画面コピーを見せて頂けないでしょうか?

    LEDBIT ^= 1;

     

  • NoMaYさん

    おはようございます。

    ステップ実行前とステップ実行後の、CPUレジスタウィンドウでのレジスタ値表示の画面コピーを送ります。

    宜しくお願い致します。

     

    実行前

     

    実行後

  • timerjob() のコードが割り込み関数の内容になってませんが、この関数は単体で呼ばれる割り込み処理ではなく正しく書かれた別の割り込み関数から呼ばれるものという認識で合ってますか
  • きたさん、こんにちは。NoMaYです。

    レジスタ値の変化も普通(感覚的な表現ですが値がぐちゃっと壊れたりもしていない)ですね。では、次は、以下の2つのケースで、同じくその行での、ステップ実行前とステップ実行後の、今度はメモリウィンドウでの0xFFCE0~0xFFCEFあたりまでのメモリ内容の表示が見たいです。

    ケース1) 普通に(先ほどのリプライ時と同様に)その行のステップ実行前とステップ実行後の画面コピー

    ケース2) その行のステップ実行前にメモリウィンドウで0xFFCE0~0xFFCEFを0x55で埋めておいて、その様子の画面コピーと、そうしてからその行をステップ実行した後の画面コピー

  • チョコさん
    NoMaYさん
    fujitaさん

    ご返事ありがとうございます。
    C言語としてあり得ない状態なので、CPUに種類を変えてみました。

    R5F10Y17 4KROM から R5F10Y16 2KROM   R5F10Y14 1KROM とCPUの種類だけ変えて
    ソースはそのままで、動作させると予定通りの動作をしました。

    このプログラムサイズ的にどうても 4Kのサイズが必要です。
    CS+のどこにこの差分の設定が有るのでしょうか
    その部分が修正できれば、良いと思われます。

    ご教授ください。
  • きたさん、こんにちは。NoMaYです。

    > C言語としてあり得ない状態なので、CPUに種類を変えてみました。
    > R5F10Y17 4KROM から R5F10Y16 2KROM   R5F10Y14 1KROM とCPUの種類だけ変えて
    > ソースはそのままで、動作させると予定通りの動作をしました。

    デバイスの実物の方も変えていますか?それとも、CS+のデバイス選択のみ変えましたか?デバイスの実物は変えずにCS+のデバイス選択のみ変えて動作するようになったのであれば、以下のスレッドのようにデバイスの実物が違っていないかという可能性が気になります。もしかして、デバイスの実物がR5F10Y16 2KROMだったりしないでしょうか?

    switch 文使用時の挙動 (最適化なし時)
    japan.renesasrulz.com/cafe_rene/f/forum18/6147/switch/34076#34076
     

  • NoMaYさん

    CS+のCPUを変えただけです。
    基板実装CPUは R5F10Y17 を確認しています。
  • きたさん、こんにちは。NoMaYです。

    > 基板実装CPUは R5F10Y17 を確認しています。

    そうですか。すみません。私では、ちょっと、これ以上は分からないです。他の方からのアドバイスを待って頂けますか。