説明

マイクロプロセッサ

【課題】書き換え不能なメモリに格納した割り込み処理プログラムを変更できることを目的とする。
【解決手段】複数種類の割り込みで処理する複数のプログラムのアドレスをベクタ毎に格納した第1割り込みベクタテーブルと、第1割り込みベクタテーブルの各ベクタの示すアドレスに処理プログラムを格納する領域とを第1メモリ13に設け、第1割り込みベクタテーブルと同一内容の第2割り込みベクタテーブルを第2メモリ14に設け、第1割り込みベクタテーブルをアクセスするアドレスを第2割り込みベクタテーブルをアクセスするアドレスに変換するアドレス変換手段22を有し、外部機器30から供給される命令により、第2割り込みベクタテーブルの任意ベクタのアドレスと任意ベクタの示すアドレスに格納する処理プログラムとを第2メモリ14に書き込む書き込み手段43を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、書き換え不能な第1メモリと書き換え可能な不揮発性の第2メモリを有するマイクロプロセッサに関する。
【背景技術】
【0002】
マイクロプロセッサにおける割り込みには、ハードウェア割り込みとソフトウェア割り込みがあり、割り込みベクタによって、どのような割り込みが発生したかが分かるようにされている。割り込みの発生要因によって実行される処理はマイクロプロセッサのシステムによって決められている。
【0003】
割り込みが発生した場合に処理するプログラムの先頭アドレスを格納した対応表を割り込みベクタテーブルと呼び、割り込みベクタテーブルの内容によって割り込みに対応した処理プログラムが実行される。
【0004】
従来のマイクロプロセッサでは、図7(A)に示すように、プログラムメモリとして、書き換え不能なマスクROM又は書き換え可能な不揮発性メモリであるフラッシュROMのどちらかを搭載している。また、図7(B)に示すように、プログラムメモリとして、マスクROMとフラッシュROMを備えたものも考えられている。図7(A),(B)のいずれの場合にも、通常はメモリの先頭の領域に割り込みベクタテーブルが割り当てられている。
【0005】
ところで、フラッシュメモリを書き換えるためのファームウェアと、クロック同期式通信方式に対応するクロック同期シリアルインタフェース(CSI:Clocked
Sirial Interface)の動作の制御プログラムとを設定する割込ベクタを格納したROMと、後述の通信手段の動作の制御プログラム又は少なくともこの制御プログラムを設定する割込ベクタを格納したROMと、通常動作モードのとき内蔵する複数の周辺回路から送られてくる割込要求信号の優先順序を制御してCPUに通知すると共に、書き換えモードのときこの書き換えモード設定に連動した書き換えモード信号の供給に応答して入力されたCSIからの割込要求信号を最優先順位に変更してCPUに通知する技術が提案されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001−43206号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
プログラムメモリがマスクROMの場合、製品出荷後のプログラム変更が不可能なため、マスクROMのプログラムに不具合が見つかった場合は、製品の回収及びマスクROMの作り直し等に膨大な時間と費用がかかるという問題があった。
【0008】
プログラムメモリがフラッシュROMの場合、意図していないプログラムの誤動作や、書き込み中の電源オフ等の異常発生により、記録された内容が消去されてしまう場合がある。このとき、フラッシュROMの書き込みプログラム(更新プログラム)が消去された場合には、以後、フラッシュROMの更新が一切できなくなるという問題があった。
【0009】
プログラムメモリがマスクROMとフラッシュROMを備えている場合も、通常はマスクROMの領域に割り込みベクタテーブル情報が記録されるため、フラッシュROMに格納するプログラムの作成に大きな制限が発生すると共に、マスクROMのプログラムに見つかった不具合に対する対策を取ることがでないという問題があった。
【0010】
本発明は上記の点に鑑みてなされたもので、書き換え不能なメモリに格納した割り込み処理プログラムを変更できるマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の一実施態様によるマイクロプロセッサは、書き換え不能な第1メモリ(13)と書き換え可能な不揮発性の第2メモリ(14)を有し外部機器(30)に接続されるマイクロプロセッサ(10)であって、
複数種類の割り込みで処理する複数のプログラムのアドレスをベクタ毎に格納した第1割り込みベクタテーブルと、前記第1割り込みベクタテーブルの各ベクタの示すアドレスに処理プログラムを格納する領域とを前記第1メモリ(13)に設け、
前記第1割り込みベクタテーブルと同一内容の第2割り込みベクタテーブルを前記第2メモリ(14)に設け、
前記第1割り込みベクタテーブルをアクセスするアドレスを前記第2割り込みベクタテーブルをアクセスするアドレスに変換するアドレス変換手段(22)と、
前記外部機器(30)から供給される命令により、前記第2割り込みベクタテーブルの任意ベクタのアドレスと前記任意ベクタの示すアドレスに格納する処理プログラムとを前記第2メモリ(14)に書き込む書き込み手段(43)を有する。
【0012】
好ましくは、前記前記第1メモリ(13)は、前記外部機器(30)から供給される命令を実行する処理プログラムを格納し、
前記外部機器(30)から前記第2メモリ(14)に書き込みを行う際に、前記アドレス変換手段のアドレス変換を停止する。
【0013】
好ましくは、前記第1メモリ(13)は、前記第1メモリ(13)に格納されたデータの検証用データを格納する。
【0014】
好ましくは、前記第2メモリ(14)は、前記第2メモリ(14)に格納されたデータの検証用データを格納する。
【0015】
なお、上記括弧内の参照符号は、理解を容易にするために付したものであり、一例にすぎず、図示の態様に限定されるものではない。
【発明の効果】
【0016】
本発明によれば、書き換え不能なメモリに格納した割り込み処理プログラムを変更することができる。
【図面の簡単な説明】
【0017】
【図1】本発明のマイクロプロセッサの一実施形態の構成図である。
【図2】マイクロプロセッサにおけるメモリのアドレス割り付けの一実施形態を示す図である。
【図3】割り込みベクタ切り換え回路の一実施形態の構成図である。
【図4】本実施形態におけるマスクROMとフラッシュROMのアドレス割り付けを示す図である。
【図5】従来における一般的なマスクROMとフラッシュROMのアドレス割り付けを示す図である。
【図6】CPUが実行する処理の一実施形態のフローチャートである。
【図7】従来のマイクロプロセッサにおけるメモリのアドレス割り付けの一例を示す図である。
【発明を実施するための形態】
【0018】
以下、図面に基づいて本発明の実施形態について説明する。
【0019】
<マイクロプロセッサの構成>
図1は本発明のマイクロプロセッサの一実施形態の構成図を示す。図1において、マイクロプロセッサ10は、CPU(中央処理装置)11、RAM12、マスクROM13、フラッシュROM14、タイマ15、通信回路16を有し、更に、エッジ検出回路17、ADコンバータ(ADC)18、DAコンバータ(DAC)19、割り込みコントローラ20等を有しており、エッジ検出回路17を除くこれらの回路は内部バス21により相互に接続されている。
【0020】
また、内部バス21とマスクROM13及びフラッシュROM14の間には割り込みベクタ切り換え回路22が設けられている。なお、マスクROM13は書き換え不能であり、フラッシュROM14は書き換え可能な不揮発性メモリである。また、内部バス21はアドレスバス、データバス、コントロールバスを有している。更に、マイクロプロセッサ10にはリセット端子23が設けられている。
【0021】
CPU11はマスクROM13及びフラッシュROM14に格納されている処理プログラムを実行する。このとき、RAM12が作業領域として使用される。タイマ15はクロックをカウントして所定のタイミング信号を生成し、例えば一部のタイミング信号を割り込み信号として割り込みコントローラ20に供給する。
【0022】
通信回路16は例えば上位装置やパーソナルコンピュータ等の外部機器30との間で通信を行う。エッジ検出回路17は外部機器30と通信回路16との間の通信信号のエッジを検出し、エッジ検出信号を割り込み信号として割り込みコントローラ20に供給する。
【0023】
ADコンバータ18は外部から供給されるアナログ信号をデジタル化して例えばCPU11に供給する。DAコンバータ19は例えばCPU11から供給されるデジタル信号をアナログ化して外部に出力する。割り込みコントローラ20はタイマ15、エッジ検出回路17等から供給される割り込み信号の優先度制御を行ってCPU11に供給する。
【0024】
図2にマイクロプロセッサ10におけるメモリのアドレス割り付けの一実施形態を示す。マイクロプロセッサ10は、常時、外部機器30と通信が発生するか又は必要に応じて外部機器30と通信を行う製品を前提としている。マイクロプロセッサ10は電源投入後にCPU11がマスクROM13に格納されたプログラムを実行できる環境とするため、利用するCPU11の仕様にあわせてマスクROM13のメモリ配置を行っている。
【0025】
このため、図2では、メモリの先頭にマスクROM13、次にフラッシュROM14、次にRAM12、その後にタイマ15〜割り込みコントローラ20等の内蔵入力出力装置(I/O)を配置している。
【0026】
<割り込みベクタ切り換え回路の構成>
図3は割り込みベクタ切り換え回路22の一実施形態の構成図を示す。本実施形態では、割り込みが発生した際にCPU11が参照する割り込みベクタテーブルとして、マスクROM13の割り込みベクタテーブルを参照させるのか、フラッシュROM14の割り込みベクタテーブルを参照させるのかを切り替える割り込みベクタ切り換え回路22を設けている。
【0027】
図3において、割り込みベクタ切り換え回路22はレジスタ32とアドレス変換回路31とセレクト信号生成回路33を有している。レジスタ32はCPU11から値0又は値1を設定されて保持する。ここで、CPU11はマスクROM13の割り込みベクタテーブルを参照させるときに例えば値0を設定し、フラッシュROM14の割り込みベクタテーブルを参照させるときに値1を設定する。
【0028】
アドレス変換回路31はレジスタ32の内容を供給されると共にCPU11から内部バス21を介してアドレスを供給される。アドレス変換回路31はレジスタ32から値0を供給されていれば、アドレス変換を停止してCPU11から供給されるアドレスをそのまま出力する。
【0029】
また、レジスタ32から値1を供給されていれば、アドレス変換を実行してCPU11から供給されるアドレスの例えば上位8ビットを例えば0x40(0xは16進表示を示す)に変更して出力する。このアドレス変換回路31の出力アドレスはセレクト信号生成回路33、マスクROM13、フラッシュROM14のそれぞれに供給される。
【0030】
このアドレスの上位8ビットの変更はマスクROM13の割り込みベクタテーブル41のアドレスをフラッシュROM14の割り込みベクタテーブル51のアドレスに変更するための変換であり、マイクロプロセッサのシステムにおけるアドレス体系により変換ビット数や変換する値は様々に異なっても良い。
【0031】
セレクト信号生成回路33はアドレス変換回路31の出力アドレスの例えば上位4ビットからマスクROM13の参照かフラッシュROM14の参照かを判別して、マスクROM13の参照時にはマスクROM13を選択するセレクト信号(フラッシュROM14は非選択)を生成してマスクROM13に供給し、フラッシュROM14の参照時にはフラッシュROM14を選択するセレクト信号(マスクROM13は非選択)を生成してフラッシュROM14に供給する。
【0032】
図4に本実施形態におけるマスクROM13とフラッシュROM14のアドレス割り付けを示す。図4において、マスクROM13のアドレスは0x0000〜0x3FFFに割り付けられ、フラッシュROM14のアドレスは0x4000〜0x6FFFに割り付けられている。
【0033】
マスクROM13の先頭領域である例えばアドレス0x0000〜0x00FFの領域に割り込みベクタテーブル41が配置される。マスクROM13の割り込みベクタテーブル41には例えば割り込みベクタ0〜割り込みベクタ15が割り当てられており、例えば割り込みベクタ0の値は割り込みベクタ0の処理プログラムの先頭アドレスである0x0100が設定され、割り込みベクタ1の値は割り込みベクタ1の処理プログラムの先頭アドレスである0x0200が設定され、割り込みベクタ15の値は割り込みベクタ15の処理プログラムの先頭アドレスである0x1000が設定されている。なお、図中では「割り込みベクタ」を単に「ベクタ」と表示している。
【0034】
ここで、割り込み発生要因としては、電源投入、ADコンバータ18の変換完了、タイマ15による規定時間の経過、通信回路16による送信又は受信の完了、リセット端子23からのリセット信号入力等のハードウェア割り込みや、各種のソフトウェア割り込みがある。
【0035】
マスクROM13のアドレス0x0100〜0x01FFには割り込みベクタ0の処理プログラム42−0が格納され、アドレス0x0200〜0x02FFには割り込みベクタ1の処理プログラム42−1が格納され、同様にして、アドレス0x1000〜0x10FFには割り込みベクタ15の処理プログラム42−15が格納されている。
【0036】
マスクROM13のアドレス0x1100以降にも各種プログラムやデータが格納されており、更に、マスクROM13の例えば最後尾のアドレス0x3500〜0x3FFFにフラッシュROM書き込みプログラム43が格納されている。フラッシュROM書き込みプログラム43はフラッシュROM14に対してデータを書き込み、消去し、検証するプログラムである。
【0037】
フラッシュROM14の先頭領域である例えばアドレス0x4000〜0x40FFの領域に割り込みベクタテーブル51が配置される。製造時にはフラッシュROM14の割り込みベクタテーブル51はマスクROM13の割り込みベクタテーブルと同一構成である。
【0038】
すなわち、フラッシュROM14の割り込みベクタテーブル51には例えば割り込みベクタ0〜割り込みベクタ15が割り当てられており、例えば割り込みベクタ0の値は割り込みベクタ0の処理プログラムの先頭アドレスである0x0100が設定され、割り込みベクタ1の値は0x0200が設定されており、割り込みベクタ15の値は0x1000が設定されている。
【0039】
フラッシュROM14のアドレス0x4100〜0x61FFには各種プログラムやデータが格納されており、例えばフラッシュROM14のアドレス0x6200以降は製造時には未使用とされている。ところで、図4においてはフラッシュROM14の割り込みベクタ1の値が0x6200となっているのは、後で更新された値を示しており、製造時には0x0200が設定されている。
【0040】
なお、マスクROM13とフラッシュROM14とを比較すると、単位面積当たりのデータ容量はマスクROM13の方が大きいために、割り込みベクタ0〜15の処理プログラムを含む各種プログラムはマスクROM13に格納している。
【0041】
図5に従来における一般的なマスクROM13とフラッシュROM14のアドレス割り付けを示す。図5において、マスクROM13の先頭領域である例えばアドレス0x0000〜0x00FFの領域に割り込みベクタテーブルが配置される。
【0042】
マスクROM13の割り込みベクタテーブルには例えば割り込みベクタ0〜割り込みベクタ15が割り当てられており、例えば割り込みベクタ0の値は割り込みベクタ0の処理プログラムの先頭アドレスである0x0100が設定され、割り込みベクタ1の値は割り込みベクタ1の処理プログラムの先頭アドレスである0x0200が設定され、割り込みベクタ15の値は割り込みベクタ15の処理プログラムの先頭アドレスである0x1000が設定されている。
【0043】
マスクROM13のアドレス0x0100〜0x01FFには割り込みベクタ0の処理プログラムが格納され、アドレス0x0200〜0x02FFには割り込みベクタ0の処理プログラムが格納され、同様にして、アドレス0x1000〜0x10FFには割り込みベクタ15の処理プログラムが格納されている。
【0044】
マスクROM13のアドレス0x1100以降には各種プログラムが格納されている。フラッシュROM14には割り込みベクタテーブルは配置されておらず、フラッシュROM14のアドレス0x4000〜0x6FFFには各種プログラムが格納されている。
【0045】
<リセット処理のフローチャート>
図6はCPU11が実行する処理の一実施形態のフローチャートを示す。この処理はマイクロプロセッサ10の電源オン時に図示しない回路でリセット信号が生成されたとき又はリセット端子23にローレベルのリセット信号が供給されたときに、割り込みコントローラ20の制御によりCPU11が実行を開始する。
【0046】
図6において、ステップS11でCPU11はレジスタ32に値0を設定し、割り込みベクタとしてマスクROM13を選択する。次に、ステップS12でマスクROM13の全領域のデータ検証を行う。ここでは、例えばマスクROM13の全領域から読み出した全データのチェックサムを算出し、マスクROM13の特定領域に予め書き込んでおいたチェックサム値と比較する。
【0047】
そして、ステップS13でマスクROM13の全領域から読み出した全データから算出したチェックサムと特定領域のチェックサム値が一致の場合にマスクROM13は正常、不一致の場合にマスクROM13は異常と判別する。異常の場合には動作不可として処理を終了する。
【0048】
マスクROM13が正常の場合にはステップS14でフラッシュROM14の全領域のデータ検証を行う。ここでは、例えばフラッシュROM14の全領域から読み出した全データのチェックサムを算出し、フラッシュROM14の特定領域に予め書き込んでおいたチェックサム値と比較する。そして、ステップS15でフラッシュROM14の全領域から読み出した全データから算出したチェックサムと特定領域のチェックサム値が一致の場合にフラッシュROM14は正常、不一致の場合にフラッシュROM14は異常と判別する。
【0049】
フラッシュROM14が異常の場合には後述のステップS30に進む。フラッシュROM14が正常な場合にはステップS16でCPU11はレジスタ32に値1を設定し、割り込みベクタとしてフラッシュROM14を選択する。次に、ステップS17で正常時の初期化処理を実行し、以降、正常時の処理を実行する。
【0050】
すなわち、ステップS18で外部機器30から通信データを受信したか否かを判別する。通信データを受信した場合には通信データの内容に従い、例えば通信データがコマンドAであればステップS19でコマンドAの処理を実行し、通信データがコマンドXであればステップS20でコマンドXの処理を実行し、通信データがフラッシュROM更新モードへの移行コマンドであればステップS30に進む。
【0051】
ステップS18で通信データを受信していない場合にはステップS21〜S22において正常時の処理#1〜#nをそれぞれ実行してステップS18に進む。
【0052】
一方、ステップS30ではCPU11はフラッシュROM更新の初期化処理を実行する。具体的には通信回路16の初期化を行い、また、レジスタ32に値0を設定して割り込みベクタとしてマスクROM13を選択する。これ以降、フラッシュROM更新処理を実行する。
【0053】
すなわち、ステップS31で外部機器30から通信データを受信したか否かを判別する。通信データを受信した場合には通信データの内容に従い、例えば通信データがイレーズコマンドであればステップS32でフラッシュROM14のコマンドで指定された領域についてイレーズ処理(消去処理)を実行し、通信データが書き込みコマンドであればステップS33でフラッシュROM14のコマンドで指定された領域についてデータを書き込む書き込み処理を実行する。
【0054】
また、外部機器30はフラッシュROM更新が終了すると再起動コマンドを送信する。このため、通信データが再起動コマンドであればCPU11はステップS34で再起動を行う。これにより図6の処理がステップS11から実行される。なお、上記のステップS30〜S34それぞれの処理はマスクROM13の割り込みベクタテーブル41を用いて実行されるソフトウェア割り込みである。
【0055】
ところで、ステップS12,S14ではチェックサムを用いてデータ検証を行っているが、この他に、CRCやパリティ等の他の検証方法を用いても良く、上記実施形態に限定されるものではない。
【0056】
ここで、図4の割り込みベクタテーブル41,51の割り込みベクタ1に登録されているアドレス0x0200〜0x02FFに格納されている割り込みベクタ1の処理プログラム42−1に不具合が見つかった場合、この場所はマスクROM領域であるために修正が不可能である。この場合、外部機器30からマイクロプロセッサ10にフラッシュROM更新モードへの移行コマンドを送信する。
【0057】
そして、CPU11にステップS30〜S34を実行させることで、図4に示すように、フラッシュROM14の割り込みベクタテーブル51における割り込みベクタ1の値を例えば0x6200に書き換える。
【0058】
更に、フラッシュROM14の例えばアドレス0x6200〜0x62FFに割り込みベクタ1の修正した処理プログラム52−1を書き込む。更に、フラッシュROM14の全領域から全データを読み出してチェックサムを算出し、フラッシュROM14の特定領域に算出したチェックサム値を書き込む。
【0059】
こののち、ステップS18〜S22において正常時の通信データ受信や処理#1〜#nで割り込みベクタ0〜15の処理プログラムを実行する場合は、割り込みベクタとしてフラッシュROM14の割り込みベクタテーブル51を参照するため、割り込みベクタ1の処理を実行する際にはフラッシュROM14の修正した処理プログラムが実行される。
【0060】
同様に、マスクROM13に格納される割り込み処理プログラム以外のプログラムについても、ベクタアドレスを参照するソフトウェア割り込みとすることで、不具合を解消することが可能となる。
【0061】
もちろん不具合対策のみでなく、機能向上や新規機能追加のために割り込み処理内容を変更する必要が発生した場合においても、同様の対策を行うことができ、製品出荷後に機能向上が図れるという点で製品価値を高めることが可能となる。
【0062】
また、フラッシュROM書き込みプログラム43はマスクROM13に格納されているため、静電気等の外的要因で破壊されることはない。このため、フラッシュROM14に格納されているプログラムやデータが静電気等の外的要因や不正な書き込み又は消去等で書き換えられ障害が発生した場合においても、タイマ15によるウォッチドッグタイマ機能等によりリセットが発生する。
【0063】
そして、ステップS15からステップS30に進むことにより、データが破壊されることのないマスクROM13のフラッシュROM書き込みプログラム43を起動することができ、外部機器30からのフラッシュROM14のデータの書き換えを行うことが可能となり、正常な状態に復帰することが可能となる。
【0064】
更に、マスクROM13とフラッシュROM14に別々の割り込みベクタテーブル41,51を持つことができるため、マスクROM13に格納するプログラムとフラッシュROM14に格納するプログラムでまったく別の割り込み処理を行わせることも可能となる。
【符号の説明】
【0065】
10 マイクロプロセッサ
11 CPU
12 RAM
13 マスクROM
14 フラッシュROM
15 タイマ
16 通信回路
17 エッジ検出回路
18 ADコンバータ
19 DAコンバータ
20 割り込みコントローラ
21 内部バス
22 割り込みベクタ切り換え回路
23 リセット端子
30 外部機器
31 アドレス変換回路
32 レジスタ
33 セレクト信号生成回路
41,51 割り込みベクタテーブル
43 フラッシュROM書き込みプログラム
42−0〜42−15,52−1 処理プログラム

