"所定記憶領域を備えたRAMと、前記RAMにアクセスするプログラム領域を備えるプログラム記憶領域と、前記所定記憶領域に対応して設けられ更新許可/禁止状態に設定可能なバックアップ領域と、前記バックアップ領域の更新許可状態/禁止状態を保持するレジスタと、前記プログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納するプログラムカウンタと、を備え、前記プログラムカウンタの示すアドレスを監視し、前記プログラムカウンタのアドレスが前記RAMの所定記憶領域にアクセス開始するプログラム領域に遷移することを確認すると、前記所定記憶領域のデータと前記バックアップ領域のデータとを比較し、データが異なっているときには前記RAMの所定記憶領域のデータを前記バックアップ領域のデータで更新し、前記プログラムカウンタのアドレスが前記RAMの所定記憶領域外に遷移することを確認すると、その遷移直前において前記レジスタに前記バックアップ領域を更新許可状態と設定し、前記バックアップ領域のデータを前記所定記憶領域のデータで更新し、更新処理後に前記レジスタに前記バックアップ領域を禁止状態と設定することを特徴とするRAM値保証装置。セクションによって割付けられ、保証RAM領域、記憶値の保証度が前記保証RAM領域よりも低い非保証RAM領域を備えたRAMと、前記保証RAM領域に対応した保証プログラム領域、および、前記保証プログラム領域以外の非保証RAM領域に対応した非保証プログラム領域を備えたプログラム記憶領域と、前記保証RAM領域に対応して設けられ更新許可/禁止状態に設定可能なバックアップ領域を備えたバックアップRAM領域と、前記バックアップRAM領域の更新許可状態/禁止状態を保持するレジスタと、前記プログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納するプログラムカウンタと、を備え、前記プログラムカウンタの示すアドレスを監視し、前記プログラム記憶領域の非保証プログラム領域から保証プログラム領域に前記プログラムカウンタのアドレスが遷移することを確認すると、前記保証RAM領域のデータと前記バックアップRAM領域におけるバックアップ領域のデータとを比較し、当該データが異なっているときには保証RAM領域のデータを前記バックアップRAM領域におけるバックアップ領域のデータで更新し、前記プログラム記憶領域の保証プログラム領域から非保証プログラム領域に前記プログラムカウンタのアドレスが遷移することを確認すると、その遷移直前に前記レジスタにバクアップRAM領域のバックアップ領域を更新許可状態と設定し、前記バックアップRAM領域におけるバックアップ領域のデータを前記保証RAM領域のデータで更新し、更新処理後に前記レジスタにバックアップRAM領域におけるバックアップ領域を禁止状態と設定することを特徴とするRAM値保証装置。前記更新許可/禁止はマイクロコンピュータ本体に内蔵の機能を用いて行うことを特徴とする請求項1または2記載のRAM値保証装置。前記プログラムカウンタの監視によって前記アドレスの遷移の確認を行うときには、前記プログラムカウンタの値が、セクション分けされた領域の何れの領域内を示しているかを判断することで確認することを特徴とする請求項1ないし3の何れかに記載のRAM値保証装置。前記非保証プログラム領域から前記保証プログラム領域への遷移をアプリケーションプログラム内で認識したときに、前記保証RAM領域のデータと前記バックアップRAM領域のバックアップ領域のデータとを比較することを特徴とする請求項2ないし4の何れかに記載のRAM値保証装置。前記保証RAM領域は、第1保証RAM領域および第2保証RAM領域を含む複数の領域に分割されると共に、前記プログラム記憶領域は、分割された第1保証RAM領域、第2保証RAM領域にそれぞれ対応した第1保証プログラム領域、第2保証プログラム領域を備え、前記バックアップRAM領域は、分割された第1保証RAM領域、第2保証RAM領域にそれぞれ対応した第1バックアップ領域、第2バックアップ領域を備え、前記レジスタには、分割された第1バックアップ領域、第2バックアップ領域毎に各々前記更新許可状態/禁止状態の設定が可能となっており、前記プログラム記憶領域の第1保証プログラム領域から第2保証プログラム領域に前記プログラムカウンタのアドレスが遷移することを確認すると、その遷移直前に前記レジスタにバックアップRAM領域の第1バックアップ領域を更新許可状態と設定し、前記バックアップRAM領域における第1バックアップ領域のデータを前記保証RAM領域の第1保証RAM領域のデータで更新し、更新処理後に前記レジスタにバックアップRAM領域における第1バックアップ領域を禁止状態と設定することを特徴とする請求項2ないし5の何れかに記載のRAM値保証装置。前記第1保証プログラム領域から前記第2保証プログラム領域への遷移をアプリケーションプログラム内で認識したときに、前記保証RAM領域の第1保証RAM領域のデータと前記バックアップRAM領域の第1バックアップ領域のデータとを比較することを特徴とする請求項6記載のRAM値保証装置。マイクロコンピュータに、プログラムカウンタの示すアドレスを監視する手順と、プログラム記憶領域の非保証プログラム領域から保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、保証RAM領域のデータとバックアップRAMのデータとを比較し、当該データが異なっているときには前記保証RAM領域のデータを前記バックアップRAM領域のデータで更新する手順と、プログラム記憶領域の保証プログラム領域から非保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、その遷移直前に前記バックアップRAM領域におけるバックアップ領域の更新を許可し、バックアップ領域のデータを保証RAM領域のデータで更新し、更新処理後に前記バックアップRAM領域におけるバックアップ領域の更新を禁止する手順と、を実行させることを特徴とするRAM値保証プログラム。しかしながら、ミラーチェックの技術を適用するとデータ記憶領域が破壊されたことを検出できるものの誤り訂正できない。3面チェックでは、1つのデータ記憶領域が破壊されたときには真となる値はわかるが、2つのデータ記憶領域が破壊されたときには真となる値がわからない。3面チェックの技術を適用するとRAMの記憶容量が大きくなってしまう。本発明は、上記事情に鑑みてなされたもので、その目的は、RAMの記憶容量を抑制しながらRAMの記憶値を保証できるようにしたRAM値保証装置およびRAM値保証プログラムを提供することにある。請求項1記載の発明によれば、RAMは所定記憶領域を備え、プログラム記憶領域はRAMにアクセスするプログラム領域を備える。バックアップ領域は所定記憶領域に対応して設けられ更新許可/禁止状態に設定可能となっている。レジスタはバックアップ領域の更新許可状態/禁止状態を保持する。プログラムカウンタはプログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納する。そして、プログラムカウンタの示すアドレスを監視し、プログラムカウンタのアドレスがRAMの所定記憶領域にアクセス開始するプログラム領域に遷移することを確認すると、所定記憶領域のデータとバックアップ領域のデータとを比較し、データが異なっているときにはRAMの所定記憶領域のデータをバックアップ領域のデータで更新するため、所定記憶領域のデータを正しいデータに置き換えることができる。また、プログラムカウンタのアドレスがRAMの所定記憶領域外に遷移することを確認すると、その遷移直前においてレジスタにバックアップ領域を更新許可状態と設定し、バックアップ領域のデータを所定記憶領域のデータで更新し、更新処理後にレジスタにバックアップ領域を禁止状態と設定するため、書き換えられた所定記憶領域のデータをバックアップ領域に退避させることができる。したがって、真となるデータをバックアップすることができRAMの記憶値を保証できる。また、3面チェックを必要としないため、RAMの記憶容量を抑制できる。請求項2記載の発明によれば、RAMは、セクションによって割付けられ、保証RAM領域、記憶値の保証度が前記保証RAM領域よりも低い非保証RAM領域を備える。プログラム記憶領域は、保証RAM領域に対応した保証プログラム領域、および、保証プログラム領域以外の非保証RAM領域に対応した非保証プログラム領域を備える。また、バックアップRAM領域は、保証RAM領域に対応して設けられており更新許可/禁止状態に設定可能なバックアップ領域を備える。プログラムカウンタは、プログラム記憶領域に記憶されたプログラムの実行するべき命令のアドレスを格納する。そして、プログラムカウンタの示すアドレスを監視し、プログラム記憶領域の非保証プログラム領域から保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、保証RAM領域のデータとバックアップRAM領域におけるバックアップ領域のデータとを比較し、当該データが異なっているときには保証RAM領域のデータをバックアップRAM領域におけるバックアップ領域のデータで更新し、プログラム記憶領域の保証プログラム領域から非保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、その遷移直前にレジスタにバックアップRAM領域のバックアップ領域を更新許可状態と設定することで、保証RAM領域に対応したバックアップRAM領域におけるバックアップ領域の更新を許可する。そして、バックアップRAM領域におけるバックアップ領域のデータを保証RAM領域のデータで更新し、更新処理後にレジスタにバックアップ領域を禁止状態と設定することで保証RAM領域に対応したバックアップRAM領域におけるバックアップ領域の更新を禁止する。これにより、RAMの記憶容量を抑制しながらRAMの記憶値を保証できる。請求項3記載の発明によれば、RAMの更新許可/禁止はマイクロコンピュータ本体に内蔵の機能を用いて行っている。この場合、マイクロコンピュータのハードウェア改造を行うことなくRAMの記憶値を保証できる。請求項4記載の発明によれば、プログラムカウンタの監視によってアドレス遷移の確認を行うときには、プログラムカウンタの値が、セクション分けされた領域の何れの領域内を示しているかを判断することで確認するため、何れの領域のプログラムを実行するかを容易に判断できる。請求項5記載の発明によれば、保証RAM領域のデータとバックアップRAMのバックアップ領域のデータとを比較するアプリケーションプログラムが、非保証プログラム領域から保証プログラム領域への遷移を認識したときに行うように組み込まれている。したがって、保証RAM領域のデータとバックアップRAM領域のバックアップ領域のデータとを比較するタイミングがアプリケーションプログラム内で設定されている。このため、非保証プログラム領域内のプログラム実行時における保証RAM領域に対する不正アクセスを容易に検出できる。請求項6記載の発明によれば、プログラム記憶領域の第1保証プログラム領域から第2保証プログラム領域にプログラムカウンタのアドレスが遷移することを確認すると、その遷移直前にレジスタにバックアップRAM領域の第1バックアップ領域を更新許可状態と設定し、バックアップRAM領域の第1バックアップ領域のデータを保証RAM領域の第1保証RAM領域のデータで更新し、更新処理後にレジスタに対しバックアップRAM領域における第1バックアップ領域を禁止状態と設定する。したがって、分割された各領域毎にプログラム動作例えば制御できるため、各領域別に関連性の高いプログラム動作例えば制御を行うことができるようになり、システムの利便性を向上できる。請求項7記載の発明によれば、保証RAM領域のデータとバックアップRAMのバックアップ領域のデータとを比較するアプリケーションプログラムが、第1保証プログラム領域から第2保証プログラム領域への遷移を認識したときに行うように組み込まれている。したがって、保証RAM領域の第1保証RAM領域のデータとバックアップRAM領域の第1バックアップ領域のデータとを比較するタイミングがアプリケーションプログラム内で設定されている。このため、非保証プログラム領域内のプログラム実行時における保証RAM領域に対する不正アクセスを容易に検出できる。以下、本発明の一実施例について図面を参照しながら説明する。本システム1は、エンジンECU2内のマイクロコンピュータ以下、マイコンと略す3を主として実現される。マイコン3は、ROM4、RAM5、プログラムカウンタ6、RAM更新許可/禁止設定レジスタ7、CPU8を備え、エンジンECU2は制御対象Aを制御する。制御対象Aは例えばコモンレールシステムを採用したディーゼルエンジンであり、エンジンECU2はこのディーゼルエンジンの制御システムを実現する。ROM4には、非保証プログラム領域9、保証プログラム領域10がプログラム記憶領域として設けられる。保証プログラム領域10には、使用するRAM5に記憶される各種記憶値の保証度が高く要求されるプログラムが記憶されている。この保証プログラム領域10は、RAM_A群更新許可領域10a、RAM_B群更新許可領域10b...に複数分割されている。制御用のプログラムは、各領域9または10に対して、セクション情報により所定の連続したメモリ領域に割付けられる。エンジンECU2は、運転者のアクセルペダルの開度に応じて必要となる噴射量を演算するが、保証プログラム領域10には、アクセル開度とエンジン回転数から要求トルクを算出して噴射量を算出する制御プログラム、および、トルクを監視する制御プログラムなどが記憶されている。非保証プログラム領域9には、使用するRAM5の記憶値の保証度が低くても良い演算処理を行うプログラムが記憶される。エンジンECU2は、ディーゼルエンジンの排ガス処理システムを実現しているが、非保証プログラム領域9には、当該後処理制御例えば、DPFDieselParticulateFilterの再生、SCRによる排出ガス浄化制御などの処理プログラムが記憶されている。読み書き可能なRAM5には、非保証RAM領域11、保証RAM領域12、バックアップRAM領域13が設けられる。RAM5は、マイコン3内蔵の機能を用いると、非保証RAM領域11、保証RAM領域12、および、バックアップRAM領域13をそれぞれブロック単位で設定できるため、このマイコン3内蔵の機能を用いてブロック単位で設けると良い。RAM5の保証RAM領域12内では、RAM_A群12a、RAM_B群12b...のように、各データ群がそれらの記憶容量を例えば同一容量のブロック毎に分割して記憶される。非保証RAM領域11は、非保証プログラム領域9のプログラムのみからアクセス読み書き可能に許可された情報記憶領域であり、保証RAM領域12は、保証プログラム領域10のプログラムのみからアクセス読み書き可能に許可された情報記憶領域として設定されている。また、バックアップRAM領域13には、保証RAM領域12の確保メモリ容量以上のメモリ容量が設けられ、このバックアップRAM領域13は、保証RAM領域12の記憶内容をバックアップするため構成される。これらの領域11~13は、セクション情報によって所定のメモリ領域に割り付けられる。バックアップRAM領域13は、RAM更新読書許可/禁止設定レジスタ7によりブロック毎に更新許可/禁止設定可能に構成されている。このようにしてソフトウェアパーティショニングが行われる。RAM更新許可/禁止設定レジスタ7は、バックアップRAM領域13の更新許可状態/禁止状態を保持する。このレジスタ7は、RAM_A群バックアップ13a、13b...などの複数のバックアップ領域の更新許可状態/禁止状態を個別に設定可能になっている。一般に、プログラム記憶領域に記憶されるプログラムは命令数も多く各種命令が複雑な態様で存在する。プログラムソフトウェアは、電子部品のようにランダムな故障はしないものの、テストしきれないバグにより問題を生じ、SystematicFailure決定論的故障という問題を起こす。そのようなバグを完全にゼロにすることはプログラムソフトウェアの場合困難である。したがって、何らかの人的なプログラムの設計ミス、バグの検証ミスなどの影響によって、保証プログラム領域10内のプログラムが非保証RAM領域11にアクセス読出/書込したり、非保証プログラム領域11内のプログラムが保証RAM領域12にアクセス読出/書込することが考えられる。すると、例えば、非保証プログラム領域9に記憶されたプログラムが保証RAM領域12にアクセスした上で誤ったデータに書換え、この後、保証プログラム領域10のプログラムがその書き換えられたデータにアクセスしてデータを参照すると、誤ったデータを参照することで誤りデータの伝播が連続的に生じてしまい、最悪の場合、保証プログラム領域10内の制御プログラムの動作不具合に繋がる。そこで、本実施例では、OSオペレーティングシステムによりプログラムカウンタ6の値を周期的に細かくサイクリックに監視することに基づいて不具合を防止している。図2は、各プログラム領域と各RAM領域のアクセス方法についてアプリケーションプログラムの流れと共に示している。また、図3は、CPU8が実行するOSの処理の流れプログラムカウンタ6の監視ロジックをフローチャートによって示している。コモンレールシステムを採用したディーゼルエンジン制御システムでは、燃料を高圧ポンプで加圧してコモンレールに蓄え、ソレノイドや圧電素子を使ったインジェクタで燃焼室内に噴射する。この場合、エンジンECU2は、保証プログラム領域10に記憶された制御プログラムに応じて、運転者のアクセルペダルの開度に応じて必要となる噴射量を演算して制御を行う以下、噴射制御と略す。そして、エンジンECU2は非保証プログラム領域9に記憶された排気ガス後処理システムにおいてDPFの再生などの後処理制御以下、後処理制御と略すを行う。したがって、エンジンECU2内では図2に示されるように、保証プログラム領域10のプログラムと、非保証プログラム領域9のプログラムとが繰り返し実行される。ROM4内に記憶されるプログラムはセクション定義によりメモリの所定領域に割り付けられる。この割り付けに応じてプログラム記憶領域が決定される。また、RAM5内のデータ記憶領域もセクション定義によりメモリの所定領域に割り付けられる。この割り付けに応じてデータ記憶領域が例えばブロック毎に決定される。そして、非保証プログラム領域9、保証プログラム領域10の各プログラムが順に実行されることによりディーゼルエンジン制御システムを実現している。噴射制御が行われた後、後処理制御が行われるが、この後処理制御において、エンジンECU2のCPU8は、非保証プログラム領域9のプログラムによって読出/書込処理を非保証RAM領域11内のデータに行う。非保証プログラム領域9のプログラムが実行中であるときにも、非保証プログラム領域9内のプログラムから保証RAM領域12にアクセスできるため、前記した不具合に応じて意図しない形で保証RAM領域12のデータが書換わってしまう可能性もある。この間、CPU8はOSによりプログラムカウンタ6を参照し、次に行われるプログラムの実行アドレスを認識する。CPU8はOSによりプログラムの実行アドレスを認識することによって非保証プログラム領域9から保証プログラム領域10への遷移移動を認識できる図3の領域跨ぎ条件S1参照。CPU8は、非保証プログラム領域9から保証プログラム領域10への実行アドレスの遷移を認識すると図3のS1:YES、保証RAM領域12のデータ記憶値とバックアップRAM領域13のデータ記憶値とが一致するか否かを判定する図3のS2。このとき、保証RAM領域12の全データ値とバックアップRAM領域13の全データ値が互いに一致すれば図3のS2:YESルーチンを抜ける。しかし、一致しなければ図3のS2:NO、不正アクセスしたとして検出し、保証RAM領域12に対応するバックアップRAM領域13のデータ記憶値をコピーするS3。したがって、仮に非保証プログラム領域9のプログラムが実行されることによって保証RAM領域12が書き換えられた場合、保証RAM領域12が不正にアクセスされたと認識し、バックアップRAM領域13内の正確なデータで保証RAM領域12のデータを書き換えることができる。CPU8は、所定のRAM_A群更新許可領域10a内のプログラム実行中においては、その更新許可領域10aを抜けてRAM_B群更新許可領域10bのプログラムを実行する直前までS4:NO、保証RAM領域12のRAM_A群12aのデータ記憶値を用いて演算しS5、制御を実行できる。その後、CPU8はプログラムカウンタ6を監視しているため、プログラムがRAM_A群更新許可領域10aから他のRAM_B群更新許可領域10bに遷移するときに把握できる。CPU8は、プログラムがRAM_B群更新許可領域10bに遷移する直前においてS1:NOで且つS4:YES、RAM更新許可/禁止設定レジスタ7に対しRAM_A群バックアップ13aを更新許可状態に設定してバックアップRAM領域13におけるRAM_A群バックアップ13aの更新を許可しS6た上で、対応するRAM_A群バックアップ13aに保証RAM領域12のRAM_A群12aのデータ記憶値を更新するS7。そして、RAM更新許可/禁止設定レジスタ7に対しRAM_A群バックアップ13aの更新を禁止状態に設定することで、バックアップRAM領域13におけるRAM_A群バックアップ13aの更新を禁止するS8。続いて、RAM_B群更新許可領域10b内のプログラムが実行されても、このような動作が繰り返される。これは、保証プログラム領域10内のプログラムの実行を完了するまで同様に繰り返される。その後、CPU8はプログラムカウンタ6が非保証プログラム領域9に遷移する直前においてS1:NOで且つS4:YES、レジスタ7に対し対応するバックアップ領域の更新を許可した上で、バックアップ領域にデータ記憶値を更新し、当該バックアップ領域の更新を禁止するS6~S8。このようにして保証RAM領域12のデータは保護される。従来技術を適用すると、3面チェックを行うためには、保証RAM領域12のデータ全てを3領域に記憶することが考えられるが、これらのデータを3領域分保持するとRAM5のデータ記憶容量が膨大な量となる。本実施形態によれば、保証RAM領域12およびバックアップRAM領域13の2面分のみで良いため記憶容量を抑制できる。本実施形態によれば、CPU8は、OSによりプログラムカウンタ6の示すアドレスを監視し、非保証プログラム領域9から保証プログラム領域10にプログラムカウンタ6のアドレスが遷移することを確認すると、保証RAM領域12の全データとバックアップRAM領域13の全データとを比較し、当該データが異なっているときには保証RAM領域12のデータをバックアップRAM領域13のデータで更新する。また、CPU8はOSによりプログラムカウンタ6の示すアドレスを監視し、プログラムカウンタ6のアドレスが保証プログラム領域10内でもRAM_A群更新許可領域10aからRAM_B群更新許可領域10bに遷移することを確認すると、その遷移直前にバックアップRAM領域13内におけるRAM_A群バックアップバックアップ領域13aの更新を許可し、RAM_A群バックアップ13aのデータを保証RAM領域12のRAM_A群12aのデータで更新し、更新処理後にRAM_A群バックアップ13aの更新を禁止する。これによりRAM_A群バックアップ13aの内容が保護される。このようなことがRAM_B群10b,12b,13bなどでも繰り返し行われる。これにより、RAM5の保証RAM領域12a,12b...の記憶値を保証できる。また、RAM5の更新許可/禁止の設定をマイクロコンピュータ3本体に内蔵の機能を用いて行っているため、マイクロコンピュータ3のハードウェア改造を行うことなくRAM5の保証RAM領域12a,12b...の記憶値を保証できる。また、プログラムカウンタ6の監視によりプログラムの実行アドレスの遷移の確認を行うときには、プログラムカウンタ6の値が、セクション分けされた領域の何れの領域内を示しているかを判断することで確認すると、何れの領域のプログラムを実行するかを容易に判断できる。また、保証プログラム領域10、保証RAM領域12、および、バックアップRAM領域13がそれぞれ複数の領域に分割されているため、これらの分割された各領域毎に制御プログラムを実行できるようになり、各領域別に関連性の高い制御プログラムを実行できる。これにより、システムの利便性を向上できる。保証RAM領域12RAM_A群12a,RAM_B群12b...のデータとバックアップRAM13のバックアップ領域RAM_A群バックアップ13a,RAM_B群バックアップ13b...のデータと比較するプログラムが、領域10aから領域10bへの遷移などのように他の更新許可領域に遷移したとき、または、保証プログラム領域10から非保証プログラム領域9への遷移を認識したときに行うように組み込まれている。この場合、保証RAM領域12のデータとバックアップRAM領域13のバックアップ領域RAM_A群バックアップ13a,RAM_B群バックアップ13b...のデータと比較するタイミングがプログラム内で設定されていることになる。このため、非保証プログラム領域9内のプログラム実行時において保証RAM領域12に対する不正アクセスを容易に検出できる。"