CS+ for CC のデバッグ・ツールについて

最近、マイコンを触り始めたものです。

CS+ for CC で RL78/G14 の R5F104LE(64pin)、アプリケーション(CC-RL)でプロジェクトを作成している状態です。

以下のような簡単なプログラムを main.c に書いています。

#include "iodefine.h"

static void intit(void);
#pragma interrupt intit(vect = INTIT, bank = RB1)

void main(void) {
// インターバルタイマの割り込み許可
ITMK = 0;
__EI();

// 低速オンチップ・オシレータ・クロックを供給
OSMC |= 0x10;

// クロックの供給許可
RTCEN = 1;

// LED0 の設定
PM1_bit.no7 = 0; // 出力モード
P1_bit.no7 = 1; // 消灯

// 100ms 間隔で動作開始
ITMC = 0x8000 + (15000 / 1000) * 100 - 1;

while(1);
}

void intit(void) {
static int count = 0;

if (10 == count) {
P1_bit.no7 = !P1_bit.no7;
count = 0;
} else {
++count;
}
}

この状態でデバッグ・ツールとして RL78 EZ Emulator を選択し、CC-RL (ビルド・ツール) のプロパティからリンク・オプションタブの、デバイス > デバッグ・モニタ領域を設定する を 「はい」にした状態でビルド&デバッグ・ツールへダウンロードを押すと、以前はソースファイルに対してステップオーバー実行などが出来ていたのに、逆アセンブル上でしかできなくなってしまいました。
現在のPC位置を示す黄色くなる行も逆アセンブルにしか表示されず、ソースファイルにはPC位置を示すものも表示されず、アドレス欄も空欄です。
何か設定を変えてしまったのだと思いますが、どこの設定を直せばソースファイル上でのステップオーバー実行ができるでしょうか。

よろしくお願いします。

Parents
  • あれこれするより新しくプロジェクトを作成してプログラムをコピペした方が解決が速いと思います。
  • cafe_rene.zip

    チョコです。

    solさんがやられている方法は、初心者にはあまりお勧めできません。

    RL78には、コード生成機能があり、GUIで使用したい内蔵周辺機能を指定すると、必要なプログラムが生成されるので、面倒な初期設定が完了した状態でmain関数が起動します。

    ただし、WDTが有効になってしまうので、そこは禁止することをお勧めします。

    とは、いえ、せっかくなので、solさんのプログラムを実際にやってみました。

    RL78/G14 の R5F104LE(64pin)でRL78 EZ Emulator ということなので、テセラさんから販売されていた

    RL78/G14 Stick スターターキットで検証してみました。

    CS+CCで新しいプロジェクトを作成し、main.cに提示されたプログラムを埋め込んで、リンクオプションをスレッドになるように設定して

    実際にビルドしてRL78/G14 Stick スターターキットにダウンロードしてみました。

    結果は全く問題なくステップ実行もできました。(ただし、最後はwhile(1)のループになるので、その先は無意味ですが。)

    使用したプロジェクトのzipファイルを添付しておきます。

     

  • チョコです。

    追加情報です。

    かふぇルネには、私が投稿した初心者向けの「チョコさんのRL教室」というものがあります。

    http://japan.renesasrulz.com/cafe_rene/b/rl78-classroom

     

    今はトップページの左側のナビの一番下になってしまっていますが、ここの内容が役に立つのではないかと思います。

  • 今回は、あれこれいじってしまった後の既存のプロジェクトを何とかしたかったです。
    試していただき、ありがとうございました。
  • 以前、見させていただいて、一通りやってみた覚えがあります。
    コード生成の機能は確かに便利なのですが、他のマイコンを使用する際にはこの統合開発環境が使えるとは限らず、データシートから読み解く技能を身につけなければならないので、できるだけデータシートを見ながら手書きして試しています。
  • チョコです。
    >データシートから読み解く技能を身につけなければならないので、できるだけデータシートを見ながら手書きして試しています。

    それは、いいのですが、今のプログラムの構成はどうかと思います。
    ほとんどのMCUは一つの端子に複数の機能が割り当てられ、リセットが解除された時点では、殆どアナログ入力かデジタル入力になっています。この状態が長く続くとトラブルの原因になることが考えられます。そのため、端子の設定をできるだけ早く行う必要があります。
    リセットが解除されると通常スタートアップ・ルーチンが起動し、C言語のプログラムを動かすための準備をしてからmain関数をスタートさせます。しかも、スタートアップ・ルーチンでは、最初に使用する内蔵周辺機能の初期設定を行い(その中でも、ポート設定は最初の方)、その後に変数の初期化を行うことで、端子が入力(ハイ・インピーダンス状態)をできるだけ早く解消するようになっています。
    組み込み用途では、ここらをきちんと考えて処理すべきです。
  • タイマーやポートの設定する前に割り込み許可してるのも宜しくない感じですね。
  • そうなんですね…
    全く知りませんでした。
    どうするのが正解か、コード生成を見て確認して、なぜその順番なのかを調べる形で解決していくのが適切でしょうか?
  • そうなんですね、どういう順番でやるべきなのか全くわからないのですが、正しい順番というのはどうすれば分かりますか。
Reply Children