(57)【特許請求の範囲】
【請求項１】
所定記憶領域を備えたＲＡＭと、
前記ＲＡＭにアクセスするプログラム領域を備えるプログラム記憶領域と、
前記所定記憶領域に対応して設けられ更新許可／禁止状態に設定可能なバックアップ領域と、
前記バックアップ領域の更新許可状態／禁止状態を保持するレジスタと、
前記プログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納するプログラムカウンタと、を備え、
前記プログラムカウンタの示すアドレスを監視し、
前記プログラムカウンタのアドレスが前記ＲＡＭの所定記憶領域にアクセス開始するプログラム領域に遷移することを確認すると、前記所定記憶領域のデータと前記バックアップ領域のデータとを比較し、データが異なっているときには前記ＲＡＭの所定記憶領域のデータを前記バックアップ領域のデータで更新し、
前記プログラムカウンタのアドレスが前記ＲＡＭの所定記憶領域外に遷移することを確認すると、その遷移直前において前記レジスタに前記バックアップ領域を更新許可状態と設定し、前記バックアップ領域のデータを前記所定記憶領域のデータで更新し、更新処理後に前記レジスタに前記バックアップ領域を禁止状態と設定することを特徴とするＲＡＭ値保証装置。
【請求項２】
セクションによって割付けられ、保証ＲＡＭ領域、記憶値の保証度が前記保証ＲＡＭ領域よりも低い非保証ＲＡＭ領域を備えたＲＡＭと、
前記保証ＲＡＭ領域に対応した保証プログラム領域、および、前記保証プログラム領域以外の非保証ＲＡＭ領域に対応した非保証プログラム領域を備えたプログラム記憶領域と、
前記保証ＲＡＭ領域に対応して設けられ更新許可／禁止状態に設定可能なバックアップ領域を備えたバックアップＲＡＭ領域と、
前記バックアップＲＡＭ領域の更新許可状態／禁止状態を保持するレジスタと、
前記プログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納するプログラムカウンタと、を備え、
前記プログラムカウンタの示すアドレスを監視し、
前記プログラム記憶領域の非保証プログラム領域から保証プログラム領域に前記プログラムカウンタのアドレスが遷移することを確認すると、前記保証ＲＡＭ領域のデータと前記バックアップＲＡＭ領域におけるバックアップ領域のデータとを比較し、当該データが異なっているときには保証ＲＡＭ領域のデータを前記バックアップＲＡＭ領域におけるバックアップ領域のデータで更新し、
前記プログラム記憶領域の保証プログラム領域から非保証プログラム領域に前記プログラムカウンタのアドレスが遷移することを確認すると、その遷移直前に前記レジスタにバクアップＲＡＭ領域のバックアップ領域を更新許可状態と設定し、前記バックアップＲＡＭ領域におけるバックアップ領域のデータを前記保証ＲＡＭ領域のデータで更新し、更新処理後に前記レジスタにバックアップＲＡＭ領域におけるバックアップ領域を禁止状態と設定することを特徴とするＲＡＭ値保証装置。
【請求項３】
前記更新許可／禁止はマイクロコンピュータ本体に内蔵の機能を用いて行うことを特徴とする請求項１または２記載のＲＡＭ値保証装置。
【請求項４】
前記プログラムカウンタの監視によって前記アドレスの遷移の確認を行うときには、
前記プログラムカウンタの値が、セクション分けされた領域の何れの領域内を示しているかを判断することで確認することを特徴とする請求項１ないし３の何れかに記載のＲＡＭ値保証装置。
【請求項５】
前記非保証プログラム領域から前記保証プログラム領域への遷移をアプリケーションプログラム内で認識したときに、前記保証ＲＡＭ領域のデータと前記バックアップＲＡＭ領域のバックアップ領域のデータとを比較することを特徴とする請求項２記載のＲＡＭ値保証装置。
【請求項６】
前記保証ＲＡＭ領域は、第１保証ＲＡＭ領域および第２保証ＲＡＭ領域を含む複数の領域に分割されると共に、
前記プログラム記憶領域は、分割された第１保証ＲＡＭ領域、第２保証ＲＡＭ領域にそれぞれ対応した第１保証プログラム領域、第２保証プログラム領域を備え、
前記バックアップＲＡＭ領域は、分割された第１保証ＲＡＭ領域、第２保証ＲＡＭ領域にそれぞれ対応した第１バックアップ領域、第２バックアップ領域を備え、
前記レジスタには、分割された第１バックアップ領域、第２バックアップ領域毎に各々前記更新許可状態／禁止状態の設定が可能となっており、
前記プログラム記憶領域の第１保証プログラム領域から第２保証プログラム領域に前記プログラムカウンタのアドレスが遷移することを確認すると、その遷移直前に前記レジスタにバックアップＲＡＭ領域の第１バックアップ領域を更新許可状態と設定し、前記バックアップＲＡＭ領域における第１バックアップ領域のデータを前記保証ＲＡＭ領域の第１保証ＲＡＭ領域のデータで更新し、更新処理後に前記レジスタにバックアップＲＡＭ領域における第１バックアップ領域を禁止状態と設定することを特徴とする請求項２または５記載のＲＡＭ値保証装置。
【請求項７】
前記第１保証プログラム領域から前記第２保証プログラム領域への遷移をアプリケーションプログラム内で認識したときに、前記保証ＲＡＭ領域の第１保証ＲＡＭ領域のデータと前記バックアップＲＡＭ領域の第１バックアップ領域のデータとを比較することを特徴とする請求項６記載のＲＡＭ値保証装置。
【請求項８】
マイクロコンピュータに、
プログラムカウンタの示すアドレスを監視する手順と、
プログラム記憶領域の非保証プログラム領域から保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、保証ＲＡＭ領域のデータとバックアップＲＡＭ領域のデータとを比較し、当該データが異なっているときには前記保証ＲＡＭ領域のデータを前記バックアップＲＡＭ領域のデータで更新する手順と、
プログラム記憶領域の保証プログラム領域から非保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、その遷移直前に前記バックアップＲＡＭ領域におけるバックアップ領域の更新を許可し、バックアップ領域のデータを保証ＲＡＭ領域のデータで更新し、更新処理後に前記バックアップＲＡＭ領域におけるバックアップ領域の更新を禁止する手順と、を実行させることを特徴とするＲＡＭ値保証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＭ（Random Access Memory）内のデータを保証するための保証技術を備えたＲＡＭ値保証装置およびＲＡＭ値保証プログラムに関する。
【背景技術】
【０００２】
ＲＡＭの記憶値の誤り検出、誤り訂正処理には、ミラーチェック、３面チェック技術が用いられる（例えば、特許文献１，２参照）。ミラーチェックは、データ記憶領域を２つ用意し、それぞれに同一のデータを保存しデータを照合する技術である。３面チェックは、データ記憶領域を３つ用意し、それぞれにデータを保存しデータを照合し、少なくとも２つ以上一致していればそのデータを正しいと判定して訂正する技術を示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２１５２０号公報
【特許文献２】特開平１１−８５２２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ミラーチェックの技術を適用するとデータ記憶領域が破壊されたことを検出できるものの誤り訂正できない。３面チェックでは、１つのデータ記憶領域が破壊されたときには真となる値はわかるが、２つのデータ記憶領域が破壊されたときには真となる値がわからない。３面チェックの技術を適用するとＲＡＭの記憶容量が大きくなってしまう。
【０００５】
本発明は、上記事情に鑑みてなされたもので、その目的は、ＲＡＭの記憶容量を抑制しながらＲＡＭの記憶値を保証できるようにしたＲＡＭ値保証装置およびＲＡＭ値保証プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１記載の発明によれば、ＲＡＭは所定記憶領域を備え、プログラム記憶領域はＲＡＭにアクセスするプログラム領域を備える。バックアップ領域は所定記憶領域に対応して設けられ更新許可／禁止状態に設定可能となっている。レジスタはバックアップ領域の更新許可状態／禁止状態を保持する。プログラムカウンタはプログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納する。そして、プログラムカウンタの示すアドレスを監視し、プログラムカウンタのアドレスがＲＡＭの所定記憶領域にアクセス開始するプログラム領域に遷移することを確認すると、所定記憶領域のデータとバックアップ領域のデータとを比較し、データが異なっているときにはＲＡＭの所定記憶領域のデータをバックアップ領域のデータで更新するため、所定記憶領域のデータを正しいデータに置き換えることができる。
【０００７】
また、プログラムカウンタのアドレスがＲＡＭの所定記憶領域外に遷移することを確認すると、その遷移直前においてレジスタにバックアップ領域を更新許可状態と設定し、バックアップ領域のデータを所定記憶領域のデータで更新し、更新処理後にレジスタにバックアップ領域を禁止状態と設定するため、書き換えられた所定記憶領域のデータをバックアップ領域に退避させることができる。したがって、真となるデータをバックアップすることができＲＡＭの記憶値を保証できる。また、３面チェックを必要としないため、ＲＡＭの記憶容量を抑制できる。
【０００８】
請求項２記載の発明によれば、ＲＡＭは、セクションによって割付けられ、保証ＲＡＭ領域、記憶値の保証度が前記保証ＲＡＭ領域よりも低い非保証ＲＡＭ領域を備える。プログラム記憶領域は、保証ＲＡＭ領域に対応した保証プログラム領域、および、保証プログラム領域以外の非保証ＲＡＭ領域に対応した非保証プログラム領域を備える。また、バックアップＲＡＭ領域は、保証ＲＡＭ領域に対応して設けられており更新許可／禁止状態に設定可能なバックアップ領域を備える。プログラムカウンタは、プログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納する。
【０００９】
そして、プログラムカウンタの示すアドレスを監視し、プログラム記憶領域の非保証プログラム領域から保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、保証ＲＡＭ領域のデータとバックアップＲＡＭ領域におけるバックアップ領域のデータとを比較し、当該データが異なっているときには保証ＲＡＭ領域のデータをバックアップＲＡＭ領域におけるバックアップ領域のデータで更新し、プログラム記憶領域の保証プログラム領域から非保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、その遷移直前にレジスタにバックアップＲＡＭ領域のバックアップ領域を更新許可状態と設定することで、保証ＲＡＭ領域に対応したバックアップＲＡＭ領域におけるバックアップ領域の更新を許可する。そして、バックアップＲＡＭ領域におけるバックアップ領域のデータを保証ＲＡＭ領域のデータで更新し、更新処理後にレジスタにバックアップ領域を禁止状態と設定することで保証ＲＡＭ領域に対応したバックアップＲＡＭ領域におけるバックアップ領域の更新を禁止する。これにより、ＲＡＭの記憶容量を抑制しながらＲＡＭの記憶値を保証できる。
【００１０】
請求項３記載の発明によれば、ＲＡＭの更新許可／禁止はマイクロコンピュータ本体に内蔵の機能を用いて行っている。この場合、マイクロコンピュータのハードウェア改造を行うことなくＲＡＭの記憶値を保証できる。
【００１１】
請求項４記載の発明によれば、プログラムカウンタの監視によってアドレス遷移の確認を行うときには、プログラムカウンタの値が、セクション分けされた領域の何れの領域内を示しているかを判断することで確認するため、何れの領域のプログラムを実行するかを容易に判断できる。
【００１２】
請求項５記載の発明によれば、保証ＲＡＭ領域のデータとバックアップＲＡＭのバックアップ領域のデータとを比較するアプリケーションプログラムが、非保証プログラム領域から保証プログラム領域への遷移を認識したときに行うように組み込まれている。したがって、保証ＲＡＭ領域のデータとバックアップＲＡＭ領域のバックアップ領域のデータとを比較するタイミングがアプリケーションプログラム内で設定されている。このため、非保証プログラム領域内のプログラム実行時における保証ＲＡＭ領域に対する不正アクセスを容易に検出できる。
【００１３】
請求項６記載の発明によれば、プログラム記憶領域の第１保証プログラム領域から第２保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、その遷移直前にレジスタにバックアップＲＡＭ領域の第１バックアップ領域を更新許可状態と設定し、バックアップＲＡＭ領域の第１バックアップ領域のデータを保証ＲＡＭ領域の第１保証ＲＡＭ領域のデータで更新し、更新処理後にレジスタに対しバックアップＲＡＭ領域における第１バックアップ領域を禁止状態と設定する。したがって、分割された各領域毎にプログラム動作（例えば制御）できるため、各領域別に関連性の高いプログラム動作（例えば制御）を行うことができるようになり、システムの利便性を向上できる。
【００１４】
請求項７記載の発明によれば、保証ＲＡＭ領域のデータとバックアップＲＡＭのバックアップ領域のデータとを比較するアプリケーションプログラムが、第１保証プログラム領域から第２保証プログラム領域への遷移を認識したときに行うように組み込まれている。したがって、保証ＲＡＭ領域の第１保証ＲＡＭ領域のデータとバックアップＲＡＭ領域の第１バックアップ領域のデータとを比較するタイミングがアプリケーションプログラム内で設定されている。このため、非保証プログラム領域内のプログラム実行時における保証ＲＡＭ領域に対する不正アクセスを容易に検出できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施例のシステムを概略的に示す電気的構成図
【図２】各プログラム領域と各ＲＡＭ領域のアクセスについて示すアプリケーションプログラムの流れ図
【図３】ＣＰＵが実行するＯＳ処理の流れ（プログラムカウンタの監視ロジック）を示すフローチャート
【発明を実施するための形態】
【００１６】
以下、本発明の一実施例について図面を参照しながら説明する。本システム１は、エンジンＥＣＵ２内のマイクロコンピュータ（以下、マイコンと略す）３を主として実現される。マイコン３は、ＲＯＭ４、ＲＡＭ５、プログラムカウンタ６、ＲＡＭ更新許可／禁止設定レジスタ７、ＣＰＵ８を備え、エンジンＥＣＵ２は制御対象Ａを制御する。制御対象Ａは例えばコモンレールシステムを採用したディーゼルエンジンであり、エンジンＥＣＵ２はこのディーゼルエンジンの制御システムを実現する。
【００１７】
ＲＯＭ４には、非保証プログラム領域９、保証プログラム領域１０がプログラム記憶領域として設けられる。保証プログラム領域１０には、使用するＲＡＭ５に記憶される各種記憶値の保証度が高く要求されるプログラムが記憶されている。この保証プログラム領域１０は、ＲＡＭ＿Ａ群更新許可領域１０ａ、ＲＡＭ＿Ｂ群更新許可領域１０ｂ…に複数分割されている。制御用のプログラムは、各領域９または１０に対して、セクション情報により所定の連続したメモリ領域に割付けられる。
【００１８】
エンジンＥＣＵ２は、運転者のアクセルペダルの開度に応じて必要となる噴射量を演算するが、保証プログラム領域１０には、アクセル開度とエンジン回転数から要求トルクを算出して噴射量を算出する制御プログラム、および、トルクを監視する制御プログラムなどが記憶されている。
【００１９】
非保証プログラム領域９には、使用するＲＡＭ５の記憶値の保証度が低くても良い演算処理を行うプログラムが記憶される。エンジンＥＣＵ２は、ディーゼルエンジンの排ガス処理システムを実現しているが、非保証プログラム領域９には、当該後処理制御（例えば、ＤＰＦ（Diesel Particulate Filter）の再生、ＳＣＲ(Selective Catalytic Reduction)による排出ガス浄化制御）などの処理プログラムが記憶されている。
【００２０】
読み書き可能なＲＡＭ５には、非保証ＲＡＭ領域１１、保証ＲＡＭ領域１２、バックアップＲＡＭ領域１３が設けられる。ＲＡＭ５は、マイコン３内蔵の機能を用いると、非保証ＲＡＭ領域１１、保証ＲＡＭ領域１２、および、バックアップＲＡＭ領域１３をそれぞれブロック単位で設定できるため、このマイコン３内蔵の機能を用いてブロック単位で設けると良い。
【００２１】
ＲＡＭ５の保証ＲＡＭ領域１２内では、ＲＡＭ＿Ａ群１２ａ、ＲＡＭ＿Ｂ群１２ｂ…のように、各データ群がそれらの記憶容量を例えば同一容量のブロック毎に分割して記憶される。
【００２２】
非保証ＲＡＭ領域１１は、非保証プログラム領域９のプログラムのみからアクセス（読み書き）可能に許可された情報記憶領域であり、保証ＲＡＭ領域１２は、保証プログラム領域１０のプログラムのみからアクセス（読み書き）可能に許可された情報記憶領域として設定されている。
【００２３】
また、バックアップＲＡＭ領域１３には、保証ＲＡＭ領域１２の確保メモリ容量以上のメモリ容量が設けられ、このバックアップＲＡＭ領域１３は、保証ＲＡＭ領域１２の記憶内容をバックアップするため構成される。これらの領域１１〜１３は、セクション情報によって所定のメモリ領域に割り付けられる。バックアップＲＡＭ領域１３は、ＲＡＭ更新（読書）許可／禁止設定レジスタ７によりブロック毎に更新許可／禁止設定可能に構成されている。このようにしてソフトウェアパーティショニングが行われる。ＲＡＭ更新許可／禁止設定レジスタ７は、バックアップＲＡＭ領域１３の更新許可状態／禁止状態を保持する。このレジスタ７は、ＲＡＭ＿Ａ群バックアップ１３ａ、１３ｂ…などの複数のバックアップ領域の更新許可状態／禁止状態を個別に設定可能になっている。
【００２４】
一般に、プログラム記憶領域に記憶されるプログラムは命令数も多く各種命令が複雑な態様で存在する。プログラム（ソフトウェア）は、電子部品のようにランダムな故障はしないものの、テストしきれないバグにより問題を生じ、Systematic Failure （決定論的故障）という問題を起こす。そのようなバグを完全にゼロにすることはプログラム（ソフトウェア）の場合困難である。
【００２５】
したがって、何らかの人的なプログラムの設計ミス、バグの検証ミスなどの影響によって、保証プログラム領域１０内のプログラムが非保証ＲＡＭ領域１１にアクセス（読出／書込）したり、非保証プログラム領域１１内のプログラムが保証ＲＡＭ領域１２にアクセス（読出／書込）することが考えられる。
【００２６】
すると、例えば、非保証プログラム領域９に記憶されたプログラムが保証ＲＡＭ領域１２にアクセスした上で誤ったデータに書換え、この後、保証プログラム領域１０のプログラムがその書き換えられたデータにアクセスしてデータを参照すると、誤ったデータを参照することで誤りデータの伝播が連続的に生じてしまい、最悪の場合、保証プログラム領域１０内の制御プログラムの動作不具合に繋がる。そこで、本実施例では、ＯＳ（オペレーティングシステム）によりプログラムカウンタ６の値を周期的に細かくサイクリックに監視することに基づいて不具合を防止している。
【００２７】
図２は、各プログラム領域と各ＲＡＭ領域のアクセス方法についてアプリケーションプログラムの流れと共に示している。また、図３は、ＣＰＵ８が実行するＯＳの処理の流れ（プログラムカウンタ６の監視ロジック）をフローチャートによって示している。
【００２８】
コモンレールシステムを採用したディーゼルエンジン制御システムでは、燃料を高圧ポンプで加圧してコモンレールに蓄え、ソレノイドや圧電素子を使ったインジェクタで燃焼室内に噴射する。この場合、エンジンＥＣＵ２は、保証プログラム領域１０に記憶された制御プログラムに応じて、運転者のアクセルペダルの開度に応じて必要となる噴射量を演算して制御を行う（以下、噴射制御と略す）。そして、エンジンＥＣＵ２は非保証プログラム領域９に記憶された排気ガス後処理システムにおいてＤＰＦの再生などの後処理制御（以下、後処理制御と略す）を行う。したがって、エンジンＥＣＵ２内では図２に示されるように、保証プログラム領域１０のプログラムと、非保証プログラム領域９のプログラムとが繰り返し実行される。
【００２９】
ＲＯＭ４内に記憶されるプログラムはセクション定義によりメモリの所定領域に割り付けられる。この割り付けに応じてプログラム記憶領域が決定される。また、ＲＡＭ５内のデータ記憶領域もセクション定義によりメモリの所定領域に割り付けられる。この割り付けに応じてデータ記憶領域が例えばブロック毎に決定される。そして、非保証プログラム領域９、保証プログラム領域１０の各プログラムが順に実行されることによりディーゼルエンジン制御システムを実現している。
【００３０】
噴射制御が行われた後、後処理制御が行われるが、この後処理制御において、エンジンＥＣＵ２のＣＰＵ８は、非保証プログラム領域９のプログラムによって読出／書込処理を非保証ＲＡＭ領域１１内のデータに行う。非保証プログラム領域９のプログラムが実行中であるときにも、非保証プログラム領域９内のプログラムから保証ＲＡＭ領域１２にアクセスできるため、前記した不具合に応じて意図しない形で保証ＲＡＭ領域１２のデータが書換わってしまう可能性もある。
【００３１】
この間、ＣＰＵ８はＯＳによりプログラムカウンタ６を参照し、次に行われるプログラムの実行アドレスを認識する。ＣＰＵ８はＯＳによりプログラムの実行アドレスを認識することによって非保証プログラム領域９から保証プログラム領域１０への遷移（移動）を認識できる（図３の領域跨ぎ条件Ｓ１参照）。
【００３２】
ＣＰＵ８は、非保証プログラム領域９から保証プログラム領域１０への実行アドレスの遷移を認識すると（図３のＳ１：ＹＥＳ）、保証ＲＡＭ領域１２のデータ記憶値とバックアップＲＡＭ領域１３のデータ記憶値とが一致するか否かを判定する（図３のＳ２）。このとき、保証ＲＡＭ領域１２の全データ値とバックアップＲＡＭ領域１３の全データ値が互いに一致すれば（図３のＳ２：ＹＥＳ）ルーチンを抜ける。しかし、一致しなければ（図３のＳ２：ＮＯ）、不正アクセスしたとして検出し、保証ＲＡＭ領域１２に対応するバックアップＲＡＭ領域１３のデータ記憶値をコピーする（Ｓ３）。したがって、仮に非保証プログラム領域９のプログラムが実行されることによって保証ＲＡＭ領域１２が書き換えられた場合、保証ＲＡＭ領域１２が不正にアクセスされたと認識し、バックアップＲＡＭ領域１３内の正確なデータで保証ＲＡＭ領域１２のデータを書き換えることができる。
【００３３】
ＣＰＵ８は、所定のＲＡＭ＿Ａ群更新許可領域１０ａ内のプログラム実行中においては、その更新許可領域１０ａを抜けてＲＡＭ＿Ｂ群更新許可領域１０ｂのプログラムを実行する直前まで（Ｓ４：ＮＯ）、保証ＲＡＭ領域１２のＲＡＭ＿Ａ群１２ａのデータ記憶値を用いて演算し（Ｓ５）、制御を実行できる。
【００３４】
その後、ＣＰＵ８はプログラムカウンタ６を監視しているため、プログラムがＲＡＭ＿Ａ群更新許可領域１０ａから他のＲＡＭ＿Ｂ群更新許可領域１０ｂに遷移するときに把握できる。ＣＰＵ８は、プログラムがＲＡＭ＿Ｂ群更新許可領域１０ｂに遷移する直前において（Ｓ１：ＮＯで且つＳ４：ＹＥＳ）、ＲＡＭ更新許可／禁止設定レジスタ７に対しＲＡＭ＿Ａ群バックアップ１３ａを更新許可状態に設定してバックアップＲＡＭ領域１３におけるＲＡＭ＿Ａ群バックアップ１３ａの更新を許可し（Ｓ６）た上で、対応するＲＡＭ＿Ａ群バックアップ１３ａに保証ＲＡＭ領域１２のＲＡＭ＿Ａ群１２ａのデータ記憶値を更新する（Ｓ７）。そして、ＲＡＭ更新許可／禁止設定レジスタ７に対しＲＡＭ＿Ａ群バックアップ１３ａの更新を禁止状態に設定することで、バックアップＲＡＭ領域１３におけるＲＡＭ＿Ａ群バックアップ１３ａの更新を禁止する（Ｓ８）。
【００３５】
続いて、ＲＡＭ＿Ｂ群更新許可領域１０ｂ内のプログラムが実行されても、このような動作が繰り返される。これは、保証プログラム領域１０内のプログラムの実行を完了するまで同様に繰り返される。その後、ＣＰＵ８はプログラムカウンタ６が非保証プログラム領域９に遷移する直前において（Ｓ１：ＮＯで且つＳ４：ＹＥＳ）、レジスタ７に対し対応するバックアップ領域の更新を許可した上で、バックアップ領域にデータ記憶値を更新し、当該バックアップ領域の更新を禁止する（Ｓ６〜Ｓ８）。このようにして保証ＲＡＭ領域１２のデータは保護される。
【００３６】
従来技術を適用すると、３面チェックを行うためには、保証ＲＡＭ領域１２のデータ全てを３領域に記憶することが考えられるが、これらのデータを３領域分保持するとＲＡＭ５のデータ記憶容量が膨大な量となる。本実施形態によれば、保証ＲＡＭ領域１２およびバックアップＲＡＭ領域１３の２面分のみで良いため記憶容量を抑制できる。
【００３７】
本実施形態によれば、ＣＰＵ８は、ＯＳによりプログラムカウンタ６の示すアドレスを監視し、非保証プログラム領域９から保証プログラム領域１０にプログラムカウンタ６のアドレスが遷移することを確認すると、保証ＲＡＭ領域１２の全データとバックアップＲＡＭ領域１３の全データとを比較し、当該データが異なっているときには保証ＲＡＭ領域１２のデータをバックアップＲＡＭ領域１３のデータで更新する。
【００３８】
また、ＣＰＵ８はＯＳによりプログラムカウンタ６の示すアドレスを監視し、プログラムカウンタ６のアドレスが保証プログラム領域１０内でもＲＡＭ＿Ａ群更新許可領域１０ａからＲＡＭ＿Ｂ群更新許可領域１０ｂに遷移することを確認すると、その遷移直前にバックアップＲＡＭ領域１３内におけるＲＡＭ＿Ａ群バックアップ（バックアップ領域）１３ａの更新を許可し、ＲＡＭ＿Ａ群バックアップ１３ａのデータを保証ＲＡＭ領域１２のＲＡＭ＿Ａ群１２ａのデータで更新し、更新処理後にＲＡＭ＿Ａ群バックアップ１３ａの更新を禁止する。これによりＲＡＭ＿Ａ群バックアップ１３ａの内容が保護される。このようなことがＲＡＭ＿Ｂ群（１０ｂ，１２ｂ，１３ｂ）などでも繰り返し行われる。これにより、ＲＡＭ５の保証ＲＡＭ領域１２ａ，１２ｂ…の記憶値を保証できる。
【００３９】
また、ＲＡＭ５の更新許可／禁止の設定をマイクロコンピュータ３本体に内蔵の機能を用いて行っているため、マイクロコンピュータ３のハードウェア改造を行うことなくＲＡＭ５の保証ＲＡＭ領域１２ａ，１２ｂ…の記憶値を保証できる。
【００４０】
また、プログラムカウンタ６の監視によりプログラムの実行アドレスの遷移の確認を行うときには、プログラムカウンタ６の値が、セクション分けされた領域の何れの領域内を示しているかを判断することで確認すると、何れの領域のプログラムを実行するかを容易に判断できる。
【００４１】
また、保証プログラム領域１０、保証ＲＡＭ領域１２、および、バックアップＲＡＭ領域１３がそれぞれ複数の領域に分割されているため、これらの分割された各領域毎に制御プログラムを実行できるようになり、各領域別に関連性の高い制御プログラムを実行できる。これにより、システムの利便性を向上できる。
【００４２】
保証ＲＡＭ領域１２（ＲＡＭ＿Ａ群１２ａ，ＲＡＭ＿Ｂ群１２ｂ…）のデータとバックアップＲＡＭ１３のバックアップ領域（ＲＡＭ＿Ａ群バックアップ１３ａ，ＲＡＭ＿Ｂ群バックアップ１３ｂ…）のデータと比較するプログラムが、領域１０ａから領域１０ｂへの遷移などのように他の更新許可領域に遷移したとき、または、保証プログラム領域１０から非保証プログラム領域９への遷移を認識したときに行うように組み込まれている。
【００４３】
この場合、保証ＲＡＭ領域１２のデータとバックアップＲＡＭ領域１３のバックアップ領域（ＲＡＭ＿Ａ群バックアップ１３ａ，ＲＡＭ＿Ｂ群バックアップ１３ｂ…）のデータと比較するタイミングがプログラム内で設定されていることになる。このため、非保証プログラム領域９内のプログラム実行時において保証ＲＡＭ領域１２に対する不正アクセスを容易に検出できる。
【符号の説明】
【００４４】
図面中、１はシステム、２はエンジンＥＣＵ、３はマイクロコンピュータ、４はＲＯＭ、５はＲＡＭ、６はプログラムカウンタ、７はＲＡＭ更新許可／禁止設定レジスタ（レジスタ）、８はＣＰＵ、９は非保証プログラム領域、１０は保証プログラム領域、１０ａはＲＡＭ＿Ａ群更新許可領域、１０ｂはＲＡＭ＿Ｂ群更新許可領域、１１は非保証ＲＡＭ領域、１２は保証ＲＡＭ領域、１２ａはＲＡＭ＿Ａ群、１２ｂはＲＡＭ＿Ｂ群、１３はバックアップＲＡＭ領域、１３ａはＲＡＭ＿Ａ群バックアップ、１３ｂはＲＡＭ_Ｂ群バックアップを示す。
【図１】
0005598417.tif 000002
【図２】
0005598417.tif 000003
【図３】
0005598417.tif 000004