(57)【要約】【課題】リセットに伴う不揮発性メモリの誤書き込みおよび誤消去を防止する。【解決手段】第１エリアおよび当該第１エリア以外の第２エリアを有する不揮発性メモリと、不揮発性メモリのアドレスデータを保持するアドレスデータ保持部と、不揮発性メモリを書き込み状態または消去状態とするための制御データを保持する制御データ保持部と、を有するマイクロコンピュータであって、揮発性メモリの第１エリアを指定するための指示信号と、リセット信号とに基づいて、アドレスデータ保持部に対して、不揮発性メモリの第１エリア内の所定アドレスデータをセットするアドレス生成部と、アドレスデータ保持部の値が不揮発性メモリの第１エリアの所定アドレスデータであるか否かを判別し、アドレスデータ保持部の値が所定アドレスデータであるものと判別したときの判別結果に基づいて、制御データ保持部の制御データを無効とする判別部と、を備えた。【選択図】    図１
2006133982.tif 000002
【特許請求の範囲】
【請求項１】
第１エリアおよび当該第１エリア以外の第２エリアを有し、データの書き込み、読み出し、電気消去が可能である不揮発性メモリと、前記不揮発性メモリの第１エリアまたは第２エリアを指定するためのアドレスデータを保持するアドレスデータ保持部と、前記不揮発性メモリを書き込み状態または消去状態とするための制御データを保持する制御データ保持部と、を有するマイクロコンピュータであって、
前記不揮発性メモリの第１エリアを指定するための指示信号と、リセット信号とに基づいて、前記アドレスデータ保持部に対して、前記不揮発性メモリの第１エリア内の所定アドレスデータをセットするアドレス生成部と、
前記アドレスデータ保持部の値が前記不揮発性メモリの第１エリアの所定アドレスデータであるか否かを判別し、前記アドレスデータ保持部の値が前記所定アドレスデータであるものと判別したときの判別結果に基づいて、前記制御データ保持部の制御データを無効とする判別部と、
を備えたことを特徴とするマイクロコンピュータ。
【請求項２】
前記アドレス生成部は、
前記不揮発性メモリの第１エリアを指定していない前記指示信号と、前記リセット信号とに基づいて、前記アドレスデータ保持部に対して、前記不揮発性メモリの第２エリア内の所定アドレスデータをセットする、ことを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記不揮発性メモリの第２エリア内の所定アドレスデータは、マイクロコンピュータを初期化するためのプログラムデータが格納されたアドレスを示す値である、ことを特徴とする請求項２に記載のマイクロコンピュータ。
【請求項４】
前記指示信号を前記アドレス生成部に供給するための外部端子を有する、ことを特徴とする請求項１乃至３の何れかに記載のマイクロコンピュータ。
【請求項５】
前記不揮発性メモリの第１エリアは、前記不揮発性メモリの第２エリアのデータを書き換えるためのプログラムデータが格納される、ことを特徴とする請求項１乃至４の何れかに記載のマイクロコンピュータ。
【請求項６】
前記不揮発性メモリの第１エリアを指定するための指示信号は、前記不揮発性メモリの第１エリアに格納されたプログラムデータに基づいて前記不揮発性メモリの第２エリアのデータを書き換える場合に設定される、ことを特徴とする請求項５に記載のマイクロコンピュータ。
【請求項７】
前記不揮発性メモリの第１エリアを指定するための指示信号は、前記不揮発性メモリの第１エリアに格納されたプログラムデータに基づいて前記不揮発性メモリの第２エリアのデータを書き換える場合に一方の論理値となる１ビットデータである、ことを特徴とする請求項６に記載のマイクロコンピュータ。
【請求項８】
前記アドレス生成部は、
前記不揮発性メモリの第１エリアを指定するための指示信号と、リセット信号とに基づいて、前記アドレスデータ保持部に対して、前記不揮発性メモリの第１エリア内の先頭アドレスデータをセットする、ことを特徴とする請求項５乃至７の何れかに記載のマイクロコンピュータ。
【請求項９】
前記判別部は、
前記アドレスデータ保持部の値が前記不揮発性メモリの第１エリアの所定アドレスデータであるときに一致信号を出力するアドレスデータ解読部と、
前記一致信号に基づいて、前記制御データ保持部の制御データを無効とする論理回路と、
を有することを特徴とする請求項１乃至８の何れかに記載のマイクロコンピュータ。
【請求項１０】
第１エリアおよび当該第１エリア以外の第２エリアを有し、データの書き込み、読み出し、電気消去が可能である不揮発性メモリと、前記不揮発性メモリの第１エリアまたは第２エリアを指定するためのアドレスデータを保持するアドレスデータ保持部と、前記不揮発性メモリを書き込み状態または消去状態とするための制御データを保持する制御データ保持部と、を有するマイクロコンピュータにおける不揮発性メモリのデータ保護方法であって、
前記不揮発性メモリの第１エリアを指定するための指示信号と、リセット信号とに基づいて、前記アドレスデータ保持部に対して、前記不揮発性メモリの第１エリア内の所定アドレスデータをセットし、
前記アドレスデータ保持部の値が前記不揮発性メモリの第１エリアの所定アドレスデータであるか否かを判別し、
前記アドレスデータ保持部の値が前記所定アドレスデータであるものと判別した場合、前記制御データ保持部の制御データを無効とする、
ことを特徴とするマイクロコンピュータにおける不揮発性メモリのデータ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータと、マイクロコンピュータにおける不揮発性メモリ（例えばフラッシュメモリ）のデータ保護方法に関する。
【背景技術】
【０００２】
マイクロコンピュータには、論理演算を実行するためのプログラムやデータを格納するための不揮発性メモリが接続あるいは内蔵されている。不揮発性メモリには、プログラムやデータを書き換えることが出来ない読み出し専用のマスクＲＯＭや、書き込み、消去が可能なＥＰＲＯＭやＥＥＰＲＯＭがある。また、ＥＥＰＲＯＭの一種として、ブロック単位で消去をしてから書き込みを行うフラッシュメモリが知られている。最近のマイクロコンピュータでは、上述のプログラムやデータを格納する不揮発性メモリとして、このフラッシュメモリが内蔵される傾向が高い。また、不揮発性メモリに書き込み、消去、および読み出しを実行するモードとして、当該不揮発性メモリの内部に格納されたプログラムデータを使用するＣＰＵモードと、マイクロコンピュータの外部装置であるＬＳＩテスタやプログラムライタ等を使用するテストモードとがある。
【０００３】
従来、不揮発性メモリを内蔵したマイクロコンピュータには、ＣＰＵモードでプログラムを実行するために、不揮発性メモリのアドレスを指定するアドレスラッチ、書き込みデータを指定するデータラッチ、書き込みや消去の動作モードを指定するコントロールレジスタ等が備えられている。
【０００４】
図５を参照しつつ、不揮発性メモリを内蔵した従来のマイクロコンピュータについて説明する。図５は、従来のマイクロコンピュータの概要を示すブロック図である。  
マイクロコンピュータ１００は、フラッシュメモリ１０２（不揮発性メモリ）、アドレスラッチ１０４、データラッチ１０６、コントロールレジスタ１０８、システムバス１１０等を有する。
【０００５】
フラッシュメモリ１０２は、データの書き込み、読み出し、電気消去が可能で、かつ電源を切っても格納されたデータが保持される不揮発性メモリであり、マイクロコンピュータ１００における種々の演算処理を実行するためのプログラムデータ、当該演算処理を実行する際に参照するテーブルデータ等が予め格納されている。
【０００６】
アドレスラッチ１０４は、フラッシュメモリ１０２のアドレスを指定するためのものである。アドレスラッチ１０４は、リセット信号ＲＥＳＥＴ（例えばローレベル）でリセットされた後、フラッシュメモリ１０２の指定アドレスを示すアドレスデータがシステムバス１１０を介してセットされる。また、アドレスラッチ１０４は、クロックＣＬＫの変化に同期してアドレスデータが変更される。これにより、フラッシュメモリ１０２は、アドレスラッチ１０４のアドレスデータにて指定アドレスをアクセスされ、この指定アドレスにおけるデータの書き込みまたは読み出しが可能となる。尚、アドレスラッチ１０４は、最初のアドレスデータがセットされた後、このアドレスデータをクロックＣＬＫに同期してインクリメントするプログラムカウンタであってもよい。一方、アドレスラッチ１０４は、フラッシュメモリ１０２から読み出されたプログラムデータの解読結果に従って、次の指定アドレスを示すアドレスデータがシステムバス１１０を介してセットされるものでもよい。
【０００７】
データラッチ１０６は、フラッシュメモリ１０２の指定アドレスにデータを書き込むためのものである。データラッチ１０６は、リセット信号ＲＥＳＥＴでリセットされた後、フラッシュメモリ１０２の指定アドレスへの書き込みデータがシステムバス１１０を介してセットされる。また、データラッチ１０６は、クロックＣＬＫの変化に同期して、アドレスデータの変更に伴って書き込みデータが変更される。これにより、フラッシュメモリ１０２は、指定アドレスに書き込みデータが格納されることとなる。
【０００８】
コントロールレジスタ１０８は、フラッシュメモリ１０２の動作モードを設定するためのものである。コントロールレジスタ１０８は、リセット信号ＲＥＳＥＴでリセットされた後、必要に応じて、フラッシュメモリ１０２を書き込みモードに設定する２ビットデータ（例えば論理値“０１”）またはフラッシュメモリ１０２を消去モードに設定する２ビットデータ（例えば論理値“１０”）がデータバス１１０を介してセットされる。尚、コントロールレジスタ１０８は、リセット信号ＲＥＳＥＴでリセットされた後に何もセットされない場合、フラッシュメモリ１０２を読み出しモードに設定する２ビットデータ（論理値“００”）がセットされたことと等価となる。また、コントロールレジスタ１０８は、クロックＣＬＫの変化に同期して、２ビットデータがセットされる。これにより、フラッシュメモリ１０２は、読み出しモード、書き込みモード、消去モードの何れかに設定されることとなる。
【０００９】
システムバス１１０は、アドレスデータ、書き込みデータ、２ビットデータを転送するものである。尚、データバス１１０は、アドレスデータ用のデータ線、書き込みデータ用のデータ線、２ビットデータ用のデータ線を各々独立して設けたものでもよい。一方、データバス１１０は、アドレスデータ用のデータ線、書き込みデータ用のデータ線、２ビットデータ用のデータ線を兼用して設けたものでもよい。
【００１０】
以上の構成によって、マイクロコンピュータ１００は、フラッシュメモリ１０２から読み出されたプログラムデータの解読結果に従って、種々の論理演算を実行することとなる。
【特許文献１】特開２００３−１３１９５１
【発明の開示】
【発明が解決しようとする課題】
【００１１】
コントロールレジスタ１０８は、マイクロコンピュータ１００内部のプログラム処理に従って２ビットデータが選択的にセットされるものである。しかし電源投入時、マイクロコンピュータ１００内部のシステム動作は不安定であるため、マイクロコンピュータ１００はコントロールレジスタ１０８にセットすべき２ビットデータを特定することが困難である。つまり、マイクロコンピュータ１００はリセット信号ＲＥＳＥＴによってリセットを実行するが、このリセット後に、仮にプログラムが暴走すると、本来“００”となるはずのコントロールレジスタ１０８の２ビットデータが、“０１”（書き込みモード）または“１０”（消去モード）となる可能性がある。その場合、フラッシュメモリ１０２のアドレスラッチ１０４の指定アドレスに、誤ってデータラッチ１０６のデータが書き込まれる、または書き込まれていたデータが消去される恐れがある。
【００１２】
また、マイクロコンピュータ１００内のプログラム処理に従ってフラッシュメモリ１０２のデータを書き換え、または消去しているとき、本来発生すべきではないシステムリセット信号や、システムが暴走することを検出することによるウオッチドックタイマリセット（ＷＳＴリセット）信号等が発生する場合がある。これらのリセット信号によって、アドレスラッチ１０４、データラッチ１０６、コントロールレジスタ１０８は全てリセットされることになる。ところが、コントロールレジスタ１０８のリセットのタイミングが遅れると、フラッシュメモリ１０２のアドレス（例えば“００００”）に、データ（例えば“００”）を書き込む（２ビットデータ“０１”）、またはデータを消去する（２ビットデータ“１０”）という誤動作が発生することになる。
【００１３】
フラッシュメモリ１０２には、マイクロコンピュータ１００のプログラムや演算処理に必要なデータなど重要なデータが格納されているので、これらのデータが一度書き換わってしまうと、マイクロコンピュータ１００が正常な動作を行えなくなる場合がある。
【００１４】
さらに、フラッシュメモリ１０２に当該フラッシュメモリ１０２を書き換えるためのプログラムが格納されている場合、このプログラムに誤書き込みまたは誤消去が行われると、再度プログラムの書き換えをすることもできなくなってしまう。
【００１５】
このように、従来のマイクロコンピュータ１００ではＣＰＵモードで動作している最中にリセットが行われた場合、フラッシュメモリ１０２の誤書き込みや誤消去をする恐れがあるという問題点があった。
【００１６】
そこで、本発明は、リセットに伴う不揮発性メモリの誤書き込みおよび誤消去を行うことを防止するマイクロコンピュータおよびマイクロコンピュータにおける不揮発性メモリのデータ保護方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
前記課題を解決するための主たる発明は、第１エリアおよび当該第１エリア以外の第２エリアを有し、データの書き込み、読み出し、電気消去が可能である不揮発性メモリと、前記不揮発性メモリの第１エリアまたは第２エリアを指定するためのアドレスデータを保持するアドレスデータ保持部と、前記不揮発性メモリを書き込み状態または消去状態とするための制御データを保持する制御データ保持部と、を有するマイクロコンピュータであって、前記不揮発性メモリの第１エリアを指定するための指示信号と、リセット信号とに基づいて、前記アドレスデータ保持部に対して、前記不揮発性メモリの第１エリア内の所定アドレスデータをセットするアドレス生成部と、前記アドレスデータ保持部の値が前記不揮発性メモリの第１エリアの所定アドレスデータであるか否かを判別し、前記アドレスデータ保持部の値が前記所定アドレスデータであるものと判別したときの判別結果に基づいて、前記制御データ保持部の制御データを無効とする判別部と、を備えたことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、リセットに伴う不揮発性メモリの誤書き込みおよび誤消去することを防止することができる。
【発明を実施するための最良の形態】
【００１９】
本明細書および添付図面の記載により、少なくとも以下の事項が明らかとなる。
【００２０】
＝＝＝マイクロコンピュータの構成＝＝＝
図１を参照しつつ、本発明にかかるマイクロコンピュータについて説明する。図１は、本発明にかかるマイクロコンピュータの概要を示すブロック図である。
【００２１】
マイクロコンピュータ２００は、フラッシュメモリ２０２（『不揮発性メモリ』）、アドレスラッチ２０４（『アドレスデータ保持部』）、データラッチ２０６、コントロールレジスタ２０８（『制御データ保持部』）、システムバス２１０、アドレス生成回路２１２（『アドレス生成部』）、切替回路２１４、２１６、２１８、アドレス判定回路２２０（『アドレスデータ解読部』）、ＡＮＤゲート２２２（『論理回路』）、モード制御回路２２４、ＢＯＯＴ端子（『外部端子』）、ＴＥＳＴ端子、ＭＯＤＥ端子、アドレス端子ＡＤ（以下、ＡＤ端子とする）、データ端子ＤＥ（以下、ＤＥ端子とする）、ＥＲＡＳＥ,ＰＲＯＧ端子ＥＰ（以下、ＥＰ端子とする）等を有する。
【００２２】
フラッシュメモリ２０２は、データの書き込み、読み出し、電気消去が可能で、かつ電源を切っても格納されたデータが保持される不揮発性メモリであり、マイクロコンピュータ１００における種々の演算処理を実行するためのプログラムデータ、当該演算処理を実行する際に参照するテーブルデータ等が予め格納されている。尚、フラッシュメモリ２０２は、フラッシュメモリ２０２の領域２０２ｂ（『第２エリア』）を書き換えるためのプログラム等が格納されたＢＯＯＴプログラム格納領域（以下ＢＯＯＴ領域とする）２０２ａ（『第１エリア』）を有している。また、ＢＯＯＴ領域２０２ａには、領域２０２ａから領域２０２ｂにジャンプするためのプログラムが格納されている。尚、ＢＯＯＴ領域２０２ａは、後述するように、テストモード以外で書き込みおよび消去出来ないように保護されている。
【００２３】
ＢＯＯＴ領域２０２ａは、フラッシュメモリ２０２の任意の場所に設けることが可能であるが、実使用に影響の少ないフラッシュメモリ２０２のアドレスの最後部に設けることが望ましい。尚、領域２０２ｂは、フラッシュメモリ２０２におけるＢＯＯＴ領域２０２ａ以外の領域であり、後述するＢＯＯＴモードが実行されるとＢＯＯＴ領域２０２ａに格納されたプログラムに基づいて演算処理を実行する。
【００２４】
アドレスラッチ２０４は、フラッシュメモリ２０２のアドレスを指定するためのものである。アドレスラッチ２０４は、リセット信号ＲＥＳＥＴ（例えばローレベル）でリセットされた後、アドレス生成回路２１２によってＢＯＯＴ領域２０２ａまたは領域２０２ｂの指定アドレスを示すアドレスデータがセットされる。また、アドレスラッチ２０４は、クロックＣＬＫの変化に同期してアドレスデータが変更される。これにより、フラッシュメモリ２０２は、アドレスラッチ２０４のアドレスデータにて指定アドレスをアクセスされる。尚、アドレスラッチ２０４は、最初のアドレスデータがセットされた後、このアドレスデータをクロックＣＬＫに同期してインクリメントするプログラムカウンタであってもよい。一方、アドレスラッチ２０４は、フラッシュメモリ２０２から読み出されたプログラムデータの解読結果に従って、次の指定アドレスを示すアドレスデータがシステムバス２１０を介してセットされるものでもよい。
【００２５】
データラッチ２０６は、フラッシュメモリ２０２の指定アドレスにデータを書き込むためのものである。データラッチ２０６は、リセット信号ＲＥＳＥＴでリセットされた後、フラッシュメモリ２０２の指定アドレスへの書き込みデータがシステムバス２１０を介してセットされる。また、データラッチ２０６は、クロックＣＬＫの変化に同期して、アドレスデータの変更に伴って書き込みデータが変更される。これにより、フラッシュメモリ２０２は、指定アドレスに書き込みデータが格納されることとなる。
【００２６】
コントロールレジスタ２０８は、フラッシュメモリ２０２の動作モードを設定するためのものである。コントロールレジスタ２０８は、リセット信号ＲＥＳＥＴでリセットされた後、必要に応じて、フラッシュメモリ２０２を書き込みモードに設定する２ビットデータ（例えば論理値“０１”）またはフラッシュメモリ２０２を消去モードに設定する２ビットデータ（例えば論理値“１０”）がデータバス２１０を介してセットされる。尚、コントロールレジスタ２０８は、リセット信号ＲＥＳＥＴでリセットされた後に何もセットされない場合、フラッシュメモリ２０２を読み出しモードに設定する２ビットデータ（論理値“００”）がセットされたことと等価となる。また、コントロールレジスタ２０８は、クロックＣＬＫの変化に同期して、２ビットデータがセットされる。尚、このコントロールレジスタ２０８にセットされる２ビットデータは、フラッシュメモリ２０２のプログラムによって設定されるものである。これにより、フラッシュメモリ２０２は、読み出しモード、書き込みモード、消去モードの何れかに設定されることとなる。
【００２７】
システムバス２１０は、アドレスデータ、書き込みデータ、２ビットデータを転送するものである。尚、データバス２１０は、アドレスデータ用のデータ線、書き込みデータ用のデータ線、２ビットデータ用のデータ線を各々独立して設けたものでもよい。一方、データバス２１０は、アドレスデータ用のデータ線、書き込みデータ用のデータ線、２ビットデータ用のデータ線を兼用して設けたものでもよい。
【００２８】
アドレス生成回路２１２は、ＢＯＯＴ端子が「ＨＩＧＨ」レベル（以下、「Ｈ」とする）の時にリセット信号ＲＥＳＥＴでリセットされた場合にはＢＯＯＴ領域２０２ａの所定アドレス（例えば先頭アドレス“９Ｃ００”）をアドレスラッチ２０４にセットする。また、ＢＯＯＴ端子が「ＬＯＷ」レベル（以下、「Ｌ」とする）の時にリセット信号ＲＥＳＥＴでリセットされた場合には領域２０２ｂの所定アドレス（例えば先頭アドレス“００００”）をアドレスラッチ２０４にセットする。
【００２９】
切替回路２１４は、モード制御回路２２４の出力がテストモードを示すとき（例えば「Ｈ」）ＡＤ端子側の信号を出力し、またモード制御回路２２４の出力がテストモード以外を示すとき（例えば「Ｌ」）アドレス生成回路２１２側の信号を出力するように切り替えを行う。
【００３０】
切替回路２１６は、モード制御回路２２４の出力がテストモードを示すとき（例えば「Ｈ」）ＤＥ端子側の信号を出力し、またモード制御回路２２４の出力がテストモード以外（例えば「Ｌ」）を示すときデータラッチ２０６側の信号を出力するように切り替えを行う。
【００３１】
切替回路２１８は、モード制御回路２２４の出力がテストモードを示すとき（例えば「Ｈ」）ＥＰ端子側の信号を出力し、またモード制御回路２２４の出力がテストモード以外を示すとき（例えば「Ｌ」）コントロールレジスタ２０８側の信号を出力するように切り替えを行う。
【００３２】
アドレス判定回路２２０は、アドレスラッチ２０４にセットされたアドレスがＢＯＯＴ領域２０２ａ内のアドレスで有るか否かを判定する。そして、アドレス判定回路２２０は、アドレスラッチ２０４にセットされたアドレスがＢＯＯＴ領域２０２ａ内のアドレスであると判定した場合には「Ｈ」（『一致信号』）を出力し、ＢＯＯＴ領域２０２ａ内のアドレスでないと判定した場合には「Ｌ」を出力する。
【００３３】
ＡＮＤゲート２２２は、アドレス判定回路２２０の出力の反転と、コントロールレジスタ２０８の出力との論理積を切替回路２１８に出力する。すなわち、ＡＮＤゲート２２２はアドレス判定回路２２０の出力が「Ｈ」のとき、コントロールレジスタ２０８の出力を無効とし、アドレス判定回路２２０の出力が「Ｌ」のとき、コントロールレジスタ２０８の出力を通過させる。
【００３４】
モード制御回路２２４は、ＴＥＳＴ端子のレベルに基づいて、切替回路２１４、２１６、２１８を切り替えるための信号を出力するものである。例えば、モード制御回路２２４は、ＴＥＳＴ端子が「Ｈ」の場合には「Ｈ」を出力し、ＴＥＳＴ端子が「Ｌ」の場合には「Ｌ」を出力する。
【００３５】
ＴＥＳＴ端子は、テストモードを実行することを示す端子であり、テストモードを実行する場合に「Ｈ」に設定され、テストモード以外を実行する場合に「Ｌ」に設定される。
【００３６】
ＭＯＤＥ端子は、テストモード時に使用される端子であり、テストモードのテストする機能の数に応じて設けられている。
【００３７】
ＢＯＯＴ端子は、ＣＰＵモードのうちのＢＯＯＴモードを設定するための端子である。尚、ＣＰＵモードとは、リセット信号ＲＥＳＥＴ（例えばローレベル）でリセットされた後、アドレス生成回路２１２によって領域２０２ｂの指定アドレスが指定されるモードであり、ＢＯＯＴモードとは、リセット信号ＲＥＳＥＴ（例えばローレベル）でリセットされた後、アドレス生成回路２１２によって領域２０２aの指定アドレスが指定されるモードである。また、ＬＳＩテスタやプログラムライタを用いてフラッシュメモリ２０２の書き込み、読み出し、消去を行うテストモードの時にはＢＯＯＴ端子は無効になる。
【００３８】
ＡＤ端子、ＤＥ端子、ＥＰ端子は、テストモード時にそれぞれアドレスデータ、書き込みデータ、２ビットデータを、ＬＳＩテスタやプログラムライタ等から入力するための端子である。
【００３９】
尚、アドレス判定回路２２０とＡＮＤゲート２２２は判別部を構成する。また図１中のｌ、ｍ、ｎ、２はそれぞれビット数を示しており、ｌ、ｍ、ｎは任意の数値である。
【００４０】
以上の構成によって、マイクロコンピュータ２００は、ＢＯＯＴ端子のレベルとＴＥＳＴ端子のレベルに応じて、ＣＰＵモード、ＢＯＯＴモード、テストモードの何れかを実行する。
【００４１】
＝＝＝マイクロコンピュータの動作＝＝＝
図２、図３、図４を使用して本発明のマイクロコンピュータの動作を説明する。
【００４２】
尚、図２はＴＥＳＴ端子とＢＯＯＴ端子の関係を示す図である。図３は、アドレス判定回路の出力とＡＮＤゲート２２２の出力の関係を示す図である。図４は、テストモード信号と切替回路２１８の関係を示す図である。
【００４３】
≪ＴＥＳＴ端子が「Ｈ」の場合≫
図２に示すようにＴＥＳＴ端子が「Ｈ」の場合はＢＯＯＴ端子の「Ｈ」、「Ｌ」に関係なくテストモードとなる。すなわち、モード制御回路２２４の出力が「Ｈ」となり切替回路２１４、２１６、２１８は、それぞれＡＤ端子、ＤＥ端子、ＥＰ端子側に切り替えられる。そして、これらの端子を介して入力されるＬＳＩテスタやプログラムライタ等からの信号に基づいて、ＢＯＯＴ領域２０２ａ、および領域２０２ｂを含めたフラッシュメモリ２０２の、書き込み、読み出し、消去が行われる。  
よって、この場合マイクロコンピュータのプログラムを使用していないので、リセットの際のプログラムやシステムの暴走に伴うフラッシュメモリ２０２の誤書き込みや、誤消去は発生しない。
【００４４】
≪ＴＥＳＴ端子が「Ｌ」、ＢＯＯＴ端子が「Ｌ」の場合≫
図２に示すようにＴＥＳＴ端子が「Ｌ」、ＢＯＯＴ端子が「Ｌ」の場合には、通常のＣＰＵモードとなる。また、モード制御回路２２４の出力が「Ｌ」なので切替回路２１４、２１６、２１８は、それぞれアドレスラッチ２０４、データラッチ２０６、コントロールレジスタ２０８側に切り替えられている。
【００４５】
ＣＰＵモード時にマイクロコンピュータ２００がリセットされると、アドレスラッチ２０４にはアドレス生成回路２１２によって、領域２０２ｂ内のアドレス（例えば先頭アドレス“００００”）がセットされる。これにより、クロックＣＬＫの変化に同期して領域２０２ｂ内のアドレスが指定されるともに、アドレス判定回路２２０にも、当該アドレスが入力される。
【００４６】
アドレス判定回路の出力は、アドレスデータがＢＯＯＴ領域２０２ａの所定アドレスを示すものではないので「Ｌ」となる。従って、図３より、ＡＮＤゲート２２２は、コントロールレジスタ２０８の出力を通過させる。さらに図４より、切替回路２１８もコントロールレジスタ２０８からの信号を出力する。
【００４７】
このとき、リセットに伴うシステムやプログラムの暴走によって、コントロールレジスタ２０８からＥＲＡＳＥ信号、ＰＲＯＧ信号が出力され、領域２０２ｂに誤書き込み、誤消去が行われる可能性がある。しかし、後述するようにＢＯＯＴ端子を「Ｈ」とすることで、誤書き込み、誤消去を防止することができる。
【００４８】
≪ＴＥＳＴ端子が「Ｌ」、ＢＯＯＴ端子が「Ｈ」の場合≫
図２に示すようにＴＥＳＴ端子が「Ｌ」、ＢＯＯＴ端子が「Ｈ」の場合には、ＢＯＯＴモードとなる。また、モード制御回路２２４の出力が「Ｌ」となるので切替回路２１４、２１６、２１８は、それぞれアドレスラッチ２０４、データラッチ２０６、コントロールレジスタ２０８側に切り替えられている。
【００４９】
この、ＢＯＯＴ端子が「Ｈ」でマイクロコンピュータ２００がリセットされると、アドレスラッチ２０４にはアドレス生成回路２１２によってＢＯＯＴ領域２０２ａの所定アドレス（例えば先頭アドレス“９Ｃ００”）がセットされる。これにより、クロックＣＬＫの変化に同期してＢＯＯＴ領域２０２ａの所定アドレスが指定されるともに、アドレス判定回路２２０にも、当該アドレスが入力される。
【００５０】
アドレス判定回路２２０の出力は、入力されたアドレスがＢＯＯＴ領域２０２ａ内のアドレスを示すものであるので「Ｈ」となる。従って図３よりＡＮＤゲート２２２の出力は「Ｌ」固定となり、コントロールレジスタ２０８の出力は無効となる。
【００５１】
従って、ＢＯＯＴ端子が「Ｈ」でリセットされた場合には、システムやプログラムの暴走によってコントロールレジスタ２０８が誤動作したとしても、またはコントロールレジスタ２０８のリセットのタイミングが遅れたとしても、フラッシュメモリ２０２に誤書き込みや誤消去を行うことを防止できる。
【００５２】
尚、ＢＯＯＴ領域２０２ａには領域２０２ｂにジャンプするためのプログラムが格納されており、リセット後に所定のタイミングでＢＯＯＴ領域２０２ａから領域２０２ｂにジャンプすることで通常のＣＰＵモードが実行されることになる。
【００５３】
以上説明したように、本発明のマイクロコンピュータは、内蔵するフラッシュメモリ２０２に、領域２０２ｂを書き換えるためのプログラムが格納されたＢＯＯＴ領域２０２ａを設けている。そして、ＢＯＯＴ端子が「Ｈ」およびＴＥＳＴ端子が「Ｌ」の期間にリセットとなった場合、ＢＯＯＴ領域２０２ａが指定され、またＡＮＤゲート２２２によってコントロールレジスタ２０８の出力を無効とするので、書き込み中のリセットに伴いコントロールレジスタ２０８の出力が不安定になってもフラッシュメモリ２０２の誤書き込みや誤消去を防止することができる。
【００５４】
また、ＢＯＯＴ端子が「Ｌ」およびＴＥＳＴ端子が「Ｌ」の期間にリセットとなった場合には、アドレスラッチ２０４にはフラッシュメモリ２０２の所定アドレス（例えば先頭アドレス“００００”）がセットされるので、通常の初期状態とすることができる。
【００５５】
さらに、リセット時にＢＯＯＴ端子が「Ｈ」であるか「Ｌ」であるかに応じて、アドレス生成回路２１２がアドレスラッチ２０４に設定するアドレスを変更することができ、ＢＯＯＴ端子を「Ｈ」とすることでフラッシュメモリ２０２の誤書き込みや誤消去を防止することができる。
【００５６】
フラッシュメモリ２０２は、ＢＯＯＴ領域２０２ａに格納されたプログラムに基づいて領域２０２ｂのデータを書き換えることができる。また、ＢＯＯＴ端子が「Ｈ」でリセットされると、アドレス生成回路２１２がアドレスラッチ２０４にＢＯＯＴ領域２０２ａのアドレスをセットすることによって、ＡＮＤゲート２２２がコントロールレジスタ２０８の出力を無効とするのでフラッシュメモリ２０２の誤書き込みや誤消去を防止することができる。
【００５７】
また、アドレス判定回路２２０とＡＮＤゲート２２２による判別部によって、アドレスラッチ２０４にセットされたアドレスがＢＯＯＴ領域２０２ａ内のアドレスのときにコントロールレジスタ２０８の出力を無効とするので、フラッシュメモリ２０２の誤書き込みや誤消去を防止することができる。
【００５８】
以上、本発明にかかるマイクロコンピュータ、マイクロコンピュータにおける不揮発性メモリのデータ保護方法について説明したが、上記の説明は、本発明の理解を容易とするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得るとともに、本発明にはその等価物が含まれることは勿論である。
【図面の簡単な説明】
【００５９】
【図１】本発明にかかるマイクロコンピュータの概要を示すブロック図である。
【図２】ＴＥＳＴ端子とＢＯＯＴ端子の関係を示す図である。
【図３】アドレス判定回路の出力とＡＮＤゲートの出力の関係を示す図である。
【図４】テストモード信号と切替回路の関係を示す図である。
【図５】従来のマイクロコンピュータの概要を示すブロック図である。
【符号の説明】
【００６０】
２００  マイクロコンピュータ
２０２  フラッシュメモリ
２０４  アドレスラッチ
２０６  データラッチ
２０８  コントロールレジスタ
２１０  システムバス
２１２  アドレス生成回路
２１４、２１６、２１８  切替回路
２２０  アドレス判定回路
２２２  ＡＮＤゲート
２２４  モード制御回路
【図１】
2006133982.tif 000003
【図２】
2006133982.tif 000004
【図３】
2006133982.tif 000005
【図４】
2006133982.tif 000006
【図５】
2006133982.tif 000007