リセット後sys_user_main()を早く実行するか、sys_user_main()の前に初期化処理を動かしたい

RX210のソフトウェアを開発しています。

マイコンのリセット解除から、関数sys_user_main()に制御がわたってくるまで約700msかかっています。

クロックの設定や、c言語の変数の初期化、スタック領域などの設定がsys_user_main()以前に行われると思いますが、700msは長すぎる気がします。

 

sys_user_main()に制御がわたってくるまで、何が行われているのでしょうか。

 

リセット後なるべく早い時点でマイコンの周辺のH/Wを初期化したいので、sys_user_main()が実行されるタイミングを早くするか、

sys_user_main()の前に周辺回路の初期化処理(GPIO操作)を行いたいのですが、そのような方法はありますでしょうか?

 

開発環境

CS+ for CC V8.03.00

CC-RX  V2.08

PDG2を使用しています。

 

よろしくお願いします。

Parents
  • そのものズバリの答えではないのですが、起動時間が長い原因は、RX210で低速オッシレータ(LOCO 125kHz)がデフォルトになっているせいだと思われます。
    おそらく起動時の変数領域クリアやコピーがこのクロックで行われています。

    PDG2無しの場合ですが、私は高速化するのに以下の手法を用いています。

    1) resetprg.c: HardwareSetup()を_INITSCT()の前に呼び出すようにする。(セクション初期化前にHardwareSetup()を行う)

    2) HardwareSetup()でクロック切り替え (LOCO -> HOCO)

    注意点として、HardwareSetup()では1)をやったため、セクション初期化に依存するような記述はできません。
    PDG2が絡んだ場合、事情が変わるかどうかは未確認です。

Reply
  • そのものズバリの答えではないのですが、起動時間が長い原因は、RX210で低速オッシレータ(LOCO 125kHz)がデフォルトになっているせいだと思われます。
    おそらく起動時の変数領域クリアやコピーがこのクロックで行われています。

    PDG2無しの場合ですが、私は高速化するのに以下の手法を用いています。

    1) resetprg.c: HardwareSetup()を_INITSCT()の前に呼び出すようにする。(セクション初期化前にHardwareSetup()を行う)

    2) HardwareSetup()でクロック切り替え (LOCO -> HOCO)

    注意点として、HardwareSetup()では1)をやったため、セクション初期化に依存するような記述はできません。
    PDG2が絡んだ場合、事情が変わるかどうかは未確認です。

Children
  • ご回答ありがとうございました。
    低速オシレーターで起動しているなら時間かかっていることに納得できます。
    PDG2が生成したクロック切り替え関数sys_clk_initial()を_INITSCT()前に呼べば起動処理を短縮できる可能性がありそうです。可能かどうか検討します。
    ありがとうございました。