コード生成ツールの使用/未使用でマイコンの動作が変わるのか

初めて当フォーラムを利用します。peterです。よろしくお願いします。

機能追加のためのコード改造作業をするにあたって、はじめてCS+を使用しました。

ピン配置の変更があったため、①コード生成ツールを使ってコードを作成 -> ②プロジェクトをビルド -> ③マイコンに書き込んで実行したところ、正常に動作しませんでした(マイコン -> 外部機器へのデータ送信ができない)。

試行錯誤の末、以下の手順でプロジェクトを作成することで正常な動作を確認できました。

  1. 改造前のプロジェクトを2つ用意する(以下、プロジェクトAとB)
  2. プロジェクトAでコード生成ツールを使用
  3. プロジェクトAのコードファイルをすべてコピーして、プロジェクトBに移植
  4. プロジェクトBをビルド
  5. プロジェクトBのmotファイルをマイコンに書き込んで実行

プロジェクトAとプロジェクトBの違いは、コード生成ツールの使用/未使用だけです。

同じコードを同じバージョンのビルドツールでビルドしたのに、マイコンに書き込んだ後の挙動が異なることに混乱しています。

どうしてこのような現象が起こるのか、ご教授お願いいたします。

※バージョン情報

パッケージバージョン V4.08.00 [08Nov 2022 ]

バージョン V5.08.00.01 [18 Oct 2022 ]

ビルド・ツール CA78K0R V1.72

Parents
  • すでにチョコさんやわわいさんに書かれている内容が全てなんです。

    でも、追記させていただきますね。

    おそらくmain()関数と他のmain関数から呼び出す関数などのプログラムコードは同じなのにおかしい!ってのがこの質問の趣旨だと思います。忘れてはならないのはマイコンは電源通電後にリセットが入って最初にリセットハンドラから起動するのでmain関数の前にいろんな処理が先行実行されます。パソコンでプログラム書いてても実はmain関数を呼び出すcランタイムルーチンてのが各環境で用意されているのですが、そんなこと知らずに開発している人は少なくないと思います。RL78でもそう言うmain関数を呼び出すまでのコードはツールが用意してくれるんです。確認した訳じゃないですけど、プロジェクトAとBでそのリセットハンドラからmain関数が呼び出されるまでの間に違うプログラムが用意されていてそれにより動作に違いが出ているんでと思いますよ。

    開発環境で関数の呼び出し関係が表示できると思います。main関数を呼び出してる元の部分を検索してみては?

Reply
  • すでにチョコさんやわわいさんに書かれている内容が全てなんです。

    でも、追記させていただきますね。

    おそらくmain()関数と他のmain関数から呼び出す関数などのプログラムコードは同じなのにおかしい!ってのがこの質問の趣旨だと思います。忘れてはならないのはマイコンは電源通電後にリセットが入って最初にリセットハンドラから起動するのでmain関数の前にいろんな処理が先行実行されます。パソコンでプログラム書いてても実はmain関数を呼び出すcランタイムルーチンてのが各環境で用意されているのですが、そんなこと知らずに開発している人は少なくないと思います。RL78でもそう言うmain関数を呼び出すまでのコードはツールが用意してくれるんです。確認した訳じゃないですけど、プロジェクトAとBでそのリセットハンドラからmain関数が呼び出されるまでの間に違うプログラムが用意されていてそれにより動作に違いが出ているんでと思いますよ。

    開発環境で関数の呼び出し関係が表示できると思います。main関数を呼び出してる元の部分を検索してみては?

Children
No Data