(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
個別に消去可能な複数の分割エリアに分割され、各々の分割エリアにユーザエリアとブートエリア指定フラグとを有する不揮発性メモリと、
前記複数のユーザエリアのうち、いずれのユーザエリアがブートプログラムを含むかを指定するエリア指定フラグであって、前記エリア指定フラグは、起動時に前記ブートエリア指定フラグに基づいてセットされ、前記ＣＰＵは前記エリア指定フラグに基づいていずれのユーザエリアに書き込まれているブートプログラムからＣＰＵの動作を開始するかを決定するエリア指定フラグとを備え、
前記複数のユーザエリアのうちブートプログラムを含むユーザエリアの書き換えは、ブートプログラムを含まないユーザエリアに新しいブートプログラムを書き込んだ後に、前記新しいブートプログラムを含むユーザエリアに対応するブートエリア指定フラグをブート指定するようにセットし、前記ブートエリア指定フラグをセットした後、前記ブートプログラムの書き込まれたユーザエリア及び当該ユーザエリアに対応するブートエリア指定フラグを書き換えることにより行われることを特徴とするコンピュータ。
【請求項２】
再起動時に、前記ブートエリア指定フラグのデータに基づいて、前記エリア指定フラグにいずれのユーザエリアがブートプログラムを含むかを指定するデータをセットし、その後、前記エリア指定フラグのデータに基づいてブートプログラムが含まれているユーザエリアのブートプログラムを実行するためのプログラムを格納したメモリを備え、前記ＣＰＵは、前記メモリのプログラムに従って動作することを特徴とする請求項１に記載のコンピュータ。
【請求項３】
前記ブートエリア指定フラグは、
複数ビットのフラグであり、書き換え履歴の判別を可能としたことを特徴とする請求項１または２に記載のコンピュータ。
【請求項４】
前記コンピュータは、
前記ＣＰＵ、前記不揮発性メモリ、前記ブートメモリ、および前記エリア指定フラグが１チップに収容されたワンチップマイコンであることを特徴とする請求項１ないし３のいずれかに記載のコンピュータ。
【請求項５】
前記コンピュータは、
前記ＣＰＵ、前記不揮発性メモリ、前記ブートメモリ、および前記エリア指定フラグが複数のチップによって構成されたシステムであることを特徴とする請求項１ないし３のいずれかに記載のコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンピュータのプログラムを書き込んだ消去可能不揮発性メモリの内容をユーザの使用段階で書き換える方法に関する。
【０００２】
【従来の技術】
従来より自動車等の機器に組み込まれた制御用コンピュータは、図４に示す構成となっている。
この図において、ライタ書き換えモードではブートメモリ７から命令実行を開始し、ユーザモードでは開始アドレス選択回路８の指令によって不揮発性メモリ６のユーザエリアＡ６１から実行を開始する。
ユーザの使用段階で不揮発性メモリ６を書き換えるセルフモードでは、ＲＡＭ５にブートプログラムその他書き換えに必要な命令を不揮発性メモリ６または外部から転送し、このＲＡＭ５から読み出した命令によって不揮発性メモリ６の書き換えを行っている。
【０００３】
ところが上述の方法では、不揮発性メモリ６のブートプログラムを含むプログラム（以下、ブートプログラムと称する）が記憶されているユーザエリアＡ６１を消去中に電源の瞬断等が起こってコンピュータが正常動作を続けられなくなることがある。
また、消去後の新プログラムの書き込み中に電源の瞬断等が起こり、書き込みが完全に行われないこともある。
このようなときに、システムをリセットして再起動を行っても、ブートプログラムが正常に書き換えられていないことが多く、再起動が不能となってしまう。従って、ユーザの使用段階で不揮発性メモリ６を書き換えるセルフモードでは、ブートプログラムの記憶されているユーザエリアＡ６１の消去を安全に行うことができないという問題があった。
【０００４】
この問題の対処方法として、特開平８−２５５０８４号または特開平１０−１４９２８２号にブートプログラムが記憶されているユーザエリアの書き換えを安全に行うための技術が開示されている。
ここでは、ブートエリアのプログラムを書き換えるとき、旧ブートプログラムを空いたユーザエリアにコピーして待避させ、前記ブートエリアの記憶内容を消去してからここに新ブートプログラムを書き込み、書き込み終了の確認後に空いたユーザエリアにコピーされた旧ブートプログラムを消去する方法を採っている。
このため、電源の瞬断等によって新プログラムの書き込みが完全に行われない状況が起こっても、旧ブートプログラムによってシステムの再起動が可能であり、修復不能の状態となることはない。
【０００５】
【発明が解決しようとする課題】
ところが上述の方法では、旧ブートプログラムの空きエリアへのコピー、不要になったときの旧ブートプログラムの消去等、アクションの回数が多く、取り扱いが煩雑で時間がかかるという課題があった。
【０００６】
本発明はこのような背景の下になされたもので、ユーザエリア毎ににブートエリア指定フラグを設けることによって不揮発性メモリに記憶されたブートプログラムをユーザの使用段階のオンボードモードで少ないアクションによって安全に書き換えを行うことができるコンピュータを提供することを目的とする。
【０００７】
【課題を解決するための手段】
請求項１に記載の発明は、
ＣＰＵと、個別に消去可能な複数の分割エリアに分割され、各々の分割エリアにユーザエリアとブートエリア指定フラグとを有する不揮発性メモリと、前記複数のユーザエリアのうち、前記ブートエリア指定フラグのデータに基づいていずれのユーザエリアがブートプログラムを含むかを指定するエリア指定フラグであって、前記データに基づいて、いずれのユーザエリアに書き込まれているプログラムからＣＰＵの動作を開始するかを決定するエリア指定フラグとを備え、
前記ユーザエリアのブートプログラムを含むプログラムの書き換えが、ブートプログラムを含まないユーザエリアに新しいブートプログラムを書き込んだ後に、該新しいブートプログラムを含むユーザエリアに対応するブートエリア指定フラグをブート指定するようにセットし、前記エリア指定フラグを切り替えた後、旧プログラムの書き込まれたユーザエリアを書き換えることにより行われることを特徴とするコンピュータを提供する。
【０００８】
請求項２に記載の発明は、請求項１に記載のコンピュータにおいて、
ユーザモードでの起動時に、前記ブートエリア指定フラグのデータに基づいて、前記エリア指定フラグにいずれのユーザエリアがブートプログラムを含むかを指定するデータをセットし、その後、前記エリア指定フラグのデータに基づいてブートプログラムが含まれているユーザエリアのブートプログラムを実行するプログラムを格納したメモリを備え、前記ＣＰＵは、前記メモリのプログラムに従って動作することを特徴とする。
【００１０】
請求項３に記載の発明は、請求項１または２に記載のコンピュータにおいて、前記ブートエリア指定フラグが、複数ビットのフラグであり、書き換え履歴の判別を可能としたことを特徴とする。
【００１１】
請求項４に記載の発明は、請求項１ないし３のいずれかに記載のコンピュータにおいて、
前記コンピュータが、前記ＣＰＵ、前記不揮発性メモリ、前記ブートメモリ、および前記エリア指定フラグが１チップに収容されたワンチップマイコンであることを特徴とする。
【００１２】
請求項５に記載の発明は、請求項１ないし３のいずれかに記載のコンピュータにおいて、
前記コンピュータが、前記ＣＰＵ、前記不揮発性メモリ、前記ブートメモリ、および前記エリア指定フラグが複数のチップによって構成されたシステムであることを特徴とする。
【００１３】
請求項６に記載の発明は、請求項１ないし５のいずれかに記載のコンピュータにおいて、
前記プログラムの書き換えが、前記ＣＰＵにより前記旧プログラムを使って書き換えを行うことを特徴とする。
【００１４】
請求項７に記載の発明は、請求項１ないし５のいずれかに記載のコンピュータにおいて、
前記プログラムの書き換えが、書き換え手順を記憶したシーケンサによって書き換えを行うことを特徴とする。
【００１５】
【発明の実施の形態】
以下、この発明の一実施形態について図を参照しながら説明する。図１はこの発明の一実施形態によるユーザの使用段階のオンボードモードでのブートプログラムを含むプログラムの書き換えを可能としたコンピュータの構成を示すブロック図である。
この図において、符号１はブートプログラムを含むプログラムが記憶された不揮発性メモリであり、ユーザエリアＡ１１とこれに対応するブートエリア指定フラグＡ２１、およびユーザエリアＢ１２とこれに対応するブートエリア指定フラグＢ２２の２つのユーザエリアをもっている。
【００１６】
ＣＰＵ２は主プロセッサであり、不揮発性メモリ１に記憶されたプログラムに従って制御、演算を行う。
ブートメモリ３は、指定した制御モードに従ってシステムを立ち上げる機能を持つ。システム立ち上げ後に不揮発性メモリ１に記憶されたプログラムのうち、ブートプログラムが最初に処理される。
ブートプログラムの書き換えは、コンピュータを単体で工場で扱っているときはライタによる書き換えを行い、ユーザの使用段階のオンボードモードではセルフモードで書き換えを行う。
エリア指定フラグ４は、システム立ち上げ時にブートプログラムが記憶されたユーザエリアを指定する機能を持つ。
ＲＡＭ５は、ＣＰＵ２からの指令によって必要なデータの一時記憶を行う。
【００１７】
このような構成によるコンピュータのユーザエリアＡ１１がブート指定されている（ブートエリア指定フラグＡ＝“０”、ブートエリア指定フラグＢ＝“１”）場合に、セルフモードでユーザエリアのブートプログラムを含むプログラム（以下、ブートプログラムと称する）の書き換えを行う手順を図２を参照して説明する。
なお、不揮発性メモリ１のデータ内容は、消去されると消去されたすべてのビットにおいて”１”が記憶されるようになっている。
【００１８】
まず、ステップＳ１において、新しくブートプログラムを書き込むユーザエリアＢ１２およびブートエリア指定フラグＢ２２の記憶内容を消去する。
【００１９】
ステップＳ２において、ユーザエリアＢ１２に新しいブートプログラムを書き込む。
【００２０】
ステップＳ３において、ブートエリア指定フラグＢ２２をブート指定（データ”０”）するようにデータを書き込む。
【００２１】
ステップＳ４において、前記Ｓ２、Ｓ３の各ステップの確認を行ってからユーザエリアＡ１１およびブートエリア指定フラグＡ２１の記憶内容を消去する。このとき、ブートエリア指定フラグＡ２１の書込みは行わなわず、データ”１”のままとする。
次に、消去されたユーザエリアＡ１１に必要に応じて、ブートプログラムではない他のプログラムを書き込む。
【００２２】
ユーザモードでは、リセットによってシステムの立ち上げが行われるとき、ブートメモリからプログラムが実行されるが、このプログラムに従って、ブートエリア指定フラグＡ２１およびブートエリア指定フラグＢ２２の値がリードされ、ユーザエリアＡまたはユーザエリアＢのうち、いずれが新しいブートプログラムを含むエリアかが判断されて、エリア指定フラグ４に該当するユーザエリアのデータが書き込まれる。
この判断結果をエリア指定フラグ４に設定し、システム立ち上げ時に新しいブートプログラムが記憶されたユーザエリアに分岐して記憶内容の読み込みを行う。
【００２３】
なお、ステップＳ３終了後で、かつ、ステップＳ４終了前に電源瞬断が起こった場合などには、複数のユーザエリアがブート指定されている場合が起こりうる。このような場合には、いずれかのユーザエリア、例えばユーザエリアＡを優先的にブート指定するというように定めておけばよい。
【００２４】
上述のブートプログラムの書き換えをユーザエリアおよびブートエリア指定フラグ別に表示すると図３のようになる。
図３（ａ）は、書き換えを行う前の状態を示している。すなわち、ユーザエリアＡにはブートプログラムが記憶されており、ブートエリア指定フラグＡが”ブート”の状態になっている。また、ユーザエリアＢには他のプログラムが書き込まれており、ブート指定フラグＢは”非ブート”となっている。
【００２５】
図３（ｂ）では、ユーザエリアＢの他のプログラムを消去する。
図３（ｃ）では、ユーザエリアＢに新ブートプログラムの書き込みを行う。
図３（ｄ）では、ブートエリア指定フラグＢを”ブート”とする。
図３（ｅ）では、ユーザエリアＡのブートプログラムを消去する。ブートエリア指定フラグＡは”非ブート”となる。ブートプログラムが消去されたユーザエリアＡには、新たにプログラムを書き込むことができる。
【００２６】
上述の一実施形態の説明では、簡単のために不揮発性メモリ１をユーザエリアＡとユーザエリアＢの２つのエリアに分割した場合であり、ブートエリア指定フラグＡまたはＢは”１”または”０”のセットで事足りた。
実際には、不揮発性メモリ１は３エリア以上の多数のエリアに分割することが多く、この場合には各ユーザエリア毎に設けられたブートエリア指定フラグのビット数を、必要とされる複数ビットとすればよい。例えば、分割エリアが３または４の場合は２ビット、５ないし８の場合は３ビットとすればよい。
【００２７】
また、この複数ビットのブートエリア指定フラグのデータを、書き換えの回数に応じたデータとすることで、ユーザエリアの書き換え履歴を判断できるようにしてもよい。
【００２８】
書き換え履歴を判断できるようにするには、例えば、初期状態では全ビットが”１”の状態とし、ブートできるユーザエリアがない状態となり、ブートプログラムをユーザエリアに書き込んだとき、このユーザエリアのブートエリア指定フラグの複数ビットのうち、最下位ビットを”０”としてブート可能ユーザエリアとする。
次にブートプログラムの書き換えを行うときは、新たに書き込むユーザエリアのブートエリア指定フラグの最下位ビットおよび次の下位ビットを”０”とする。
【００２９】
システムの立ち上げ時は、”０”のビットが多いブートエリア指定フラグのユーザエリアからブートプログラムを読み込むように動作する。
このように順次下位ビットから”０”を増やすセットを行うことによって最新のブートプログラムが記憶されているユーザエリアを判別し、このブートプログラムからシステムを立ち上げることができる。
また、全てのビットに”０”がセットされたブートプログラムにより新たなセットを行うときは、”０”を最下位ビットのみにセットすることで、最新のブートプログラムを判断できる。
【００３０】
以上、本発明の一実施形態の動作を図面を参照して詳述してきたが、本発明はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【００３１】
例えば、コンピュータは、ＣＰＵ、不揮発性メモリ、ブートメモリ、およびエリア指定フラグが１チップに収容されたワンチップマイコンであっても、複数のチップによって構成されたシステムであってもよい。
【００３２】
また上述の一実施形態では、ブートプログラムの書き換えがＣＰＵの制御により旧ブートプログラムを使って書き換えを行う場合であったが、書き換え手順を記憶したシーケンサによって書き換えを行うものであってもよい。
【００３３】
【発明の効果】
これまでに説明したように、この発明によれば、ブートエリア指定フラグおよびエリア指定フラグを設けることにより、システム立ち上げを行うブートプログラムを含むユーザエリアを切り替えることを可能とし、常に旧ブートプログラムが存在する状態で不揮発性メモリのブートプログラム書き換えを行うようにしたので、セルフモードで書き換えを行うときに電源瞬断等により書き換えが終了しなかったときでも再書き込みによる修復が可能で、かつ少ないアクション回数で短時間に書き換えを行うことができるという効果が得られる。
【図面の簡単な説明】
【図１】  本発明の一実施形態によるユーザの使用段階でブートプログラムを含むプログラムの書き換えができるコンピュータの構成を示すブロック図。
【図２】  ブートプログラムの書き換え手順を示す図。
【図３】  ブートプログラムの書き換え手順を不揮発性メモリのユーザエリア毎に表す図。
【図４】  従来の技術によるコンピュータの構成を示すブロック図。
【符号の説明】
１、６…不揮発性メモリ
２…ＣＰＵ
３、７…ブートメモリ
４…エリア指定フラグ
５…ＲＡＭ
８…開始アドレス選択回路
１１…ユーザエリアＡ
２１…ブートエリア指定フラグＡ
１２…ユーザエリアＢ
２２…ブートエリア指定フラグＢ
６１…ユーザエリアＡ
６２…ユーザエリアＢ
【図１】
0003838840.tif 000002
【図２】
0003838840.tif 000003
【図３】
0003838840.tif 000004
【図４】
0003838840.tif 000005