JP2013171467A - 情報処理装置、車両用電子制御装置、データ読み書き方法 - Google Patents

情報処理装置、車両用電子制御装置、データ読み書き方法 Download PDF

Info

Publication number
JP2013171467A
JP2013171467A JP2012035561A JP2012035561A JP2013171467A JP 2013171467 A JP2013171467 A JP 2013171467A JP 2012035561 A JP2012035561 A JP 2012035561A JP 2012035561 A JP2012035561 A JP 2012035561A JP 2013171467 A JP2013171467 A JP 2013171467A
Authority
JP
Japan
Prior art keywords
data
application
memory
random number
crc value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012035561A
Other languages
English (en)
Inventor
Masaya Shobu
昌也 菖蒲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2012035561A priority Critical patent/JP2013171467A/ja
Publication of JP2013171467A publication Critical patent/JP2013171467A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】複数のアプリが実装されたマイコンにおいて、アプリがデータの変更を検出できる情報処理装置を提供すること。
【解決手段】複数のアプリケーションが記憶されたアプリケーション記憶手段12と、複数の前記アプリケーションが共通にデータを読み書きするメモリ14と、を有する情報処理装置100であって、各アプリケーションに固有のアプリケーション識別情報が記述されているアプリケーション識別情報記憶手段24と、アプリケーションがデータを前記メモリに書き込む際、データ及び該アプリケーションに固有のアプリケーション識別情報を前記メモリに書き込む書き込み手段23と、アプリケーションがデータを前記メモリから読み出す際、データ及びアプリケーション識別情報を前記メモリから読み出し、アプリケーション識別情報が自身のアプリケーション識別情報と一致しない場合は、読み出したデータを破棄する読み出し手段22と、を有する。
【選択図】図1

Description

