RL78/G13で、デュアルブート

RL78/G13と、CubeSuite+を使用して開発しています。

CPUのGPIOにスイッチを設けて、
スイッチ=OFFの場合はプログラムA、
スイッチ=ONの場合にはプログラムB
を、起動するようなやり方は可能なのでしょうか?

プログラムA、プログラムB双方ともRAMを大量に消費する
プログラムで、機能や動作内容が異なるため、
main処理後にプログラムA、プログラムBを選んで
動作をする余裕がありません。

コードサイズ自体はそれぞれ大きくないのでROMには
入りそうなのですが、RAMがどうにもなりません。

発想としては、リセット解除後に、
スイッチを読み込むプログラムが動作して、
その後、スイッチに従ったプログラムA又はBが動作する
ようなことがしたいのですが、
どのようにCubeSuiteで作成すればよいのかわかりません。

ご教授お願いします。
また、上記方法以外にも案がありましたらご提案お願いします。
  • 何度もすいません。

    回答番号8で教えていただいたように、
    main.cとsub.c、Header.hだけのファイルを使用するプロジェクトを作成し、回答番号8の// 各プログラム用の構造体型定義には下記のように記載したものをコンパイルすると、

    typedef struct _PRG_A{
      unsigned char TestBuf1[10000];
      unsigned char TestBuf2[10000];
    }PRG_A;

    typedef struct _PRG_B{
      unsigned char TestBuf1[10000];
      unsigned char TestBuf2[10000];
    }PRG_B;

    typedef struct _PRG_C{
      unsigned char TestBuf1[10000];
      unsigned char TestBuf2[10000];
    }PRG_C;

    PRG_A~BのTestBuf1\,TestBuf2のサイズが5000なら問題ないのですが、10000にするとE0111が発生してしまいます。

    また、回答番号10で言われている、
    >>宣言の再チェック\,コンパイラのリストファイルを吐かせて良く確認されたらどうでしょう。
    について、CubeSuite+ではどのようにしてリストファイルを吐かせどのファイルをどのように確認したらよいか具体的に教えていただけないでしょうか?
  • LunaJamです。

    リストファイルの出力指定は以下のようにします。
     ビルドツールプロパティを開く。
     コンパイルオプションタブを選択。
     リスト・ファイル行を展開。(+をクリック)
     プリプロセスリストファイルを出力を'はい'にする。
     以下は必要に応じて変更します。
     #defineを展開するを'はい'にする。
     #if\,#ifdef\,#ifndefを展開するを'はい'にする。
     #includeを展開するを'はい'にする。
    コンパイル又はビルドすると拡張子がpplのファイルが出来ます。
    これを注意深く調べます。

    例えば各モジュールで変数宣言されていればそれぞれで変数宣言が出てきます。


    >ちなみに、CPUはR5F100LANA、ROM:512KB、RAM:32KBです。
    なので他に大量のRAMを使うような宣言がなければ10000程度の配列なら出来ると思います。