【特許請求の範囲】
【請求項1】
書き換え不能な第1メモリと書き換え可能な不揮発性の第2メモリを有し外部機器に接続されるマイクロプロセッサであって、
複数種類の割り込みで処理する複数のプログラムのアドレスをベクタ毎に格納した第1割り込みベクタテーブルと、前記第1割り込みベクタテーブルの各ベクタの示すアドレスに処理プログラムを格納する領域とを前記第1メモリに設け、
前記第1割り込みベクタテーブルと同一内容の第2割り込みベクタテーブルを前記第2メモリに設け、
前記第1割り込みベクタテーブルをアクセスするアドレスを前記第2割り込みベクタテーブルをアクセスするアドレスに変換するアドレス変換手段と、
前記外部機器から供給される命令により、前記第2割り込みベクタテーブルの任意ベクタのアドレスと前記任意ベクタの示すアドレスに格納する処理プログラムとを前記第2メモリに書き込む書き込み手段を、
有することを特徴とするマイクロプロセッサ。
【請求項2】
請求項1記載のマイクロプロセッサにおいて、
前記前記第1メモリは、前記外部機器から供給される命令を実行する処理プログラムを格納し、
前記外部機器から前記第2メモリに書き込みを行う際に、前記アドレス変換手段のアドレス変換を停止する、
ことを特徴とするマイクロプロセッサ。
【請求項3】
請求項2記載のマイクロプロセッサにおいて、
前記第1メモリは、前記第1メモリに格納されたデータの検証用データを格納する、
ことを特徴とするマイクロプロセッサ。
【請求項4】
請求項2又は3記載のマイクロプロセッサにおいて、
前記第2メモリは、前記第2メモリに格納されたデータの検証用データを格納する、
ことを特徴とするマイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−118627(P2012−118627A)
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2010−265642(P2010−265642)
【出願日】平成22年11月29日(2010.11.29)
【出願人】(000006220)ミツミ電機株式会社 (1,651)
【Fターム(参考)】