本発明は、複数のアプリケーションがそれぞれメモリにデータを読み書きする情報処理装置に関する。
複数のアプリケーションが1つのマイコンに混在して実装される場合がある。各アプリケーション(以下、アプリという)は1つの物理メモリ(例えばRAM)にアクセスするが、この場合、例えばMMU(Memory Management Unit)のようなメモリ保護機構が、アプリ2がアプリ1の領域にアクセスしないように制御している。しかしながら、アプリ2に想定外の不具合が生じたり、電気的なノイズが生じたりすることで、アプリ2がアプリ1の領域に全くアクセスしないとは限らない。アプリ2がアプリ1の領域にアクセスしても、すぐにマイコンが不具合を生じさせることはないが、アプリ2がアプリ1の領域にアクセスすることは回避することが好ましい。
例えば、アプリ1が書き込んだデータをアプリ2が書き換えてしまった場合、アプリ1がデータを読み出して処理を行っても所望の結果は得られない。このような書き換えを検出する技術として、冗長符号を負荷することが知られている(例えば、特許文献1参照。)。特許文献1には、ROMの異なる領域に同一データを記憶しておき、それぞれの領域のサムチェック又はCRC(Cyclic Redundancy Check)を計算することでデータの同一性を判定するチェック方法が開示されている。
特開2002−288047号公報
しかしながら、各アプリがCRCのような冗長符号をデータと共に記録する場合、単に冗長符号を記録するだけでは、アプリ側ではデータの書き換えを検出できないという問題がある。
図14は、冗長符号の記録による不都合を説明する図の一例である。図14(a)はアプリ1がデータを読み書きする手順を模式的に示す。アプリ1は、データをRAMに書き込む際、データのCRC値を計算しデータと共に記録する。アプリ1がデータを読み出す際、データを読み出しCRC値を計算し、データと共に記録されているCRC値と比較する。CRC値が一致しなければ、データの破損や書き換えがあることを検出できる。
しかしながら、マイコンに複数のアプリが実装された場合、他のアプリ2も同様にデータと共にCRC値を記録する。図14(b)はアプリ2が誤ってアプリ1のデータを書き換えた場合の不都合を模式的に示す。アプリ1がデータとCRC値を書き込んだ後、アプリ2がデータ´とCRC値´とを書き込む。アプリ1はデータ´を読み出す際、データ´から計算されたCRC値´と、データ´と共に記憶されているCRC値´とを比較する。しかし、データ´とCRC値´が共に書き換えられているので、一致していると判定してしまい、データの破損や書き換えを検出できない。この場合、アプリ1はデータ´を使用して処理を行ってしまう。
このように、複数のアプリ1,2が冗長符号を記録する場合、単に冗長符号を記録するだけでは、各アプリがデータの書き換えを検出することが困難である。
本発明は、上記課題に鑑み、複数のアプリが実装されたマイコンにおいて、アプリがデータの変更を検出できる情報処理装置を提供することを目的とする。
本発明は、複数のアプリケーションが記憶されたアプリケーション記憶手段と、複数の前記アプリケーションが共通にデータを読み書きするメモリと、を有する情報処理装置であって、各アプリケーションに固有のアプリケーション識別情報が記述されているアプリケーション識別情報記憶手段と、アプリケーションがデータを前記メモリに書き込む際、データ及び該アプリケーションに固有のアプリケーション識別情報を前記メモリに書き込む書き込み手段と、アプリケーションがデータを前記メモリから読み出す際、データ及びアプリケーション識別情報を前記メモリから読み出し、アプリケーション識別情報が自身のアプリケーション識別情報と一致しない場合は、読み出したデータを破棄する読み出し手段と、を有する。
複数のアプリが実装されたマイコンにおいて、アプリがデータの変更を検出できる情報処理装置を提供することができる。
マイコンに実装された各アプリによるデータの書き込み説明する図の一例である。 マイコンの概略構成図の一例である。 ASIL−Dのアプリ1と他のアプリの関係を模式的に説明する図の一例である。 マイコンがアプリ1,2を実行する手順を示すフローチャート図の一例である。 アプリ1の機能ブロック部の一例を示す図である。 マイコンの動作手順を示すフローチャート図の一例である。 アプリ1の機能ブロック部の一例を示す図である(実施例2)。 CRCの計算を模式的に説明する図の一例である(実施例2)。 マイコンの動作手順を示すフローチャート図の一例である(実施例2)。 アプリ1の機能ブロック部の一例を示す図である(実施例3)。 マイコンの動作手順を示すフローチャート図の一例である(実施例3)。 アプリ1の機能ブロック部の一例を示す図である(実施例4)。 マイコンの動作手順を示すフローチャート図の一例である(実施例4)。 冗長符号の記録による不都合を説明する図の一例である
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
図1は、マイコンに実装された各アプリによるデータの書き込み説明する図の一例である。本実施例では、各アプリに固有の書き込み者ナンバーが予め定められている。例えば、アプリ1の書き込み者ナンバーは“01”、アプリ2の書き込み者ナンバーは“02”とする。
図1(a)に示すように、本実施例の各アプリは、データを書き込む際、データと共に書き込み者ナンバーを記録する。すなわち、アプリ1は、データと書き込み者ナンバー(01)を記録する。
アプリ1がデータを読み出す際、読み出した書き込み者ナンバー(01)と、予め与えられている書き込み者ナンバー(01)とを比較する。一致すれば、データの書き換えがないことを検出できる。
図1(b)はアプリ2によるデータの書き換えを模式的に示す図の一例である。アプリ1がデータと書き込み者ナンバー(01)を書き込んだ後、アプリ2がデータ´と書き込み者ナンバー(02)を書き込む。
アプリ1はデータ´を読み出す際、読み出した書き込み者ナンバー(02)と、予め与えられている書き込み者ナンバー(01)とを比較する。書き換えにより書き込み者ナンバーが一致しないので、アプリ1はデータ´が書き換えられたものであることを検出できる。
したがって、本実施例のマイコンでは、各アプリが固有の書き込み者ナンバーをデータと共に記録することで、各アプリが他のアプリによるデータの書き換えを検出することができる。
〔構成例〕
図2は、本実施例のマイコン100の概略構成図の一例を示す。マイコン100は、CPU11、RAM14、フラッシュROM12、I/O15、CANコントローラ13及びA/D変換回路16を有している。本実施例ではマイコン100は、CPU11がプログラムを実行する一般的な構成を備えていればどのようなマイコンでもよい。
CPU11は1つ以上のコアを有し、フラッシュROM12に記憶されているプログラムを実行する。マイコン100がCPU自体を複数、有していてもよい(マルチCPU構成)。CPU11はRAM14を作業メモリに使用してプログラムを実行するが、主にOS(Operating System)がプログラムの一部をRAM14に読み出して実行する。RAM14におけるプログラムのアドレスは、MMU(Memory Management Unit)がページテーブルなどを用いて管理しており、CPU11がRAM14にアクセスする際、MMUが適切にアドレス変換(論理アドレスと物理アドレスの変換)してRAM14にアクセスする。
このプログラムには、単体のアプリケーション(以下、アプリという)が、複数個、含まれている。アプリはそれぞれの固有のイベントで実行されたり、マイコン100の起動と共に自動的に実行される。アプリが実行されると、MMUはOSからの指示によりアプリ毎にページテーブルを別に管理するなどして、異なるアプリがRAM14の同じアドレスにアクセスしないようにメモリ保護を行う。
I/O15には、各種の周辺機器が接続される。例えば、アクチュエータの駆動回路、各種のセンサ、ドライバ回路などである。またA/D変換回路16には特にアナログで検出信号を提供するセンサ類が接続される。CANコントローラ13は、CANバスに接続して他のマイコン100と通信する通信装置である。
マイコン100は電子制御装置に搭載される。車両には種々の電子制御装置が搭載されているが本実施例のマイコン100は搭載される電子制御装置を制限しない。例えば、エンジン制御用の電子制御装置に搭載されたマイコン100は、各種のセンサの検出結果に基づき、燃料噴射量の演算、点火タイミングの決定、インジェクタの制御、及び、イグナイタの制御等を行う。
また、車輪の制動力を制御する電子制御装置に搭載されたマイコン100は、ブレーキACT(アクチューエータ)を制御して、運転者のブレーキペダル操作がなくても車両の制動力を各輪毎に制御する。また、各輪の回転速度を監視しロックした車輪があるとその車輪のホイルシリンダ圧を低減するABS(Anti−locked Braking System)制御、同様に発進時の車輪のロックを抑制するTRC(Traction Contorol)制御等を行う。また、走行中の車両のヨーレート、Gセンサによる減速度などから車両が横滑りしていることを検出すると、旋回方向に対する外側・内側、及び、前輪・後輪の車輪のホイルシリンダ圧を個別に制御して車両の横滑りを低減するVSC制御をおこなう。
また、ナビゲーションシステムを制御する電子制御装置に搭載されたマイコン100は、位置情報の取得、道路地図の表示、経路案内などの処理を行う。この他、AV系の機能が統合されている電子制御装置では、音楽データや映像データの再生、外部の通信網との通信などを行う。
車両にはこの他にも多くの電子制御装置が搭載されるが、1つの電子制御装置(マイコン)には上記のようなメインの機能を提供するアプリの他に、操作性を向上させたり、運転者を支援するアプリが実装されることが多い。本実施例のマイコン100は、1つのマイコン100に実装される複数のアプリがメモリに書き込んだデータが、他のアプリから保護されている(以下、メモリ保護という)ことが特徴となっている。
〔アプリについて〕
このように車両は電子制御化が進んでいるが、電子制御されても車両は安全が確保されていることが要請される。このような安全を保証する装置は安全装置と呼ばれ、有形無形を問わず電子制御装置に搭載される。安全装置はマイコン100や車載装置の機能が仕様にしたがって動作しているか否かを監視し、故障などが検出されると機能を停止したり、外部に通知するなどのフェールセーフ機能を提供する。このような安全性の確保や得られる安全性そのものを機能安全と呼ぶ。
車両の機能安全については、IEC61508/ISO26262等に規格化されており、ISO26262には自動車の安全要求と安全対策を指定する指標としてASIL(Automotive Safety Integrity Level)が定められている。ASILには5段階の安全性レベルを定められており、安全性の基準が高い順にD,C,B,A、QMとなっている。ASILは、ハザード(障害)によって生じる被害の大きさ、ハザードの生じる頻度、及び、ハザードが生じた場合の制御難易度を検討し、車両メーカ等が決定する。
車両メーカ等は、決定したASILに応じて、ハザードが生じてもその実害を許容できる程度に抑制するための措置を施す必要がある。そして、上記の規格の認証機関に対し、ASILに応じた措置が施されていることの資料を提出するなどして、認証機関から認証を受ける。当然ながら、ASILが高いほどハザードの影響を低減するために多くの措置が必要になり(開発プロセスが複雑になる)、また措置が施されていることを説明するために多くの資料が必要になる。
アプリにおいても、上述した電子制御装置のメインの機能を提供するアプリは高いASIL(例えばD、C)になる傾向があり、その他のアプリは低いASIL(例えばQM)になる傾向がある。例えば、ブレーキを制御するアプリ、パワーステアリングを制御するアプリ等はASILが高く、直接、走行制御に影響しにくいアプリのASILは低くなる。
アプリ1はASIL−D、アプリ2はASIL−QMであるとし、アプリ1,2がRAM14にアクセスする場合を考える。この場合、アプリ1とアプリ2が物理的に別体のRAM14にアクセスする場合、アプリ1とアプリ2の間でメモリ保護が確保されていることを認証機関に主張することは容易である。しかしながら、実際にはアプリの数だけマイコン100にRAM14を搭載することは困難である。
そこで、マイコン100に複数のアプリが実装される場合、ソフトウェアの安全性を説明する方法として、パーティショニングという考え方を利用することが多い。パーティショニングとは、アプリ1とアプリ2が互いに独立して実行されていること(メモリについていえばデータに干渉が生じない)を説明する手法である。
仮に、パーティショニングという手法を使用しない場合、1つでもASIL−Dのアプリがマイコン100に実装されていると、ASIL−QMのアプリ2が、ASIL−Dのアプリ1を同じプロセスで開発される必要があることを意味する(すなわち、メモリ保護を確実に行うための必要な措置を施すために複雑なプロセスで開発しなければならない)。
これに対し、パーティショニングによりメモリ保護を説明する場合、ASIL−QMのアプリ2がアプリ1のメモリ領域にデータを書き込まないことを証明すればよい(逆に、ASIL−Dのアプリ1がアプリ2のメモリ領域にデータを書き込まないことは、アプリ1がASIL−Dのプロセスで開発される過程で証明される)。すなわち、アプリ1のメモリ領域がアプリ2から保護されていることを証明すればよいので、アプリ2の開発プロセスのコストを大きく低減できる。
図3は、ASIL−Dのアプリ1と他のアプリの関係を模式的に説明する図の一例である。ASIL−Dのアプリ1が、ASIL−QMの他のアプリ2,3から保護されるべきアプリとなる。本実施例によれば、アプリ2,3がアプリ1のメモリ領域にデータを書き込んでもアプリ1はそれを検出することができる。
なお、このように複数のアプリが実装されても、アプリ1が他のアプリ2,3から保護されていることが保証されれば、電子制御装置の機能統合も容易になる。すなわち、アプリ1〜3が、元々、別々の電子制御装置に実装されていても、機能統合時にアプリ1がASIL−Dのプロセスで開発されており、本実施例のメモリ保護機能を有することを説明すればよい。
〔アプリ1,2の実行〕
図4は、マイコン100がアプリ1,2を実行する手順を示すフローチャート図の一例である。アプリは3つ以上でも処理手順は同様である。
マイコン100がOSのようなシステムソフトを有していない場合、マイコン100はアプリ1,2を例えば順番に実行する。マイコン100はRAM14のアドレス順にプログラムを読み出すことでアプリ1,2の実行を機械的に繰り返す。または、タイマを利用して、タイマ割込みによりアプリ1,2がそれぞれ実行開始されてもよい。
また、マイコン100がシステムソフトを有する場合、システムソフトがアプリ1、2をCPU11などのリソースに割り当てることで、アプリ1、2を独立に実行することができる。この場合、アプリ1の全体を実行した後,アプリ2を実行させて、それを繰り返すことができる。また、所定のスライスタイム毎にアプリ1のコンテキストの退避とアプリ2のコンテキストの復帰を行い、同様にスライスタイム毎にアプリ2のコンテキストの退避とアプリ1のコンテキストの復帰を行うことで、時分割に実行してもよい。
図5は、アプリ1の機能ブロック部の一例を示す図である。アプリ1は、処理部21、読み出し部22、及び、メモリ書き込み部23を有している。また、書き込み者ナンバー24を記憶している(以下、書き込み者ナンバー24の符号は省略する)これらの機能ブロックは、CPU11がアプリ1を実行することで実現される。なお、アプリ2も同様の機能を有しているが図示は省略した。
処理部21は、アプリ1に特有の処理を行う機能でありどのような処理を行うかは搭載される電子制御装置によって様々である。アプリ1は処理の過程で種々のデータを生成しRAM14に保存する場合があり、また、RAM14に書き込んだデータを後の処理で使用する場合がある。データを書き込む場合、処理部21はメモリ書き込み部23を呼び出すと共にデータを送出し、データを読み出す場合、データ名(変数名)と共に読み出し部22を呼び出す。
メモリ書き込み部23はデータを書き込む際、書き込み者ナンバー(01)を読み出し、データと共にRAM14に記憶する。例えば、データの次のアドレスに書き込み者ナンバーを記憶してもよいし、書き込み者ナンバーを記憶する領域を確保して先頭アドレスから順番に書き込み者ナンバーを記憶してもよい。いずれにしても、データと書き込み者ナンバーとが1対1に対応づけられる。
なお、書き込み者ナンバー(01)はフラッシュROM12に記憶されている。フラッシュROM12の特定の領域に記憶されていてもよいが、アドレスが既知になると他のアプリが読み出すことが可能となってしまうおそれがある。このため、例えば、各アプリのコードの一部にアプリに特有の書き込み者ナンバー(01)が記憶されていることが好適となる。アプリのどの部分に書き込み者ナンバー(01)が記述されているかを特定することは困難なので、アプリ2がアプリ1の書き込み者ナンバー(01)を探し出すことは困難である。
読み出し部22はデータ名で指定されたデータと書き込み者ナンバー(01)をRAM14から読み出すと、予め記憶している書き込み者ナンバー(01)とRAM14から読み出した書き込み者ナンバー(01)を比較する。一致する場合は、データが書き換えられていないものとして処理部21にデータを送出する。一致しなかった場合、読み出し部22はデータを破棄すると共に処理部21に通知する。これにより処理部21は予め定められているフェールセーフ処理を行う。処理部21は、例えばデフォルト値に置き換えて処理を継続する。デフォルト値は該当するデータの例えば初期値のように制御に大きな影響を与えないデータである。また、エラーが生じたことと変数名などを記録してもよい。また、処理部21はマイコン100そのものを再起動してもよいし、アプリ1を再起動してもよい。どのようなフェールセーフ処理を行うかはデータの重要度に依存するものであり、データ毎に予め定められている。
〔動作手順〕
図6は、本実施例のマイコン100の動作手順を示すフローチャート図の一例である。図6(a)は書き込み時の処理手順を、図6(b)は読み出し時の処理手順をそれぞれ示す。図6(a)(b)の処理は各アプリが独立にそれぞれ実行する。
まず、処理部21がアプリに特有の処理を行うことで書き込み用のデータが発生する(S10)。
メモリ書き込み部23は、書き込み者ナンバーを読み出す(S18)。
メモリ書き込み部23はRAM14にデータと書き込み者ナンバーを対応づけて書き込む(S28)。
続いて、マイコン100がRAM14に書き込んだデータを読み出す処理が発生する。読み出し部22はデータと書き込み者ナンバーをRAM14から読み出す(S108)。
読み出し部22は、予め記憶している書き込み者ナンバーとRAM14から読み出した書き込み者ナンバーが一致するか否かを判定する(S130)。この判定により、RAM14に書き込まれたデータが書き換えられていることを検出できる。
書き込み者ナンバーが一致した場合(S130のYes)、読み出し部22はデータを処理部21に送出するので、処理部21は読み出したデータを処理に使用する(S140)。
書き込み者ナンバーが一致しない場合(S130のNo)、処理部21はフェールセーフ処理を行う(S150)。フェールセーフ処理は、例えば、デフォルト値へ置き換えることであるが、どのようなフェールセーフ処理かはデータに応じて予め定められている。
以上のような処理により、例えば、アプリ1がデータを書き込んだ後、同じアドレスにアプリ2がデータを書き込んでしまった場合、書き込み者ナンバーはアプリ2の書き込み者ナンバー(02)になっている。このため、アプリ1が書き込み者ナンバー(02)を読み出しても、自身の書き込み者ナンバー(01)と一致しない。よって、アプリ1はデータの書き換えを検出して適切なフェールセーフ処理を行うことができる。
以上説明したように、本実施例のマイコン100は複数のアプリが実装されていても、各アプリがデータの書き換えを検出することができ、メモリ保護を確実に行うことができる。特に、車両メーカ等が、ASIL−C,ASIL−Dのような高いASILのアプリの認証を受ける場合、ASIL−C,ASIL−Dのアプリが、他のアプリからパーティショニングされていることを証明できる。したがって、ASILの低いアプリ2については、最大ASILのアプリ1と同じプロセスで開発する必要がなくなり、コスト増を抑制できる。
本実施例では、書き込み者ナンバーを単に書き込むのでなくCRC値に含まれる態様で書き込むマイコン100について説明する。データと書き込み者ナンバーからCRC値を作成するので、データだけが書き換わったことも検出できる。
図7は、アプリ1の機能ブロック部の一例を示す図である。図7において図5と同一部には同一の符号付しその説明は省略する。本実施例では、アプリ1は新たにCRC計算部25を有している。
データを書き込む場合、処理部21はメモリ書き込み部23を呼び出すと共にデータを送出し、データを読み出す場合、データ名(変数名)と共に読み出し部22を呼び出す。メモリ書き込み部23はデータをCRC計算部25に送出してCRC値の計算を要求する。CRC計算部25はデータと書き込み者ナンバー(01)とを用いてCRC値を計算する。
図8はCRC値の計算を模式的に説明する図の一例である。CRC計算部25は、データと書き込み者ナンバーから計算対象のビット列を作成する。図では、8bitの上位ビットにデータを、下位ビットに書き込み者ナンバーを合成している。こうすることで、CRC値はデータだけでなくデータと書き込み者ナンバーの組により定まる値となる。なお、8bitの下位ビットにデータを、上位ビットに書き込み者ナンバーを合成してもよい。また、全体のビット数はマイコン100のバス幅などに応じて設定される。
CRC値の求め方について簡単に説明する。CRC値は検査対象のデータを素数で除した場合の余りとして定義される。コンピュータ上は、取り扱いを容易にするためCRC値と検査対象を1つとして扱い、多項式表現を用いる。この場合、CRC値は、符号多項式F(x)を生成多項式G(x)で除した場合の余りR(x)として表すことができる。Q(x)は商である。符号多項式F(x)とはCRC値に対応する検査ビットと計算対象に対応する情報ビットを各係数に対応させることで得られる多項式である。G(x)は素数に対応する多項式である。F(x)、G(x)、Q(x)には以下の関係がある。mは検査ビットのビット数である。
F(x)=G(x)・Q(x)
=R(x)+xP(x)
R(x)の次数はG(x)の次数未満なので、xP(x)をG(x)で除することでR(x)が得られる。
全体の符号長をn=7ビット、情報ビットをk=3ビット、検査ビット(CRC値)をm=n−k=4ビットとする。計算を簡略化するため、計算対象の情報ビットを“011”とすると、P(x)は以下のようになる。
P(x)=x+x
P(x)=x+x
このxP(x)をG(x)で除した場合の余りがCRC値である。生成多項式G(x)がG(x)=x+x+x+1 とする。
P(x)/G(x)=x+1 余り x+1
したがって、R(x)=x+1が得られる。以上からF(x)を求めると以下のようになる。
F(x)=xP(x)+R(x)
=x+x+x+1
符号長が7ビットなので、生成多項式はF(x)=1+0・x+0・x+x+0・x+x+x である。このうちの3ビットがCRC値になる。
なお、CRC値の計算に使用される生成多項式は、いくつか定められておりCRC−ITUにはx16+x12+x+1(=11021h)が規定されている。この生成多項式により16bitのCRC値を作成できる。この場合、例えば、全体の符号長nはn=32ビット、情報ビットと検査ビット(CRC値)は共に16ビットとなる。検査対象のデータの上位又は下位に0のビットを追加するなどして16ビットの長さに整えることで同様の計算でCRC値を得られる。
メモリ書き込み部23はCRC計算部25が計算したCRC値を取得して、データと共にRAM14に記憶する。例えば、データの次のアドレスにCRC値を記憶してもよいし、CRC値を記憶する領域を確保して先頭アドレスから順番にCRC値を記憶してもよい。いずれにしても、データとCRC値とが1対1に対応づけられる。
なお、CRC値は冗長符号の一例であり、書き込み者ナンバー(01)とデータのパリティビットを冗長符号として付加してもよい。また、書き込み者ナンバー(01)とデータのチェックサムを冗長符号として付加してもよい。
読み出し部22はデータ名で指定されたデータとCRC値をRAM14から読み出すと、データをCRC計算部25に送出してCRC値の計算を要求する。CRC計算部25は同様の手順でデータと書き込み者ナンバー(01)とを用いてCRC値を計算する。
読み出し部22は、CRC計算部25が計算したCRC値と、RAM14から読み出したCRC値を比較して一致する場合は、データが書き換えられていないものとして処理部21に送出する。一致しなかった場合、読み出し部22はデータを破棄すると共に処理部21に通知する。これにより処理部21は予め定められているフェールセーフ処理を行う。
〔動作手順〕
図9は、本実施例のマイコン100の動作手順を示すフローチャート図の一例である。図9(a)は書き込み時の処理手順を、図9(b)は読み出し時の処理手順をそれぞれ示す。図9(a)(b)の処理は各アプリが独立にそれぞれ実行する。
まず、処理部21がアプリに特有の処理を行うことで書き込み用のデータが発生する(S10)。メモリ書き込み部23は、データをCRC計算部25に送出する。
CRC計算部25はアプリに特有の書き込み者ナンバー(01)とデータからCRC値を計算する(S20)。
メモリ書き込み部23はRAM14にデータとCRC値を書き込む(S30)。
続いて、マイコン100がRAM14に書き込んだデータを読み出す処理が発生する。読み出し部22はデータとCRC値をRAM14から読み出す(S110)。
データを読み出すとCRC計算部25が、RAM14から読み出したデータと書き込み者ナンバーからCRC値を計算する(S120)。
読み出し部22は、CRC計算部25が計算したCRC値とRAM14から読み出したCRC値が一致するか否かを判定する(S130)。この判定により、RAM14に書き込まれたデータの書き換えを検出できる。
CRC値が一致した場合(S130のYes)、読み出し部22はデータを処理部21に送出するので、処理部21は読み出したデータを処理に使用する(S140)。
CRC値が一致しない場合(S130のNo)、処理部21はフェールセーフ処理を行う(S150)。フェールセーフ処理は、例えば、デフォルト値へ置き換えることであるが、どのようなフェールセーフ処理かはデータに応じて予め定められている。
例えば、アプリ1がデータを書き込んだ後、同じアドレスにアプリ2がデータとCRC値を書き込んでしまった場合、CRC値はアプリ2の書き込み者ナンバー(02)の影響を受ける。このため、アプリ1のCRC計算部25がアプリ1の書き込み者ナンバー(01)とデータから作成したCRC値と、RAMから読み出したCRC値が一致しない。よって、アプリ1はデータの書き換えを検出して適切なフェールセーフ処理を行うことができる。
また、本実施例のアプリ1は、アプリ1がデータを書き込んだ後、同じアドレスにアプリ2がデータだけを書き込んでしまったことも検出できる(CRC値は変更されていない)。RAMのデータが書き換わっているので、アプリ1のCRC計算部25がアプリ1の書き込み者ナンバー(01)とデータから作成したCRC値は、RAMに記憶されているCRC値と一致しない。よって、アプリ1はデータだけが書き換えられてもそれを検出して適切なフェールセーフを行うことができる。CRC値だけが書き換えられている場合も同様に検出できる。
以上説明したように、本実施例のマイコン100は実施例1の効果に加え、データ又はCRC値のどちらか一方だけが書き換えられた場合もそれらの書き換えを検出できる。
実施例2ではアプリが固有の書き込み者ナンバーを用いてCRC値を計算したが、書き込み者ナンバーは静的なデータであった。このため、書き込み者ナンバーが偶然一致するアプリが存在したり、第三者により解析されるおそれがないわけではない。そこで、本実施例では、アプリがCRC値の計算に使用する情報(これが書き込み者ナンバーに相当する)を動的に変更するマイコン100について説明する。
図10は、本実施例のアプリ1の機能ブロック部の一例を示す図である。図10において図5と同一部には同一の符号を付しその説明は省略する。本実施例ではアプリ1が乱数作成部26を有する。乱数作成部26は、予め定められたビット長の乱数を作成する。本実施例ではこの乱数とデータからCRC値が作成される。したがって、本実施例の乱数は実施例2の書き込み者ナンバーに相当する。
メモリ書き込み部23がCRC計算部25にデータを送出すると、CRC計算部25は乱数作成部26に乱数を作成させる。CRC計算部25はデータと乱数からCRC値を計算し、CRC値と乱数をメモリ書き込み部23に送出する。
メモリ書き込み部23はデータとCRC値をRAM14に書き込むが、さらに、乱数(書き込み者ナンバー)をRAM14に記憶する。これは、乱数は生成される度に異なるため、記録しておかないとデータの読み出し時にCRC値が一致するかどうかを判定できないためである。乱数はデータ及びCRC値とは別に記憶される(例えば、アプリ1の乱数専用のスタック)ことが好適となる。これは、乱数がアプリ2により書き換えられると、CRC値による検証が困難になるためである。
読み出し部22はデータ名で指定されたデータを読み出す際、CRC値及び乱数をRAM14から読み出す。そして、データと乱数をCRC計算部25に送出してCRC値の計算を要求する。CRC計算部25は同様の手順でデータと乱数とを用いてCRC値を計算する。
読み出し部22は、CRC計算部25が計算したCRC値と、RAM14から読み出したCRC値を比較して一致する場合は、データが書き換えられていないものとして処理部21に送出する。一致しなかった場合、読み出し部22はデータを破棄すると共に処理部21に通知する。これにより処理部21は予め定められているフェールセーフ処理を行う。
アプリ2がデータを書き換えた場合、CRC値はアプリ2のデータと乱数作成部26が作成した乱数から計算されたものとなるが、RAMにおいて乱数は、アプリ1が作成したものが保持されている。したがって、アプリ1は、アプリ2がデータを書き換えたことを検出できる。
実施例2のように静的な書き込み者ナンバーからCRC値を作成すると、書き込み者ナンバーが一致するアプリが存在したり、書き込み者ナンバーが偶然一致した場合に、アプリがデータの書き換えを検出できない。しかしながら、本実施例のように書き込み者ナンバーに乱数を使用した場合、アプリ1,2が作成した乱数が一致することはないとしてよいので、書き換えの検出精度を向上できる。仮にアプリ1,2が作成した乱数が一致したとしても、連続して一致することはない。よって、少なくともアプリ1が2回、連続してアプリ2による書き換えを見逃すことをなくすことができる。
〔動作手順〕
図11は、本実施例のマイコン100の動作手順を示すフローチャート図の一例である。図11(a)は書き込み時の処理手順を、図11(b)は読み出し時の処理手順をそれぞれ示す。図11(a)(b)の処理は各アプリが独立にそれぞれ実行する。
まず、処理部21がアプリに特有の処理を行うことで書き込み用のデータが発生する(S10)。メモリ書き込み部23は、データをCRC計算部25に送出する。
CRC計算部25は乱数作成部26に乱数の作成を要求するので、乱数作成部26が乱数を作成する(S15)。
CRC計算部25は、乱数とデータからCRC値を計算する(S22)。
メモリ書き込み部23はRAM14にデータ、CRC値及び乱数を書き込む(S32)。
続いて、マイコン100がRAM14に書き込んだデータを読み出す処理が発生する。読み出し部22はデータ、CRC値及び乱数をRAM14から読み出す(S112)。
CRC計算部25は、読み出し部22が読み出したデータと乱数からCRC値を計算する(S122)。
読み出し部22は、CRC計算部25が計算したCRC値とRAM14から読み出したCRC値が一致するか否かを判定する(S130)。この判定により、RAM14に書き込まれたデータの書き換えを検出できる。
CRC値が一致した場合(S130のYes)、読み出し部22はデータを処理部21に送出するので、処理部21は読み出したデータを処理に使用する(S140)。
CRC値が一致しない場合(S130のNo)、処理部21はフェールセーフ処理を行う(S150)。フェールセーフ処理は、例えば、デフォルト値へ置き換えることであるが、どのようなフェールセーフ処理かはデータに応じて予め定められている。
したがって、本実施例のマイコン100によれば、実施例2の効果に加え、書き込み者ナンバーがRAM14への書き込みの度に変わるので、データの書き換えの検出率をさらに向上させることができる。
本実施例では実施例2と3を組み合わせ、CRC計算部25が、データ、書き込み者ナンバー及び乱数からCRC値を計算するマイコン100について説明する。本実施例によれば、他のアプリ2が使用する書き込み者ナンバー及び乱数が一致しない限り、アプリ1がデータの書き換えを検出できる。
図12は、本実施例のアプリ1の機能ブロック部の一例を示す図である。図12において図10と同一部には同一の符号を付しその説明は省略する。本実施例ではアプリ1が書き込み者ナンバー(01)及び乱数作成部26を有する。
メモリ書き込み部23がCRC計算部25にデータを送出すると、CRC計算部25は乱数作成部26に乱数を作成させる。CRC計算部25はデータ、書き込み者ナンバー及び乱数からCRC値を計算し、CRC値と乱数をメモリ書き込み部23に送出する。
メモリ書き込み部23はデータ、CRC値及び乱数をRAM14に記憶する。乱数を書き込む理由は実施例3と同様であるが、本実施例では乱数はデータと共に(例えば連続したアドレスに)記憶できる。これは、乱数がアプリ2により書き換えられても、CRC値に書き込み者ナンバー(01)が含まれているため、データの書き換えの検出が可能なためである。
読み出し部22はデータ名で指定されたデータを読み出す際、CRC値及び乱数をRAM14から読み出す。そして、データと乱数をCRC計算部25に送出してCRC値の計算を要求する。CRC計算部25はデータ、乱数及び書き込み者ナンバーを用いてCRC値を計算する。
読み出し部22は、CRC計算部25が計算したCRC値と、RAM14から読み出したCRC値を比較して一致する場合は、データが書き換えられていないものとして処理部21に送出する。一致しなかった場合、処理部21は予め定められているフェールセーフ処理を行う。
このように、CRC値が乱数によって変わるので実施例3と同様にデータの書き換えの検出率を向上できる。また、CRC値は書き込み者ナンバーによっても変わるので、RAMに記憶された乱数が書き換えられても、書き込み者ナンバーが一致しない限りデータの書き換えを検出できる。すなわち、乱数と書き込み者ナンバーが一致しない限り、データの書き換えを検出できる。
〔動作手順〕
図13は、本実施例のマイコン100の動作手順を示すフローチャート図の一例である。図13(a)は書き込み時の処理手順を、図13(b)は読み出し時の処理手順をそれぞれ示す。図13(a)(b)の処理は各アプリが独立にそれぞれ実行する。
まず、処理部21がアプリに特有の処理を行うことで書き込み用のデータが発生する(S10)。メモリ書き込み部23は、データをCRC計算部25に送出する。
CRC計算部25は乱数作成部26に乱数の作成を要求するので、乱数作成部26が乱数を作成する(S15)。
CRC計算部25は、データ、書き込み者ナンバー(01)及び乱数からCRC値を計算する(S24)。
メモリ書き込み部23はRAM14にデータ、CRC値及び乱数を書き込む(S32)。
続いて、マイコン100がRAM14に書き込んだデータを読み出す処理が発生する。読み出し部22はデータ、CRC値及び乱数をRAM14から読み出す(S112)。
CRC計算部25は、読み出し部22が読み出したデータ、乱数、及び、書き込み者ナンバー(01)からCRC値を計算する(S124)。
読み出し部22は、CRC計算部25が計算したCRC値とRAM14から読み出したCRC値が一致するか否かを判定する(S130)。この判定により、RAM14に書き込まれたデータの書き換えを検出できる。以降の処理は実施例3と同様である。
したがって、本実施例のマイコン100によれば、実施例3の効果に加え、乱数と書き込み者ナンバーが一致しない限りデータの書き換えを検出でき、データの書き換えの検出率をさらに向上できる。
11 CPU
12 フラッシュROM
14 RAM
21 処理部
22 読み出し部
23 メモリ書き込み部
24 書き込み者ナンバー
25 CRC計算部
26 乱数作成部
100 マイコン

