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を使用しています。
よろしくお願いします。
そのものズバリの答えではないのですが、起動時間が長い原因は、RX210で低速オッシレータ(LOCO 125kHz)がデフォルトになっているせいだと思われます。 おそらく起動時の変数領域クリアやコピーがこのクロックで行われています。 PDG2無しの場合ですが、私は高速化するのに以下の手法を用いています。
1) resetprg.c: HardwareSetup()を_INITSCT()の前に呼び出すようにする。(セクション初期化前にHardwareSetup()を行う)
2) HardwareSetup()でクロック切り替え (LOCO -> HOCO)
注意点として、HardwareSetup()では1)をやったため、セクション初期化に依存するような記述はできません。 PDG2が絡んだ場合、事情が変わるかどうかは未確認です。