マイコンが起動するまで、なぜ時間がかかるの?:Q&Aで学ぶマイコン講座(70)(3/4 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「マイコンが起動するまで、なぜ時間がかかるの?」についてです。
レジスタやフラグの初期化
論理回路を勉強された方であれば知っているかもしれませんが、レジスタやフラグで用いられているフリップフロップの初期値は、電源投入時には不定です。1か0のどちらになるか決まっていないため、初期化する必要があります。
マイコンのレジスタやフラグは、仕様書で初期値が決められています。そこでクロックに同期しながら仕様書に記載されている値に初期化します。
例えば、STM32F429/439シリーズのSYSCFGペリフェラルモード設定レジスタ(SYSCFG_PMC)のリセット値は0x0000 0000なので、リセット期間中にクロックに同期しながら設定します(図4)
図4:レジスタの初期値[クリックで拡大]
STM32F405/415、STM32F407/417、STM32F427/437 およびSTM32F429/439 MCUリファレンスマニュアル(RM0090)から抜粋
マイコンの内部論理回路では、ユーザーからは見えないさまざまなところでフリップフロップが使われています。これらのフリップフロップもリセット期間中に初期化されます。
オプションバイトの設定
オプションバイトとは、ハードウェアのオプション機能を設定するために、あらかじめマイコンのオプションバイト領域に準備されているレジスタです(図5)
図5:オプションバイト[クリックで拡大]
STM32F405/415、STM32F407/417、STM32F427/437 およびSTM32F429/439 MCUリファレンスマニュアル(RM0090)から抜粋
オプションバイトの構成はマイコンによって異なりますが、一般的にはフラッシュメモリなどと同じ不揮発性メモリ上に作られ、フラッシュメモリにユーザープログラムを書き込む際にあわせて書き込みます。
オプションバイトの内容は、リセット期間中に不揮発性メモリからクロックに同期して読み出され、内部論理回路に反映されます。内部論理回路には、各オプションバイトに対応するレジスタが準備されており、オプションバイトの各ビットがコピーされます。この一連の動作が行われた後に、オプション機能が有効になります。
Copyright © ITmedia, Inc. All Rights Reserved.