Claims (7)

  1. 複数のアプリケーションが記憶されたアプリケーション記憶手段と、
    複数の前記アプリケーションが共通にデータを読み書きするメモリと、を有する情報処理装置であって、
    各アプリケーションに固有のアプリケーション識別情報が記述されているアプリケーション識別情報記憶手段と、
    アプリケーションがデータを前記メモリに書き込む際、データ及び該アプリケーションに固有のアプリケーション識別情報を前記メモリに書き込む書き込み手段と、
    アプリケーションがデータを前記メモリから読み出す際、データ及びアプリケーション識別情報を前記メモリから読み出し、アプリケーション識別情報が自身のアプリケーション識別情報と一致しない場合は、読み出したデータを破棄する読み出し手段と、
    を有する情報処理装置。
  2. アプリケーションがデータを前記メモリに書き込む際、データ及びアプリケーション識別情報から第1のCRC値を計算するCRC計算手段を有し、
    前記書き込み手段は、データ及び前記第1のCRC値を前記メモリに書き込み、
    アプリケーションがデータを前記メモリから読み出す際、前記読み出し手段は、データ及び前記第1のCRC値を前記メモリから読み出し、前記CRC計算手段が前記メモリから読み出されたデータ及びアプリケーション識別情報から作成した第2のCRC値と、前記メモリから読み出された前記第1のCRC値が一致しない場合は、読み出したデータを破棄する、
    ことを特徴とする請求項1記載の情報処理装置。
  3. アプリケーションがデータを書き込む際、乱数を作成する乱数作成手段と、
    データ及び前記乱数作成手段が作成した乱数から第1のCRC値を計算するCRC計算手段と、を有し、
    前記書き込み手段は、データ、前記第1のCRC値、及び、前記乱数作成手段が作成した乱数を前記メモリに書き込み、
    アプリケーションがデータを前記メモリから読み出す際、前記読み出し手段は、データ、前記第1のCRC値及び乱数を前記メモリから読み出し、前記CRC計算手段が前記メモリから読み出されたデータ及び乱数から作成した第2のCRC値と、前記メモリから読み出された前記第1のCRC値が一致しない場合は、読み出したデータを破棄する、
    ことを特徴とする請求項1記載の情報処理装置。
  4. アプリケーションがデータを書き込む際、乱数を作成する乱数作成手段と、
    データ、前記乱数作成手段が作成した乱数及びアプリケーション識別情報から第1のCRC値を計算するCRC計算手段を有し、
    前記書き込み手段は、データ、前記第1のCRC値、及び、前記乱数作成手段が作成した乱数を前記メモリに書き込み、
    アプリケーションがデータを前記メモリから読み出す際、前記読み出し手段は、データ、前記第1のCRC値及び乱数を前記メモリから読み出し、前記CRC計算手段が前記メモリから読み出されたデータ、乱数、及び、アプリケーション識別情報から作成した第2のCRC値と、前記メモリから読み出された前記第1のCRC値が一致しない場合は、読み出したデータを破棄する、
    ことを特徴とする請求項1記載の情報処理装置。
  5. 車両の状態を検出するセンサ、及び、車両の状態を制御するアクチュエータと接続されるインタフェースと、
    アナログ信号をデジタル信号に変換するA/D変換回路と、
    他の情報処理装置と通信する通信装置と、
    を有する請求項1〜4いずれか1項記載の情報処理装置。
  6. 請求項1〜5いずれか1項記載の情報処理装置が搭載された車両用電子制御装置。
  7. 複数のアプリケーションが記憶されたアプリケーション記憶手段と、
    複数の前記アプリケーションが共通にデータを読み書きするメモリと、
    各アプリケーションに固有のアプリケーション識別情報が記述されているアプリケーション識別情報記憶手段と、を有する情報処理装置のデータ読み書き方法であって、
    書き込み手段が、アプリケーションがデータを前記メモリに書き込む際、データ及び該アプリケーションに固有のアプリケーション識別情報を前記メモリに書き込むステップと、
    アプリケーションがデータを前記メモリから読み出す際、読み出し手段が、データ及びアプリケーション識別情報を前記メモリから読み出し、アプリケーション識別情報が自身のアプリケーション識別情報と一致しない場合は、読み出したデータを破棄するステップと、
    を有するデータ読み書き方法。
