電源起動の高速化

お世話になっております。entakeと申します。

R8C/1Bシリーズで、
電源ONからメイン処理が動き出すまでの時間を最速で行いたい場合、どのような方法が考えられますでしょうか?

FAQを探っていて、「スタートアップファイル(ncrt0.a30)ではRAMの初期化も行っています。リセット解除後のCPUクロックは低速オンチップオシレータの8分周のため、RAMの初期化に数十ms程度かかる場合があります。」という記述を見つけたので、RAMの初期化をメインクロックに切り替えた後に行うようにすれば良いのでは、等と考えていますが、そんなことは可能なのでしょうか??
他に何かアイデアなどありましたら是非お願い致します。

XINには、TCXO20MHzを接続し、メインクロック切り替え時の発振安定待ち時間を無くすことで、ある程度は早く動くようになりましたが、さらに高速起動を目指しています。
Parents
  • entakeさん

    失礼しましたTCXOでしたね。水晶振動子だと思い込んでました。

    高速化のためならば、RAMの初期化をしないという手もあります。
    BSS空間が0クリアされていないくても問題なさそうですし
    初期値付きのstatic変数を使わなければ、
    ROMからRAMに初期値を転送する必要もないので
    かなり高速化できそうです。


    試しにRAMコピー部分を全部コメントアウトしちゃったら早くなりそうですよ。
    ;-----------------------------------------
    ; bss zero clear
    ;-----------------------------------------
    ;N_BZERO bss_SE_top\,bss_SE
    ;N_BZERO bss_SO_top\,bss_SO
    ;N_BZERO bss_NE_top\,bss_NE
    ;N_BZERO bss_NO_top\,bss_NO
    ;------------------------------------------
    ; initialize data section
    ;------------------------------------------
    ;N_BCOPY data_SEI_top\,data_SE_top\,data_SE
    ;N_BCOPY data_SOI_top\,data_SO_top\,data_SO
    ;N_BCOPY data_NEI_top\,data_NE_top\,data_NE
    ;N_BCOPY data_NOI_top\,data_NO_top\,data_NO
Reply
  • entakeさん

    失礼しましたTCXOでしたね。水晶振動子だと思い込んでました。

    高速化のためならば、RAMの初期化をしないという手もあります。
    BSS空間が0クリアされていないくても問題なさそうですし
    初期値付きのstatic変数を使わなければ、
    ROMからRAMに初期値を転送する必要もないので
    かなり高速化できそうです。


    試しにRAMコピー部分を全部コメントアウトしちゃったら早くなりそうですよ。
    ;-----------------------------------------
    ; bss zero clear
    ;-----------------------------------------
    ;N_BZERO bss_SE_top\,bss_SE
    ;N_BZERO bss_SO_top\,bss_SO
    ;N_BZERO bss_NE_top\,bss_NE
    ;N_BZERO bss_NO_top\,bss_NO
    ;------------------------------------------
    ; initialize data section
    ;------------------------------------------
    ;N_BCOPY data_SEI_top\,data_SE_top\,data_SE
    ;N_BCOPY data_SOI_top\,data_SO_top\,data_SO
    ;N_BCOPY data_NEI_top\,data_NE_top\,data_NE
    ;N_BCOPY data_NOI_top\,data_NO_top\,data_NO
Children
No Data