(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、ユーザによって作成され、前記ＣＰＵによって実行されるユーザプログラムが記憶されるユーザＲＯＭとを備え、制御対象機器に組み込まれた状態で動作するマイクロコンピュータにおいて、
前記ＣＰＵのリセットが解除されると、前記ユーザプログラムが実行される前に前記ＣＰＵによってアクセスが行われ、当該ＣＰＵが前記ユーザプログラムを実行するために必要な初期設定処理を行う初期設定プログラムが予め記憶されている起動用ＲＯＭを備え、
前記ユーザＲＯＭに設定領域を設け、
前記起動用ＲＯＭに記憶されている初期設定プログラムが前記ＣＰＵによって実行されるとその実行中に前記ユーザＲＯＭの設定領域が読み出され、前記ＣＰＵが、当該領域にユーザによって設定されたデータが書き込まれていると判断すると前記データを所定のレジスタに設定し、前記設定領域にユーザによってデータが書き込まれていないと判断するとデフォルトの設定値を所定のレジスタに設定し、
前記初期設定処理を、前記ＣＰＵに対して供給する動作用クロック信号を生成するために使用される発振子の発振状態が不安定な状態にある期間に実行することを特徴とするマイクロコンピュータ。
【請求項２】
前記初期設定処理を、リセットが解除された直後に実行することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記ＣＰＵは、
内部状態を保持したまま動作を一時的に停止する低消費電力モードを有していると共に、
前記低消費電力モードが解除された場合も前記起動用ＲＯＭにアクセスを行い、前記初期設定処理のうち動作を再開するために必要な処理を行うことを特徴とする請求項１又は２記載のマイクロコンピュータ。
【請求項４】
前記低消費電力モードが解除された場合に行う初期設定処理を、前記ＣＰＵに対して供給する動作用クロック信号を生成するために使用される発振子の発振状態が不安定な状態にある期間に実行することを特徴とする請求項３記載のマイクロコンピュータ。
【請求項５】
前記初期設定処理を、前記低消費電力モードが解除された直後に実行することを特徴とする請求項４記載のマイクロコンピュータ。
【請求項６】
前記低消費電力モードを、所定周期で繰り返し実行することを特徴とする請求項３乃至５の何れかに記載のマイクロコンピュータ。
【請求項７】
前記ＣＰＵの動作状態を監視するために用いられるウォッチドッグタイマと、
前記ＣＰＵに対して動作用クロック信号を出力するクロック信号出力回路とを備え、
前記初期設定処理は、
前記ＣＰＵに対する割込みを禁止する処理、
前記ＣＰＵの内部レジスタを初期化する処理、
前記ウォッチドッグタイマの周期を設定する処理、
前記ウォッチドッグタイマを動作させるクロックソースを設定する処理、
前記クロック信号出力回路の発振安定時間を設定する処理であることを特徴とする請求項１乃至６の何れかに記載のマイクロコンピュータ。
【請求項８】
請求項１乃至７の何れかに記載のマイクロコンピュータを備えて構成されることを特徴とする車両用ＥＣＵ(Electronic Control Unit)。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵと、ユーザによって作成され、前記ＣＰＵによって実行されるユーザプログラムが記憶されるユーザＲＯＭとを備えてなる組込み型のマイクロコンピュータ，及びそのマイクロコンピュータを備えて構成される車両用ＥＣＵに関する。
【０００２】
【従来の技術】
図１６は、制御対象機器に組み込まれた状態で使用される従来のマイクロコンピュータの構成例を示すものである。マイクロコンピュータ１は、ＣＰＵ２，ユーザによって作成され、ＣＰＵ２によって実行されるプログラムが記憶されるＲＯＭ３，ＣＰＵ２が前記プログラムを実行することによりアクセスされ、様々な操作が行われる周辺回路などで構成される。
【０００３】
周辺回路には、例えば、ＣＰＵ２のワークエリアとして使用されるＲＡＭ４，ＤＭＡ(Direct Memory Access)転送を行うためのＤＭＡコントローラ（ＤＭＡＣ）５，ＣＰＵ２に対する割り込みを制御するための割り込みコントローラ６，ＣＰＵ２の動作を監視するためのウォッチドッグタイマ（ＷＤＴ）７，アナログ信号をデジタル信号に変換するためのＡ／Ｄコンバータ８などがある。
【０００４】
ユーザは、マイコン１に制御対象機器を制御させるためのアプリケーションプログラムを作成し、そのプログラムをＲＯＭ３に記憶させる。そして、ＣＰＵ２は、ＲＯＭ３に記憶されたプログラムを読み出して実行し、制御対象機器の制御を行うようになっている。
【０００５】
【発明が解決しようとする課題】
このような制御用マイコン１において、ＣＰＵ２は、ユーザが作成したプログラムに基づいて実質的に制御対象機器の制御を行う前に様々な初期設定処理を行うようになっており、その初期設定処理についても、対応する処理ルーチン（或いは、プログラムモジュール）をユーザが作成して上記プログラムの冒頭部分に配置するようになっている。
【０００６】
しかしながら、上記の初期設定処理の中には、同一のマイコン１を用いるのであれば、ユーザが実際に適用を行うアプリケーションの内容にかかわらず、必ず行う必要があるものが含まれている。また、そのような処理の中には、設定を確実に行わなければマイコン１による処理の信頼性が確保されないおそれが生じるものもあり、マイコン１のプログラム開発を行う場合にユーザの負担が大きくなってしまうという問題があった。
【０００７】
本発明は上記事情に鑑みてなされたものであり、その目的は、ユーザによるプログラム開発の負担をより少なくすることができるマイクロコンピュータ，及びそのマイクロコンピュータを用いて構成される車両用ＥＣＵを提供することにある。
【０００８】
【課題を解決するための手段】
請求項１記載のマイクロコンピュータによれば、ＣＰＵは、リセットが解除されると、ユーザＲＯＭに記憶されているユーザプログラムを実行する前に起動用ＲＯＭにアクセスする。そして、その起動用ＲＯＭに記憶されている初期設定プログラムを実行することで、ユーザプログラムを実行するために必要な初期設定処理を行う。
【０００９】
即ち、初期設定処理を行うためのプログラムは起動用ＲＯＭに予め記憶されており、ＣＰＵは、起動用ＲＯＭにアクセスして初期設定処理を行った後にユーザプログラムを実行する。従って、ユーザは、ユーザプログラム中に初期設定処理に対応する部分を記述する必要がなくなるので、プログラムの作成工程を簡単にすることができる。
【００１０】
そして、初期設定において必要な処理はユーザが関与することなく確実に実行されるので、信頼性を向上させることができる。また、初期設定処理に関する部分についてはデバッグを行う必要もなくなるため、プログラム作成後の開発工程も短縮することが可能となる。
【００１１】
また、初期設定処理において、ＣＰＵに設定させるデータがユーザによって設定されるので、ユーザが所望した値を初期設定することができる。
【００１２】
具体的には、起動用ＲＯＭに記憶されている初期設定プログラムがＣＰＵによって実行されると、その実行中にユーザＲＯＭの設定領域が読み出され、ＣＰＵが、当該領域にユーザによって設定されたデータが書き込まれていると判断すると、当該設定領域に書き込まれているデータをＣＰＵが所定のレジスタに設定する。また、設定領域にユーザによってデータが書き込まれていないと判断するとデフォルトの設定値を所定のレジスタに設定する。即ち、ユーザが、ユーザＲＯＭに予め割り当てられている設定領域に設定を所望するデータを書き込んでおけば、そのデータが読み出されてユーザが所望した値により必要な初期設定が行われるようになる。
【００１３】
その結果、初期設定処理の少なくとも一部について、ＣＰＵに実行させるか否かがユーザによって設定されるので、アプリケーションに応じて自動的に設定を行う必要があるものだけをユーザが選択して実行させることができる。
【００１４】
また、ユーザＲＯＭの設定領域をＣＰＵが読み出した場合に、当該領域にユーザによって設定されたデータが書き込まれていると判断すると、対応する初期設定処理をＣＰＵが実行する。即ち、ユーザは、設定領域にデータを書き込めば（デフォルトのデータを変更する）、その書き込みにより設定領域のデータが変更されたことをもって、対応する初期設定処理を選択的に実行させることができる。
【００１５】
加えて、初期設定処理を、ＣＰＵに対して供給する動作用クロック信号を生成するために使用される発振子の発振状態が不安定な状態にある期間に実行する。即ち、従来、リセット解除後に行う初期設定処理は、発振子の発振状態が安定するまで待って行なうようにしていた。そのため、前記発振状態が不安定な状態にある期間はマイクロコンピュータの動作が保障されず、誤動作が発生するおそれがあった。そこで、上記のように、初期設定処理を実行することで、誤動作が発生する可能性を極力小さくすることができ、信頼性を更に向上させることができる。
【００１６】
請求項２記載のマイクロコンピュータによれば、初期設定処理を、リセットが解除された直後に実行する。即ち、発振子の発振状態が安定するまでの時間（安定時間）は個別の製品によってばらつきがある。従って、請求項２のように構成すれば、発振子の安定時間が個別に異なるとしても、初期設定処理を、確実に発振状態が不安定な状態にある期間に実行することができる。
【００１７】
請求項３記載のマイクロコンピュータによれば、ＣＰＵは、低消費電力モードが解除された場合も起動用ＲＯＭにアクセスを行い、初期設定処理のうち動作を再開するために必要な処理を行う。即ち、ＣＰＵが低消費電力モードによって動作を一時的に停止しているような状態となり、その状態が解除された際には、リセット解除時と同様な初期設定を再度行う必要があるケースも存在する。従って、このように構成すれば、低消費電力モードを有しているマイクロコンピュータについても対応することができる。
【００１８】
請求項４記載のマイクロコンピュータによれば、低消費電力モードが解除された場合に行う初期設定処理を、ＣＰＵに対して供給する動作用クロック信号を生成するために使用される発振子の発振状態が不安定な状態にある期間に実行する。従って、低消費電力モードが解除された場合についても、請求項１と同様の作用効果を得ることができる。
【００１９】
請求項５記載のマイクロコンピュータによれば、初期設定処理を、低消費電力モードが解除された直後に実行するので、低消費電力モードが解除された場合についても、請求項２と同様の作用効果を得ることができる。
【００２０】
請求項６記載のマイクロコンピュータによれば、低消費電力モードを、所定周期で繰り返し実行するので、それに応じて初期設定処理も繰り返し実行されるようになり、ノイズの影響を受けやすい動作環境にある場合でも信頼性を向上させることができる。
【００２１】
請求項７記載のマイクロコンピュータによれば、初期設定処理として、ＣＰＵに対する割込み禁止処理を行う。即ち、リセットが解除された直後の状態で割り込みが発生してもＣＰＵは即座に対応することができないので、取り敢えず割り込み禁止状態にしてその間に初期設定処理を行う必要がある。従って、割り込み禁止処理を初期設定において行うようにすれば、ユーザのプログラミング負担を確実に削減することができる。
【００２２】
この場合、初期設定処理を、ＣＰＵの内部レジスタを初期化する処理とする。即ち、内部レジスタの初期化処理はＣＰＵが起動する場合に必須の処理であるから、当該処理を初期設定処理として行うようにすれば、やはり、ユーザのプログラミング負担を確実に削減することができる。
【００２３】
また、初期設定処理を、ウォッチドッグタイマの周期を設定する処理とする。即ち、ＣＰＵの動作状態を監視するためにウォッチドッグタイマを使用する場合は、初期設定の段階においてその周期を設定することが好ましい。従って、このように構成すれば、やはり、ユーザのプログラミング負担を確実に削減することができる。
【００２４】
更に、初期設定処理を、ウォッチドッグタイマを動作させるクロックソースを設定する処理とする。即ち、クロックソースが選択可能に構成されている場合に、その選択設定を初期設定処理において行えば、ユーザのプログラミング負担を削減することができる。
【００２５】
加えて、初期設定処理を、クロック信号出力回路の発振安定時間を設定する処理とする。即ち、クロック信号出力回路は停止している状態から発振を開始すると、その発振動作が安定するまでに所定の時間を必要とする場合がある。
【００２６】
従って、クロック信号出力回路が出力するクロック信号に基づいて動作する回路は、発振動作が安定した状態となるまで待機した上でなければ精確な動作を期し難い。そこで、初期設定処理において発振安定時間を設定すれば、ＣＰＵにその発振安定時間が経過するまで必要な処理の実行を待機させることができるので、前記クロック信号に基づいて動作する回路を用いて行う処理を精確に実行することができる。
【００２７】
請求項８記載の車両用ＥＣＵによれば、請求項１乃至７の何れかに記載のマイクロコンピュータを備えて構成される。即ち、車両用ＥＣＵにおいては、初期設定処理として行うべきものの範囲はある程度限られていると共に、その処理内容についても、敢えてユーザが独自に設定を行う必然性があるものは少ない。従って、本発明を車両用ＥＣＵに有効に適用することができる。
【００２８】
また、車両用ＥＣＵにはその動作に対して高いレベルの信頼性が要求されるため、初期設定処理を確実に行うことがその信頼性を確保することにつながる。従って、初期設定処理が予め起動用ＲＯＭに書き込まれている初期設定プログラムにより自動的に行われることで、車両用ＥＣＵを使用するユーザに対してある水準の信頼性を保障することができる。
【００２９】
【発明の実施の形態】
（第１実施例）
以下、本発明を、制御対象機器として車両に関する機器を制御するＥＣＵに適用した場合の第１実施例について図１乃至図１４を参照して説明する。なお、図１４と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図２は、本発明のマイコン１１を用いて車両用ＥＣＵたるボデーＥＣＵ１２を構成し、そのボデーＥＣＵ１２を用いて車両用システムを構成した場合の概略を示す機能ブロック図である。
【００３０】
ボデーＥＣＵ１２には、エンジンを制御するエンジンＥＣＵ１３，エアコンを制御するエアコンＥＣＵ１４，車両のドアの開閉検知やロック・アンロックを制御するドアＥＣＵ１５，インストルメントパネルのメータや表示ランプなどを含む各種表示等を制御するパネルＥＣＵ１６などが接続されている。ボデーＥＣＵ１２は、これらのＥＣＵ１３乃至１６より出力される各種の情報が車内ＬＡＮなどの通信プロトコルを介して与えられると、それらの情報に基づき必要に応じてＥＣＵ１３乃至１６に制御指令を出力するようになっている。
【００３１】
図１は、マイクロコンピュータ（マイコン）１１の概略構成を示す機能ブロック図である。マイコン１１は、ＣＰＵ５０を中心として、マイコン１と同様の周辺回路３（Ａ）〜９を備えている。それらに加え、更に、ブートＲＯＭ（起動用ＲＯＭ）１７，クロックジェネレータ（クロック信号出力回路）１８，Ｄ／Ａコンバータ１９，車内ＬＡＮインターフェイス（Ｉ／Ｆ）２０，Ｉ／Ｏポート２１，ＣＲ発振回路２２，イベントタイマ２３、外部割込み入力２４などの周辺回路を備えている。
【００３２】
ブートＲＯＭ１７には、詳細は後述するが、ＣＰＵ５０が起動した時に実行される初期設定プログラムが記憶されている。クロックジェネレータ１８は、外付けの発振子６０を発振させることで与えられる発振信号の周波数を数逓倍して，ＣＰＵ５０などに動作用のクロック信号（マシンクロック）を供給するＤＰＬＬ(Digital Phase Locked Loop)回路で構成されている。
【００３３】
また、クロックジェネレータ１８は、ＣＰＵ５０がレジスタにデータを書き込むことによりクロック信号の出力を停止するスリープ／ストップモード（低消費電力モード）の設定が可能に構成されている。スリープモードは、設定された時間（例えば、１〜２秒程度）が経過すると自動的に解除（ウェイクアップ）され、ＣＰＵ５０に対するクロック信号の供給がされる。また、ストップモードは、ＣＰＵ５０に対する外部割込みが発生するまでの間、停止状態が維持されるモードである。
【００３４】
Ｄ／Ａコンバータ１９は、ＣＰＵ５０が出力するデジタル信号をアナログ信号に変換して外部に出力する。車内ＬＡＮ・Ｉ／Ｆ２０は、上述したように、ボデーＥＣＵ１２が他のＥＣＵ１３乃至１６などと通信を行う場合に使用される。Ｉ／Ｏポート２１は、ＣＰＵ１２が外部との間でデータの入出力を行う場合に使用される。
【００３５】
ＣＲ発振回路２２は、マイコン１１にオンチップで形成されたＣＲ素子を用いてなる発振回路であり、その発振出力（周波数は例えば２５ｋＨｚ）は図示しないＣＲタイマに与えられている。また、ＣＲ発振回路２２の発振出力は、図示しない分周回路を介してＷＤＴ７にも与えられるようになっている。
【００３６】
イベントタイマ２３は、マイコン１１の外部において発生するイベントによってクリアすることが可能に構成されるタイマである。また、外部割込み入力２４は、マイコン１１の外部において発生する割込み信号を受け付けるための回路である。
【００３７】
その他、具体的には図示しないが、マイコン１は、フリーランタイマ、シリアル通信を行うためのＵＡＲＴ(Universal Asynchronous Receiver/Transmitter)や、クロック同期シリアル回路，ＰＷＭ(Pulse Width Modulation)信号を出力するＰＷＭ回路，外部入力の状態の変化に伴う時間変化（例えば、パルス波形のハイ，ロウ区間など）をタイマにより計測するためのインプットキャプチャ，タイマのカウント値がレジスタに書き込んだ値に一致した場合に割り込みを発生させるアウトプットコンペアなども備えている。
尚、ボデーＥＣＵ１２は、以上のように構成されるマイコン１１の周辺に、入出力バッファやリレー，電源回路などを配置することで構成されている。
【００３８】
図３は、マイコン１１のアドレスマップの一例である。OxOOOOO〜Ox0028FFは車内ＬＡＮ・Ｉ／Ｆ２０やＩ／Ｏポート２１などのリソース空間，0x005000〜Ox007FFFはＲＡＭ４の領域、0xB00000〜OxBO1FFFはブートＲＯＭ１７の領域，OxFD0000〜OxFFFFFFはＲＯＭ３に代わるユーザＲＯＭ３Ａの領域となっている。尚、ユーザＲＯＭ３Ａの領域中において、OxFFFBB0〜OxFFFBFFは、ユーザ設定領域２５に割り当てられている。
【００３９】
次に、図４は、ブートＲＯＭ１７に記憶されている初期設定プログラムの内容を示すものである。即ち、製品としてのマイコン１１は、メーカによってブートＲＯＭ１７に予め初期設定プログラムが記憶された状態で出荷されるようになっており、ユーザは、その初期設定プログラムが実行する処理内容を鑑みた上で、マイコン１１を使用するアプリケーションに応じたユーザプログラムをユーザＲＯＭ３Ａに書き込むようにする。
【００４０】
初期設定プログラムは、ＣＰＵ５０のリセットが解除された直後とスリープ／ストップモードが解除されたウェイクアップ直後とに実行され、マイコン１１として動作するに当たり必要な初期設定処理を行うものであるが、夫々のケースについて実行される処理内容は異なっている。また、夫々のケースついて必ず実行される処理と、ユーザがユーザＲＯＭ３Ａのユーザ設定領域において所定の設定を行うことにより選択的に実行される処理とがある。
【００４１】
図４に示すように、リセット解除直後において必ず実行される処理は、
「割込み禁止」，「ゼロレジスタクリア」，「ＳＹＳフラグクリア」，
「リソースアドレスアクセスエラーフラグクリア」
である。以下、これらの処理について簡単に説明する。
【００４２】
▲１▼「割込み禁止」
ＣＰＵ５０が割込みに関する諸設定を行う前に、発生した割込みの受付を禁止する処理である。図５に示すように、ＣＰＵ５０内部のステータスレジスタ３１の第４ビット（ｉフラグ）に「１」を書き込んでセットする。
【００４３】
▲２▼「ゼロレジスタクリア」
ＣＰＵ５０内部の汎用レジスタｒ０をゼロクリアする処理である。レジスタｒ０は、ＣＰＵ５０がリソース（周辺回路）のレジスタ等に対してアクセスを行う場合にアドレッシングモード：「レジスタ間接（１６ビットディスプレースメント）」のポインタとして使用されるため、通常は「０」に設定して用いる。
【００４４】
例えば、図６に示すように、命令
ｍｏｖ．ｌ  ＠（０ｘ０５４０，ｒ０），ｒ１
を実行すると、ｒ０＝０ｘ００００とすることで、アドレス０ｘ０５４０が割り当てられている外部レジスタの値が汎用レジスタｒ１に読み込まれるようになっている。
【００４５】
▲３▼「ＳＹＳフラグクリア」
「ＳＹＳフラグ」とは、リセットやアドレス境界エラー，未定義オペコードエラーなどの発生が反映されるシステムレジスタ３２のフラグである。これらのフラグを予めクリアすることで、エラー等が発生したことを検出する。即ち、図７に示すように、システムレジスタ３２のビット３〜１のフラグＥＯＰ，ＥＡＤ，ＭＯＮに「０」を書き込んでクリアする。
【００４６】
▲４▼「リソースアドレスアクセスエラーフラグクリア」
上記のエラーは、リソースが存在しないアドレス（図３に示すアドレスマップの空白部分）にアクセスしようとした場合に発生するものであり、やはり、フラグを予めクリアすることでエラーの発生を検出する。即ち、図８に示すように、リソースアドレスアクセスレジスタ（内部レジスタ）３３のビット０（エラービットＭＡＣＣＥＲＲ）に「０」を書き込んでクリアする。
【００４７】
尚、アドレス境界エラー，未定義オペコードエラー及びリソースアドレスアクセスエラーが発生すると、ＣＰＵ５０に対してＮＭＩ(Non Maskable Interrupt)割り込みが発生するように構成されている。
【００４８】
ここで、以上の初期設定処理はＣＰＵ５０にユーザプログラムを実行させる場合は事前に必ず行うべき処理であり、ユーザの想定するボデーＥＣＵ１２としてのアプリケーションが具体的に異なる部分があるとしても変わることがないものである。
【００４９】
また、リセット解除直後においてユーザが選択を行った場合に実行される処理は、
「発振安定時間の時間設定」，「ＷＤＴの下限値設定」，
「ＷＤＴの上限値設定」，「ＷＤＴのクロックソース設定」
である。以下、これらの処理について簡単に説明する。
【００５０】
▲１▼「発振安定時間の時間設定」
「発振安定時間」とは、マイコン１１に外付けされ、クロックジェネレータ１８に接続されることで発振される発振子６０が、発振動作を開始した時点から発振動作が安定するまでに処理の実行を待機するための時間である。即ち、リセット状態やスリープ／ストップモードにおいては、クロックジェネレータ１８の動作は停止している。
【００５１】
そして、リセット解除後やスリープ／ストップモードよりウェイクアップした直後にクロックジェネレータ１８も動作を開始しようとするが、それに伴って発振を開始しようとする発振子６０の動作（発振周波数）は暫くの間不安定となる。発振安定時間の計測は、図示しないＣＲ発振回路２２によって出力される周波数を逓倍した４ＭＨｚの発振信号に基づいて行われる。
【００５２】
▲２▼「ＷＤＴの下限値／上限値設定」
ＷＤＴ７は、ＣＰＵ５０が何らかの原因により暴走して、プログラムの無限ループを抜け出せなくなったことを検出するために使用される。この場合、暴走のパターンとしては、ＷＤＴ７のリセット処理を含まない部分をループし続ける場合（図９（ａ）参照）と、ＷＤＴ７のリセット処理を含む部分を極めて短い周期でループし続ける場合（図９（ｂ）参照）との２つがある。従って、これらの暴走パターンに応じてＷＤＴ７の周期に上限値，下限値を夫々設定する。
【００５３】
▲３▼「ＷＤＴのクロックソース設定」
ＷＤＴ７は、上述したようにＣＲ発振回路２２が出力する発振信号を分周したものをクロックソースとしている。ここでは、分周比１／１，１／２，１／４などを選択する。
【００５４】
ここで、ＷＤＴ７につき図１０及び図１１を参照してより詳細に説明する。図１０は、ＷＤＴ７の詳細構成を示す機能ブロック図である。ＷＤＴ７は、クロックソースレジスタ４１，タイマカウンタ４２，下限時間設定レジスタ４３，上限時間設定レジスタ４４，タイマステータスレジスタ４５及びコンパレータ４６などで構成されている。
【００５５】
クロックソースレジスタ４１は、ＣＲ発振回路２２より供給されるクロック信号を上記▲３▼の設定値に応じて分周する回路であり、タイマカウンタ４２は、レジスタ４１より出力される信号をクロックソースとしている。時間設定レジスタ４３，４４は上記▲２▼の下限値(FWDSR)，上限値(FWDER)が夫々設定されるレジスタである。
【００５６】
コンパレータ４６は、タイマカウンタ４２のカウンタ値と時間設定レジスタ４３，４４の設定値とを比較し、下限値(FWDSR)に達する前にカウンタ値がクリアされた場合、若しくは、カウンタ値が上限値(FWDER)一致した場合にＣＰＵ５０に対してリセット要求信号を出力する。タイマステータスレジスタ４５は、ＷＤＴ７によるリセット要求の要因がビットに反映されるレジスタである。
【００５７】
図１１には、ＷＤＴ７の動作をタイミングチャートで示す。ＷＤＴ７は、リセットが解除されるとカウント動作を開始する。ＣＰＵ５０は、ユーザプログラムを正常に実行している場合は、ＷＤＴ７を下限値(FWDSR)と上限値(FWDER)との間の期間においてクリアする（タイマカウンタ４２に「０」を書き込む）ようにプログラミングされる（図１１（Ａ）参照）。
【００５８】
そして、ＣＰＵ５０が暴走し、図９（ｂ）に示したように、ＷＤＴ７のリセット処理を含む部分を極めて短い周期でループし続ける状態になると、図１１（Ｂ）に示すように、ＷＤＴ７を下限値(FWDSR)未満の間隔でクリアすることになりリセット要求が発生する（ＷＤＴアンダーフロー）。
【００５９】
また、図９（ａ）に示したように、ＷＤＴ７のリセット処理を含まない部分でループし続ける状態になると、図１１（Ｃ）に示すようにカウンタ４２が上限値(FWDER)に一致した時点でリセット要求が発生する（ＷＤＴオーバーフロー）。
【００６０】
以上の▲１▼〜▲３▼の処理が初期設定プログラムにおいて実行されるようにユーザが選択するには、ユーザＲＯＭ３Ａにおいて予め定められている設定領域２５に設定値を書き込むことで行われる。尚、これらの処理の実行をユーザが選択しなかった場合は、何れもデフォルトの設定値がセットされるようになっているが、ユーザプログラムにおいて改め設定をやり直しても良いことは勿論である。
【００６１】
また、ＣＰＵ５０は、ウェイクアップ直後においても「割込み禁止処理」を必ず実行し、ＷＤＴ７の下限値，上限値，クロックソース設定についてはユーザが選択した場合に実行するようになっている。尚、ウェイクアップ時にもＷＤＴ７に関する設定を再度行うのは、スリープ／ストップモード中に例えば外来ノイズがマイコン１１に印加されることで設定値がデータ化けを起こすことも想定されることから、動作の確実化を図るためである。
【００６２】
次に、本実施例の作用について図１２及び図１３を参照して説明する。図１２は、マイコン１１のリセットが解除された場合に、ＣＰＵ５０がブートＲＯＭ１７とユーザＲＯＭ３Ａとにアクセスを行って処理を実行する順序を概念的に示すものである。
【００６３】
ＣＰＵ５０のリセットが解除されると、内部のプログラムカウンタはブートＲＯＭ１７内のアドレス0xB014F0にセットされるようになっている（▲１▼）。そして、ＣＰＵ５０は、ブートＲＯＭ１７に記憶されている初期設定プログラムを実行する。
【００６４】
この時、ＣＰＵ５０は、初期設定プログラムの実行中にユーザＲＯＭ３Ａ内のユーザ設定領域にアクセスを行い、当該領域にユーザによって設定が行われたデータが書き込まれているか否かを判断する。そして、設定されたデータが書き込まれている場合は、そのデータに基づいて上述した発振安定時間やＷＤＴ７に関する設定を行う。
【００６５】
ＣＰＵ５０は、初期設定プログラムの実行を終了すると、ユーザＲＯＭ３Ａのアドレス0xFFFFF8（リセットベクタ）に分岐する（▲２▼）。そのリセットベクタにユーザプログラムの先頭アドレスへの分岐命令(jmp MainStart )をセットすることで、ＣＰＵ５０はユーザプログラムの先頭アドレスへ分岐し（▲３▼）、ユーザプログラムの実行が開始される。
【００６６】
図１３は、ブートＲＯＭ１７における起動プログラムの処理内容と、その後にユーザプログラムにおいて行われるスタートアップ、及び初期化モジュールの処理内容の一例を示すフローチャートである。ステップＳ１〜Ｓ５は、前述したブートＲＯＭ１７における初期設定プログラムの処理内容であり、ステップＳ５はユーザの設定に応じて実行される。
【００６７】
続くステップＳ６以降はユーザプログラムの実行に移り、Ｓ６〜Ｓ１１はスタートアップモジュールである。スタートアップモジュールでは、ＣＰＵ５０の汎用レジスタｒ１〜ｒ１４をゼロクリアすると共に、スタックポインタとして使用される汎用レジスタｒ１５を初期化したり、発振子６０の発振動作が異常となった場合にユーザリセットを許可するためレジスタCKINMERに値0x0001をセットしたり、ＲＡＭ４の全領域をクリアしたり、その他初期値をセットすべきデータの初期化などを行う。
【００６８】
ステップＳ１０では、発振安定期間が経過するまで待機する。そしてレジスタCHCKRSTの値が「１」となることで発振安定期間が経過すると（ＹＥＳ）、マシンクロックの周波数を決定するためクロックジェネレータ１８に設定を行う（ステップＳ１１）。
【００６９】
ステップＳ１２〜Ｓ１７は初期化モジュールである（スタートアップ／初期化，の切り分けは、あくまでも便宜的に行った一例である）。このモジュールでは、各ステータスレジスタの状態を参照することでリセットの要因を判定したり、入出力ポート２１や周辺クロックの設定，未使用ブロックの低消費電力設定や割込みコントローラ６，車内ＬＡＮ・Ｉ／Ｆ２０の設定を行う。
以上で全ての初期化処理が完了し、以降は具体的なアプリケーションの実行に関する処理が行われる。また、ＣＰＵ５０のスリープ／ストップモードが解除されウェイクアップした場合も、図１３のフローチャートの内で必要とされる初期設定処理が行われるようになっている。
【００７０】
尚、図１３に示したように、ブートＲＯＭ１７によるステップＳ１〜Ｓ５の初期設定処理はリセット解除の直後に実行されており、ステップＳ１０において発振安定期間が経過する以前の段階で、即ち、発振子６０の発振状態が不安定な期間に実行されるようになっている。
【００７１】
例えば、特許第２５７９４１９号公報，特許第２９３９００３号公報，また、特願平１０−４８４８１号（特開平１０−２７５０８０号公報）などの従来技術においては、何れも、リセット解除後に行なう初期設定処理を、外付けの発振子の発振状態が安定するまで待って行なうようにしていた。そのため、その発振状態が不安定な状態にある期間はマイコン１１の動作が保障されず、誤動作が発生するおそれがあった。
それに対して、図１４に示すように、リセット解除またはウェイクアップの直後において、初期設定処理を発振子６０の発振状態が不安定な期間に実行することで、誤動作が発生する可能性は極力小さくなる。
【００７２】
また、その場合の初期設定処理は、リセット解除またはウェイクアップの直後に実行されるようになっている。即ち、発振子６０の発振状態が安定するまでの時間（安定時間）は個別の製品によってばらつきがあるが、リセット解除またはウェイクアップの直後に初期設定処理を実行すれば、発振子６０の安定時間が個別に異なるとしても、確実に、発振状態が不安定な状態にある期間に実行されるようになる。
【００７３】
以上のように本実施例によれば、マイコン１１のＣＰＵ５０は、リセットが解除されると、ユーザＲＯＭ３Ａに記憶されているユーザプログラムを実行する前にブートＲＯＭ１７にアクセスし、ブートＲＯＭ１７に記憶されている初期設定プログラムを実行することで、ユーザプログラムを実行するために必要な初期設定処理を行うようにした。
【００７４】
従って、ユーザは、ユーザプログラム中に初期設定処理に対応する部分を記述する必要がなくなるので、プログラムの作成工程を簡単にすることができる。そして、初期設定において必要な処理はユーザが関与することなく確実に実行されるので、信頼性を向上させることができる。また、初期設定処理に関する部分についてはデバッグを行う必要もなくなるため、プログラム作成後の開発工程も短縮することが可能となる。
【００７５】
また、初期設定処理において、ＣＰＵ５０に設定させるデータをユーザが設定可能に構成した。具体的には、ブートＲＯＭ１７に記憶されている初期設定プログラムがＣＰＵ５０によって実行されると、その実行中にユーザＲＯＭ３Ａの設定領域２５が読み出され、当該設定領域２５に書き込まれているデータをＣＰＵ５０が設定するので、ユーザが、ユーザＲＯＭ３Ａに予め割り当てられている設定領域２５に設定を所望するデータを書き込んでおけば、そのデータによって必要な初期設定が行われるようになる。
【００７６】
また、ユーザＲＯＭ３Ａの設定領域２５をＣＰＵ５０が読み出した場合に、当該領域２５にユーザによって設定されたデータが書き込まれていると判断すると、対応する初期設定処理をＣＰＵ５０が実行するので、ユーザは、設定領域２５にデータを書き込むことで対応する初期設定処理を選択的に実行させることができる。
【００７７】
更に、ＣＰＵ５０は、スリープ／ストップなどの低消費電力モードが解除された場合もブートＲＯＭ１７にアクセスを行い、初期設定処理のうち動作を再開するために必要な処理を行うので、低消費電力モードが設定可能に構成されるマイコン１１についても対応することができる。
【００７８】
そして、初期設定処理としては、具体的には、ＣＰＵ５０に対する割込み禁止処理や内部レジスタの初期化処理などを行うようにした。即ち、これらの処理は、ユーザのアプリケーションが異なるとしてもリセットが解除された場合には必ず実行する必要がある処理であるから、これらの処理をブートＲＯＭ１７に予め記憶された初期設定プログラムで実行すれば、ユーザのプログラミング負担を確実に削減することができる。
【００７９】
また、初期設定処理においてＷＤＴ７の周期とクロックソースとを設定する処理を行うので、ＣＰＵ５０の動作状態を監視するためにＷＤＴ７を使用する場合に行う必要がある処理について、ユーザのプログラミング負担を確実に削減することができる。
【００８０】
更に、初期設定処理において、発振子６０の発振安定時間を設定する処理を行うので、発振子６０の発振動作が停止している状態から発振を開始し、その発振動作が安定するまでに待機する時間を自動的に設定させることができる。そして、ＣＰＵ５０にその発振安定時間が経過するまで必要な処理の実行を待機させることで、前記クロック信号に基づいて動作する回路を用いて行う処理を精確に実行することができる。
【００８１】
加えて、マイコン１１を用いて、車両に関連する機器を制御対象とするボデーＥＣＵ１２を構成した。即ち、車両用のＥＣＵ１２においては、初期設定処理として行うべきものの範囲はある程度限られていると共に、その処理内容についても、敢えてユーザが独自に設定を行う必然性があるものは少ない。従って、本発明をボデーＥＣＵ１２に有効に適用することができる。
【００８２】
また、ボデーＥＣＵ１２にはその動作に対して高いレベルの信頼性が要求されるため、初期設定処理を確実に行うことがその信頼性を確保することにつながる。従って、初期設定処理が予めブートＲＯＭ１７に書き込まれている初期設定プログラムにより自動的に行われることで、ボデーＥＣＵを１２使用するユーザに対してある水準の信頼性を保障することができる。
【００８３】
更に、リセット解除後、またはウェイクアップ後において、初期設定処理を、ＣＰＵ５０に対して供給する動作用クロック信号を生成するため、マイコン１１に外付けされる発振子６０の発振状態が不安定な状態にある期間に実行するようにしたので、その期間に誤動作が発生する可能性を極力小さくすることができ、信頼性を更に向上させることができる。そして、その場合に、初期設定処理を、リセット解除またはウェイクアップの直後に実行するようにした。即ち、発振子６０の発振状態が安定するまでの時間（安定時間）が個別の製品によってばらつきがあるとしても、初期設定処理を、確実に、その発振状態が不安定な状態にある期間に実行することができる。
【００８４】
（第２実施例）
図１５は、本発明の第２実施例を示すものであり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図１５は、マイコン１１を、ユーザプログラムの設定により、通常モード中においてスリープモードを定期的に実行するようにした場合を示す。即ち、通常モードは間欠的に実行される。
【００８５】
斯様にユーザプログラムを設定することで、初期設定処理もスリープモードからウェイクアップする毎に実行されるようになる。即ち、マイコン１１が、外乱ノイズの影響を受けやすい環境で動作している場合は、ノイズの影響によって出力端子のレベルが変化したり、プログラムが暴走してデータや内部レジスタの値が書き換えられたりすることが考えられる。しかし、そのような環境化においても、マイコン１１が定期的に初期設定処理を行うことで、その影響を極力排除することが可能となる。
【００８６】
以上のように第２実施例によれば、マイコン１１は、スリープモードを所定周期で繰り返し実行するので、それに応じて初期設定処理も繰り返し実行されるようになり、ノイズの影響を受けやすい動作環境にある場合でも信頼性を向上させることができる。
【００８７】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、次のような変形または拡張が可能である。
初期設定プログラムにおいて、その他、汎用レジスタｒ１〜ｒ１４などの初期設定や、ＲＡＭ４の初期化などを行っても良い。
ユーザの設定に応じて実行される初期設定処理は、その他、例えばマイコン１１の外部に設けたディップスイッチに設定を行うことで実行を選択するようにしても良い。
ユーザの設定に応じて実行される初期設定処理を、全て必ず行う処理としても良い。また、ユーザにより設定されたデータに基づいて初期設定を行う構成は必要に応じて行えば良く、全てデフォルトのデータによって設定を行っても良い。
【００８８】
ＷＤＴ７の周期設定は、要求される信頼性のレベルによっては上限値だけを設定するようにしても良い。
また、ＷＤＴ７のクロックソースを設定する処理は、クロックソースを選択可能な構成である場合に行えば良い。
低消費電力モードは、スリープ，ストップの何れか一方のみを行うようにしても良い。
低消費電力モードを実行しないマイクロコンピュータに適用しても良い。
ユーザＲＯＭは、マスクＲＯＭ，フラッシュＲＯＭの何れであっても良い。  車両用ＥＣＵはボデーＥＣＵに限ることなく、その他エンジンＥＣＵなどに適用しても良い。更に、車両用ＥＣＵに限ることなく、制御対象機器に組み込まれた状態で動作するいわゆる組込み型のマイクロコンピュータであれば適用が可能である。
【図面の簡単な説明】
【図１】  本発明を、制御対象機器として車両に関する機器を制御するＥＣＵに適用した場合の第１実施例であり、マイクロコンピュータの概略的な電気的構成を示す機能ブロック図
【図２】  ボデーＥＣＵを用いて車両用システムを構成した場合の概略を示す機能ブロック図
【図３】  マイクロコンピュータのアドレスマップの一例を示す図
【図４】  ブートＲＯＭに記憶されている初期設定プログラムの内容を示す図
【図５】  ＣＰＵ内部のステータスレジスタのビット構成を示す図
【図６】  ＣＰＵ内部の汎用レジスタｒ０をポインタとして用い、アドレッシングモード：レジスタ間接を実行する場合の状態を概念的に示す図
【図７】  システムレジスタのビット構成を示す図
【図８】  リソースアドレスアクセスレジスタのビット構成を示す図
【図９】  ＣＰＵが暴走した場合の一例であり、（ａ）はＷＤＴがリセットされないプログラムループ、（ｂ）はＷＤＴがリセットされ続けるプログラムループを示す図
【図１０】  ＷＤＴの詳細構成を示す機能ブロック図
【図１１】  ＷＤＴのカウント動作及びクリア動作の一例を示すタイミングチャート
【図１２】  マイクロコンピュータのリセットが解除された場合に、ＣＰＵがブートＲＯＭとユーザＲＯＭとにアクセスを行って処理を実行する順序を概念的に示す図
【図１３】  ブートＲＯＭにおける起動プログラムの処理内容と、その後にユーザプログラムにおいて行われるスタートアップ及び初期化モジュールの処理内容の一例を示すフローチャート
【図１４】  リセット若しくはスリープ／ストップモードの解除時において初期設定処理が実行されるタイミングを示すタイミングチャート
【図１５】  本発明の第２実施例を示すもので、スリープモード並びに初期設定処理が定期的に実行される状態を示すタイミングチャート
【図１６】  従来技術を示す図１相当図
【符号の説明】
３ＡはユーザＲＯＭ、７はウォッチドッグタイマ、１１はマイクロコンピュータ、１２はボデーＥＣＵ（車両用ＥＣＵ）、１７はブートＲＯＭ（起動用ＲＯＭ）、１８はクロックジェネレータ（クロック信号出力回路）、２５はユーザ設定領域、３１はステータスレジスタ（内部レジスタ）、３２はシステムレジスタ（内部レジスタ）、３３はリソースアドレスアクセスレジスタ（内部レジスタ）、５０はＣＰＵ、６０は発振子を示す。
【図１】
0003988636.tif 000002
【図２】
0003988636.tif 000003
【図３】
0003988636.tif 000004
【図４】
0003988636.tif 000005
【図５】
0003988636.tif 000006
【図６】
0003988636.tif 000007
【図７】
0003988636.tif 000008
【図８】
0003988636.tif 000009
【図９】
0003988636.tif 000010
【図１０】
0003988636.tif 000011
【図１１】
0003988636.tif 000012
【図１２】
0003988636.tif 000013
【図１３】
0003988636.tif 000014
【図１４】
0003988636.tif 000015
【図１５】
0003988636.tif 000016
【図１６】
0003988636.tif 000017