JP2012035561A 2012-02-21 2012-02-21 情報処理装置、車両用電子制御装置、データ読み書き方法 Pending JP2013171467A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012035561A JP2013171467A (ja) 2012-02-21 2012-02-21 情報処理装置、車両用電子制御装置、データ読み書き方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012035561A JP2013171467A (ja) 2012-02-21 2012-02-21 情報処理装置、車両用電子制御装置、データ読み書き方法

Publications (1)

Publication Number Publication Date
JP2013171467A true JP2013171467A (ja) 2013-09-02

Family

ID=49265346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012035561A Pending JP2013171467A (ja) 2012-02-21 2012-02-21 情報処理装置、車両用電子制御装置、データ読み書き方法

Country Status (1)

Country Link
JP (1) JP2013171467A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015045507A1 (ja) * 2013-09-30 2015-04-02 日立オートモティブシステムズ株式会社 車両用制御装置
JP2015118662A (ja) * 2013-12-20 2015-06-25 株式会社デンソー 電子制御装置
WO2015140831A1 (ja) * 2014-03-19 2015-09-24 三菱電機株式会社 情報処理装置
JP2017204286A (ja) * 2017-06-28 2017-11-16 日立オートモティブシステムズ株式会社 車両用制御装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015045507A1 (ja) * 2013-09-30 2015-04-02 日立オートモティブシステムズ株式会社 車両用制御装置
JP2015067107A (ja) * 2013-09-30 2015-04-13 日立オートモティブシステムズ株式会社 車両用制御装置
JP2015118662A (ja) * 2013-12-20 2015-06-25 株式会社デンソー 電子制御装置
WO2015140831A1 (ja) * 2014-03-19 2015-09-24 三菱電機株式会社 情報処理装置
JP2017204286A (ja) * 2017-06-28 2017-11-16 日立オートモティブシステムズ株式会社 車両用制御装置

