(57)【要約】【課題】マイクロコントローラに接続される外部不揮発性メモリのデータが、誤って書き換えられることを防止する。【解決手段】内蔵不揮発性メモリには、書き換えモード中に実行されるプログラムが書き込まれている。ＣＰＵコアは、書き換えモード中に、内蔵不揮発性メモリ内のプログラムに基づいて、受信した書き換えデータを外部不揮発性メモリに書き込む。第１セレクタ回路は、モード信号が通常動作モードを示すときに第１チップセレクト信号を外部不揮発性メモリに伝え、モード信号が書き換えモードを示すときに第１チップセレクト信号を内部不揮発性メモリに伝える。通常動作モード中、内部不揮発性メモリは活性化が禁止されるため、通常動作モード中に内部不揮発性メモリのプログラムが誤って実行され、外部不揮発性メモリのデータが書き換えられることを防止できる。【選択図】      図１
2005025238.tif 000002
【特許請求の範囲】
【請求項１】
通常動作モードおよび書き換えモードのいずれかを示すモード信号を受けるモード端子と、
前記書き換えモード中に実行されるプログラムが書き込まれている内蔵不揮発性メモリと、
アドレス信号を順次生成するとともに、前記アドレス信号が第１領域を示すときに第１チップセレクト信号を活性化し、前記書き換えモード中に前記内蔵不揮発性メモリに格納されているプログラムに基づいて書き換えデータを受信し、受信した書き換えデータを、マイクロコントローラに接続される電気的に書き換え可能な外部不揮発性メモリに書き込むＣＰＵコアと、
前記モード信号を選択端子で受け、前記モード信号が前記通常動作モードを示すときに前記第１チップセレクト信号を前記外部不揮発性メモリに伝え、前記モード信号が前記書き換えモードを示すときに前記第１チップセレクト信号を前記内部不揮発性メモリに伝える第１セレクタ回路とを備えていることを特徴とするマイクロコントローラ。
【請求項２】
請求項１記載のマイクロコントローラにおいて、
前記ＣＰＵコアによりアクセスされる内蔵揮発性メモリを備え、
前記内蔵不揮発性メモリは、前記外部不揮発性メモリに書き込まれる前記書き換えデータを前記内部揮発性メモリに転送する転送プログラムと、前記外部不揮発性メモリに前記書き換えデータを書き込む書き換えプログラムとを予め記憶しており、
前記ＣＰＵコアは、前記書き換えモード中に、前記転送プログラムを実行することで、前記書き換えデータを前記内部揮発性メモリに転送し、前記書き換えプログラムを実行することで、転送した前記書き換えデータを前記外部不揮発性メモリに書き込むことを特徴とするマイクロコントローラ。
【請求項３】
請求項１記載のマイクロコントローラにおいて、
前記ＣＰＵコアによりアクセスされる内蔵揮発性メモリを備え、
前記内蔵不揮発性メモリは、前記外部不揮発性メモリに書き込まれる前記書き換えデータと、前記外部不揮発性メモリに前記書き換えデータを書き込む書き換えプログラムとを、前記内部揮発性メモリに転送する転送プログラムを予め記憶しており、
前記ＣＰＵコアは、前記転送プログラムを実行することで、前記書き換えデータおよび前記書き換えプログラムを前記内部揮発性メモリに転送し、前記内部揮発性メモリに転送された前記書き換えプログラムを実行することで、前記内部揮発性メモリに転送された前記書き換えデータを前記外部不揮発性メモリを書き込むことを特徴とするマイクロコントローラ。
【請求項４】
請求項１記載のマイクロコントローラにおいて、
前記ＣＰＵコアは、前記外部不揮発性メモリへの前記書き換えデータの書き込み完了に応答してモード切替信号を出力し、
マイクロコントローラは、前記モード切替信号を受けたときに、前記モード端子を介して入力される前記モード信号を無効にし、前記第１セレクタ回路の前記選択端子に前記通常動作モードを示すレベルを強制的に出力するセレクタ制御回路を備えていることを特徴とするマイクロコントローラ。
【請求項５】
請求項１記載のマイクロコントローラにおいて、
前記ＣＰＵコアは、前記アドレス信号が第２領域を示すときに第２チップセレクト信号を活性化し、
マイクロコントローラは、前記モード信号を選択端子で受け、前記モード信号が前記通常動作モードを示すときに前記第２チップセレクト信号をマイクロコントローラに接続される外部揮発性メモリに伝え、前記モード信号が前記書き換えモードを示すときに前記第２チップセレクト信号を前記外部不揮発性メモリに伝える第２セレクタ回路を備えていることを特徴とするマイクロコントローラ。
【請求項６】
請求項５記載のマイクロコントローラにおいて、
前記ＣＰＵコアは、前記外部不揮発性メモリへの前記書き換えデータの書き込み完了に応答してモード切替信号を出力し、
マイクロコントローラは、前記モード切替信号を受けたときに、前記モード端子を介して入力される前記モード信号を無効にし、前記第１および第２セレクタ回路の前記選択端子に前記通常動作モードを示すレベルを強制的に出力するセレクタ制御回路を備えていることを特徴とするマイクロコントローラ。
【請求項７】
請求項１記載のマイクロコントローラにおいて、
前記外部不揮発性メモリに書き込まれる前記書き換えデータを外部端子を介して受信するインタフェース回路を備え、
前記ＣＰＵコアは、前記プログラムに基づいて前記インタフェース回路を制御して前記書き換えデータを受信することを特徴とするマイクロコントローラ。
【請求項８】
請求項７記載のマイクロコントローラにおいて、
前記ＣＰＵコアによりアクセスされる内蔵揮発性メモリを備え、
前記ＣＰＵコアは、前記書き換えモード中に、前記書き換えデータを前記インタフェース回路を介して前記内蔵揮発性メモリに転送することを特徴とするマイクロコントローラ。
【請求項９】
請求項１記載のマイクロコントローラにおいて、
前記ＣＰＵコアは、パワーオン時の最初に第１領域を示す前記アドレス信号を生成することを特徴とするマイクロコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコントローラに接続されるフラッシュメモリ等の電気的に書き換え可能な外部不揮発性メモリのデータの書き換えを容易にする技術に関する。
【０００２】
【従来の技術】
システム基板上に実装されたフラッシュメモリ等の外部不揮発性メモリのデータの書き換えは、外部不揮発性メモリをシステム基板から取り外し、取り外した外部不揮発性メモリをフラッシュライタ等の専用の書き換え装置に取り付けることで行っている。外部不揮発性メモリは、データの書き換え時にシステム基板から容易に取り外せるように、ＩＣソケットを介してシステム基板に実装される。このため、システム基板の面積は、ＩＣソケットの実装により増加し、システムコストは増加する。
【０００３】
このような不具合を解消するため、外部不揮発性メモリ内に、この外部不揮発性メモリのデータを書き換えるための書き換えプログラムを予め書き込んでおき、データの書き換え時に、書き換えプログラムを揮発性メモリにコピーする手法が提案されている（例えば、特許文献１参照）。この手法では、揮発性メモリ上の書き換えプログラムを実行することで、データは、外部不揮発性メモリをシステム基板から取り外すことなく書き換えられる。
【０００４】
また、マイクロプロセッサ内にＣＰＵコアと上記書き換えプログラムが書き込まれた内蔵不揮発性メモリとを組み込み、ＣＰＵコアが内蔵不揮発性メモリ上の書き換えプログラムを実行することで、外部不揮発性メモリをシステム基板から取り外すことなくデータを書き換える手法が提案されている（例えば、特許文献２参照）。
【０００５】
【特許文献１】
特開平９−２３１０６５号公報
【特許文献２】
特開平８−２４９０１６号公報
【０００６】
【発明が解決しようとする課題】
外部不揮発性メモリに書き換えプログラムを書き込んでおく場合、ユーザが使用できる外部不揮発性メモリの記憶容量は、減少してしまう。ユーザの使用領域を確保するために、記憶容量の大きい外部不揮発性メモリを使用する場合、システムコストは増加してしまう。
マイクロプロセッサ内の内蔵不揮発性メモリに書き換えプログラムを内蔵する場合、ＣＰＵコアは、この書き換えプログラムをいつでもアクセスできる。このため、ノイズあるいはソフトウエアのバグ等により、書き換えプログラムが誤って実行される場合、不揮発性メモリのデータは、正しくないデータに書き換えられてしまう。この場合、システムはダウンする。
【０００７】
本発明の目的は、マイクロコントローラに接続されるフラッシュメモリ等の電気的に書き換え可能な外部不揮発性メモリのデータが、誤って書き換えられることを防止することにある。
本発明の別の目的は、マイクロコントローラに接続されるフラッシュメモリ等の電気的に書き換え可能な外部不揮発性メモリのデータを、容易かつ確実に書き換えることにある。
【０００８】
【課題を解決するための手段】
請求項１のマイクロコントローラでは、モード端子は通常動作モードおよび書き換えモードのいずれかを示すモード信号を受ける。内蔵不揮発性メモリには、書き換えモード中に実行されるプログラムが書き込まれている。ＣＰＵコアは、アドレス信号を順次生成するとともに、アドレス信号が第１領域を示すときに第１チップセレクト信号を活性化する。また、ＣＰＵコアは、書き換えモード中に内蔵不揮発性メモリに格納されているプログラムに基づいて書き換えデータを受信し、受信した書き換えデータを、マイクロコントローラに接続される電気的に書き換え可能な外部不揮発性メモリに書き込む。
【０００９】
第１セレクタ回路は、モード信号を選択端子で受け、モード信号が通常動作モードを示すときに第１チップセレクト信号を外部不揮発性メモリに伝え、モード信号が書き換えモードを示すときに第１チップセレクト信号を内部不揮発性メモリに伝える。第１チップセレクト信号の供給先は、動作モードに応じて変更されるため、通常動作モード中、内部不揮発性メモリは、第１チップセレクト信号によって活性化されることはない。したがって、通常動作モード中に内部不揮発性メモリのプログラムが誤って実行され、外部不揮発性メモリのデータが書き換えられることを防止できる。
【００１０】
請求項２のマイクロコントローラでは、マイクロコントローラは、ＣＰＵコアによりアクセスされる内蔵揮発性メモリを有している。内蔵不揮発性メモリは、外部不揮発性メモリに書き込まれる書き換えデータを内部揮発性メモリに転送する転送プログラムと、外部不揮発性メモリに書き換えデータを書き込むための書き換えプログラムとを予め記憶している。ＣＰＵコアは、書き換えモード中に、転送プログラムを実行することで書き換えデータを受信し、書き換えプログラムを実行することで受信した書き換えデータを外部不揮発性メモリに書き込む。内部不揮発性メモリに転送プログラムと書き換えプログラムとを書き込んでおくことで、通常動作モードから書き換えモードに移行した後、外部不揮発性メモリのデータを迅速かつ容易に書き換えることができる。
【００１１】
請求項３のマイクロコントローラでは、マイクロコントローラは、ＣＰＵコアによりアクセスされる内蔵揮発性メモリを有している。内蔵不揮発性メモリは、外部不揮発性メモリに書き込まれる書き換えデータと、外部不揮発性メモリに書き換えデータを書き込むための書き換えプログラムとを、内部揮発性メモリに転送する転送プログラムを予め記憶している。ＣＰＵコアは、転送プログラムを実行することで、書き換えデータおよび書き換えプログラムを内部揮発性メモリに転送し、内部揮発性メモリに転送された書き換えプログラムを実行することで、内部揮発性メモリに転送された書き換えデータを外部不揮発性メモリを書き込む。書き換えプログラムを予め内部不揮発性メモリに記憶しておく必要がないため、内部不揮発性メモリの記憶容量を小さくできる。この結果、マイクロコントローラのチップサイズを小さくでき、チップコストを削減できる。
【００１２】
請求項４のマイクロコントローラでは、ＣＰＵコアは、外部不揮発性メモリへの書き換えデータの書き込み完了に応答してモード切替信号を出力する。セレクタ制御回路は、モード切替信号を受けたときに、モード端子を介して入力されるモード信号を無効にし、第１セレクタ回路の選択端子に通常動作モードを示すレベルを強制的に出力する。このため、マイクロコントローラの外部からのモード信号に依存せず、書き換えデータの書き込み後に動作モードを書き換えモードから通常動作モードに移行できる。ＣＰＵコアの制御により通常動作モードに復帰できるため、ＣＰＵコアをリセットすることなく、外部不揮発性メモリに書き込まれた新たなデータをアクセスできる。
【００１３】
請求項５のマイクロコントローラでは、マイクロコントローラは、第１および第２セレクタ回路を有している。ＣＰＵコアは、アドレス信号が第２領域を示すときに第２チップセレクト信号を活性化する。第２セレクタ回路は、モード信号を選択端子で受け、モード信号が通常動作モードを示すときに第２チップセレクト信号をマイクロコントローラに接続される外部揮発性メモリに伝える。第２セレクタ回路は、モード信号が書き換えモードを示すときに第２チップセレクト信号を外部不揮発性メモリに伝える。換言すれば、通常動作モード中に第１および第２チップセレクト信号に応じて外部不揮発性メモリおよび外部揮発性メモリがそれぞれアクセス可能になり、書き換えモード中に第１および第２チップセレクト信号に応じて内部不揮発性メモリおよび外部不揮発性メモリがそれぞれアクセス可能になる。
【００１４】
ＣＰＵコアは、書き換えモード中に第２チップセレクト信号により外部不揮発性メモリを直接アクセスできる。このため、第１および第２セレクタ回路の切り替えるだけで、書き換えデータを外部不揮発性メモリに容易に書き込むことができる。
請求項６のマイクロコントローラでは、ＣＰＵコアは、外部不揮発性メモリへの書き換えデータの書き込み完了に応答してモード切替信号を出力する。セレクタ制御回路は、モード切替信号を受けたときに、モード端子を介して入力されるモード信号を無効にし、第１および第２セレクタ回路の選択端子に通常動作モードを示すレベルを強制的に出力する。このため、マイクロコントローラの外部からのモード信号に依存せず、書き換えデータの書き込み後に動作モードを書き換えモードから通常動作モードに移行できる。ＣＰＵコアの制御により通常動作モードに復帰できるため、ＣＰＵコアをリセットすることなく、外部不揮発性メモリに書き込まれた新たなデータをアクセスできる。
【００１５】
請求項７のマイクロコントローラでは、インタフェース回路は、外部不揮発性メモリに書き込まれる書き換えデータを外部端子を介して受信する。ＣＰＵコアは、プログラムに基づいてインタフェース回路を制御して書き換えデータを受信する。マイクロコントローラは、インタフェース回路を形成することで、様々な形式または電圧レベルの書き換えデータを受信できる。例えば、直列並列変換機能を有するインタフェース回路を用いることで、外部端子を介して供給されるシリアルデータを、ＣＰＵコアのデータバス幅に対応する並列データに変換できる。また、ＴＴＬレベルで入力される書き換えデータをＣＭＯＳレベルに変換できる。
【００１６】
請求項８のマイクロコントローラでは、マイクロコントローラは、ＣＰＵコアによりアクセスされる内蔵揮発性メモリを有している。ＣＰＵコアは、書き換えモード中に、書き換えデータをインタフェース回路を介して内蔵揮発性メモリに転送する。書き換えデータを内蔵揮発性メモリに一時記憶することで、書き換えデータの受信レートに依存せず、書き換えデータを外部不揮発性メモリに確実に書き込むことができる。換言すれば、書き換えデータが消失することを防止できる。
【００１７】
請求項９のマイクロコントローラでは、ＣＰＵコアは、パワーオン時の最初に第１領域を示すアドレス信号を生成する。このため、書き換えモード中に、書き換えデータは、マイクロコントローラのパワーオンリセット直後に外部不揮発性メモリに書き込まれる。書き換えデータを、常に同じ状態（マイクロコントローラがリセットされた状態）で外部不揮発性メモリに書き込めるため、誤動作を防止できる。
【００１８】
【発明の実施の形態】
以下、本発明の実施形態を図面を用いて説明する。図中、太線で示した信号線は、複数本で構成されている。頭に”／”が付く端子は、負論理を示している。
図１は、本発明のマイクロコントローラの第１の実施形態を示している。このマイクロコントローラは、シリコン基板上にＣＭＯＳプロセスを使用してシングルチップマイクロコンピュータとして形成されている。
【００１９】
マイクロコントローラは、ＣＰＵコア１０、内蔵ＲＡＭ１２（内蔵揮発性メモリ）、シリアルインタフェース回路１４、内蔵ＲＯＭ１６（内蔵不揮発性メモリ）、およびセレクタ１８、２０、２２を有している。マイクロコントローラを示す破線枠上の二重丸は、外部端子を示している。内蔵ＲＡＭ１２、シリアルインタフェース回路１４および内蔵ＲＯＭ１６は、内部バスＩＢＵＳを介してＣＰＵコア１０に接続されている。
【００２０】
ＣＰＵコア１０は、チップセレクト信号ＸＣＳ０（第１チップセレクト信号）およびチップセレクト信号ＸＣＳ１（第２チップセレクト信号）を出力する。チップセレクト信号ＸＣＳ０、ＸＣＳ１は、負論理の信号であり、”論理０”のときに有効になり活性化状態を示す。チップセレクト信号ＸＣＳ０、ＸＣＳ１は、ＣＰＵコア１０の内部で生成されるアドレス信号ＡＤが第１領域および第２領域を示すときに、それぞれ活性化される。例えば、第１領域は、１６進数の”０００００”〜”３ＦＦＦＦ”のアドレス信号ＡＤに対応し、第２領域は、”４００００”〜”７ＦＦＦＦ”のアドレス信号ＡＤに対応するように、ＣＰＵコア１０に予め設定されている。ＣＰＵコア１０は、パワーオン時に、アドレス信号ＡＤ＝”００００００”から順次アドレス信号ＡＤを生成する。すなわち、パワーオン時の最初に、チップセレクト信号ＸＣＳ０が活性化され、第１領域のデータ（プログラム）がフェッチされる。
【００２１】
内蔵ＲＡＭ１２は、ワークメモリと使用されるとともに、後述するように、シリアルインタフェース回路１４を介して入力される書き換えデータを一時保存するために使用される。書き換えデータは、フラッシュメモリ２６に格納されるユーザプログラム（製品プログラム）である。内蔵ＲＡＭ１２は、ＣＰＵコア１０が出力する図示しない別のチップセレクト信号に応じて、内部バスＩＢＵＳを介してアクセスされる。書き換えデータを内蔵ＲＡＭ１２に一時的に記憶することで、例えば、書き換えデータの受信レートに依存せず、かつ書き換えデータを失うことなく、書き換えデータをフラッシュメモリ２６（外部不揮発性メモリ）に確実に書き込むことができる。
【００２２】
シリアルインタフェース回路１４は、外部端子Ｉ／Ｏを介して外部からのシリアルデータを並列データに変換し、内部バスＩＢＵＳに出力する。シリアルインタフェース回路１４は、例えば、ＴＴＬレベルの入力を、ＣＭＯＳレベルに変換する。また、シリアルインタフェース回路１４は、内部バスＩＢＵＳに伝達される並列データをシリアルデータに変換し、外部端子Ｉ／Ｏに出力する。
【００２３】
シリアルインタフェース回路１４は、メモリマップトＩ／Ｏとして割り当てられており、ＣＰＵコア１０が実行するプログラムに応じて動作する。シリアルインタフェース回路１４は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コントローラ、またはＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ−Ｔｒａｎｓｍｉｔｔｅｒ）である。この実施形態では、シリアルインタフェース回路１４は、書き替えモード中に、外部端子Ｉ／Ｏを介してフラッシュメモリ２６に書き込む書き換えデータを受信する。
【００２４】
内蔵ＲＯＭ１６は、書き換えモード中にフラッシュメモリ２６に書き込まれるユーザプログラムをシリアルインタフェース回路１４を介して内蔵ＲＡＭ１２に転送する転送プログラムと、フラッシュメモリ２６にユーザプログラムを書き込む書き換えプログラムとを予め記憶している。内蔵ＲＯＭ１６は、内部バスＩＢＵＳを介してＣＰＵコア１０によりアクセスされる。
【００２５】
内部バスＩＢＵＳは、アドレス信号ＡＤを伝達するアドレスバス、データ信号ＤＴを伝達するデータバス、および制御信号ＣＮＴを伝達する制御バスにより構成されている。内部バスＩＢＵＳは、外部端子を介して外部バスＥＢＵＳに接続されている。外部バスＥＢＵＳには、システム基板上にマイクロコントローラとともに搭載されるＳＲＡＭチップ２４（外部揮発性メモリ）およびフラッシュメモリチップ２６が接続されている。
【００２６】
ＳＲＡＭ２４は、ワークメモリとして使用される。フラッシュメモリ２６は、ＣＰＵコア１０が実行する製品の機能を実現するためのプログラムが格納される。なお、内部バスＩＢＵＳと外部バスＥＢＵＳの規格（入力電圧、出力電圧等）が異なる場合、内部バスＩＢＵＳおよび外部バスＥＢＵＳは、規格を合わせるためにバスインタフェース回路（図示せず）を介して接続されてもよい。
【００２７】
モード端子（モード信号）ＭＤは、通常動作モード中（ユーザプログラムの実行中）に低レベルに設定され、フラッシュメモリ２６にプログラムされたユーザプログラムを書き換える書き換えモード中に、マイクロコントローラを搭載するシステムにより高レベルに設定される。例えば、モード端子ＭＤは、マイクロコントローラが搭載されるシステム基板上に設けられたディップスイッチを切り替えることで高レベルに変化する。あるいは、モード端子ＭＤは、システム基板により実現される製品（例えば、ディジタルカメラ、携帯電話等）の操作スイッチを所定時間押し続けることで高レベルに変化する。
【００２８】
セレクタ１８、２０、２２は、同じ回路であり、選択端子ＳＥＬに供給されるモード信号ＭＤが低レベル（”論理０”）のとき、入力端子ＩＮ０に供給される信号を出力端子ＯＵＴに出力し、モード信号ＭＤが高レベル（”論理１”）のとき、入力端子ＩＮ１に供給される信号を出力端子ＯＵＴに出力する。セレクタ２０、２２は、モード信号ＭＤが低レベルのときにチップセレクト信号ＸＣＳ０をフラッシュメモリ２６に伝え、モード信号ＭＤが高レベルのときにチップセレクト信号ＸＣＳ０を内蔵ＲＯＭ１６に伝える第１セレクタ回路として動作する。セレクタ１８、２０は、モード信号ＭＤが低レベルのときにチップセレクト信号ＸＣＳ１をＳＲＡＭ２４のチップセレクト端子／ＣＳに伝え、モード信号ＭＤが高レベルのときにチップセレクト信号ＸＣＳ１をフラッシュメモリ２６のチップセレクト端子／ＣＳに伝える第２セレクタ回路として動作する。
【００２９】
セレクタ１８は、モード信号ＭＤが低レベルのとき、ＣＰＵ１０からのチップセレクト信号ＸＣＳ１をＳＲＡＭ２４のチップセレクト端子／ＣＳに伝達し、モード信号ＭＤが高レベルのとき、電源電圧ＶＣＣ（高レベル）をＳＲＡＭ２４のチップセレクト端子／ＣＳに伝達する。すなわち、ＳＲＡＭ２４は、通常動作モード中（モード信号ＭＤ＝低レベル）、チップセレクト信号ＸＣＳ１に応じて選択され、書き換えモード中（モード信号ＭＤ＝高レベル）、非選択にされる。
【００３０】
セレクタ２０は、モード信号ＭＤが低レベルのとき、チップセレクト信号ＸＣＳ０をフラッシュメモリ２６のチップセレクト端子／ＣＳに伝達し、モード信号ＭＤが高レベルのとき、チップセレクト信号ＸＣＳ１をフラッシュメモリ２６のチップセレクト端子／ＣＳに伝達する。すなわち、フラッシュメモリ２６は、通常動作モード中（モード信号ＭＤ＝低レベル）、チップセレクト信号ＸＣＳ０に応じて選択され、書き換えモード中（モード信号ＭＤ＝高レベル）、チップセレクト信号ＸＣＳ１に応じて選択にされる。
【００３１】
セレクタ２２は、モード信号ＭＤが低レベルのとき、電源電圧ＶＣＣ（高レベル）を内蔵ＲＯＭ１６のチップセレクト端子／ＣＳに伝達し、モード信号ＭＤが高レベルのとき、チップセレクト信号ＸＣＳ０を内蔵ＲＯＭ１６のチップセレクト端子／ＣＳに伝達する。すなわち、内蔵ＲＯＭ１６は、通常動作モード中（モード信号ＭＤ＝低レベル）、非選択にされ、書き換えモード中（モード信号ＭＤ＝高レベル）、チップセレクト信号ＸＣＳ０に応じて選択される。
【００３２】
図２は、第１の実施形態の通常動作モード中と書き換えモード中におけるメモリマップを示している。ここでは、通常動作モード中の動作と、書き換えモード中の動作についても説明する。
通常動作モード中、モード信号ＭＤは低レベルであるため、セレクタ１８、２０、２２により、チップセレクト信号ＸＣＳ０、ＸＣＳ１は、フラッシュメモリ２６およびＳＲＡＭ２４にそれぞれ供給される。このため、第１領域には、フラッシュメモリ２６が割り当てられ、第２領域には、ＳＲＡＭ２４が割り当てられる。他の領域には、内蔵ＲＡＭ１２およびシリアルインタフェース回路１４が割り当てられる。ＣＰＵコア１０は、パワーオン時の最初に、フラッシュメモリ２６に書き込まれているユーザプログラムをフェッチする。
【００３３】
内蔵ＲＯＭ１６は、セレクタ２２から高レベルをチップセレクト端子／ＣＳで受け、非活性化される。内蔵ＲＯＭ１６は、メモリマップ上に存在しないため、電源ノイズあるいはプログラムのバグによってもアクセスさせることはない。すなわち、通常動作モード中にフラッシュメモリ２６の転送プログラムおよび書き換えプログラムが実行されることはない。
【００３４】
モード信号ＭＤが高レベルに変化し、動作モードが通常動作モードから書き換えモードに移行すると、セレクタ１８、２０、２２により、チップセレクト信号ＸＣＳ０、ＸＣＳ１は、内蔵ＲＯＭ１６およびフラッシュメモリ２６にそれぞれ供給される。このため、第１領域には、内蔵ＲＯＭ１６が割り当てられ、第２領域には、フラッシュメモリ２６が割り当てられる。ＳＲＡＭ２４は、セレクタ１８からの高レベルをチップセレクト端子／ＣＳで受け、非活性化される。このため、ＳＲＡＭ２４は、メモリマップ上に存在しない。他の領域には、通常動作モード中と同様に内蔵ＲＡＭ１２およびシリアルインタフェース回路１４が割り当てられる。マイクロコントローラが搭載されるシステム基板は、モード信号ＭＤの高レベルへの変化とともに、ＣＰＵコア１０のリセット端子（図示せず）にリセット信号を供給する。このため、ＣＰＵコア１０は、リセット後の最初に、内蔵ＲＯＭ１６に書き込まれている転送プログラムをフェッチする。
【００３５】
ＣＰＵコア１０が実行する転送プログラムにより、フラッシュメモリ２６の書き換えデータは、シリアルインタフェース回路１４を介して内蔵ＲＡＭ１２に転送される。この後、ＣＰＵコア１０が内蔵ＲＯＭ１６内の書き換えプログラムを実行することにより、書き換えデータは、フラッシュメモリ２６に書き込まれる。より詳細には、書き換えプログラムにより、フラッシュメモリ２６の全領域のデータが一括消去され、この後、書き換えデータがフラッシュメモリ２６に書き込まれる。
【００３６】
マイクロコントローラのパワーオンリセット直後に転送プログラムを実行することで、マイクロコントローラを常に同じ状態にして、書き換えデータをフラッシュメモリ２６に書き込みできる。このため、誤動作および誤書き込みを防止できる。
上述したように、書き換えモード中、チップセレクト信号ＸＣＳ１は、セレクタ２０によりフラッシュメモリ２６のチップセレクト端子／ＣＳに供給される。すなわち、セレクタ２０の切り替え動作により、フラッシュメモリ２６をＳＲＡＭ２４の変わりにメモリマップ上に存在させることができる。このため、ＣＰＵコア１０は、書き換えデータを容易にフラッシュメモリ２６にプログラムすることができる。
【００３７】
フラッシュメモリ２６へのデータの書き換え動作の完了後、操作者の操作により、マイクロコントローラまたはシステム基板の電源が再投入される（再パワーオン）。システム基板のパワーオンリセット中に、モード信号ＭＤは、高レベルから低レベルに変化され、動作モードは、書き換えモードから通常動作モードに戻る。
【００３８】
そして、ＣＰＵコア１０は、フラッシュメモリ２６に新たに書き込まれたユーザプログラムのフェッチを開始する。
以上、第１の実施形態では、セレクタ２２の切り替えにより、内蔵ＲＯＭ１６が、通常動作モード中にチップセレクト信号ＸＣＳ０により活性化されることを禁止することで、通常動作モード中に内蔵ＲＯＭ１６内の転送プログラムおよび書き換えプログラムが誤って実行され、フラッシュメモリ２６のユーザプログラムが書き換えられることを防止できる。
【００３９】
内蔵ＲＯＭ１６に転送プログラムおよび書き換えプログラムを予め書き込んでおくことで、通常動作モードから書き換えモードに移行した後、フラッシュメモリ２６のユーザプログラムを迅速かつ容易に書き換えることができる。
書き換えモード中に、セレクタ回路２０によりチップセレクト信号ＸＣＳ１をフラッシュメモリ２６に供給することで、ＣＰＵコア１０は、書き換えモード中にフラッシュメモリ２６を直接アクセスできる。このため、ユーザプログラムをフラッシュメモリ２６に容易に書き込むことができる。
【００４０】
図３は、本発明の半導体メモリの第２の実施形態を示している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
この実施形態では、マイクロコントローラは、第１の実施形態に加えて、さらに制御レジスタ２８およびセレクタ制御回路３０を有している。その他の構成は、第１の実施形態と同じである。
【００４１】
制御レジスタ２８は、メモリマップトＩ／Ｏとして割り当てられており、所定のアドレス信号ＡＤにより選択される。ＣＰＵコア１０は、書き換えモード中に、フラッシュメモリ２６への書き換えデータの書き込み完了に応答して、制御レジスタ２８に高レベル（”論理１”）を書き込む。高レベルの書き込みは、ＣＰＵコア１０がデータ信号ＤＴをモード切替信号として制御レジスタ２８に出力することで行う。制御レジスタ２８は、ＣＰＵコア１０からの高レベルの書き込みに同期して、モード切替信号ＳＷ（高レベル）をセレクタ制御回路３０に出力する。
【００４２】
セレクタ制御回路３０は、高レベルのモード切替信号ＳＷに応答して、モード端子ＭＤを介して入力されるモード信号ＭＤをセレクタ１８、２０、２２にモード信号ＭＤ１として供給することを禁止し、モード信号ＭＤ１を強制的に高レベルから低レベルに変化させる。すなわち、セレクタ制御回路３０は、モード切替信号ＳＷに応答して、モード信号ＭＤを無効にし、動作モードを書き換えモードから通常動作モードに移行する。このため、書き換えデータの書き込み後、ＣＰＵコア１０をリセットすることなく新しいユーザプログラムを実行できる。
【００４３】
図４は、第２の実施形態の通常動作モード中と書き換えモード中におけるメモリマップを示している。メモリマップは、制御レジスタ２８が新たに追加されることを除き、第１の実施形態と同じである。但し、内蔵ＲＯＭ１６および内蔵ＲＡＭ１２に格納されるデータは、第１の実施形態と異なる。ここでは、書き換えモード中の動作についても説明する。通常動作モード中の動作は、第１の実施形態と同じであるため、説明を省略する。
【００４４】
モード信号ＭＤが高レベルに変化し、動作モードが通常動作モードから書き換えモードに移行すると、第１の実施形態と同様に、第１領域には、内蔵ＲＯＭ１６が割り当てられ、第２領域には、フラッシュメモリ２６が割り当てられる。ＳＲＳＡＭ２４は、セレクタ１８からの高レベルをチップセレクト端子／ＣＳで受け、非活性化される。ＣＰＵコア１０は、第１の実施形態と同様に、システム基板から供給されるリセット信号に応答するリセット後の最初に、内蔵ＲＯＭ１６に書き込まれている転送プログラムをフェッチする。
【００４５】
ＣＰＵコア１０が実行する転送プログラムにより、フラッシュメモリ２６の書き換えデータおよびこの書き換えデータをフラッシュメモリ２６に書き込む書き換えプログラムは、シリアルインタフェース回路１４を介して内蔵ＲＡＭ１２に転送される。書き換えプログラムをマイクロコントローラの外部から入力することで、内蔵ＲＯＭ１６の記憶容量は、小さくなる。また、書き換えプログラムのバーションアップに容易に対応できる。この後、ＣＰＵコア１０が内蔵ＲＡＭ１２内の書き換えプログラムを実行することで、書き換えデータは、フラッシュメモリ２６に書き込まれる。
【００４６】
フラッシュメモリ２６へのデータの書き換え動作の完了後、ＣＰＵコア１０は、制御レジスタ２８に高レベルを書き込む。セレクタ制御回路３０は、制御レジスタ２８からの切替信号ＳＷを受け、モード信号ＭＤ１を高レベルから低レベルに変化させる。モード信号ＭＤ１の変化により、動作モードは、書き換えモードから通常動作モードに移行し、アドレスマップの第１領域および第２領域には、フラッシュメモリ２６およびＳＲＡＭ２４が割り当てられる。
【００４７】
ＣＰＵコア１０は、制御レジスタ２８への書き込み直後にアドレスＡＤ＝”０００００”にジャンプする。そして、ＣＰＵコア１０は、パワーオンリセットされることなく、フラッシュメモリ２６内の新たなユーザプログラムのフェッチを開始する。
この実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。さらに、この実施形態では、書き換えモード中に、書き換えデータおよびこの書き換えデータをフラッシュメモリ２６に書き込むための書き換えプログラムを、マイクロコントローラの外部から内蔵ＲＡＭ１２に転送する。このため、内蔵ＲＯＭ１６は、書き換えプログラムを記憶する必要はない。したがって、内蔵ＲＯＭ１６の記憶容量を小さくでき、マイクロコントローラのチップサイズを小さくでき、チップコストを削減できる。
【００４８】
フラッシュメモリ２６へのユーザプログラムの書き込み完了に応答して、ＣＰＵコア１０は、セレクタ１８、２０、２２に供給されるモード信号ＭＤ１を、モード端子ＭＤに供給されるレベルにかかわりなく強制的に低レベルに変化させる。このため、ＣＰＵコア１０自身の制御により、書き換えモードから通常動作モードに復帰させることができる。したがって、ＣＰＵコア１０をリセットすることなく、ユーザプログラムの書き換え後即座にフラッシュメモリ２６に書き込まれた新たなユーザプログラムを実行できる。
【００４９】
なお、上述した第１の実施形態では、シリアルインタフェース回路１４を介して供給される書き換えデータを内蔵ＲＡＭ１２に一時的に保持する例について述べた。本発明はかかる実施形態に限定されるものではない。例えば、書き換えデータをＳＲＡＭ２４（外部揮発性メモリ）に一時的に保持してもよい。
上述した実施形態では、本発明をフラッシュメモリ２６のデータの書き換えに適用する例について述べた。本発明はかかる実施形態に限定されるものではない。例えば、本発明をＥＥＰＲＯＭ等の他の電気的に書き換え可能な不揮発性メモリのデータの書き換えに適用してもよい。
【００５０】
上述した実施形態では、フラッシュメモリ２６にユーザプログラムを書き込む例について述べた。本発明はかかる実施形態に限定されるものではない。例えば、フラッシュメモリ２６にユーザプログラムだけでなく、ユーザプログラムで使用するデータを書き込んでもよい。
上述した実施形態では、書き換えデータの受信に、ＵＳＢコントローラまたはＵＡＲＴ等のシリアルインタフェース回路１４を用いる例について述べた。本発明はかかる実施形態に限定されるものではない。例えば、並列データのインタフェース回路を用いてもよい。インタフェース回路は、電気インタフェースに限らず、光インタフェースでもよい。
【００５１】
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【００５２】
【発明の効果】
請求項１のマイクロコントローラでは、通常動作モード中、内部不揮発性メモリは、第１チップセレクト信号によって活性化されることはないため、通常動作モード中に内部不揮発性メモリのプログラムが誤って実行され、外部不揮発性メモリのデータが書き換えられることを防止できる。
請求項２のマイクロコントローラでは、通常動作モードから書き換えモードに移行した後、外部不揮発性メモリのデータを迅速かつ容易に書き換えることができる。
【００５３】
請求項３のマイクロコントローラでは、書き換えプログラムを予め内部不揮発性メモリに記憶しておく必要がないため、内部不揮発性メモリの記憶容量を小さくできる。この結果、マイクロコントローラのチップサイズを小さくでき、チップコストを削減できる。
請求項４および請求項６のマイクロコントローラでは、マイクロコントローラの外部からのモード信号に依存せず、書き換えデータの書き込み後に動作モードを書き換えモードから通常動作モードに移行できる。ＣＰＵコアの制御により通常動作モードに復帰できるため、ＣＰＵコアをリセットすることなく、外部不揮発性メモリに書き込まれた新たなデータをアクセスできる。
【００５４】
請求項５のマイクロコントローラでは、第１および第２セレクタ回路の切り替えるだけで、書き換えデータを外部不揮発性メモリに容易に書き込むことができる。
請求項７のマイクロコントローラでは、インタフェース回路を形成することで、様々な形式または電圧レベルの書き換えデータを受信できる。
【００５５】
請求項８のマイクロコントローラでは、書き換えデータを内蔵揮発性メモリに一時記憶することで、書き換えデータの受信レートに依存せず、書き換えデータを外部不揮発性メモリに確実に書き込むことができる。
請求項９のマイクロコントローラでは、書き換えデータを、常にマイクロコントローラがリセットされた状態で外部不揮発性メモリに書き込めるため、誤動作を防止できる。
【図面の簡単な説明】
【図１】本発明のマイクロコントローラの第１の実施形態を示すブロック図である。
【図２】第１の実施形態のメモリマップを示す説明図である。
【図３】本発明のマイクロコントローラの第１の実施形態を示すブロック図である。
【図４】第２の実施形態のメモリマップを示す説明図である。
【符号の説明】
１０  ＣＰＵコア
１２  内蔵ＲＡＭ
１４  シリアルインタフェース回路
１６  内蔵ＲＯＭ
１８、２０、２２  セレクタ
２４  ＳＲＡＭ
２６  フラッシュメモリ
２８  制御レジスタ
３０  セレクタ制御回路
ＡＤ  アドレス信号
ＣＮＴ  制御信号
ＤＴ  データ信号
ＥＢＵＳ  外部バス
ＩＢＵＳ  内部バス
Ｉ／Ｏ  外部端子
ＭＤ  モード端子、モード信号
ＳＥＬ  選択端子
ＸＣＳ０、ＸＣＳ１  チップセレクト信号
【図１】
2005025238.tif 000003
【図２】
2005025238.tif 000004
【図３】
2005025238.tif 000005
【図４】
2005025238.tif 000006