なんとかなるさね

マイコンをネタにブログを始めてみました


スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/--   blog-entry-   category: スポンサー広告

go page top

RL78マイコン(RL78/G13)|IDE4GR 0.7.0でビルドしてCS+ for CC V4.00.00で周辺シミュレーション 

CS+(旧CubeSuite+) V4.00.00ではRL78/G13でも内蔵周辺機能シミュレーションが可能になっていますので、
IDE4GR 0.7.0でビルドしたプログラムをCS+ for CCに読み込ませてシミュレーション実行させてみました。
(ちなみに、Blinkサンプルスケッチの1000msという間隔はシミュレーションでは長すぎますので1msに変更
しています。そこ以外は以前のエントリで秋月のR5F100LGAFB搭載変換モジュールで試したものと同じです。)






なお、今回、IDE4GRのボード情報定義ファイルの1つであるplatform.txtを書き換えて以前のエントリ(216,
614)で試したように以下のオプションを追加しました。(1つ目のエントリに書いた-g2は既にplatform.txtで
指定済みでした。2つ目のエントリに書いた回避策は今回は行っていません。)

-gdwarf-2 -gstrict-dwarf

そしてコンパイルされたsketch_may27a.cpp.elfをsketch_may27a.inoのあるフォルダにコピー(実際には
いちいちコピーするのが面倒でしたのでシンボリックリンクを作成)しておき、それをCS+のシミュレータで
ダウンロードするようにしました。さらに、Arduino IDEのデフォルトのビルドフォルダはArduino IDEを
起動する毎に変化するのですが、それも面倒でしたので以前のエントリで試したようにArduino IDEの個人
環境設定ファイルに以下の設定を追加してビルドフォルダを固定しました。

build.path=E:\tools\micom\Arduino\build
build.verbose=true
build.warn_data_percentage=75

ちなみに、IDE4GRでは初期のバージョンから本家Arduino IDEにある環境設定ダイアログを開くことが
出来ない(メニューが存在しない)のですが、本家Arduino IDE (1.5.x系/1.6.x系)で設定した時の設定が
引き継がれているようです。例えば、スケッチブックのフォルダに関しては以下の設定が効いていました。

settings.path=C:\Users\UserName\AppData\Local\Arduino15
sketchbook.path=E:\tools\micom\Arduino\sketchbook6

追記 : メモ

なお、パソコンのCPUが遅いと以下の赤字の箇所のループでシミュレーション実行時間が非常に掛かります。
(今回は内蔵周辺機能シミュレーションを行っていますので特に時間が掛かります。トレース機能やタイマ
機能も有効にしていますし。)
私のパソコンの年代物のCPUでは実際の時間として230秒ほど掛かりました。
(私のパソコンのCPUはAMD Athlon 1.2GHzというCPUです。) シミュレーション上の時間は1.04秒でした。
(追記 : トレース機能を有効にすることによるシミュレーション実行時間の増加の方が効いていました。
トレース機能を無効にしたところ80秒ほど、更にタイマ機能も無効にすると40秒ほど、で完了しました。)

ファイル: RLduino78_timer.c
該当箇所:

/**
 * システムクロックの初期化
 * ・メイン・システム・クロック = 高速オンチップ・オシレータ
 * ・サブ・システム・クロック  = XT1発振回路
 *
 * @return なし
 *
 * @attention なし
 ***************************************************************************/
void init_system_clock()
{
#if (RTC_CLK_SOURCE == CLK_SOURCE_XT1)
    unsigned long i;
    CMC.cmc   = 0x10;   // クロック動作モード制御レジスタの設定(X1発振回路=未使用、XT1発振回路=使用、XT1低消費発振)
    MSTOP     = 1;      // X1発信回路の発振停止
    MCM0      = 0;      // メイン・システム・クロックに高速オンチップ・オシレータ・クロックを選択
    XTSTOP    = 0;      // XT1発振回路の発振開始
    for (i = 0; i < WAIT_XT1_CLOCK; i++) {
        NOP();          // XT1発振回路の安定化待ち
    }

    OSMC.osmc = 0x00;   // 周辺機器へのサブシステム・クロックの供給許可、RTC/ITのクロックにXT1発振回路を選択
#elif (RTC_CLK_SOURCE == CLK_SOURCE_FIL)
    CMC.cmc   = 0x10;   // クロック動作モード制御レジスタの設定(X1発振回路=未使用、XT1発振回路=使用、XT1低消費発振)
    MSTOP     = 1;      // X1発信回路の発振停止
    XTSTOP    = 1;      // XT1発振回路の発振停止
    MCM0      = 0;      // メイン・システム・クロックに高速オンチップ・オシレータ・クロックを選択
    OSMC.osmc = 0x10;   // 周辺機器へのサブシステム・クロックの供給許可、RTC/ITのクロックに低速オンチップ・オシレータを選択
#endif
    HIOSTOP = 0;    // 高速オンチップ・オシレータの動作開始
    CSS     = 0;    // CPU/周辺ハードウェア・クロックににメイン・システム・クロックを選択
    while (CLS != 0);
}


ファイル: RLduino78_mcu_depend.h
該当箇所:

#define WAIT_XT1_CLOCK  1850000



追記 : メモ

今のところ、RL78で内蔵周辺機能シミュレーションが可能なのはG13と以前のエントリ(554, 555, 556)で
試したG10だけのようです。その後のエントリ(557)で試したG12とG14は一部の機能だけのようです。

追記 : 雑感

本家Arduio IDEでは1.6.6からビルド処理がarduino-builder.exeというコマンドラインツールで行われるよう
になったのですが、CS+からmake.exeを起動するようにCS+からarduino-builder.exeを起動することで、
CS+上でinoファイルのスケッチをビルド出来そうな気がします。ただ、今のところ、(当然ながら)CS+上で
inoファイルに対してシンタックスカラーリングがされていないとかコードフォールディングが出来ないとか、
cppファイルと同様に扱われている訳ではありませんので、それも何か手が無いか考えてみたいところです。

なお、GNURL78でビルドしたプログラムをCS+で読み込むことは動作保証外ですし、そもそもGNURL78と
CC-RLではABIが異なっていますので、今のところは、変数のウォッチの挙動は怪しいものだろうと思って
います。(GNURL78のリンカを改造して、CC-RLでビルドされたように見せ掛けるような細工が必要だろうと
思っています。逆のことを行う単体のコンバータプログラムについてはe2 studioに同梱されていますが。)

他方、GNURXとCC-RXではABIが同じですので、変数のウォッチの挙動はもっと素直だろうと思っています。
もっとも、動作保証外という点に違いは無いです。あと、arduino-builder.exeの件は同じだと思っています。

追記 : 補足

すみません。実は、この時、同時期にリリースされたe2 studio V5.0でも周辺シミュレーションが出来る
らしいことに気付いていませんでした。e2 studio V5.0の方も、そのうち試してみようと思います。

関連記事

2016/06/02   blog-entry-772   category: RL78 /* 16bit,8bit CISC */

go page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。