Similar Documents

Publication Publication Date Title
CN107949847B (zh) 车辆的电子控制单元
US9205809B2 (en) Vehicle unit and method for operating the vehicle unit
US7389390B2 (en) Method, microprocessor system for critical safety regulations and the use of the same
JP2013171467A (ja) 情報処理装置、車両用電子制御装置、データ読み書き方法
JP4789420B2 (ja) 車両制御システムにおけるデータ処理装置
US20190042355A1 (en) Raid write request handling without prior storage to journaling drive
WO2020158377A1 (ja) 電子制御装置、電子制御装置のセキュリティ検証方法
CN101533376B (zh) 保护安全关键变量
EP2709073B1 (en) Electronic control unit of vehicle
US20220050740A1 (en) Method and Apparatus for Memory Error Detection
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的***和方法
JP7024582B2 (ja) 車載制御装置
JP6469599B2 (ja) メモリ管理システム
WO2013057825A1 (ja) 情報処理装置、データ管理方法、データ管理プログラム
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
JP6969426B2 (ja) 電子制御装置
KR101548924B1 (ko) 차량용 ecu 및 튜닝 보호 기능 해제 방법
JP6699591B2 (ja) エンジン制御装置
JP6177748B2 (ja) 組み込み制御装置
JP2003167792A (ja) 車載用データ記憶装置
KR20240024971A (ko) 디지털 서명을 검사하는 방법, 차량 컴퓨팅 유닛 및 차량
JP7091853B2 (ja) 電子制御装置
US20220360992A1 (en) Control system
JP2018063527A (ja) 電子制御装置
JP6547533B2 (ja) 電動機駆動装置