マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「マイコンが起動するまで、なぜ時間がかかるの?」についてです。
素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。
今回は、初心者から多く寄せられる質問です。
マイコンの電源投入と同時にリセットをかけ、その後リセットを解除しても、すぐにプログラムが実行されません。実際にプログラムが実行されるまでに、タイムラグがあります。プログラムの先頭に汎用IOを変化させるプログラムコードを入れて汎用IOの状態をチェックしてみると、リセット解除後しばらく時間がたってから汎用IOの出力値が変わりました。なぜ、リセット解除後すぐにプログラムが実行されないのでしょうか? また、リセット期間中は、マイコン内部でどのような動作が行われているのでしょうか?
マイコンに電源を投入すると、パワーオンリセット(Power On Reset:以下POR)回路が動作して、リセットがかかります。または、ユーザーが外部からリセット(以下、ユーザーリセット)をかけます。その後、リセットが解除されるまでの内部動作と、リセット解除後にプログラムが実行されるまでの内部動作は、マイコンによって異なります。本記事では、STマイクロエレクトロニクスの汎用32ビットマイコン「STM32ファミリー」のSTM32F429/439シリーズ*1)を例に挙げて説明します。
*1):https://www.stmcu.jp/stm32/stm32f429439/
そもそも、マイコンはシステムクロック(以下、クロック)がないと動作できません。そこで、電源が投入されると、まず発振回路を起動して発振開始を待ちます。
発振が開始してクロックが生成されたら、そのクロックに同期しながら内部回路の初期化を行います。内部回路とは、レジスタやフラグで用いられているフリップフロップや、ハードウェアオプションを決めるオプションバイトの設定回路などです。フリップフロップなどのラッチ回路は、電源投入時は不安定な状態です。そこで、クロックに同期しながら仕様書で規定された値に設定して安定させます。
内部回路の初期化と並行して、チャージポンプ回路のチャージアップが行われます。チャージポンプ回路は、内蔵電源で使われています。チャージアップは、クロックに同期して少しずつ行われるので、完了まである程度の時間が必要です(表1)
これらの動作が完了した後に、マイコンはプログラムをフラッシュメモリから読み出して実行を開始します。図1に、STM32F429シリーズのリセットシーケンスを示します。
RESET信号は、マイコンの内部リセット信号です。PORやユーザーリセットが解除されても、RESETはローレベルのままで、内部にリセットをかけ続けます。内部回路の初期化とチャージポンプ回路のチャージアップが完了するとRESETがハイレベルになり、内部回路のリセットが解除されます。その後、プログラムコードをフラッシュメモリから読み出して、実際の動作が始まります。
Copyright © ITmedia, Inc. All Rights Reserved.