(57)【要約】【課題】関数が再構成されるとその先頭アドレスが変わるので、ベクタテーブルも書き替えなければならないが、書き替えるためにはアクセス禁止にしなければならないので書き替えることができない。そのため、関数を再構成するときは機器の動作を停止しなければならなかったという課題を解決する。【解決手段】不揮発性メモリ装置を複数のブロックに分割し、これらのブロックの各々の固定された領域に、そのブロックに格納されているプログラムやデータをアクセスする情報を書き込むようにして、当該関数をアクセスするときに、そのブロックのテーブルからアクセス情報を読み出すようにした。変更するブロックを書き替えるだけでよく、変更の影響が他のブロックに波及しない。【選択図】            図１
2005018191.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックに分割した各ブロック内の固定された領域に、前記ブロックに格納されている関数をアクセスする情報が書き込まれたテーブルを配置し、前記テーブルに書き込まれた情報により前記関数にアクセスされるようにしたことを特徴とする不揮発性メモリ装置。
【請求項２】
起動時または割り込み発生時に最初にアクセスされるベクタテーブルを有するブロックを起動ブロックとし、この起動ブロックを常時アクセスするように設定したことを特徴とする請求項１記載の不揮発性メモリ装置。
【請求項３】
前記起動ブロックを書き込み禁止に設定するようにしたことを特徴とする請求項２記載の不揮発性メモリ装置。
【請求項４】
前記関数をアクセスする情報は、前記関数の先頭アドレスであることを特徴とする請求項１から請求項３のいずれかに記載の不揮発性メモリ装置。
【請求項５】
前記起動ブロックは、複数のベクタ関数を有し、起動時または割り込みが発生した時に前記ベクタテーブルが参照されて前記ベクタ関数の１つを選択し、前記ベクタ関数によって前記起動ブロック以外の前記ブロック内の前記テーブルを参照して、前記ブロックに格納された前記関数を実行するようにしたことを特徴とする請求項２から請求項４のいずれかに記載の不揮発性メモリ装置。
【請求項６】
前記起動ブロック以外の前記ブロックに格納された前記関数が当該ブロック以外のブロックに格納された前記関数をアクセスするとき、当該ブロック以外のブロック内の前記テーブルから前記関数をアクセスする情報を読み出し、前記情報によって前記関数にアクセスするようにしたことを特徴とする請求項２から請求項５のいずれかに記載の不揮発性メモリ装置。
【請求項７】
前記ベクタ関数は、その内部に規定される条件により、異なる前記ブロックに配置される前記テーブルを参照して対応する前記関数を選択することを特徴とする請求項２から請求項６のいずれかに記載の不揮発性メモリ装置。
【請求項８】
複数のブロックに分割され、システム起動時または割り込み発生時に起動ブロックに配置されるベクタテーブルが参照されて前記ブロック内にある関数が選択される不揮発性メモリ装置のアクセス方法において、
（ａ）前記ベクタテーブルにあるベクタ関数を実行するステップと、
（ｂ）前記ベクタ関数は前記ブロックに格納されている前記関数をアクセスする情報が書き込まれたテーブルを参照するステップと、
（ｃ）前記ブロック内にある前記情報に対応した前記関数を実行するステップとを有することを特徴とする不揮発性メモリ装置のアクセス方法。
【請求項９】
前記ブロック内にある前記情報に対応した前記関数は、他の異なる前記ブロックに配置される前記テーブル内の前記情報を参照するステップを有することを特徴とする請求項８記載の不揮発性メモリ装置のアクセス方法。
【請求項１０】
前記ベクタ関数は、その内部に規定される条件により、異なる前記ブロックに配置される前記テーブルを参照するステップを有することを特徴とする請求項８記載の不揮発性メモリ装置のアクセス方法。
【発明の詳細な説明】
【発明の属する技術分野】
本発明は、オンラインで書き替えることができ、かつ書き替えた後も継続してプログラムの実行が可能な不揮発性メモリ装置及び不揮発性メモリ装置のアクセス方法に関するものである。
【０００１】
【従来の技術】
図５に、例えば、差圧計、流量計、温度計の工業分野等に用いられる各種機器で使用されている不揮発性メモリ装置の例を示す。図５（ア）は、不揮発性メモリ装置の内部構成図であり、起動ブロック４、Ａブロック５及びＢブロック６から構成される。
【０００２】
Ａブロック５及びＢブロック６は実行すべき関数の実体の格納領域であり、Ａブロック５には関数Ａ１，Ａ２が、Ｂブロック６には関数Ｂ１，Ｂ２が格納される。ここで、関数は、プログラムの一種であり、また、プログラムの他にデータであってもよく、プログラムまたはデータの意味とする。
【０００３】
また、起動ブロック４の固定された領域にはベクタテーブル４１が配置され、関数Ａ１，Ａ２，Ｂ１，Ｂ２が格納される先頭アドレスの一覧表が格納される。
【０００４】
このような不揮発性メモリ装置を備えるシステムの起動時または割り込み発生時には、ＣＰＵ（図示せず）は、ベクタテーブル４１における、起動、割り込みの種類によって予め定められている領域をアクセスする。
【０００５】
前述したように、ベクタテーブル４１には関数Ａ１，Ａ２，Ｂ１，Ｂ２等の先頭アドレスが書き込まれている。ＣＰＵはこの先頭アドレスを読み込んでそのアドレスにジャンプする。図５は、ベクタテーブル４１に書かれた関数Ａ１のアドレスを読み込んで、関数Ａ１にジャンプする例を表わしている。
【０００６】
このような不揮発性メモリ装置のアクセス方法により、システム起動時、割り込み時の種類によって異なる処理を実行することができる。
【０００７】
上述したような不揮発性炉森装置及び不揮発性メモリ装置のアクセス方法の先行技術としては、例えば、下記の文献が挙げられる。
【０００８】
【特許文献１】
特開２００１−３５０５０４
【０００９】
【特許文献２】
特開平１１−５３１９３号公報
【００１０】
【発明が解決しようとする課題】
ところで、この不揮発性メモリ装置が設置される各種機器等の機能が拡張されるような場合、Ａブロック５及びＢブロック６に格納されている関数Ａ１，Ａ２，Ｂ１，Ｂ２を書き替えなければならないことがある。そのため、各ブロックは消去して再書き込みができるようになっている。
【００１１】
一般に、関数の内容を書き替えると、ブロックにおけるその関数の占める領域の大きさが変化するため、その関数の先頭アドレスも変化する。図５（イ）はこのことを示している。Ａブロック５の内容を書き替えたために、矢印で示すように関数Ａ１の格納領域が破線５１だけ左にシフトする。
【００１２】
割り込み発生時等では、ベクタテーブル４１を参照して実行すべき関数の先頭アドレスを取得してそのアドレスにジャンプするので、関数Ａ１の先頭アドレスが変化すると、それに対応してベクタテーブル４１の内容も書き替えなければならない。
【００１３】
一方、消去、再書き込み中は、そのブロックを読み出すことはできない。しかるに、割り込みはいつ発生するかわからないので、動作中は常に起動ブロック４をアクセスできないと、システム全体に大きな影響を及ぼすおそれがある。そのため、動作中は起動ブロック４を書き込み禁止にして、いつでもアクセスできるようにしている。
【００１４】
このような不揮発性メモリ装置には、次のような課題があった。
前述したように、関数の内容を書き替えると、一般にその関数の先頭アドレスが変化する。しかるに、動作中はベクタテーブル４１を書き替えることができないので、関数の内容やデータを変更するときは、システム全体を停止してから行わなければならないという課題があった。
【００１５】
また、ベクタテーブル４１を変更しないでＡブロック５またはＢブロック６のみを書き替えると、図５（イ）に示すように、割り込み発生時等では、変更前のアドレスから実行し、正常な動作ができなくなるという課題もあった。
【００１６】
従って、発明の目的は、機器の動作中に関数の内容を書き替えることができる、不揮発性メモリ装置及び不揮発性メモリ装置のアクセス方法を提供することにある。
【００１７】
【課題を解決するための手段】
このような課題を解決する本発明は、次の通りである。
（１）複数のブロックに分割した各ブロック内の固定された領域に、前記ブロックに格納されている関数をアクセスする情報が書き込まれたテーブルを配置し、前記テーブルに書き込まれた情報により前記関数にアクセスされるようにしたことを特徴とする不揮発性メモリ装置。
（２）起動時または割り込み発生時に最初にアクセスされるベクタテーブルを有するブロックを起動ブロックとし、この起動ブロックを常時アクセスするように設定したことを特徴とする（１）記載の不揮発性メモリ装置。
（３）前記起動ブロックを書き込み禁止に設定するようにしたことを特徴とする（２）記載の不揮発性メモリ装置。
（４）前記関数をアクセスする情報は、前記関数の先頭アドレスであることを特徴とする（１）から（３）のいずれかに記載の不揮発性メモリ装置。
（５）前記起動ブロックは、複数のベクタ関数を有し、起動時または割り込みが発生した時に前記ベクタテーブルが参照されて前記ベクタ関数の１つを選択し、前記ベクタ関数によって前記起動ブロック以外の前記ブロック内の前記テーブルを参照して、前記ブロックに格納された前記関数を実行するようにしたことを特徴とする（２）から（４）のいずれかに記載の不揮発性メモリ装置。
（６）前記起動ブロック以外の前記ブロックに格納された前記関数が当該ブロック以外のブロックに格納された前記関数をアクセスするとき、当該ブロック以外のブロック内の前記テーブルから前記関数をアクセスする情報を読み出し、前記情報によって前記関数にアクセスするようにしたことを特徴とする（２）から（５）のいずれかに記載の不揮発性メモリ装置。
（７）前記ベクタ関数は、その内部に規定される条件により、異なる前記ブロックに配置される前記テーブルを参照して対応する前記関数を選択することを特徴とする（２）から（６）のいずれかに記載の不揮発性メモリ装置。
（８）複数のブロックに分割され、システム起動時または割り込み発生時に起動ブロックに配置されるベクタテーブルが参照されて前記ブロック内にある関数が選択される不揮発性メモリ装置のアクセス方法において、
（ａ）前記ベクタテーブルにあるベクタ関数を実行するステップと、
（ｂ）前記ベクタ関数は前記ブロックに格納されている前記関数をアクセスする情報が書き込まれたテーブルを参照するステップと、
（ｃ）前記ブロック内にある前記情報に対応した前記関数を実行するステップとを有することを特徴とする不揮発性メモリ装置のアクセス方法。
（９）前記ブロック内にある前記情報に対応した前記関数は、他の異なる前記ブロックに配置される前記テーブル内の前記情報を参照するステップを有することを特徴とする（８）記載の不揮発性メモリ装置のアクセス方法。
（１０）前記ベクタ関数は、その内部に規定される条件により、異なる前記ブロックに配置される前記テーブルを参照するステップを有することを特徴とする（８）記載の不揮発性メモリ装置のアクセス方法。
【００１８】
【発明の実施の形態】
以下、図面に基づいて本発明を詳細に説明する。
図１は、本発明に係る不揮発性メモリ装置の一実施例を示す構成図である。
【００１９】
図１（ア）は不揮発性メモリ装置のメモリマップを表したものである。
不揮発性メモリ装置には起動ブロック１、Ａブロック２、Ｂブロック３の各ブロックが確保される。ここで、起動ブロック１は、機器の動作中は書き込み禁止とする一方、Ａブロック２、Ｂブロック３は動作中でも書き替え可能に設定する。
【００２０】
起動ブロック１は、固定された領域に配置されたベクタテーブル１１及びベクタ関数領域１２で構成される。図５で説明したように、ベクタテーブル１１はシステム起動時または割り込み発生時に最初にアクセスされ、起動を含む割り込みによってアクセスする領域が予め定められている。
【００２１】
図示しないＣＰＵはこのベクタテーブル１１の対応する領域に格納されたアドレスを読み込み、そのアドレスへジャンプする。また、ベクタ関数領域１２には、ベクタテーブル１１の各要素に１対１に対応する複数のベクタ関数１３が格納される。
【００２２】
Ａブロック２は、固定された領域に配置された外部関数参照テーブル２１及び関数領域２２で構成される。関数領域２２には割り込み等が発生したときに実行される関数が格納される。この実施例では関数Ａ１と関数Ａ２とが格納されている。外部関数参照テーブル２１は、関数領域２２に格納されている各々の関数の先頭アドレスが格納されているテーブルである。
【００２３】
Ｂブロック３は、固定された領域に配置された外部関数参照テーブル３１及び関数領域３２で構成される。関数領域３２には割り込み等が発生したときに実行される関数が格納される。この実施例では関数Ｂ１と関数Ｂ２とが格納されている。外部関数参照テーブル３１は、関数領域３２に格納されている各々の関数の先頭アドレスが格納されているテーブルである。
【００２４】
ここで、関数は、上述したように、プログラムの一種であり、また、プログラムの他にデータであってもよく、プログラムまたはデータの意味とする。
【００２５】
次に、この実施例の動作を図２のフローチャートに基づいて説明する。図２のフローチャートは、本発明の不揮発性メモリ装置のアクセス方法を示す図である。
【００２６】
図２において、ステップ（ａ−１）でシステムが起動、または割り込みが発生すると、ステップ（ａ−２）でＣＰＵはベクタテーブル１１を参照して、対応するベクタ関数１３の先頭アドレスを取得して、そのベクタ関数１３にジャンプする。
【００２７】
このベクタ関数１３には、割り込み等で実行する関数が格納されたブロックと、そのブロック内の外部関数参照テーブルの参照すべき位置が定義されている。
【００２８】
ステップ（ａ−３）では、このベクタ関数１３は、実行すべき関数が格納されたブロックを特定してその外部関数参照テーブルを参照し、その割り込み等で実行すべき関数の先頭アドレスを取り出す。
【００２９】
そして、ステップ（ａ−４）では、その関数の先頭アドレスにジャンプし、その関数を実行する。
【００３０】
このように、システム起動時あるいは割り込み発生時、ベクタテーブル１１で直接実行すべき関数を指定しないで、ベクタ関数１３及び各ブロック２，３にある外部関数参照テーブル２１，３１を経由して実行すべき関数にジャンプする。
【００３１】
そして、実行すべき関数を修正したためにその先頭アドレスが変更されても、ベクタテーブル１１とベクタ関数１３の対応関係は変化せず、また各ブロックの外部関数参照テーブル２１，３１は固定領域に配置されているので、ベクタ関数１３も変化しない。そのため、その関数が属しているブロックの外部関数参照テーブルを同時に書き替えるだけでよく、起動ブロック１を変更する必要はない。
【００３２】
即ち、各ブロック２，３に外部関数参照テーブル２１，３１を置くことによって変更部分をそのブロック内部に閉じこめ、ブロック外に波及しないようにした。従って、機器の動作中は常時起動ブロック１を書き込み禁止にしてアクセス可能に設定することができ、かつ動作中に各ブロックの内容を書き替えることができる。
【００３３】
このことを図１（イ）を用いて詳しく説明する。
図１（イ）において、Ａブロック２が書き替えられたために関数Ａ１の格納位置が矢印のように左側にシフトしている。破線２３はシフトした部分を表す。
【００３４】
このとき、外部関数参照テーブル２１における関数Ａ１の先頭アドレスが格納されている部分を、シフトした部分に対応させて、新しい先頭アドレスとして変更する。この状態にて、ベクタ関数１３は、書き替えられる前と同じ手順で外部関数参照テーブル２１を経由するとこにより、新しい関数Ａ１を実行することができる。
【００３５】
尚、通常のＣＰＵでは、ベクタテーブル１１にはシステム起動時や割り込み発生時に実行すべき関数の先頭アドレスのみを格納するようになっている。そのため、ベクタ関数を経由して実行すべき関数にジャンプするようにしたが、ベクタテーブル１１から、直接、ブロックと外部関数参照テーブルの参照すべき位置を指定できるようなＣＰＵであれば、ベクタ関数は必ずしも必要ではなくなる。
【００３６】
図３に、本発明の他の実施例を示す。この図で、図１と同じ要素には同一符号を付し、その説明を省略する。この実施例は、ベクタ関数によって実行された関数が、他のブロックの関数を呼び出す場合の方法を示したものである。
【００３７】
この例は、前述した手順でベクタ関数１３が外部参照テーブル２１を経由してＡブロック２の関数Ａ１を実行し、続いて、この関数Ａ１がＢブロック３の関数Ｂ２を呼び出すものである。
【００３８】
このとき、関数Ａ１はＢブロック３の外部関数参照テーブル３１を経由して、ベクタ関数１３と同じ手順で関数Ｂ２を実行する。このようにすると、Ｂブロック３が書き替えられて関数Ｂ２の先頭アドレスが変更されても、その変更は、外部関数参照テーブル３１に反映され、Ａブロック２まで変更する必要がないという利点がある。
【００３９】
図４に他の実施例を示す。この図で図１と同じ要素には同一符号を付し、説明を省略する。この実施例では、起動あるいは１つの割り込みに対して２つの処理を選択して実行できるようにするものである。
【００４０】
この例で、割り込みが発生すると、ベクタテーブル１１のデータに基づいて１つのベクタ関数１３が選択されて実行される。このベクタ関数１３の中で関数Ａ１と関数Ｂ１とのどちらかが選択されて実行される。
【００４１】
例えば、指定されたポートが高レベルであると、関数Ａ１が実行される。このときは、ベクタ関数１３は外部関数参照テーブル２１を参照して関数Ａ１の先頭アドレスを取得して、そのアドレスにジャンプする。
【００４２】
また、低レベルであると関数Ｂ１が実行される。このときは、ベクタ関数１３は外部関数参照テーブル３１を参照して関数Ｂ１の先頭アドレスを取得して、このアドレスにジャンプする。このようにベクタ関数１３の内容、条件により関数Ａ１または関数Ｂ１を選択することにより、ユーザの仕様に合わせて最適の処理を行うことができる。
【００４３】
尚、これらの実施例では、ベクタテーブル１１および外部関数参照テーブル２１，３１に実行すべき関数の先頭アドレスを書き込んでおき、そのアドレスにジャンプするようにしたが、他の方法であってもよい。要は、これらのテーブルに、ブロック内にある関数を実行するために必要かつ十分なデータが書き込まれていればよい。
【発明の効果】
以上説明したことから明らかなように、本発明によれば次の効果を得る。  不揮発性メモリ装置内の関数を再構成すると、そのサイズ等が変化してアクセスするための情報が変化するが、この情報を同じブロックの固定された領域に配置されたテーブルに書き込んでおくことにより、システム起動時または割り込み時にあっても、同じ手順で新しいアクセス情報を得ることができる。
【００４４】
従って、再構成するブロックのみを書き替えればよいという効果がある。即ち、関数と、それをアクセスする情報を書き込んだテーブルを１つのブロックに閉じこめることにより、再構成の影響が他のブロックに波及することがないという効果がある。
【００４５】
また、アクセスする情報として関数の先頭アドレスを用いることにより、簡便でかつ既存のＣＰＵに簡単に適合させることができるという効果もある。更に、ベクタ関数を用いることにより、既存ＣＰＵの割り込み処理機能をそのまま利用できるという効果もある。
【００４６】
次に、起動時または割り込み発生時に参照されるベクタテーブルが配置された起動ブロックを常時アクセスできるようにし、また書き込み禁止にしたことにより、下記の効果を得る。割り込みはいつ発生するか予測できないが、書き込み禁止にして常時アクセスできるようにすることにより、割り込みを取りこぼすことがない。また、そのためにシステムに重大な障害が発生することを防止できるという効果もある。
【００４７】
更にまた、ベクタ関数は、与えられた条件によって起動ブロック以外のブロックに格納された関数を選択して実行するようにした。このため、起動時や割り込み発生時の処理を外部条件によって簡単に変えることができるので、ユーザの仕様に最適な処理を実行できるという効果がある。また、機能の追加や変更にも迅速に対応できるという効果もある。
【００４８】
更にまた、起動ブロック以外のブロックに格納された関数が他のブロックの関数をアクセスするときに、そのブロックのテーブルからアクセス情報を読み出してアクセスするようにした。
【００４９】
これにより、アクセスする度にアクセス情報を読み出すので、先頭アドレス等のアクセス情報が変化しても他のブロックに影響を及ぼさない。そのため、変更するブロックのみ書き替えれば良いという効果がある。
【００５０】
更にまた、内部に関数と、この関数にアクセスするための情報が書き込まれ、固定された領域に配置されたテーブルを有するブロックを複数個具備するようにし、起動ブロックを書き込み禁止にし、アクセス情報として先頭アドレスを用いるようにした。
【００５１】
これにより、関数を再構成するとサイズ等が変化してアクセスするための情報が変化するが、この情報を同じブロックの固定された領域に配置されたテーブルに書き込んでおくことにより、他のブロックのプログラムは同じ手順で新しいアクセス情報を得ることができる。
【００５２】
そのため、再構成するブロックのみを書き替えればよいという効果がある。即ち、関数とそれらをアクセスする情報を書き込んだテーブルを１つのブロックに閉じこめることにより、再構成の影響が他のブロックに波及しないという効果がある。
【００５３】
また、起動ブロックを書き込み禁止にすることにより割り込みを取りこぼすことがなくなり、アクセス情報として先頭アドレスを用いることにより、簡便でかつ既存のＣＰＵに簡単に適合させることができるという効果もある。
【図面の簡単な説明】
【図１】本発明の一実施例を示す構成図である。
【図２】本発明の一実施例の動作を示すフローチャートである。
【図３】本発明の他の実施例を示す構成図である。
【図４】本発明の他の実施例を示す構成図である。
【図５】従来の不揮発性メモリ装置及び不揮発性メモリ装置のアクセス方法を表わす図である。
【符号の説明】
１  起動ブロック
１１  ベクタテーブル
１２  ベクタ関数領域
１３  ベクタ関数
２  Ａブロック
２１，３１  外部関数参照テーブル
２２，３２  関数領域
３  Ｂブロック
【図１】
2005018191.tif 000003
【図２】
2005018191.tif 000004
【図３】
2005018191.tif 000005
【図４】
2005018191.tif 000006
【図５】
2005018191.tif 000007