(57)【要約】【課題】  メモリに記憶されたプログラムに不具合箇所が発生した場合でも不具合箇所を修正でき、かつ、プログラムを記憶するメモリが初期値を持つようにする。【解決手段】  読み出し専用の第１のメモリ１２により、外部端子１０ａからユーザプログラムを受信して内部メモリ１５に格納するプログラムが予め記憶される。また、書換可能な第２のメモリ１３により、プログラムの不具合箇所を修正したパッチデータが記憶される。そして、データ選択回路１４に対して、アドレス信号によって出力されるプログラムとパッチデータとが入力され、データ選択回路１４により、不具合箇所が修正されたプログラムが生成される。【選択図】  図１
2006178829.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラムを内部に記憶するマイクロコンピュータにおいて、
プログラムを予め記憶する読み出し専用の第１のメモリと、
前記第１のメモリと同一のアドレス空間を有し、前記第１のメモリと同一のアドレス信号が入力される、前記プログラムの不具合箇所を修正したパッチデータを記憶する書換可能な第２のメモリと、
前記アドレス信号によって出力される前記プログラムと前記パッチデータとが入力され、前記第２のメモリの前記パッチデータの記憶内容に基づいて一方を出力するデータ選択回路と、
を有することを特徴とするマイクロコンピュータ。
【請求項２】
前記パッチデータは、パッチ情報を含み、前記データ選択回路は、前記パッチ情報に基づいて、前記プログラムと前記パッチデータとの一方を出力することを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記パッチデータのパッチデータ幅は、前記プログラムのデータ幅より冗長データ幅分大きく、前記パッチ情報は、前記冗長データ幅に格納されることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項４】
ユーザプログラムを内部に記憶するマイクロコンピュータにおいて、
第１のデータを予め記憶する読み出し専用の第１のメモリと、
前記第１のメモリと同一のアドレス空間を有し、前記第１のメモリと同一のアドレス信号が入力される、第２のデータを記憶する書換可能な第２のメモリと、
前記アドレス信号によって出力される前記第１のデータと前記第２のデータとによって、外部から前記ユーザプログラムを受信し、内部メモリに格納するプログラムを生成するプログラム生成回路と、
を有することを特徴とするマイクロコンピュータ。
【請求項５】
前記第１のメモリの前記第１のデータの各ビットと、前記第１のメモリと同一のアドレスにおける前記第２のメモリの前記第２のデータの各ビットとは対応し、前記第１のメモリの前記第１のデータの各ビットは、前記第１のメモリと同一のアドレスにおける前記第２のメモリの前記第２のデータの各ビットを反転するか否かを示す反転符号であることを特徴とする請求項４記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、特に、ユーザプログラムを内部に記憶するマイクロコンピュータに関する。
【背景技術】
【０００２】
マイクロコンピュータに内蔵されている内部メモリに様々なユーザプログラムを格納することで、マイクロコンピュータに様々な処理を実行させることができる。
このユーザプログラムを変更する場合、ＵＡＲＴ(Universal Asynchronous Receiver Transmitter)を利用し、内部メモリに新しいユーザプログラムをシリアル通信にてダウンロードして、書き込んでいる。この場合、ＲＯＭ(Read Only Memory)に記憶されているプログラムを実行することで、ユーザプログラムを書き込んでいる（例えば、特許文献１）。
【０００３】
しかし、マイクロコンピュータを製造した時点において、ＲＯＭに記憶されているプログラムに不具合箇所が存在する場合、ＲＯＭは読み出し専用のメモリであるので、不具合箇所を修正できない。よって、内部メモリに新しいユーザプログラムを書き込めない。
【０００４】
この対策として、ＲＯＭを、書換可能なフラッシュメモリに置き換える方法が考えられる。なお、ユーザプログラムを書き込むプログラムがＲＯＭに記憶されるのに対し、ユーザプログラムがＲＯＭ、ＲＡＭ(Random Access Memory)及びＥＡＲＯＭ(Electrically Alterable Read Only Memory)に記憶される方法も提案されている（例えば、特許文献２）。
【特許文献１】特開平１０−５００８６号公報
【特許文献２】特開平６−１３１１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、ＲＯＭは予めプログラムを記憶するのに対してフラッシュメモリは初期値を持たないので、マイクロコンピュータを製造した時点において、フラッシュメモリに対して時間をかけてプログラムを書き込む必要がある。よって、この方法は実用的でない。
【０００６】
本発明は、このような点に鑑みてなされたものであり、マイクロコンピュータを製造した時点において、メモリに記憶されたプログラムに不具合箇所が発生した場合でも不具合箇所を修正でき、かつ、プログラムを記憶するメモリが初期値を持つマイクロコンピュータを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では、上記課題を解決するために、図１に示すように、ユーザプログラムを内部に記憶するマイクロコンピュータ１０において、プログラムを予め記憶する読み出し専用の第１のメモリ１２と、第１のメモリ１２と同一のアドレス空間を有し、第１のメモリ１２と同一のアドレス信号が入力される、プログラムの不具合箇所を修正したパッチデータを記憶する書換可能な第２のメモリ１３と、アドレス信号によって出力されるプログラムとパッチデータとが入力され、第２のメモリ１３のパッチデータの記憶内容に基づいて一方を出力するデータ選択回路１４と、を有するマイクロコンピュータ１０が提供される。
【０００８】
このようなマイクロコンピュータ１０によれば、読み出し専用の第１のメモリ１２により、プログラムが予め記憶される。また、第１のメモリ１２と同一のアドレス空間を有し、第１のメモリ１２と同一のアドレス信号が入力される書換可能な第２のメモリ１３により、プログラムの不具合箇所を修正したパッチデータが記憶される。そして、データ選択回路１４に対して、アドレス信号によって出力されるプログラムとパッチデータとが入力され、データ選択回路１４により、第２のメモリ１３のパッチデータの記憶内容に基づいて一方が出力され、不具合箇所が修正されたプログラムが生成される。
【０００９】
また、本発明では、上記課題を解決するために、ユーザプログラムを内部に記憶するマイクロコンピュータにおいて、第１のデータを予め記憶する読み出し専用の第１のメモリと、第１のメモリと同一のアドレス空間を有し、第１のメモリと同一のアドレス信号が入力される、第２のデータを記憶する書換可能な第２のメモリと、アドレス信号によって出力される第１のデータと第２のデータとによって、外部からユーザプログラムを受信し、内部メモリに格納するプログラムを生成するプログラム生成回路と、を有するマイクロコンピュータが提供される。
【００１０】
このようなマイクロコンピュータによれば、読み出し専用の第１のメモリにより、第１のデータが予め記憶される。また、第１のメモリと同一のアドレス空間を有し、第１のメモリと同一のアドレス信号が入力される書換可能な第２のメモリにより、第２のデータが記憶される。そして、プログラム生成回路により、アドレス信号によって出力される第１のデータと第２のデータとによって内部メモリに格納するプログラムが生成され、外部からユーザプログラムを受信することができる。
【発明の効果】
【００１１】
本発明では、読み出し専用の第１のメモリのプログラムと書換可能な第２のメモリのパッチデータとが入力され、第２のメモリのパッチデータの記憶内容に基づいて一方を出力するデータ選択回路により、不具合箇所が修正されたプログラムが生成されるようにした。
【００１２】
このようにすると、マイクロコンピュータを製造した時点において、読み出し専用の第１のメモリに記憶されたプログラムに不具合箇所が発生した場合でも不具合箇所を修正でき、かつ、プログラムを記憶する読み出し専用の第１のメモリが初期値を持つことができる。
【００１３】
また、本発明では、読み出し専用の第１のメモリの第１のデータと、書換可能な第２のメモリの第２のデータとによってプログラムを生成するプログラム生成回路により、不具合箇所が修正されたプログラムが生成されるようにした。
【００１４】
このようにすると、マイクロコンピュータを製造した時点において、読み出し専用の第１のメモリに記憶された第１のデータに不具合箇所が発生した場合でも不具合箇所を修正でき、かつ、第１のデータを記憶する読み出し専用の第１のメモリが初期値を持つことができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。まず、本発明の概念について説明し、その後、本発明の実施の形態の具体的な内容について説明する。
以下、本発明の概念について説明する。図１は、本発明の概念図である。
【００１６】
本発明に係るマイクロコンピュータ１０は、ＣＰＵ(Central Processing Unit)１１、第１のメモリ１２、第２のメモリ１３、データ選択回路１４及び内部メモリ１５から構成される。
【００１７】
マイクロコンピュータ１０のＣＰＵ１１は、ユーザプログラムに従ってマイクロコンピュータ１０の内部装置及び外部装置を制御する。このユーザプログラムは、ユーザプログラムダウンロードモードを設定した時に、外部端子１０ａから受信されて内部メモリ１５に格納される。このユーザプログラムを内部メモリ１５に書き込む際に使用するプログラムは、読み出し専用の第１のメモリ１２及び書換可能な第２のメモリ１３から出力される。
【００１８】
読み出し専用の第１のメモリ１２は、外部端子１０ａからユーザプログラムを受信して内部メモリ１５に格納するプログラムを、予め記憶する。また、第１のメモリ１２と同一のアドレス空間を有し、第１のメモリ１２と同一のアドレス信号が入力される書換可能な第２のメモリ１３は、プログラムに不具合箇所が存在する場合において、プログラムの不具合箇所を修正したパッチ情報を含むパッチデータを記憶する。さらに、内部メモリ１５は、ユーザプログラムを格納する。
【００１９】
ここで、第２のメモリ１３に記憶されるパッチデータは、例えば、９ビット単位で構成される。この第２のメモリ１３のパッチデータにおいて、例えば、最上位ビットを除く８ビットは、第２のメモリ１３と同一のアドレスにおける第１のメモリ１２のプログラムの不具合箇所を、修正するデータである。また、例えば、最上位ビットである１ビットは、そのパッチデータを使用するか否かを示すパッチ情報である。このパッチデータは、ＣＰＵ１１が実行する命令データ及びＣＰＵ１１が参照する演算データ等を含む。また、第１のメモリ１２に記憶されるプログラムは、例えば、８ビット単位で構成される。
【００２０】
データ選択回路１４は、ＣＰＵ１１からのアドレス信号によって第１のメモリ１２及び第２のメモリ１３から出力される、８ビットのプログラム及び最上位ビットを除く８ビットのパッチデータの入力を受け付ける。そして、データ選択回路１４は、パッチデータの最上位ビットである１ビットに応じてプログラムまたはパッチデータの一方を出力する。つまり、データ選択回路１４は、プログラムに不具合箇所が存在する場合において、パッチデータ内のパッチ情報に基づいて、プログラムとパッチデータのうち、パッチデータを出力し、不具合箇所が修正されたプログラムを生成する。また、データ選択回路１４は、プログラムに不具合箇所が存在しない場合において、パッチデータ内のパッチ情報に基づいて、プログラムとパッチデータのうち、プログラムを出力する。
【００２１】
次に、図１の概念図の動作について説明する。
ここで、第１のメモリ１２は、外部端子１０ａからユーザプログラムを受信して内部メモリ１５に格納するプログラムを、予め記憶しているとする。なお、プログラムに不具合箇所が存在しているとする。また、第２のメモリ１３は、プログラムの不具合箇所だけを修正した、パッチ情報を含むパッチデータを記憶しているとする。
【００２２】
ＣＰＵ１１は、第１のメモリ１２及び第２のメモリ１３に同一のアドレス信号を出力する。そして、データ選択回路１４は、ＣＰＵ１１からのアドレス信号によって第１のメモリ１２及び第２のメモリ１３から出力される、プログラム及びパッチ情報を含むパッチデータの入力を受け付ける。その後、データ選択回路１４は、パッチ情報に基づいて、プログラムまたはパッチデータのうちどちらか一方を出力し、不具合箇所だけが修正されたプログラムを生成する。
【００２３】
ＣＰＵ１１は、データ選択回路１４から出力された修正されたプログラムを実行し、外部端子１０ａから受信したユーザプログラムを内部メモリ１５に格納する。
このようにすると、マイクロコンピュータ１０を製造した時点において、読み出し専用の第１のメモリ１２に格納されたプログラムに不具合箇所が発生した場合でも、不具合箇所を修正できるようになる。
【００２４】
また、読み出し専用の第１のメモリ１２と書換可能な第２のメモリ１３とが存在し、マイクロコンピュータ１０を製造した時点において、読み出し専用の第１のメモリ１２に予めプログラムを記憶できるので、書換可能な第２のメモリ１３に時間をかけてプログラムを書き込む必要はない。
【００２５】
さらに、第１のメモリ１２のプログラムに不具合箇所が存在する場合、プログラムの不具合箇所だけを修正した、パッチ情報を含むパッチデータを第２のメモリ１３に記憶するだけで、データ選択回路１４から修正されたプログラムが出力されるようにしたので、第２のメモリ１３のパッチデータの全部を修正されたプログラムに書き換える必要はなく、プログラムの修正時間を短縮できる。
【００２６】
なお、第１のメモリ１２に記憶されるプログラムは、８ビット単位に限定されない。また、第２のメモリ１３に記憶されるパッチデータは、９ビット単位に限定されない。
［第１の実施の形態］
以下、第１の実施の形態の具体的な内容について説明する。図２は、第１の実施の形態に係るマイクロコンピュータのブロック回路図である。
【００２７】
第１の実施の形態に係るマイクロコンピュータ３０は、ＣＰＵ３１、ＭＰＸ３２、ＲＯＭ３３、ＦＬＡＳＨ３４、セレクタ３５、ＵＡＲＴ３６及びＦＬＡＳＨ３７から構成される。
【００２８】
マイクロコンピュータ３０のＣＰＵ３１は、ユーザプログラムに従ってマイクロコンピュータ３０の内部装置及び外部装置を制御する。このユーザプログラムは、外部端子３０ｄから受信されてＦＬＡＳＨ３７に格納される。このユーザプログラムをＦＬＡＳＨ３７に書き込む際に使用するプログラムは、ＲＯＭ３３及びＦＬＡＳＨ３４から出力される。
【００２９】
ＭＰＸ３２は、ＦＬＡＳＨ３４に出力するアドレス信号について、外部端子３０ｂから入力されたアドレス信号及びＣＰＵ３１から入力されたアドレス信号を受け付ける。そして、ＭＰＸ３２は、外部端子３０ａから入力されたモード信号によって、２つのアドレス信号の中の１つをＦＬＡＳＨ３４に出力する。
【００３０】
ＲＯＭ３３は、外部端子３０ｄからユーザプログラムを受信してＦＬＡＳＨ３７に格納するプログラムを、予め記憶する。また、ＲＯＭ３３と同一のアドレス空間を有し、ＲＯＭ３３と同一のアドレス信号が入力されるＦＬＡＳＨ３４は、プログラムに不具合箇所が存在する場合において、プログラムの不具合箇所を修正した、パッチ符号を含むパッチデータを記憶する。さらに、ＦＬＡＳＨ３７は、ユーザプログラムを格納する。
【００３１】
ここで、ＦＬＡＳＨ３４に記憶されるパッチデータは、例えば、９ビット単位で構成される。このＦＬＡＳＨ３４のパッチデータにおいて、例えば、最上位ビットを除く８ビットは、ＦＬＡＳＨ３４と同一のアドレスにおけるＲＯＭ３３のプログラムの不具合箇所を、修正するデータである。また、例えば、最上位ビットである１ビットは、そのパッチデータを使用するか否かを示す符号である。このパッチデータは、ＣＰＵ３１が実行する命令データ及びＣＰＵ３１が参照する演算データ等を含む。また、ＲＯＭ３３に記憶されるプログラムは、例えば、８ビット単位で構成される。
【００３２】
セレクタ３５は、ＣＰＵ３１からのアドレス信号によってＲＯＭ３３及びＦＬＡＳＨ３４から出力される、８ビットのプログラム及び最上位ビットを除く８ビットのパッチデータの入力を受け付ける。そして、セレクタ３５は、パッチデータの最上位ビットである１ビットに応じてプログラムまたはパッチデータの一方を出力する。つまり、セレクタ３５は、プログラムに不具合箇所が存在する場合において、パッチデータ内のパッチ符号に基づいて、プログラムとパッチデータのうちパッチデータを出力し、不具合箇所が修正されたプログラムを生成する。また、セレクタ３５は、プログラムに不具合箇所が存在しない場合において、パッチデータ内のパッチ符号に基づいて、プログラムとパッチデータのうちプログラムを出力する。
【００３３】
ＵＡＲＴ３６は、RS232C(Recommended Standard 232 version C)に対応し、１本の信号線で１ビットずつデータを伝送するシリアル転送方式によって、外部端子３０ｄから送られてきたシリアル信号をパラレル信号に変換する。
【００３４】
次に、図２のブロック回路図の動作について説明する。
ここで、ＲＯＭ３３は、外部端子３０ｄからＵＡＲＴ３６を介してユーザプログラムを受信してＦＬＡＳＨ３７に格納するプログラムを、予め記憶しているとする。なお、プログラムに不具合箇所が存在しているとする。また、ＦＬＡＳＨ３４は、プログラムの不具合箇所だけを修正した、パッチ符号を含むパッチデータを記憶しているとする。
【００３５】
ＭＰＸ３２は、外部端子３０ａから受信したモード信号により、外部端子３０ｂから入力されたアドレス信号をＦＬＡＳＨ３４に出力する。そして、ＦＬＡＳＨ３４は、外部端子３０ｂから入力されたアドレス信号に基づいて、外部端子３０ｃから受信したパッチデータを記憶する。その後、ＭＰＸ３２は、外部端子３０ａから受信したモード信号により、ＣＰＵ３１から入力されたアドレス信号をＦＬＡＳＨ３４に出力するように切り替わる。
【００３６】
ＣＰＵ３１は、ＭＰＸ３２はＣＰＵ３１から入力されたアドレス信号をＦＬＡＳＨ３４に出力することになっていることを受け、ＲＯＭ３３及びＦＬＡＳＨ３４に同一のアドレス信号を出力する。そして、セレクタ３５は、ＣＰＵ３１からのアドレス信号によってＲＯＭ３３及びＦＬＡＳＨ３４から出力された、プログラム及びパッチ符号を含むパッチデータの入力を受け付ける。さらに、セレクタ３５は、パッチ符号に基づいて、プログラムとパッチデータのうちどちらか一方を出力し、不具合箇所だけが修正されたプログラムを生成する。
【００３７】
ＣＰＵ３１は、セレクタ３５から出力された修正されたプログラムを実行し、外部端子３０ｄからＵＡＲＴ３６を介して受信したユーザプログラムをＦＬＡＳＨ３７に格納する。
【００３８】
以下、第１の実施の形態で実行される処理の概念について、図３を参照して説明する。なお、図３の処理は、ユーザプログラムを受信してＦＬＡＳＨ３７に格納する場合、ＣＰＵ３１からのアドレス信号がＲＯＭ３３及びＦＬＡＳＨ３４に対して存在する場合に実行される。図３のフローチャートが実行されると、以下のステップが実行される。図３は、データ選択処理を示すフローチャートである。
【００３９】
［ステップＳ１１］セレクタ３５は、ＣＰＵ３１からの同一のアドレス信号によってＲＯＭ３３及びＦＬＡＳＨ３４から出力された、プログラム及びパッチデータの入力を受け付ける。
【００４０】
［ステップＳ１２］セレクタ３５は、パッチデータ内のパッチ符号について０か１か判断する。０の場合、処理はステップＳ１３に進む。１の場合、処理はステップＳ１４に進む。
【００４１】
［ステップＳ１３］ステップＳ１２の処理から、パッチ符号は０の場合であり、セレクタ３５は、ＲＯＭ３３のプログラムに不具合箇所が存在するので、ＲＯＭ３３のプログラムをパッチを当ててから出力する。具体的には、同一のアドレスにおいて、不具合箇所とされるＲＯＭ３３のプログラムのデータと、ＦＬＡＳＨ３４のパッチ符号を除くパッチデータとを、８ビット単位で置き換える。
【００４２】
［ステップＳ１４］ステップＳ１２の処理から、パッチ符号は１の場合であり、セレクタ３５は、ＲＯＭ３３のプログラムに不具合箇所が存在しないので、ＲＯＭ３３のプログラムをそのまま出力する。
【００４３】
以下、図３のフローチャートが実行された結果について説明する。図４は、第１の実施の形態のデータ選択結果を示す図である。
データ選択結果１００は、同一のアドレスにおいて、ＲＯＭ３３の８ビット単位のプログラムの入力、ＦＬＡＳＨ３４の９ビット単位のパッチデータの入力、及び、８ビット単位のプログラムの出力を、パッチを当てる前とパッチを当てた後とに分けて示した図である。なお、プログラム及びパッチデータは、１６進数で表現している。また、パッチ符号を除くパッチデータは８ビット単位であり、パッチ符号は１ビット単位である。
【００４４】
例えば、パッチを当てる前の場合、セレクタ３５は、ＲＯＭ３３のプログラムが”５、Ａ”であってＦＬＡＳＨ３４のパッチデータが”１、Ｆ、Ｆ”であるならば、ＲＯＭ３３のプログラムをそのまま出力するので、”５、Ａ”を出力する。また、パッチを当てた後の場合、セレクタ３５は、ＲＯＭ３３のプログラムが”５、Ａ”であってＦＬＡＳＨ３４のパッチデータが”０、６、６”であるならば、ＦＬＡＳＨ３４のパッチデータを出力するので、”６、６”を出力する。
【００４５】
このようにすると、マイクロコンピュータ３０を製造した時点において、ＲＯＭ３３に格納されたプログラムに不具合箇所が発生した場合でも、不具合箇所を修正できるようになる。
【００４６】
また、ＲＯＭ３３の代りにＦＬＡＳＨ３４のみが実装されるシステムと比較した場合、ＲＯＭ３３とＦＬＡＳＨ３４とが存在する本実施の形態ではマイクロコンピュータ３０を製造しＦＬＡＳＨ３４を消去した時点において、ＲＯＭ３３に予めプログラムを記憶できるので、ＦＬＡＳＨ３４に時間をかけてプログラムを書き込む必要はない。
【００４７】
さらに、セレクタ３５から出力されたプログラムに不具合箇所が存在する場合、プログラムの不具合箇所だけを修正した、パッチ符号を含むパッチデータをＦＬＡＳＨ３４に記憶するだけで、セレクタ３５から修正されたプログラムが出力されるようにしたので、ＦＬＡＳＨ３４のパッチデータの全部を修正されたプログラムに書き換える必要はなく、プログラムの修正時間を短縮できる。
【００４８】
なお、ＲＯＭ３３に記憶されるプログラムは、８ビット単位に限定されない。また、ＦＬＡＳＨ３４に記憶されるパッチデータは、９ビット単位に限定されない。
［第２の実施の形態］
以下、第２の実施の形態の具体的な内容について説明する。図５は、第２の実施の形態に係るマイクロコンピュータのブロック回路図である。
【００４９】
第２の実施の形態に係るマイクロコンピュータ５０は、ＣＰＵ５１、ＭＰＸ５２、ＦＬＡＳＨ５３、ＲＯＭ５４、ＩＮＶ５５、ＭＰＸ５６、ＵＡＲＴ５７及びＦＬＡＳＨ５８から構成される。
【００５０】
マイクロコンピュータ５０のＣＰＵ５１は、ユーザプログラムに従ってマイクロコンピュータ５０の内部装置及び外部装置を制御する。このユーザプログラムは、外部端子５０ｄから受信されてＦＬＡＳＨ５８に記憶される。このユーザプログラムをＦＬＡＳＨ５８に書き込む際に使用するプログラムは、ＦＬＡＳＨ５３及びＲＯＭ５４から生成される。
【００５１】
ＭＰＸ５２は、ＦＬＡＳＨ５３に出力するアドレス信号について、外部端子５０ｂから入力されたアドレス信号及びＣＰＵ５１から入力されたアドレス信号を受け付ける。そして、ＭＰＸ５２は、外部端子５０ａから入力されたモード信号によって、２つのアドレス信号の中の１つをＦＬＡＳＨ５３に出力する。
【００５２】
ＦＬＡＳＨ５３は、外部端子５０ｄからユーザプログラムを受信してＦＬＡＳＨ５８に格納するプログラムを生成するためのデータを記憶する。また、ＦＬＡＳＨ５３と同一のアドレス空間を有し、ＦＬＡＳＨ５３と同一のアドレス信号が入力されるＲＯＭ５４は、ＦＬＡＳＨ５３のデータを反転させる反転符号を予め記憶する。さらに、ＦＬＡＳＨ５８は、ユーザプログラムを格納する。
【００５３】
ここで、ＲＯＭ５４に記憶されている反転符号は、例えば、８ビット単位で構成される。ＲＯＭ５４の反転符号の各ビットと、ＲＯＭ５４と同一のアドレスにおけるＦＬＡＳＨ５３のデータの各ビットとは対応し、ＲＯＭ５４のあるビットの反転符号は、ＲＯＭ５４と同一のアドレスにおけるＦＬＡＳＨ５３の対応するビットのデータを反転するか否かを示している。また、ＦＬＡＳＨ５３に記憶されているデータは、例えば、８ビット単位で構成される。
【００５４】
この反転符号は、マイクロコンピュータ５０を製造した時点において、ユーザプログラムをＦＬＡＳＨ５８に書き込む際に使用するプログラムが、ＦＬＡＳＨ５３及びＲＯＭ５４から生成されるように工夫されている。具体的には、マイクロコンピュータ５０を製造した時点において、ＦＬＡＳＨ５３のデータの各ビットは全て”１”であり、それでも適正なプログラムが生成されるように、ＲＯＭ５４の反転符号の各ビットを予め記憶している。
【００５５】
なお、ＦＬＡＳＨ５３のデータをＦとし、ＲＯＭ５４のデータをＲとし、出力されるデータをＰとして式で表すと、
Ｐ＝（Ｆ∩Ｒ）∪（〜Ｆ∩〜Ｒ）
となる。例えば、Ｆが”１”でありＲが”０”である場合、（Ｆ∩Ｒ）は（１∩０）となって”０”であり、（〜Ｆ∩〜Ｒ）は（０∩１）となって”０”であり、Ｐ＝（Ｆ∩Ｒ）∪（〜Ｆ∩〜Ｒ）はＰ＝（０∪０）となって”０”である。
【００５６】
ＭＰＸ５６及びＩＮＶ５５は、図６で詳細に説明するが、ＦＬＡＳＨ５３のデータの各ビットに対して設けられている。つまり、ＦＬＡＳＨ５３のデータ幅を８ビットとすると、ＭＰＸ５６及びＩＮＶ５５は、８個設けられることになる。
【００５７】
ＭＰＸ５６のそれぞれには、ＦＬＡＳＨ５３の各ビットのデータと、このデータをＩＮＶ５５のそれぞれによって反転した各ビットのデータとが入力される。また、ＭＰＸ５６のそれぞれには、ＦＬＡＳＨ５３の各ビットのデータに対応する、ＲＯＭ５４の各ビットの反転符号が入力される。ＭＰＸ５６のそれぞれは、ＲＯＭ５４の各ビットの反転符号に応じて、入力されているＦＬＡＳＨ５３のデータと、入力されているＩＮＶ５５によって反転したデータとの一方を出力する。つまり、ＭＰＸ５６からは、ＲＯＭ５４の反転符号に応じたＦＬＡＳＨ５３のデータが出力される。
【００５８】
ＵＡＲＴ５７は、RS232Cに対応し、１本の信号線で１ビットずつデータを伝送するシリアル転送方式によって、外部端子５０ｄから送られてきたシリアル信号をパラレル信号に変換する。
【００５９】
次に、図５のブロック回路図の動作について説明する。
ここで、ＦＬＡＳＨ５３は、外部端子５０ｄからＵＡＲＴ５７を介してユーザプログラムを受信してＦＬＡＳＨ５８に格納するプログラムを生成するためのデータを記憶しているとする。なお、プログラムに不具合箇所が存在しているとする。また、ＲＯＭ５４は、ＦＬＡＳＨ５３のデータを反転させる反転符号を予め記憶しているとする。
【００６０】
ＭＰＸ５２は、外部端子５０ａから受信したモード信号により、外部端子５０ｂから入力されたアドレス信号をＦＬＡＳＨ５３に出力する。そして、ＦＬＡＳＨ５３は、外部端子５０ｂから入力されたアドレス信号に基づいて、外部端子５０ｃから受信したプログラムの不具合箇所だけを修正するパッチデータを上書きして記憶する。その後、ＭＰＸ５２は、外部端子５０ａから受信したモード信号により、ＣＰＵ５１から入力されたアドレス信号をＦＬＡＳＨ５３に出力するように切り替わる。
【００６１】
ＣＰＵ５１は、ＭＰＸ５２はＣＰＵ５１から入力されたアドレス信号をＦＬＡＳＨ５３に出力することになっていることを受け、ＦＬＡＳＨ５３及びＲＯＭ５４に同一のアドレス信号を出力する。そして、ＦＬＡＳＨ５３のデータの各ビットについて、ＭＰＸ５６は、ＲＯＭ５４の反転符号の各ビットが０の場合、同一のアドレスにおけるＦＬＡＳＨ５３のデータをＩＮＶ５５を介して受け付ける。また、ＦＬＡＳＨ５３のデータの各ビットについて、ＲＯＭ５４の反転符号の各ビットが１の場合、同一のアドレスにおけるＦＬＡＳＨ５３のデータをＩＮＶ５５を介さないで受け付ける。その後、ＭＰＸ５６は、受け付けた８ビット単位のデータから、外部端子５０ｄからユーザプログラムを受信してＦＬＡＳＨ５８に格納する、不具合箇所だけが修正されたプログラムを生成する。
【００６２】
ＣＰＵ５１は、ＭＰＸ５６から出力された修正されたプログラムを実行し、外部端子５０ｄからＵＡＲＴ５７を介して受信したユーザプログラムをＦＬＡＳＨ５８に格納する。
以下、図５におけるＩＮＶ５５及びＭＰＸ５６について、具体的に説明する。図６は、プログラム生成処理を示すブロック回路図である。
【００６３】
第２の実施の形態に係るプログラム生成処理を示すブロック回路図は、ＦＬＡＳＨ５３、ＲＯＭ５４、ＩＮＶ５５ａ０〜７及びＭＰＸ５６ａ０〜７から構成される。
ＦＬＡＳＨ５３及びＲＯＭ５４は前述している。ＩＮＶ５５ａ０〜７は、８ビット分存在し、ＩＮＶ５５ａ０〜７のそれぞれは、データ０〜７のそれぞれを反転してＭＰＸ５６ａ０〜７のそれぞれに出力する。ＭＰＸ５６ａ０〜７は、８ビット分存在し、ＭＰＸ５６ａ０〜７のそれぞれは、反転符号０〜７のそれぞれが１の場合、データ０〜７のそれぞれをそのまま出力し、反転符号０〜７のそれぞれが０の場合、データ０〜７のそれぞれを反転して出力する。
【００６４】
以下、第２の実施の形態で実行される処理の概念について、図７を参照して説明する。なお、図７の処理は、ユーザプログラムを受信してＦＬＡＳＨ５８に格納する場合、ＣＰＵ５１からのアドレス信号がＦＬＡＳＨ５３及びＲＯＭ５４に対して存在する場合に実行される。図７のフローチャートが実行されると、以下のステップが実行される。図７は、プログラム生成処理を示すフローチャートである。
【００６５】
［ステップＳ２１］ＭＰＸ５６は、ＣＰＵ５１からの同一のアドレス信号によってＦＬＡＳＨ５３及びＲＯＭ５４から出力された、８ビットのデータ及び８ビットの反転符号の入力を受け付ける。
【００６６】
［ステップＳ２２］ＭＰＸ５６は、ＲＯＭ５４の８ビットの反転符号についてそれぞれ０か１か判断する。０の場合、処理はステップＳ２３に進む。１の場合、処理はステップＳ２４に進む。
【００６７】
［ステップＳ２３］ステップＳ２２の処理から、反転符号は０の場合であり、ＭＰＸ５６は、ＦＬＡＳＨ５３のビットを反転してから出力する。例えば、１ビットについて説明すると、ＦＬＡＳＨ５３のデータが”０”であり、そのデータに対応するＲＯＭ５４の反転符号が”０”であるならば、ＦＬＡＳＨ５３のデータを反転させるので、”１”を出力する。結果として、８ビットについて説明すると、ＦＬＡＳＨ５３のデータが”０１１００１１０”であり、そのデータに対応するＲＯＭ５４の反転符号が”０１０１１０１０”であるならば、”１１００００１１”を出力する。
【００６８】
［ステップＳ２４］ステップＳ２２の処理から、反転符号は１の場合であり、ＭＰＸ５６は、ＦＬＡＳＨ５３のビットをそのまま出力する。
以下、図７のフローチャートが実行された結果について説明する。図８は、第２の実施の形態のプログラム生成結果を示す図である。
【００６９】
プログラム生成結果２００は、同一のアドレスにおいて、ＦＬＡＳＨ５３の８ビット単位のデータの入力、ＲＯＭ５４の８ビット単位の反転符号の入力、及び、８ビット単位のプログラムの出力を、パッチを当てる前とパッチを当てた後とに分けて示した図である。なお、データ及び反転符号は、１６進数で表現している。
【００７０】
例えば、パッチを当てる前の場合、ＭＰＸ５６は、ＦＬＡＳＨ５３のデータが”１１１１１１１１”であってＲＯＭ５４の反転符号が”０１０１１０１０”であるならば、”０１０１１０１０”を出力する。また、パッチを当てた後の場合、ＭＰＸ５６は、ＦＬＡＳＨ５３のデータが”０１１００１１０”であってＲＯＭ５４の反転符号が”０１０１１０１０”であるならば、”１１００００１１”を出力する。
【００７１】
このようにすると、マイクロコンピュータ５０を製造した時点において、ＭＰＸ５６から出力されたプログラムに不具合箇所が発生した場合でも、不具合箇所を修正できるようになる。
【００７２】
また、ＲＯＭ５４の代りにＦＬＡＳＨ５３のみを実装するシステムと比較した場合、ＦＬＡＳＨ５３とＲＯＭ５４とが存在する本実施の形態では、マイクロコンピュータ５０を製造しＦＬＡＳＨ５３を消去した時点において、ＦＬＡＳＨ５３のデータの各ビットは全て”１”であるが、それでも適正なプログラムが生成されるようにＲＯＭ５４の反転符号の各ビットを予め記憶できるので、ＦＬＡＳＨ５３に時間をかけてデータを書き込む必要はない。
【００７３】
さらに、ＭＰＸ５６から出力されたプログラムに不具合箇所が存在する場合、プログラムの不具合箇所だけを修正した、パッチデータをＦＬＡＳＨ５３に上書きして記憶するだけで、ＭＰＸ５６から修正されたプログラムが出力されるようにしたので、ＦＬＡＳＨ５３のデータの全部を修正されたデータに書き換える必要はなく、データの書換時間を短縮できる。
【００７４】
なお、ＦＬＡＳＨ５３に記憶されるデータは、８ビット単位に限定されない。また、ＲＯＭ５４に記憶される反転符号は、８ビット単位に限定されない。
（付記１）  ユーザプログラムを内部に記憶するマイクロコンピュータにおいて、
プログラムを予め記憶する読み出し専用の第１のメモリと、
前記第１のメモリと同一のアドレス空間を有し、前記第１のメモリと同一のアドレス信号が入力される、前記プログラムの不具合箇所を修正したパッチデータを記憶する書換可能な第２のメモリと、
前記アドレス信号によって出力される前記プログラムと前記パッチデータとが入力され、前記第２のメモリの前記パッチデータの記憶内容に基づいて一方を出力するデータ選択回路と、
を有することを特徴とするマイクロコンピュータ。
【００７５】
（付記２）  前記パッチデータは、パッチ情報を含み、前記データ選択回路は、前記パッチ情報に基づいて、前記プログラムと前記パッチデータとの一方を出力することを特徴とする付記１記載のマイクロコンピュータ。
【００７６】
（付記３）  前記パッチデータのパッチデータ幅は、前記プログラムのデータ幅より冗長データ幅分大きく、前記パッチ情報は、前記冗長データ幅に格納されることを特徴とする付記１記載のマイクロコンピュータ。
【００７７】
（付記４）  前記パッチデータは、０もしくは１の前記パッチ情報を含み、前記データ選択回路は、前記パッチ情報が１の場合前記プログラムを出力し、前記パッチ情報が０の場合前記パッチデータを出力することを特徴とする付記３記載のマイクロコンピュータ。
【００７８】
（付記５）  前記プログラム及び前記パッチデータを実行し、前記アドレス信号を出力する中央演算処理装置を有することを特徴とする付記１記載のマイクロコンピュータ。
（付記６）  前記中央演算処理装置は、前記ユーザプログラムを実行することを特徴とする付記５記載のマイクロコンピュータ。
【００７９】
（付記７）  前記第２のメモリは、フラッシュメモリであることを特徴とする付記１記載のマイクロコンピュータ。
（付記８）  ユーザプログラムを内部に記憶するマイクロコンピュータにおいて、
第１のデータを予め記憶する読み出し専用の第１のメモリと、
前記第１のメモリと同一のアドレス空間を有し、前記第１のメモリと同一のアドレス信号が入力される、第２のデータを記憶する書換可能な第２のメモリと、
前記アドレス信号によって出力される前記第１のデータと前記第２のデータとによって、外部から前記ユーザプログラムを受信し、内部メモリに格納するプログラムを生成するプログラム生成回路と、
を有することを特徴とするマイクロコンピュータ。
【００８０】
（付記９）  前記第１のメモリの前記第１のデータの各ビットと、前記第１のメモリと同一のアドレスにおける前記第２のメモリの前記第２のデータの各ビットとは対応し、前記第１のメモリの前記第１のデータの各ビットは、前記第１のメモリと同一のアドレスにおける前記第２のメモリの前記第２のデータの各ビットを反転するか否かを示す反転符号であることを特徴とする付記８記載のマイクロコンピュータ。
【００８１】
（付記１０）  前記第２のメモリは、フラッシュメモリであることを特徴とする付記８記載のマイクロコンピュータ。
【図面の簡単な説明】
【００８２】
【図１】本発明の概念図である。
【図２】第１の実施の形態に係るマイクロコンピュータのブロック回路図である。
【図３】データ選択処理を示すフローチャートである。
【図４】第１の実施の形態のデータ選択結果を示す図である。
【図５】第２の実施の形態に係るマイクロコンピュータのブロック回路図である。
【図６】プログラム生成処理を示すブロック回路図である。
【図７】プログラム生成処理を示すフローチャートである。
【図８】第２の実施の形態のプログラム生成結果を示す図である。
【符号の説明】
【００８３】
１０  マイクロコンピュータ
１１  ＣＰＵ
１２  第１のメモリ
１３  第２のメモリ
１４  データ選択回路
１５  内部メモリ
【図１】
2006178829.tif 000003
【図２】
2006178829.tif 000004
【図３】
2006178829.tif 000005
【図４】
2006178829.tif 000006
【図５】
2006178829.tif 000007
【図６】
2006178829.tif 000008
【図７】
2006178829.tif 000009
【図８】
2006178829.tif 000010