(57)【特許請求の範囲】
【請求項１】
書き換え不能な第１メモリと書き換え可能な不揮発性の第２メモリを有し外部機器に接続されるマイクロプロセッサであって、
複数種類の割り込みで処理する複数のプログラムの前記第１メモリにおけるアドレスをベクタ毎に格納した第１割り込みベクタテーブルと、前記第１割り込みベクタテーブルの各ベクタの示すアドレスに処理プログラムを格納する領域とを前記第１メモリに設け、
前記第１割り込みベクタテーブルと同一の前記複数のプログラムの前記第１メモリにおけるアドレスを格納する第２割り込みベクタテーブルを前記第２メモリに設け、
前記第１割り込みベクタテーブルをアクセスするアドレスを前記第２割り込みベクタテーブルをアクセスするアドレスに変換するアドレス変換手段と、
前記外部機器から供給される命令により、前記第２割り込みベクタテーブルの任意ベクタのアドレスと前記任意ベクタの示すアドレスに格納する処理プログラムとを前記第２メモリに書き込む書き込み手段を、
有し、
前記第１メモリは、前記外部機器から供給される命令を実行する処理プログラムを格納し、
前記外部機器から前記第２メモリに書き込みを行う際に、前記アドレス変換手段のアドレス変換を停止する、
ことを特徴とするマイクロプロセッサ。
【請求項２】
請求項１記載のマイクロプロセッサにおいて、
前記第１メモリは、前記第１メモリに格納されたデータの検証用データを格納する、
ことを特徴とするマイクロプロセッサ。
【請求項３】
請求項１又は２記載のマイクロプロセッサにおいて、
前記第２メモリは、前記第２メモリに格納されたデータの検証用データを格納する、
ことを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え不能な第１メモリと書き換え可能な不揮発性の第２メモリを有するマイクロプロセッサに関する。
【背景技術】
【０００２】
マイクロプロセッサにおける割り込みには、ハードウェア割り込みとソフトウェア割り込みがあり、割り込みベクタによって、どのような割り込みが発生したかが分かるようにされている。割り込みの発生要因によって実行される処理はマイクロプロセッサのシステムによって決められている。
【０００３】
割り込みが発生した場合に処理するプログラムの先頭アドレスを格納した対応表を割り込みベクタテーブルと呼び、割り込みベクタテーブルの内容によって割り込みに対応した処理プログラムが実行される。
【０００４】
従来のマイクロプロセッサでは、図７（Ａ）に示すように、プログラムメモリとして、書き換え不能なマスクＲＯＭ又は書き換え可能な不揮発性メモリであるフラッシュＲＯＭのどちらかを搭載している。また、図７（Ｂ）に示すように、プログラムメモリとして、マスクＲＯＭとフラッシュＲＯＭを備えたものも考えられている。図７（Ａ），（Ｂ）のいずれの場合にも、通常はメモリの先頭の領域に割り込みベクタテーブルが割り当てられている。
【０００５】
ところで、フラッシュメモリを書き換えるためのファームウェアと、クロック同期式通信方式に対応するクロック同期シリアルインタフェース（ＣＳＩ：Ｃｌｏｃｋｅｄ
Ｓｉｒｉａｌ Ｉｎｔｅｒｆａｃｅ）の動作の制御プログラムとを設定する割込ベクタを格納したＲＯＭと、後述の通信手段の動作の制御プログラム又は少なくともこの制御プログラムを設定する割込ベクタを格納したＲＯＭと、通常動作モードのとき内蔵する複数の周辺回路から送られてくる割込要求信号の優先順序を制御してＣＰＵに通知すると共に、書き換えモードのときこの書き換えモード設定に連動した書き換えモード信号の供給に応答して入力されたＣＳＩからの割込要求信号を最優先順位に変更してＣＰＵに通知する技術が提案されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−４３２０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
プログラムメモリがマスクＲＯＭの場合、製品出荷後のプログラム変更が不可能なため、マスクＲＯＭのプログラムに不具合が見つかった場合は、製品の回収及びマスクＲＯＭの作り直し等に膨大な時間と費用がかかるという問題があった。
【０００８】
プログラムメモリがフラッシュＲＯＭの場合、意図していないプログラムの誤動作や、書き込み中の電源オフ等の異常発生により、記録された内容が消去されてしまう場合がある。このとき、フラッシュＲＯＭの書き込みプログラム（更新プログラム）が消去された場合には、以後、フラッシュＲＯＭの更新が一切できなくなるという問題があった。
【０００９】
プログラムメモリがマスクＲＯＭとフラッシュＲＯＭを備えている場合も、通常はマスクＲＯＭの領域に割り込みベクタテーブル情報が記録されるため、フラッシュＲＯＭに格納するプログラムの作成に大きな制限が発生すると共に、マスクＲＯＭのプログラムに見つかった不具合に対する対策を取ることがでないという問題があった。
【００１０】
本発明は上記の点に鑑みてなされたもので、書き換え不能なメモリに格納した割り込み処理プログラムを変更できるマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一実施態様によるマイクロプロセッサは、書き換え不能な第１メモリ（１３）と書き換え可能な不揮発性の第２メモリ（１４）を有し外部機器（３０）に接続されるマイクロプロセッサ（１０）であって、
複数種類の割り込みで処理する複数のプログラムの前記第１メモリにおけるアドレスをベクタ毎に格納した第１割り込みベクタテーブルと、前記第１割り込みベクタテーブルの各ベクタの示すアドレスに処理プログラムを格納する領域とを前記第１メモリ（１３）に設け、
前記第１割り込みベクタテーブルと同一の前記複数のプログラムの前記第１メモリにおけるアドレスを格納する第２割り込みベクタテーブルを前記第２メモリ（１４）に設け、
前記第１割り込みベクタテーブルをアクセスするアドレスを前記第２割り込みベクタテーブルをアクセスするアドレスに変換するアドレス変換手段（２２）と、
前記外部機器（３０）から供給される命令により、前記第２割り込みベクタテーブルの任意ベクタのアドレスと前記任意ベクタの示すアドレスに格納する処理プログラムとを前記第２メモリ（１４）に書き込む書き込み手段（４３）を有し、
前記第１メモリ（１３）は、前記外部機器（３０）から供給される命令を実行する処理プログラムを格納し、
前記外部機器（３０）から前記第２メモリ（１４）に書き込みを行う際に、前記アドレス変換手段のアドレス変換を停止する。
【００１３】
好ましくは、前記第１メモリ（１３）は、前記第１メモリ（１３）に格納されたデータの検証用データを格納する。
【００１４】
好ましくは、前記第２メモリ（１４）は、前記第２メモリ（１４）に格納されたデータの検証用データを格納する。
【００１５】
なお、上記括弧内の参照符号は、理解を容易にするために付したものであり、一例にすぎず、図示の態様に限定されるものではない。
【発明の効果】
【００１６】
本発明によれば、書き換え不能なメモリに格納した割り込み処理プログラムを変更することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明のマイクロプロセッサの一実施形態の構成図である。
【図２】マイクロプロセッサにおけるメモリのアドレス割り付けの一実施形態を示す図である。
【図３】割り込みベクタ切り換え回路の一実施形態の構成図である。
【図４】本実施形態におけるマスクＲＯＭとフラッシュＲＯＭのアドレス割り付けを示す図である。
【図５】従来における一般的なマスクＲＯＭとフラッシュＲＯＭのアドレス割り付けを示す図である。
【図６】ＣＰＵが実行する処理の一実施形態のフローチャートである。
【図７】従来のマイクロプロセッサにおけるメモリのアドレス割り付けの一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面に基づいて本発明の実施形態について説明する。
【００１９】
＜マイクロプロセッサの構成＞
図１は本発明のマイクロプロセッサの一実施形態の構成図を示す。図１において、マイクロプロセッサ１０は、ＣＰＵ（中央処理装置）１１、ＲＡＭ１２、マスクＲＯＭ１３、フラッシュＲＯＭ１４、タイマ１５、通信回路１６を有し、更に、エッジ検出回路１７、ＡＤコンバータ（ＡＤＣ）１８、ＤＡコンバータ（ＤＡＣ）１９、割り込みコントローラ２０等を有しており、エッジ検出回路１７を除くこれらの回路は内部バス２１により相互に接続されている。
【００２０】
また、内部バス２１とマスクＲＯＭ１３及びフラッシュＲＯＭ１４の間には割り込みベクタ切り換え回路２２が設けられている。なお、マスクＲＯＭ１３は書き換え不能であり、フラッシュＲＯＭ１４は書き換え可能な不揮発性メモリである。また、内部バス２１はアドレスバス、データバス、コントロールバスを有している。更に、マイクロプロセッサ１０にはリセット端子２３が設けられている。
【００２１】
ＣＰＵ１１はマスクＲＯＭ１３及びフラッシュＲＯＭ１４に格納されている処理プログラムを実行する。このとき、ＲＡＭ１２が作業領域として使用される。タイマ１５はクロックをカウントして所定のタイミング信号を生成し、例えば一部のタイミング信号を割り込み信号として割り込みコントローラ２０に供給する。
【００２２】
通信回路１６は例えば上位装置やパーソナルコンピュータ等の外部機器３０との間で通信を行う。エッジ検出回路１７は外部機器３０と通信回路１６との間の通信信号のエッジを検出し、エッジ検出信号を割り込み信号として割り込みコントローラ２０に供給する。
【００２３】
ＡＤコンバータ１８は外部から供給されるアナログ信号をデジタル化して例えばＣＰＵ１１に供給する。ＤＡコンバータ１９は例えばＣＰＵ１１から供給されるデジタル信号をアナログ化して外部に出力する。割り込みコントローラ２０はタイマ１５、エッジ検出回路１７等から供給される割り込み信号の優先度制御を行ってＣＰＵ１１に供給する。
【００２４】
図２にマイクロプロセッサ１０におけるメモリのアドレス割り付けの一実施形態を示す。マイクロプロセッサ１０は、常時、外部機器３０と通信が発生するか又は必要に応じて外部機器３０と通信を行う製品を前提としている。マイクロプロセッサ１０は電源投入後にＣＰＵ１１がマスクＲＯＭ１３に格納されたプログラムを実行できる環境とするため、利用するＣＰＵ１１の仕様にあわせてマスクＲＯＭ１３のメモリ配置を行っている。
【００２５】
このため、図２では、メモリの先頭にマスクＲＯＭ１３、次にフラッシュＲＯＭ１４、次にＲＡＭ１２、その後にタイマ１５〜割り込みコントローラ２０等の内蔵入力出力装置（Ｉ／Ｏ）を配置している。
【００２６】
＜割り込みベクタ切り換え回路の構成＞
図３は割り込みベクタ切り換え回路２２の一実施形態の構成図を示す。本実施形態では、割り込みが発生した際にＣＰＵ１１が参照する割り込みベクタテーブルとして、マスクＲＯＭ１３の割り込みベクタテーブルを参照させるのか、フラッシュＲＯＭ１４の割り込みベクタテーブルを参照させるのかを切り替える割り込みベクタ切り換え回路２２を設けている。
【００２７】
図３において、割り込みベクタ切り換え回路２２はレジスタ３２とアドレス変換回路３１とセレクト信号生成回路３３を有している。レジスタ３２はＣＰＵ１１から値０又は値１を設定されて保持する。ここで、ＣＰＵ１１はマスクＲＯＭ１３の割り込みベクタテーブルを参照させるときに例えば値０を設定し、フラッシュＲＯＭ１４の割り込みベクタテーブルを参照させるときに値１を設定する。
【００２８】
アドレス変換回路３１はレジスタ３２の内容を供給されると共にＣＰＵ１１から内部バス２１を介してアドレスを供給される。アドレス変換回路３１はレジスタ３２から値０を供給されていれば、アドレス変換を停止してＣＰＵ１１から供給されるアドレスをそのまま出力する。
【００２９】
また、レジスタ３２から値１を供給されていれば、アドレス変換を実行してＣＰＵ１１から供給されるアドレスの例えば上位８ビットを例えば０ｘ４０（０ｘは１６進表示を示す）に変更して出力する。このアドレス変換回路３１の出力アドレスはセレクト信号生成回路３３、マスクＲＯＭ１３、フラッシュＲＯＭ１４のそれぞれに供給される。
【００３０】
このアドレスの上位８ビットの変更はマスクＲＯＭ１３の割り込みベクタテーブル４１のアドレスをフラッシュＲＯＭ１４の割り込みベクタテーブル５１のアドレスに変更するための変換であり、マイクロプロセッサのシステムにおけるアドレス体系により変換ビット数や変換する値は様々に異なっても良い。
【００３１】
セレクト信号生成回路３３はアドレス変換回路３１の出力アドレスの例えば上位４ビットからマスクＲＯＭ１３の参照かフラッシュＲＯＭ１４の参照かを判別して、マスクＲＯＭ１３の参照時にはマスクＲＯＭ１３を選択するセレクト信号（フラッシュＲＯＭ１４は非選択）を生成してマスクＲＯＭ１３に供給し、フラッシュＲＯＭ１４の参照時にはフラッシュＲＯＭ１４を選択するセレクト信号（マスクＲＯＭ１３は非選択）を生成してフラッシュＲＯＭ１４に供給する。
【００３２】
図４に本実施形態におけるマスクＲＯＭ１３とフラッシュＲＯＭ１４のアドレス割り付けを示す。図４において、マスクＲＯＭ１３のアドレスは０ｘ００００〜０ｘ３ＦＦＦに割り付けられ、フラッシュＲＯＭ１４のアドレスは０ｘ４０００〜０ｘ６ＦＦＦに割り付けられている。
【００３３】
マスクＲＯＭ１３の先頭領域である例えばアドレス０ｘ００００〜０ｘ００ＦＦの領域に割り込みベクタテーブル４１が配置される。マスクＲＯＭ１３の割り込みベクタテーブル４１には例えば割り込みベクタ０〜割り込みベクタ１５が割り当てられており、例えば割り込みベクタ０の値は割り込みベクタ０の処理プログラムの先頭アドレスである０ｘ０１００が設定され、割り込みベクタ１の値は割り込みベクタ１の処理プログラムの先頭アドレスである０ｘ０２００が設定され、割り込みベクタ１５の値は割り込みベクタ１５の処理プログラムの先頭アドレスである０ｘ１０００が設定されている。なお、図中では「割り込みベクタ」を単に「ベクタ」と表示している。
【００３４】
ここで、割り込み発生要因としては、電源投入、ＡＤコンバータ１８の変換完了、タイマ１５による規定時間の経過、通信回路１６による送信又は受信の完了、リセット端子２３からのリセット信号入力等のハードウェア割り込みや、各種のソフトウェア割り込みがある。
【００３５】
マスクＲＯＭ１３のアドレス０ｘ０１００〜０ｘ０１ＦＦには割り込みベクタ０の処理プログラム４２−０が格納され、アドレス０ｘ０２００〜０ｘ０２ＦＦには割り込みベクタ１の処理プログラム４２−１が格納され、同様にして、アドレス０ｘ１０００〜０ｘ１０ＦＦには割り込みベクタ１５の処理プログラム４２−１５が格納されている。
【００３６】
マスクＲＯＭ１３のアドレス０ｘ１１００以降にも各種プログラムやデータが格納されており、更に、マスクＲＯＭ１３の例えば最後尾のアドレス０ｘ３５００〜０ｘ３ＦＦＦにフラッシュＲＯＭ書き込みプログラム４３が格納されている。フラッシュＲＯＭ書き込みプログラム４３はフラッシュＲＯＭ１４に対してデータを書き込み、消去し、検証するプログラムである。
【００３７】
フラッシュＲＯＭ１４の先頭領域である例えばアドレス０ｘ４０００〜０ｘ４０ＦＦの領域に割り込みベクタテーブル５１が配置される。製造時にはフラッシュＲＯＭ１４の割り込みベクタテーブル５１はマスクＲＯＭ１３の割り込みベクタテーブルと同一構成である。
【００３８】
すなわち、フラッシュＲＯＭ１４の割り込みベクタテーブル５１には例えば割り込みベクタ０〜割り込みベクタ１５が割り当てられており、例えば割り込みベクタ０の値は割り込みベクタ０の処理プログラムの先頭アドレスである０ｘ０１００が設定され、割り込みベクタ１の値は０ｘ０２００が設定されており、割り込みベクタ１５の値は０ｘ１０００が設定されている。
【００３９】
フラッシュＲＯＭ１４のアドレス０ｘ４１００〜０ｘ６１ＦＦには各種プログラムやデータが格納されており、例えばフラッシュＲＯＭ１４のアドレス０ｘ６２００以降は製造時には未使用とされている。ところで、図４においてはフラッシュＲＯＭ１４の割り込みベクタ１の値が０ｘ６２００となっているのは、後で更新された値を示しており、製造時には０ｘ０２００が設定されている。
【００４０】
なお、マスクＲＯＭ１３とフラッシュＲＯＭ１４とを比較すると、単位面積当たりのデータ容量はマスクＲＯＭ１３の方が大きいために、割り込みベクタ０〜１５の処理プログラムを含む各種プログラムはマスクＲＯＭ１３に格納している。
【００４１】
図５に従来における一般的なマスクＲＯＭ１３とフラッシュＲＯＭ１４のアドレス割り付けを示す。図５において、マスクＲＯＭ１３の先頭領域である例えばアドレス０ｘ００００〜０ｘ００ＦＦの領域に割り込みベクタテーブルが配置される。
【００４２】
マスクＲＯＭ１３の割り込みベクタテーブルには例えば割り込みベクタ０〜割り込みベクタ１５が割り当てられており、例えば割り込みベクタ０の値は割り込みベクタ０の処理プログラムの先頭アドレスである０ｘ０１００が設定され、割り込みベクタ１の値は割り込みベクタ１の処理プログラムの先頭アドレスである０ｘ０２００が設定され、割り込みベクタ１５の値は割り込みベクタ１５の処理プログラムの先頭アドレスである０ｘ１０００が設定されている。
【００４３】
マスクＲＯＭ１３のアドレス０ｘ０１００〜０ｘ０１ＦＦには割り込みベクタ０の処理プログラムが格納され、アドレス０ｘ０２００〜０ｘ０２ＦＦには割り込みベクタ０の処理プログラムが格納され、同様にして、アドレス０ｘ１０００〜０ｘ１０ＦＦには割り込みベクタ１５の処理プログラムが格納されている。
【００４４】
マスクＲＯＭ１３のアドレス０ｘ１１００以降には各種プログラムが格納されている。フラッシュＲＯＭ１４には割り込みベクタテーブルは配置されておらず、フラッシュＲＯＭ１４のアドレス０ｘ４０００〜０ｘ６ＦＦＦには各種プログラムが格納されている。
【００４５】
＜リセット処理のフローチャート＞
図６はＣＰＵ１１が実行する処理の一実施形態のフローチャートを示す。この処理はマイクロプロセッサ１０の電源オン時に図示しない回路でリセット信号が生成されたとき又はリセット端子２３にローレベルのリセット信号が供給されたときに、割り込みコントローラ２０の制御によりＣＰＵ１１が実行を開始する。
【００４６】
図６において、ステップＳ１１でＣＰＵ１１はレジスタ３２に値０を設定し、割り込みベクタとしてマスクＲＯＭ１３を選択する。次に、ステップＳ１２でマスクＲＯＭ１３の全領域のデータ検証を行う。ここでは、例えばマスクＲＯＭ１３の全領域から読み出した全データのチェックサムを算出し、マスクＲＯＭ１３の特定領域に予め書き込んでおいたチェックサム値と比較する。
【００４７】
そして、ステップＳ１３でマスクＲＯＭ１３の全領域から読み出した全データから算出したチェックサムと特定領域のチェックサム値が一致の場合にマスクＲＯＭ１３は正常、不一致の場合にマスクＲＯＭ１３は異常と判別する。異常の場合には動作不可として処理を終了する。
【００４８】
マスクＲＯＭ１３が正常の場合にはステップＳ１４でフラッシュＲＯＭ１４の全領域のデータ検証を行う。ここでは、例えばフラッシュＲＯＭ１４の全領域から読み出した全データのチェックサムを算出し、フラッシュＲＯＭ１４の特定領域に予め書き込んでおいたチェックサム値と比較する。そして、ステップＳ１５でフラッシュＲＯＭ１４の全領域から読み出した全データから算出したチェックサムと特定領域のチェックサム値が一致の場合にフラッシュＲＯＭ１４は正常、不一致の場合にフラッシュＲＯＭ１４は異常と判別する。
【００４９】
フラッシュＲＯＭ１４が異常の場合には後述のステップＳ３０に進む。フラッシュＲＯＭ１４が正常な場合にはステップＳ１６でＣＰＵ１１はレジスタ３２に値１を設定し、割り込みベクタとしてフラッシュＲＯＭ１４を選択する。次に、ステップＳ１７で正常時の初期化処理を実行し、以降、正常時の処理を実行する。
【００５０】
すなわち、ステップＳ１８で外部機器３０から通信データを受信したか否かを判別する。通信データを受信した場合には通信データの内容に従い、例えば通信データがコマンドＡであればステップＳ１９でコマンドＡの処理を実行し、通信データがコマンドＸであればステップＳ２０でコマンドＸの処理を実行し、通信データがフラッシュＲＯＭ更新モードへの移行コマンドであればステップＳ３０に進む。
【００５１】
ステップＳ１８で通信データを受信していない場合にはステップＳ２１〜Ｓ２２において正常時の処理＃１〜＃ｎをそれぞれ実行してステップＳ１８に進む。
【００５２】
一方、ステップＳ３０ではＣＰＵ１１はフラッシュＲＯＭ更新の初期化処理を実行する。具体的には通信回路１６の初期化を行い、また、レジスタ３２に値０を設定して割り込みベクタとしてマスクＲＯＭ１３を選択する。これ以降、フラッシュＲＯＭ更新処理を実行する。
【００５３】
すなわち、ステップＳ３１で外部機器３０から通信データを受信したか否かを判別する。通信データを受信した場合には通信データの内容に従い、例えば通信データがイレーズコマンドであればステップＳ３２でフラッシュＲＯＭ１４のコマンドで指定された領域についてイレーズ処理（消去処理）を実行し、通信データが書き込みコマンドであればステップＳ３３でフラッシュＲＯＭ１４のコマンドで指定された領域についてデータを書き込む書き込み処理を実行する。
【００５４】
また、外部機器３０はフラッシュＲＯＭ更新が終了すると再起動コマンドを送信する。このため、通信データが再起動コマンドであればＣＰＵ１１はステップＳ３４で再起動を行う。これにより図６の処理がステップＳ１１から実行される。なお、上記のステップＳ３０〜Ｓ３４それぞれの処理はマスクＲＯＭ１３の割り込みベクタテーブル４１を用いて実行されるソフトウェア割り込みである。
【００５５】
ところで、ステップＳ１２，Ｓ１４ではチェックサムを用いてデータ検証を行っているが、この他に、ＣＲＣやパリティ等の他の検証方法を用いても良く、上記実施形態に限定されるものではない。
【００５６】
ここで、図４の割り込みベクタテーブル４１，５１の割り込みベクタ１に登録されているアドレス０ｘ０２００〜０ｘ０２ＦＦに格納されている割り込みベクタ１の処理プログラム４２−１に不具合が見つかった場合、この場所はマスクＲＯＭ領域であるために修正が不可能である。この場合、外部機器３０からマイクロプロセッサ１０にフラッシュＲＯＭ更新モードへの移行コマンドを送信する。
【００５７】
そして、ＣＰＵ１１にステップＳ３０〜Ｓ３４を実行させることで、図４に示すように、フラッシュＲＯＭ１４の割り込みベクタテーブル５１における割り込みベクタ１の値を例えば０ｘ６２００に書き換える。
【００５８】
更に、フラッシュＲＯＭ１４の例えばアドレス０ｘ６２００〜０ｘ６２ＦＦに割り込みベクタ１の修正した処理プログラム５２−１を書き込む。更に、フラッシュＲＯＭ１４の全領域から全データを読み出してチェックサムを算出し、フラッシュＲＯＭ１４の特定領域に算出したチェックサム値を書き込む。
【００５９】
こののち、ステップＳ１８〜Ｓ２２において正常時の通信データ受信や処理＃１〜＃ｎで割り込みベクタ０〜１５の処理プログラムを実行する場合は、割り込みベクタとしてフラッシュＲＯＭ１４の割り込みベクタテーブル５１を参照するため、割り込みベクタ１の処理を実行する際にはフラッシュＲＯＭ１４の修正した処理プログラムが実行される。
【００６０】
同様に、マスクＲＯＭ１３に格納される割り込み処理プログラム以外のプログラムについても、ベクタアドレスを参照するソフトウェア割り込みとすることで、不具合を解消することが可能となる。
【００６１】
もちろん不具合対策のみでなく、機能向上や新規機能追加のために割り込み処理内容を変更する必要が発生した場合においても、同様の対策を行うことができ、製品出荷後に機能向上が図れるという点で製品価値を高めることが可能となる。
【００６２】
また、フラッシュＲＯＭ書き込みプログラム４３はマスクＲＯＭ１３に格納されているため、静電気等の外的要因で破壊されることはない。このため、フラッシュＲＯＭ１４に格納されているプログラムやデータが静電気等の外的要因や不正な書き込み又は消去等で書き換えられ障害が発生した場合においても、タイマ１５によるウォッチドッグタイマ機能等によりリセットが発生する。
【００６３】
そして、ステップＳ１５からステップＳ３０に進むことにより、データが破壊されることのないマスクＲＯＭ１３のフラッシュＲＯＭ書き込みプログラム４３を起動することができ、外部機器３０からのフラッシュＲＯＭ１４のデータの書き換えを行うことが可能となり、正常な状態に復帰することが可能となる。
【００６４】
更に、マスクＲＯＭ１３とフラッシュＲＯＭ１４に別々の割り込みベクタテーブル４１，５１を持つことができるため、マスクＲＯＭ１３に格納するプログラムとフラッシュＲＯＭ１４に格納するプログラムでまったく別の割り込み処理を行わせることも可能となる。
【符号の説明】
【００６５】
１０  マイクロプロセッサ
１１  ＣＰＵ
１２  ＲＡＭ
１３  マスクＲＯＭ
１４  フラッシュＲＯＭ
１５  タイマ
１６  通信回路
１７  エッジ検出回路
１８  ＡＤコンバータ
１９  ＤＡコンバータ
２０  割り込みコントローラ
２１  内部バス
２２  割り込みベクタ切り換え回路
２３  リセット端子
３０  外部機器
３１  アドレス変換回路
３２  レジスタ
３３  セレクト信号生成回路
４１，５１  割り込みベクタテーブル
４３  フラッシュＲＯＭ書き込みプログラム
４２−０〜４２−１５，５２−１  処理プログラム
【図１】
0005720206.tif 000002
【図２】
0005720206.tif 000003
【図３】
0005720206.tif 000004
【図４】
0005720206.tif 000005
【図５】
0005720206.tif 000006
【図６】
0005720206.tif 000007
【図７】
0005720206.tif 000008