JP2021015388A - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP2021015388A
JP2021015388A JP2019128948A JP2019128948A JP2021015388A JP 2021015388 A JP2021015388 A JP 2021015388A JP 2019128948 A JP2019128948 A JP 2019128948A JP 2019128948 A JP2019128948 A JP 2019128948A JP 2021015388 A JP2021015388 A JP 2021015388A
Authority
JP
Japan
Prior art keywords
address
storage area
data
control device
unit
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.)
Granted
Application number
JP2019128948A
Other languages
English (en)
Other versions
JP7317609B2 (ja
Inventor
憲太 森島
Kenta Morishima
憲太 森島
雄司 千葉
Yuji Chiba
雄司 千葉
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Priority to JP2019128948A priority Critical patent/JP7317609B2/ja
Publication of JP2021015388A publication Critical patent/JP2021015388A/ja
Application granted granted Critical
Publication of JP7317609B2 publication Critical patent/JP7317609B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

【課題】特定の領域が集中して書き換えられることを防止し、製品の寿命を延ばすことが可能な電子制御装置を提供する。【解決手段】電子制御装置(演算装置)9は、アドレスが付されデータセットが記録されるデータ記憶領域41および2以上のアドレスを格納可能なアドレス記憶領域42を含む不揮発性の記憶領域である記憶部4と、データセットが入力される入力部11と、入力部に入力されたデータセットをデータ記憶領域における未記録領域に記録し、未記録領域のアドレスに関する情報をアドレス記憶領域の未記録領域に記録する記録部12と、アドレス記憶領域における最新の記録に基づいてデータ記憶領域からデータセットを読み出す読出部13と、を備える。【選択図】図2

Description

本発明は、電子制御装置に関する。
近年では様々な機器がネットワークに接続され、機器に記録された情報を更新する仕組みが広く知られている。人が持ち歩く携帯端末や移動体に搭載する機器には、衝撃への耐性が強い不揮発性メモリが用いられることが多い。特許文献1には、車両の動作を制御する処理を実装した制御プログラムを格納する不揮発メモリ、前記制御プログラムを実行する演算部、を備え、前記不揮発メモリは、第1記憶領域と第2記憶領域を有し、前記不揮発メモリはさらに、前記第1記憶領域と前記第2記憶領域のうちいずれが現在実行すべき現行版制御プログラムを格納しているかを表す管理データを格納し、前記演算部は、前記現行版制御プログラムの更新版である更新版制御プログラムと前記現行版制御プログラムとの間の差分を表す差分データ、前記更新版制御プログラムを圧縮した圧縮データ、または前記更新版制御プログラムのうちいずれかを用いて前記更新版制御プログラムのイメージを復元し、前記演算部は、前記第1記憶領域と前記第2記憶領域のうち前記管理データが指定していない側である一方に対して前記更新版制御プログラムのイメージを書き込むとともに、前記更新版制御プログラムの書込みが正常に完了した場合は、前記管理データを前記第1記憶領域と前記第2記憶領域のうち前記管理データが指定していない側を表すデータに書き換え、前記更新版制御プログラムの書込みが正常でない場合は、前記管理データを書き換えないことを特徴とする車両制御装置が開示されている。
特開2018−018186号公報
特許文献1に記載されている発明では、特定のアドレスの書き換え回数が多くなる傾向があり、製品寿命の観点から改善の余地がある。
本発明の第1の態様による電子制御装置は、アドレスが付されデータセットが記録されるデータ記憶領域、および2以上の前記アドレスを格納可能なアドレス記憶領域を含む不揮発性の記憶領域である記憶部と、前記データセットが入力される入力部と、前記入力部に入力された前記データセットを前記データ記憶領域における未記録領域に記録し、前記未記録領域のアドレスに関する情報を前記アドレス記憶領域の未記録領域に記録する記録部と、前記アドレス記憶領域における最新の記録に基づいて前記データ記憶領域から前記データセットを読み出す読出部とを備える。
本発明によれば、特定の領域が集中して書き換えられることを防止し、製品の寿命を延ばすことができる。
電子制御装置のハードウエア構成図 電子制御装置の機能構成図 記憶部の初期状態を示す図 データセットが4回記録された記憶部の状態を示す図 記憶部の別の状態を示す図 第1の実施の形態における記録部の動作を示すフローチャート 第1の実施の形態における読出部の動作を示すフローチャート 第2の実施の形態における記録部の動作を示すフローチャート 第2の実施の形態における読出部の動作を示すフローチャート 第2の実施の形態における記憶部の状態例を示す図 第2の実施の形態の変形例2における記憶部の状態例を示す図 第3の実施の形態におけるデータセットの例を示す図 第3の実施の形態における記憶部の状態例を示す図 第3の実施の形態における記録部のS304の詳細を示すフローチャート 第3の実施の形態における読出部のS325の詳細を示すフローチャート
―第1の実施の形態―
以下、図1〜図7を参照して、電子制御装置の第1の実施の形態を説明する。
図1は、本発明に係る電子制御装置9のハードウエア構成図である。電子制御装置9は、中央演算装置であるCPU1、読み出し専用の記憶装置であるROM2、および読み書き可能な記憶装置であるRAM3、不揮発性の記憶領域、たとえばフラッシュメモリである記憶部4、および通信部5を備える。CPU1は、ROM2に格納されるプログラムをRAM3に展開して実行することで後述する複数の機能を実現する。
記憶部4は、書き換え可能でかつ、ハードウエアの仕様として書き込み回数に制限がある不揮発性の記憶装置、たとえばフラッシュメモリである。記憶部4への書き込みおよび記憶部4からの読み込みは任意のデータサイズで可能である。記憶部4に記録された情報の消去は、所定のブロック単位(以下、「消去単位ブロック」)でしか実行できない。なお消去単位ブロックは数キロバイト〜数百キロバイトの製品が多いが、本実施の形態では説明の簡略のために消去単位ブロックを16バイトとする。通信部5は、電子制御装置9の外部から情報を受信する通信モジュールである。通信部5が実行する通信は、無線通信でもよいし有線通信でもよい。
図2は、電子制御装置9の機能構成図である。ただし図2には、記憶部4の便宜的な領域構成も図示している。電子制御装置9は、その機能として、入力部11と、記録部12と、読出部13とを備える。記憶部4には、データ記憶領域41と、アドレス記憶領域42とが含まれる。入力部11は、電子制御装置9の外部から通信部5に入力された情報を取得する。入力部11は、通信部5に入力された全ての情報を取得してもよいし、特別な識別子が付された情報のみを取得してもよい。
以下では、入力部11が取得する情報を「データセット」と呼ぶ。データセットは、電子データであればよく、その実態は不問である。たとえばデータセットは、1つの実行可能ファイル、複数の実行可能ファイル、実行可能ファイルの一部、ソースコード、ソースコードの差分、演算に用いるデータなどである。念のために記載すると、データセットはアスキーデータでもよいしバイナリデータでもよい。
記録部12は、入力部11が取得した情報、すなわちデータセットをデータ記憶領域41に記録し、記録したアドレスの情報をアドレス記憶領域42に記録する。読出部13は、アドレス記憶領域42に記録されたアドレス情報に基づき、データ記憶領域41に記録された最新のデータセットを読み出す。読出部13は、読み出したデータセットをCPU1に提供してもよいし、通信部5を通じて外部に提供してもよい。なお読出部13は、最新以外のデータセットは読み出せる必要はなく、最新以外のデータセットは記憶部4に完全な状態で記録されていなくてもよい。記録部12および読出部13の動作は次に詳しく説明する。
データ記憶領域41およびアドレス記憶領域42は、あらかじめ設定された記憶部4の領域である。詳しくは後述するが、データ記憶領域41およびアドレス記憶領域42はリングバッファのように使用される。記憶部4の全領域にあらかじめアドレスが設定されており、アドレスを指定することで記憶部4に記録された特定の情報にアクセスできる。アドレスは既知の固定長、たとえば32ビットであり具体的には、「0xFFFFFFFF」、「0x12345678」などである。なお例示した2つのアドレスの先頭に記載した「0x」は16進法の表記であることを示す符号であり、以下では記載を省略することもある。
本実施の形態では、アドレスの情報を格納可能な連続する32ビット、すなわち連続する4バイトを「アドレスブロック」とも呼ぶ。さらにこのアドレスブロックは、便宜的に先頭から通し番号を付してアドレスブロック(1)、アドレスブロック(2)、・・・と呼ぶこともある。
入力部11、記録部12、および読出部13の動作を概略すると次のとおりである。たとえば、あるプログラムのバイナリデータを通信部5が受信するたびに入力部11がそのバイナリデータをデータセットとして取得する。そして記録部12は入力部11が取得したバイナリデータを記憶部4に記録する。詳しくは後述するが、記録部12は原則としてデータセットを上書きではなく追記する。読出部13は、所定のタイミング、たとえば電子制御装置9の起動時に記憶部4に記録された最新のバイナリデータを読み取る。
(記憶部4の初期状態)
図3は、データセットが記録される前の記憶部4、すなわち記憶部4の初期状態を示す図である。図3は、左側のベースアドレス部47と、上部のオフセットアドレス部48と、右下の大きな領域であるデータ部49とから構成される。記憶部4に実際に格納されている情報はデータ部49に示すものであり、ベースアドレス部47およびオフセットアドレス部48は便宜的に記載している。
図3に示すデータ部49は8行から構成され、1行は16個の小さなブロックから構成される。1つの小さなブロックは、「0x00」〜「0xFF」の情報、すなわち1バイトの情報が格納できる。すなわち、オフセットアドレス部48に示す「+0」や「+1」は、アドレスをベースアドレスから指定された数のバイト数だけ増加させることを意味する。本実施の形態では、アドレスは4バイトなので、1つのアドレスはたとえばオフセットアドレス部48の「+0」〜「+3」の範囲に格納された情報で表される。
本実施の形態では、アドレス記憶領域42はアドレス「0x00000000」から「0x0000001F」まで、データ記憶領域41はアドレス「0x00000020」から「0x0000008F」までである。初期状態では、アドレス記憶領域42およびデータ記憶領域41は全ビットが「1」で初期化されている。ただしこれは例示に過ぎず、データ記憶領域41の領域の広さおよびアドレス記憶領域42の領域の広さは任意である。
アドレス記憶領域42の領域は、消去単位ブロックの少なくとも2倍の領域を有する。本実施の形態では消去単位ブロックが16バイト(0x10バイト)なので、アドレス記憶領域42は少なくとも32バイト(0x20バイト)の領域を有する。また、アドレス記憶領域42およびデータ記憶領域41の初期状態はあらかじめ定まっていればよく図3の状態に限定されない。具体的には、初期状態の全ビットが「0」でもよいし、データ記憶領域41とアドレス記憶領域42では初期状態のビット状態が同一でなくてもよい。
(記憶部4の状態例)
図4は、データセットが4回記録された記憶部4の状態を示す図である。図4ではデータセットを記録された順番に「データ1−1」〜「データ1−4」と記載している。データ1−1は、「0x00000020」〜「0x0000002B」に記録されている。データ1−2は、「0x0000002C」〜「0x0000003F」に記録されている。データ1−3は、「0x00000040」〜「0x00000057」に記録されている。データ1−4は、「0x00000058」〜「0x0000006F」に記録されている。
データ1−1〜データ1−4が記録されたアドレスを示すように、アドレス記憶領域42にはアドレス情報が格納される。前述のように本実施の形態ではアドレスは4バイトで表記するので、符号901などで示すように4つの小さなブロックが1つのアドレスを示す。アドレスブロック901に格納されている値である「0x00000020」は、データ1−1が格納される先頭のアドレスである。アドレスブロック902に格納されている値である「0x0000002C」は、データ1−2が格納される先頭のアドレスである。アドレスブロック903に格納されている値である「0x00000040」は、データ1−3が格納される先頭のアドレスである。アドレスブロック904に格納されている値である「0x00000058」は、データ1−4が格納される先頭のアドレスである。
なお本実施の形態では、説明の都合上、バイトオーダーにビッグインディアンを採用しているがリトルインディアンを採用してもよい。また、本実施の形態では消去単位ブロックが16バイトなので、図4における1行に相当する。
(記憶部4の別の状態例)
図5は、記憶部4の別の状態を示す図である。図5は、データ記憶領域41およびアドレス記憶領域42の全域を使いきり、それぞれの先頭領域を初期化した状態を示している。図5では「データ1−51」が「0x00000020」〜「0x00000027」および「0x00000071」〜「0x0000007F」に記録されている。符号911で示すアドレスは「0x00000032」であり、符号912で示すアドレスは「0x00000046」であり、符号913で示すアドレスは「0x0000005E」であり、符号914で示すアドレスは「0x00000071」である。
データ記憶領域41では、データ1−51が2つに分かれて記載されているが、これは、データ記憶領域41の末尾と先頭を繋げて使用しているからである。換言すると、データ1−51における「0x0000007F」の次のデータは、「0x00000020」に記載されている。すなわちデータ1−51が記録されている先頭のアドレスは「0x00000071」であり、符号914で示す領域に記録されている。
(記録部12の動作概要)
記録部12の動作の概要を説明する。記録部12は、入力部11がデータセットを取得すると、データセットを書き込むデータ記憶領域41を特定する。この書き込み位置は、データ記憶領域41における書き込み済の領域の直後である。すなわち記録部12は、データセットを上書きではなく追記することでデータ記憶領域41に記録する。このように記録することで、データ記憶領域41の特定のアドレスへの書き込みが集中することを避けることができ、記憶部4の寿命を延ばすことができる。
ただし記録部12は、追記を繰り返したことでデータ記憶領域41にデータセットを記録しきれないと判断する場合は、消去可能なデータ記憶領域41を特定して消去する。そして記録部12は、残りの領域と消去した領域を用いてデータセットを記録する。この際にも記録部12は、書き込み回数が均一になるように書き込みを行う。たとえば図5に示したように、データ1−51の一部を「0x00000071」〜「0x0000007F」に記録し、残りを消去した領域である「0x00000020」〜「0x00000027」に記録する。
また記録部12は、アドレスを書き込むアドレス記憶領域42を特定し、データセットを記録した先頭のアドレスを記録する。さらに記録部12は、データ記憶領域41と同様にアドレス記憶領域42も必要に応じて消去単位ブロックごとの消去を行う。ただし記録部12は、初期化を行った際にも書き込み回数が均一になるように書き込みを行う。このように記録することで、アドレス記憶領域42の特定のアドレスへの書き込みが集中することを避けることができ、記憶部4の寿命を延ばすことができる。
(読出部13の動作概要)
読出部13の動作の概要を説明する。読出部13は、所定のイベントが発生した場合に、たとえば電子制御装置9に備えられる他のプログラムから指令を受けた場合や、電子制御装置9の外部から通信部5を介して指令を受けた場合に動作する。読出部13は、まずアドレス記憶領域42に記録されている最新のアドレス情報を特定する。本実施の形態では、アドレス情報はアドレス記憶領域42の先頭から順番に記録されるので、最新のアドレス情報は原則として、アドレス記憶領域42に記録されているアドレス情報のうち一番後ろのものである。すなわちアドレス記憶領域42の先頭からアドレスブロックの大きさである4バイト単位で読み込み、格納されている情報が「FFFFFFFF」ではない最後のアドレスブロックの値を最新のアドレス情報と判断する。
例外は、アドレス記憶領域42の先頭領域を含む消去単位ブロックが初期化された場合である。この場合は、アドレス記憶領域42の先頭領域に格納されるアドレス情報が「FF・・・」となる。この場合には読出部13は、アドレス記憶領域42における最終の消去単位ブロックの先頭から検索を開始する。読出部13は、アドレスを特定すると、そのアドレスからデータセットを読み出す。
(記録部12の動作フローチャート)
図6は、記録部12の動作を示すフローチャートである。記録部12は、入力部11がデータセットを取得すると、図6に示す処理を開始する。まず記録部12は、データセットを書き込むデータ記憶領域41を特定する(S301)。この書き込み位置は、データ記憶領域41における書き込み済の領域の直後である。書き込み済の領域は、書き込まれている情報が初期化された値であるか否かにより判断してもよいし、書き込みを行った領域を別途管理することで実現してもよい。
続いて記録部12は、S301において特定したアドレスから書き込みを開始した場合に、書き込み領域が不足するか否かを判断する。たとえば受信したデータセットが23バイトあり、書き込み開始位置からデータ記憶領域41の末尾までが15バイトの場合には、記録部12は不足すると判断する。この場合(S302:YES)には記録部12は、消去可能なブロックを特定して消去する。たとえば記録部12は、全領域にデータセットが書き込まれている消去単位ブロックを消去可能なブロックとして特定する。たとえば図4に示す状態において取得したデータセットが20バイトの場合には、「0x00000020」〜「0x0000006F」の4つの消去単位ブロックが消去される。
S302において否定判断された場合、およびS303の次に実行されるS304では、記録部12はS301において特定した領域にデータセットを書き込む。次に記録部12は、アドレス記憶領域42におけるアドレスの記録位置を特定する。書き込み済の領域は、書き込まれている情報が初期化された値であるか否かにより判断してもよいし、書き込みを行った領域を別途管理することで実現してもよい。すなわち記録部12は、データセットを上書きではなく追記することでデータ記憶領域41に記録する。このように記録することで、特定のアドレスへの書き込みが集中することを避けることができ、記憶装置の寿命を延ばすことができる。
次に記録部12は、追記を繰り返したことでデータ記憶領域41にデータセットを記録しきれないと判断する場合は、消去可能なデータ記憶領域41を特定して消去する。そして記録部12は、残りの領域と消去した領域を用いてデータセットを記録する。この際にも記録部12は、書き込み回数が均一になるように書き込みを行う。具体的には、データ記憶領域41の最後までデータセットを記録し、その続きをデータ記憶領域41の先頭から記録する。
さらに記録部12は、アドレスを書き込むアドレス記憶領域42を特定し(S305)、データセットを記録した先頭のアドレスを記録する(S306)。なお以下では、S306において書き込むアドレスの値を「最新アドレス」とも呼ぶ。すなわち最新アドレスとは、データセットを記録した先頭のアドレスである。記録部12は、アドレス記憶領域42への書き込み位置は、アドレス記憶領域42における未記録領域、すなわち書き込み済の領域の直後である。書き込み済の領域は、書き込まれている情報が初期化された値であるか否かにより判断してもよいし、書き込みを行った領域を別途管理することで実現してもよい。
次に記録部12は、S306における書き込みが、アドレス記憶領域42における最終位置、たとえば図3〜図5に示す例では「0x0000001C」〜「0x0000001F」への書き込みであるか否かを判断する(S307)。記録部12は、書き込みがアドレス記憶領域42の最終位置であると判断する場合には(S307:YES)、アドレス記憶領域42における最終の消去単位ブロック以外を消去する。
S307において否定判断された場合に実行されるS309では記録部12は、S306における書き込みが、アドレス記憶領域42における先頭位置、たとえば図3〜図5に示す例では「0x00000000」〜「0x00000003」への書き込みであるか否かを判断する(S309)。記録部12は、書き込みがアドレス記憶領域42の先頭位置であると判断する場合には(S309:YES)、アドレス記憶領域42における最終の消去単位ブロックを消去する(S310)。記録部12は、S308またはS310を実行すると、もしくはS309を否定判断すると図6に示す処理を終了する。
(読出部13の動作フローチャート)
図7は、読出部13の動作を示すフローチャートである。読出部13はまず、アドレス記憶領域42の先頭から初期化されたままの領域、具体的には4バイトにわたってビットがすべて「1」であるアドレスブロックを検索する(S321)。次に読出部13は、「FFFFFFFF」がアドレス記憶領域42の先頭に存在するか否かを判断し、先頭に存在すると判断する場合は(S322:YES)、アドレス記憶領域42における最終の消去単位ブロックの先頭から再度検索を行う(S323)。ただしアドレス記憶領域42の末尾の次はアドレス記憶領域42の先頭を検索する。
次に読出部13は、検出した最初の「FFFFFFFF」の直前のアドレスブロックに記載されているアドレスをターゲットに設定し(S324)、ターゲットのアドレスからデータセットを読み出す。なおアドレス記憶領域42にはデータセットが記録された終末位置のアドレスや、データセットのデータ長は記録されていないが、読出部13は何らかの手段でデータセットの終了位置を判断する。読出部13はたとえば、データセットそのものにデータ長の情報が格納されていればそれを利用してデータセットの終了位置を判断し、データセットの長さが固定長であれば、読み出し位置のアドレスにその固定長を加えたアドレスをデータセットの終了位置と判断する。
S324の動作を具体的に説明する。たとえば図4に示す例では、アドレス記憶領域42の先頭から検索すると「0x00000010」〜「0x00000013」が「FFFFFFFF」なので、その直前のアドレスブロックに記載された「0x000058」をターゲットに設定する。また図5に示す例では、アドレス記憶領域42の先頭に「FFFFFFFF」が存在するので、アドレス記憶領域42における最終の消去単位ブロックの先頭、すなわち「0x00000010」から再度検索を行う。そしてアドレス記憶領域42の末尾まで検索しても「FFFFFFFF」が見つからないのでアドレス記憶領域42の先頭に戻り、先頭で「FFFFFFFF」を発見する。そして先頭の直前のアドレスブロック、すなわちアドレス記憶領域42の末尾のアドレスブロックに記載された「0x00000071」をターゲットに設定する。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)電子制御装置9は、アドレスが付されデータセットが記録されるデータ記憶領域41、および2以上のアドレスを格納可能なアドレス記憶領域42を含む不揮発性の記憶領域である記憶部4と、データセットが入力される入力部11と、入力部11に入力されたデータセットをデータ記憶領域41における未記録領域に記録し、未記録領域のアドレスに関する情報をアドレス記憶領域42の未記録領域に記録する記録部12と、アドレス記憶領域42における最新の記録に基づいてデータ記憶領域41からデータセットを読み出す読出部13と、を備える。すなわち記録部12は、データセットを未記録領域に記録するので、上書き処理ではなく追記処理を行う。そのため、書き換え回数に制限があるフラッシュメモリの特定の領域が集中して書き換えられることを防止し、記憶部4の寿命を延ばすことができる。
(2)記憶部4は、データセットを記録した未記録領域のアドレスをアドレス記憶領域42の未記録領域に最新アドレスとして記録し、読出部13は、アドレス記憶領域42に記録された最新の最新アドレスが示すデータ記憶領域からデータセットを読み出す。そのため電子制御装置9は、アドレス記憶領域42に記録された最新アドレスからデータセットを読み出すことができる。
(3)データ記憶領域41およびアドレス記憶領域42のそれぞれは、ハードウエア特性により定まるデータを消去可能な最小単位である消去単位ブロックを少なくとも2つ含む。そのため、追記を繰り返すことでデータ記憶領域41およびアドレス記憶領域42のそれぞれの容量が不足した場合に、各領域の一部のみを消去して使用を継続できる。
(4)記録部12は、アドレス記憶領域42において、先頭から後方に向かって順番に、かつ隙間をあけずに最新アドレスを書き込む。そのためアドレス記憶領域42を有効に使用し、かつ処理ロジックを簡潔にできる。
(5)記録部12は、アドレス記憶領域42において、先頭から後方に向かって順番に最新アドレスを書き込む。読出部13は、アドレス記憶領域42における最後方に記録されたアドレスを最新アドレスと判断する。
(6)記録部12は、アドレス記憶領域42において、先頭から後方に向かって順番に最新アドレスを書き込む。読出部13は、アドレス記憶領域42に格納されている値を記憶部4に設定されたアドレス空間の大きさの区切りで、本実施の形態では4バイト区切りでアドレスブロックとして先頭から後方に向かって検索する。読出部13は図7のフローチャートに示すように、記憶部4を初期化した際の値である「FFFFFFFF」を有し、検索により最初に該当したアドレスブロックの直前のアドレスブロックに格納されている値を最新アドレスと判断する。
(変形例1)
上述した第1の実施の形態では、データ記憶領域41およびアドレス記憶領域42には、先頭から後方に向かって順番に書き込みが行われた。しかし書き込む順番が規定されていればよく、たとえばデータ記憶領域41およびアドレス記憶領域42の末尾から先頭に向かって順番に書き込みが行われてもよい。またデータ記憶領域41とアドレス記憶領域42の書き込み方向が異なってもよい。
(変形例2)
記憶部4には、データ記憶領域41およびアドレス記憶領域42以外の領域(以下、「通常領域」と呼ぶ)が設けられてもよい。たとえば通常領域には、プログラムやデータが格納されてもよい。この際に、プログラムやデータに更新があった際に、同一のアドレス領域に新たな情報が書き込まれると、そのアドレス領域だけ書き込み回数が増大して記憶部4の寿命が短くなる可能性がある。そのため、通常領域に対しては既知の手法であるハードウエア実装型のウェアレベリングを適用してもよい。
(変形例3)
上述した第1の実施の形態では、動作中の電源断に対して特に対策をしていない。しかし記録部12は、特別なフラグを用意して対策を行ってもよい。たとえば記憶部4に記録中フラグを初期値「0」で用意する。記録部12は、書き込み処理を行う直前、すなわち図6のS304の直前に記録中フラグを「1」に変更し、S306の処理が完了すると記録中フラグを「0」に戻す。この場合に読出部13は、S324の実行前に記録中フラグの値を読み込み、記録中フラグの値が「0」の場合はそのままS324を実行する。また、記録中フラグの値が「1」の場合は読出部13は、「FFFFFFFF」の2つ前のアドレスブロックをターゲットに決定する。
この変形例3によれば、記録部12による記録が中断されて不完全な記録が行われた場合に、読出部13は従前の記録を読み出すことで障害の発生を回避できる。
(変形例4)
入力部11、記録部12、および読出部13は、記憶部4と一体に構成されてもよい。すなわち、入力部11、記録部12、および読出部13がフラッシュメモリのコントローラの機能の一部として記憶部4に搭載されてもよい。
(変形例5)
入力部11、記録部12、および読出部13は、CPU1、ROM2、およびRAM3の組み合わせの代わりに書き換え可能な論理回路であるFPGA(Field Programmable Gate Array)や特定用途向け集積回路であるASIC(Application Specific Integrated Circuit)により実現されてもよい。また入力部11、記録部12、および読出部13は、CPU1、ROM2、およびRAM3の組み合わせの代わりに、異なる構成の組み合わせ、たとえばCPU1、ROM2、RAM3とFPGAの組み合わせにより実現されてもよい。
(変形例6)
入力部11は、電子制御装置9の動作終了時にRAM3に格納されている情報であって、データ記憶領域41に格納されている情報と異なる情報をデータセットとして扱ってもよい。たとえば空燃比マップやカメラの外部パラメータなど、時折更新されうる情報であって高頻度で使用される情報を記憶部4に記録する場合に本変形例が有効である。空燃比マップを例に具体的に説明する。
読出部13は、電子制御装置9の起動時に記憶部4に記録されている空燃比マップを読み出してRAM3にコピーする。空燃比マップは、電子制御装置9に搭載される他のプログラムから参照され、必要に応じて修正が加えられる。入力部11は、電子制御装置9の電源がオフにされる際に、RAM3に格納されている空燃比マップと、記憶部4に記録されている空燃比マップとの異同を確認する。そして入力部11は、両者が異なる場合にはRAM3に格納されている空燃比マップを入力部11に入力されるデータセットとして扱い、記録部12がこれを記憶部4に記録する。
この変形例6によれば、低頻度で更新される可能性があるデータを書き換え回数に制限がある記憶部4に効率よく記録できる。
―第2の実施の形態―
図8〜図10を参照して、電子制御装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、アドレス記憶領域にアドレスが2つ連続で記録される点で、第1の実施の形態と異なる。
第2の実施の形態における電子制御装置9のハードウエア構成は第1の実施の形態と同様なので説明を省略する。第2の実施の形態における電子制御装置9の機能構成は、第1の実施の形態に比べて記録部12および読出部13の動作が次のように異なる。記録部12は、アドレス記憶領域42にデータセットを記録したアドレスを2回書き込む。読出部13は、アドレス記憶領域に記録された2つの連続するアドレスであって、最も後ろに記録されているアドレスを最新アドレスと判断する。
(記録部12の動作)
図8は、第2の実施の形態における記録部12の動作を示すフローチャートである。ただし図8では、図6や図7と同じ処理には同一のステップ番号を付して説明を省略する。さらに図8では、図示の都合により図6や図7の複数の処理をまとめて記載することもある。記録部12は、S313として図6に示すS301〜S303の処理を行う。次に記録部12は、S314として図6に示すS304〜S310の処理を行う。そして記録部12は、S315として図7に示すS321〜S325の処理を行う。
次に記録部12は、S316において正常な書き込みが確認できたか否かを判断する。具体的には記録部12は、S325において読み出したデータと、S304において書き込んだデータが同一であればS316を肯定判断し、両者が異なればS316を否定判断する。記録部12は、S316を否定判断するとS314に戻って処理をやり直す。記録部12は、S316を肯定判断すると、S317に進んで2回目のアドレスの書き込みを行う。S317によるアドレス記憶領域42へのアドレスの書き込みは、S306において書き込んだ領域の直後である。以上が第2の実施の形態における記録部12の動作の説明である。
(読出部13の動作)
図9は、第2の実施の形態における読出部13の動作を示すフローチャートである。ただし図9では、図7と同じ処理には同一のステップ番号を付して説明を省略する。読出部13は、S321〜S323の処理を行う。次に読出部13は、S331において、アドレスブロック(k)を検出した最初の「FFFFFFFF」のアドレスブロックとする。続くS332では読出部13は、アドレスブロック(k−1)に格納されている値と、アドレスブロック(k−2)に格納されている値とが同一であるか否かを判断する。
読出部13は、両者が同一と判断する場合はS333に進み、両者が同一でないと判断する場合はS334に進む。S333では読出部13は、アドレスブロック(k−1)に格納されたアドレスからデータを読み出して図9に示す処理を終了する。S334では読出部13は、変数kをデクリメントして、すなわち変数kの値を「1」だけ減算してS332に戻る。すなわちS332とS334のループでは、格納されているアドレス値が同一になるまで、比較対象を後ろから前に移動させる。以上が第2の実施の形態における読出部13の動作の説明である。
(動作例)
図10は、第2の実施の形態において記録部12による書き込みの途中で電源断された場合の、記憶部4の状態例を示す図である。図10ではデータセットを記録された順番に「データ1−21」〜「データ1−23」と記載している。データ1−21は、「0x00000020」〜「0x0000002B」に記録されている。データ1−22は、「0x0000002C」〜「0x0000003F」に記録されている。データ1−23は、「0x00000040」〜「0x0000004D」に記録されている。ただしデータ1−23は書き込みが完了しておらず途中までしか記録されていない。
アドレスブロック921およびアドレスブロック922には、「データ1−21」の先頭のアドレスが格納されている。アドレスブロック923およびアドレスブロック924には、「データ1−22」の先頭のアドレスが格納されている。アドレスブロック925には、「データ1−23」の先頭のアドレスが格納されている。アドレスブロック926にはアドレス記憶領域42の初期値である「0xFFFFFFFF」が格納されている。
便宜的にアドレスブロックに通し番号を付すと、アドレスブロック(1)がアドレスブロック921、アドレスブロック(2)がアドレスブロック922、アドレスブロック(3)がアドレスブロック923、アドレスブロック(4)がアドレスブロック924、アドレスブロック(5)がアドレスブロック925、アドレスブロック(6)がアドレスブロック926である。
読出部13の動作を図9のフローチャートと合わせて説明する。読出部13は、アドレス記憶領域42の先頭から「FFFFFFFF」を検索し、アドレスブロック926を発見する(S321)。アドレスブロック926はアドレス記憶領域42の先頭ではないので(S322:NO)、S331に進む。S331では読出部13は、アドレスブロック926をアドレスブロック(k)とする。前述のとおり、アドレスブロック926はアドレスブロック(6)とも表記されるので、S331では「k=6」に設定される。
続くS332では読出部13は、アドレスブロック(k−1)とアドレスブロック(k−2)の値が同一か否か、すなわちアドレスブロック(5)であるアドレスブロック925と、アドレスブロック(4)であるアドレスブロック924の値が同一か否かを判断する。両者は「00000040」と「0000002C」で異なる値なので、読出部13は否定判断してS334に進み、変数「k」をデクリメントして「k=5」としてS332に戻る。
再び実行されるS332では読出部13は、アドレスブロック(4)であるアドレスブロック924と、アドレスブロック(3)であるアドレスブロック923の値が同一か否かを判断する。両者は「0000002C」で同一なので、読出部13はS333に進んでアドレス「0x0000002C」からデータ1−22を読み出す。
上述した第2の実施の形態によれば、次の作用効果が得られる。
(7)記録部12は、最新アドレスをアドレス記憶領域42の未記録領域の末尾に記録し、記録した最新アドレスからデータセットが読み出せるとアドレス記憶領域42の未記録領域の末尾にさらに最新アドレスを記録する。読出部13は、アドレス記憶領域42に記録された2つの連続するアドレスであって、最も後ろに記録されているアドレスを最新アドレスと判断する。そのため記録部12による記録の最中に電源の遮断などで動作が停止しても、読出部13は同じアドレスが続けて記録されていないことで異常の発生を検知し、問題が検出されていない従前の情報を読み出すことができる。すなわち本実施の形態による電子制御装置9は、異常時が発生する以前の状態にロールバックすることができる。
(第2の実施の形態の変形例1)
記録部12は、アドレスを3回以上連続で書き込んでもよい。この場合は、3回目以降のアドレスの書き込みは、2回目の書き込みと同時に行ってもよい。さらに記録部12は、N−1回目の書き込みが正常に行われていることを確認してからN回目の書き込みを行ってもよい。
(第2の実施の形態の変形例2)
アドレス記憶領域42は、第1アドレス記憶領域421と、第2アドレス記憶領域422とから構成されてもよい。この場合に記録部12は、データセットを記録したアドレスを第1アドレス記憶領域421および第2アドレス記憶領域422に追記する。記録部12による追記する位置の決定方法は第1の実施の形態と同様である。記録部12はたとえば、1回目のアドレスの書き込みを第1アドレス記憶領域421に行い、2回目のアドレスの書き込みを第2アドレス記憶領域422に行う。ただし記録部12は、2回目のアドレスの書き込みは、第2の実施の形態と同様に1回目の書き込みが正常に行われていることを確認してから行う。
この場合に読出部13は、第1アドレス記憶領域421および第2アドレス記憶領域422の同じ位置に記録されたアドレスであって、最も後ろに記録されているアドレスからデータセットを読み出す。具体的には読出部13は、まず第1アドレス記憶領域421および第2アドレス記憶領域422の両方を対象として先頭から順番に、格納されている値が「FFFFFFFF」ではない最も後ろのアドレスブロックを検索する。そして第1アドレス記憶領域421および第2アドレス記憶領域422における先頭からの位置が同じであり、格納されている値が「FFFFFFFF」ではなく、同一の値が格納されているアドレスブロックを特定する。さらに読出部13は、その特定したアドレスブロックに格納されているアドレスからデータセットを読み出す。
図11は、第2の実施の形態の変形例2における記憶部4の状態例を示す図である。図11では、第2の実施の形態で示した図10と同様の状況、すなわち記録部12による書き込みの途中で電源断された場合を示している。本変形例では、記憶部4の最初の0x20バイトが第1アドレス記憶領域421、次の0x20バイトが第2アドレス記憶領域422、さらに次の0x60バイトがデータ記憶領域41である。データ1−21は、「0x00000040」〜「0x0000004B」に記録されている。データ1−22は、「0x0000004C」〜「0x0000005F」に記録されている。データ1−23は、「0x00000060」〜「0x0000006D」に記録されている。ただしデータ1−23は書き込みが完了しておらず途中までしか記録されていない。
アドレスブロック931およびアドレスブロック934には、「データ1−21」の先頭のアドレスが格納されている。アドレスブロック932およびアドレスブロック935には、「データ1−22」の先頭のアドレスが格納されている。アドレスブロック933には、「データ1−23」の先頭のアドレスが格納されている。アドレスブロック936にはアドレス記憶領域42の初期値である「0xFFFFFFFF」が格納されている。
読出部13は、第1アドレス記憶領域421および第2アドレス記憶領域422の両方を対象として先頭から順番に、格納されている値が「FFFFFFFF」ではない最も後ろのアドレスブロックを検索する。これにより、第1アドレス記憶領域421ではアドレスブロック933が選択され、第2アドレス記憶領域422ではアドレスブロック935が検索される。しかしアドレスブロック933は第1アドレス記憶領域421の先頭から3番目であり、アドレスブロック935が第2アドレス記憶領域422の先頭から2番目で両者は同じ位置ではない。そのため読出部13は、第1アドレス記憶領域421の先頭から2番目のアドレスブロック932を選択し、アドレスブロック932とアドレスブロック935に格納されている値が同一なので、読出部13は「0x0000004C」からデータセットを読み出す。
以上説明した変形例によれば次の作用効果が得られる。
(8)アドレス記憶領域42は、第1アドレス記憶領域421および第2アドレス記憶領域422から構成される。記録部12は、最新アドレスを第1アドレス記憶領域421の未記録領域の末尾に記録し、記録した最新アドレスからデータセットが読み出せると第2アドレス記憶領域422の未記録領域の末尾に最新アドレスを記録する。読出部13は、第1アドレス記憶領域421および第2アドレス記憶領域422の先頭から同じ位置に記録されたアドレスであって、最も後ろに記録されているアドレスを最新アドレスと判断する。そのため、第2の実施の形態と異なる実装形態で、電源の不意な切断に対応できる。
―第3の実施の形態―
図12〜図15を参照して、電子制御装置の第3の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、データ記憶領域に複数種類のデータが記録され、それぞれを示すアドレステーブルも併せて保存される点で、第1の実施の形態と異なる。本実施の形態では、入力部11に入力されるデータセットには1または複数のデータが含まれ、さらにデータセットには含まれるデータの種類を示す識別子が付されている。
(データセット)
図12は、第3の実施の形態におけるデータセットの例を示す図である。図12では符号1101〜1103で示す3つのデータセットを図示しており、符号の順番で入力部11に入力される。データセット1101にはデータ1、データ2、およびデータ3が含まれる。図12では、データの種類を示す識別子として山括弧で数字を囲った記号、すなわち「<1>」などを記載している。ただし実際にはあらかじめ定めた符号を用いればよく、表記形式は任意である。
(記憶部4の状態例)
図13は、第3の実施の形態における記憶部4の状態例を示す図である。図13では、図12に示した3つのデータセットを記録した状態を示している。ただし各データのサイズは作図の都合により非常に小さく記載している。実際にはデータのサイズは数キロバイト以上あってもよい。
図13では、アドレス記憶領域42の最初のアドレスブロック941に「0x00000020」が格納され、2番目のアドレスブロック942に「0x00000040」が格納され、3番目のアドレスブロック943に「0x00000050」が格納されている。図13のデータ記憶領域41には、3つのアドレステーブルと、受信したそれぞれのデータが格納されている。記録部12は、入力部11がデータセットを受信するたびにアドレステーブルを作成して受信したデータセットに含まれるデータとともにデータ記憶領域41に格納する。
アドレステーブルには、データ1〜データ3が格納されているアドレスが格納される。図13に示す例ではデータセットに含まれるデータの種類は3つなので、データセットにはアドレスが3つ含まれる。そのためデータセットのサイズは、4バイトの3倍である12バイトである。各アドレステーブルの具体的な値は図13の下部に示している。アドレステーブル1には、データ1が格納されているアドレスを示す「0000002C」と、データ2が格納されているアドレスを示す「00000030」と、データ3が格納されているアドレスを示す「00000034」とから構成される。
アドレステーブル2の値は、データ2を除いてアドレステーブル1と同じである。図12に示したようにデータセット1102にはデータ2しか含まれないからである。アドレステーブル2のデータ2の値は、「0000004C」である。アドレステーブル3の値は、データ3のみアドレステーブル2と同じである。データセット1103にはデータ1およびデータ2しか含まれないからである。アドレステーブル3のデータ1の値は「0000005C」、データ2の値は「00000060」である。
(記録部12の動作フローチャート)
図14は、本実施の形態における記録部12のS304の詳細を示すフローチャートである。本実施の形態における記録部12の動作は第1の実施の形態とS304を除いて同一なので、ここでは図14を参照してS304の詳細のみを説明する。本実施の形態では、S304は以下に説明するようにS3041〜S3045で構成される。S3041では記録部12は、データ記憶領域41に保存されている最新のアドレステーブルを読み込む。ただし記録部12は、RAM3に最新のアドレステーブルを記録し、S3041ではRAM3からアドレステーブルを読み込んでもよい。
続くS3042では記録部12は、受信したデータセットに付された識別子に基づき、更新されたデータを特定する。続くS3043では記録部12は、新たに記録されるデータが記録されるデータ記憶領域41のアドレスを特定する。このアドレスはたとえば、S305において特定したアドレスにアドレステーブルのサイズを加えることで算出できる。また、新たに記録されるデータが複数存在する場合には、他のデータのデータサイズをあわせて利用することで、データの記録されるアドレスを算出できる。
続くS3044では記録部12は、データ記憶領域41におけるS305において特定した位置に新たなアドレステーブルを記録する。このアドレステーブルは、全データについて記録されているアドレスを示すものである。最後のS3045では記録部12は、アドレステーブルを記録した領域の直後に新たなデータを書き込む。
(読出部13の動作フローチャート)
図15は、本実施の形態における読出部13のS325の詳細を示すフローチャートである。本実施の形態における読出部13の動作は第1の実施の形態とS325を除いて同一なので、ここでは図15を参照してS325の詳細のみを説明する。本実施の形態では、S325は以下に説明するようにS3251〜S3252で構成される。S3251では読出部13は、ターゲットからアドレステーブルを読み込む。続くS3252では読出部13は、アドレステーブルに記載された各アドレスからデータを読み出す。
上述した第3の実施の形態によれば、次の作用効果が得られる。
(9)データセットは複数のデータから構成される。記録部12は、複数のデータのそれぞれが記録されたアドレスを示すアドレステーブルをデータセットとともにデータ記憶領域に記録する。そのため複数のデータを記録する場合にも、第1の実施の形態と同様に記憶部4の寿命を延ばすことができる。
(10)データセットを構成する複数のデータのそれぞれには識別子が対応付けられている。入力部11に入力されるデータセットには、当該データセットに含まれるデータに対応する識別子が付されている。記録部12は、入力部11にデータセットが入力されると、データセットに付された識別子に基づきアドレステーブルにおける書き換え対象を特定する(図14のS3042)。そして記録部12は、特定した書き換え対象を新たに記録したアドレスに書き換える(図14のS3044)。そのため、データセットを構成する一部のデータのみが更新された場合に、効率よく情報を記録することができる。
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
上述した各実施の形態および変形例において、プログラムは不図示のROMに格納されるとしたが、プログラムは記憶部4に格納されていてもよい。また、電子制御装置9が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースと電子制御装置9が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やFPGAにより実現されてもよい。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
4…記憶部
9…電子制御装置
11…入力部
12…記録部
13…読出部
41…データ記憶領域
42…アドレス記憶領域
421…第1アドレス記憶領域
422…第2アドレス記憶領域

Claims (13)

  1. アドレスが付されデータセットが記録されるデータ記憶領域、および2以上の前記アドレスを格納可能なアドレス記憶領域を含む不揮発性の記憶領域である記憶部と、
    前記データセットが入力される入力部と、
    前記入力部に入力された前記データセットを前記データ記憶領域における未記録領域に記録し、前記未記録領域のアドレスに関する情報を前記アドレス記憶領域の未記録領域に記録する記録部と、
    前記アドレス記憶領域における最新の記録に基づいて前記データ記憶領域から前記データセットを読み出す読出部と、を備える電子制御装置。
  2. 請求項1に記載の電子制御装置において、
    前記未記録領域のアドレスに関する情報とは前記未記録領域のアドレスであり、
    前記記録部は、前記データセットを記録した前記未記録領域のアドレスを前記アドレス記憶領域の未記録領域に最新アドレスとして記録し、
    前記読み出し部は、前記アドレス記憶領域に記録された最新の前記最新アドレスが示す前記データ記憶領域から前記データセットを読み出す、電子制御装置。
  3. 請求項1に記載の電子制御装置において、
    前記データセットは複数のデータから構成され、
    前記記録部は、前記複数のデータのそれぞれが記録されたアドレスを示すアドレステーブルを前記データセットとともに前記データ記憶領域に記録し、
    前記未記録領域のアドレスに関する情報とは前記アドレステーブルが記録されているアドレスである、電子制御装置。
  4. 請求項3に記載の電子制御装置において、
    前記データセットを構成する前記複数のデータのそれぞれには識別子が対応付けられており、
    前記入力部に入力されるデータセットには、当該データセットに含まれるデータに対応する前記識別子が付されており、
    前記記録部は、前記入力部に前記データセットが入力されると、前記データセットに付された前記識別子に基づき前記アドレステーブルにおける書き換え対象を特定し、特定した前記書き換え対象を新たに記録したアドレスに書き換える電子制御装置。
  5. 請求項2に記載の電子制御装置において、
    前記記録部は、前記最新アドレスを前記アドレス記憶領域の未記録領域の末尾に記録し、記録した前記最新アドレスから前記データセットが読み出せると前記アドレス記憶領域の未記録領域の末尾にさらに前記最新アドレスを記録し、
    前記読み出し部は、前記アドレス記憶領域に記録された2つの連続するアドレスであって、最も後ろに記録されているアドレスを前記最新アドレスと判断する電子制御装置。
  6. 請求項2に記載の電子制御装置において、
    前記アドレス記憶領域は、第1アドレス記憶領域および第2アドレス記憶領域から構成され、
    前記記録部は、前記最新アドレスを前記第1アドレス記憶領域の未記録領域の末尾に記録し、記録した前記最新アドレスから前記データセットが読み出せると前記第2アドレス記憶領域の未記録領域の末尾に前記最新アドレスを記録し、
    前記読み出し部は、前記第1アドレス記憶領域および前記第2アドレス記憶領域の同じ位置に記録されたアドレスであって、最も後ろに記録されているアドレスを前記最新アドレスと判断する電子制御装置。
  7. 請求項1に記載の電子制御装置において、
    前記データ記憶領域および前記アドレス記憶領域のそれぞれは、ハードウエア特性により定まるデータを消去可能な最小単位である消去単位ブロックを少なくとも2つ含む電子制御装置。
  8. 請求項2に記載の電子制御装置において、
    前記記録部は、前記アドレス記憶領域において、先頭から後方に向かって順番に、または末尾から先頭に向かって順番に、前記最新アドレスを書き込む電子制御装置。
  9. 請求項2に記載の電子制御装置において、
    前記記録部は、前記アドレス記憶領域において、先頭から後方に向かって順番に前記最新アドレスを書き込み、
    前記読出部は、前記アドレス記憶領域における最後方に記録されたアドレスを前記最新アドレスと判断する電子制御装置。
  10. 請求項9に記載の電子制御装置において、
    前記記録部は、前記アドレス記憶領域において、先頭から後方に向かって順番に前記最新アドレスを書き込み、
    前記読出部は、前記アドレス記憶領域に格納されている値を前記記録部に設定されたアドレス空間の大きさの区切りでアドレスブロックとして先頭から後方に向かって検索し、前記記憶部を初期化した際の値を有し前記検索により最初に該当したアドレスブロックの直前のアドレスブロックに格納されている値を前記最新アドレスと判断する電子制御装置。
  11. 請求項3に記載の電子制御装置において、
    前記記録部は、前記アドレス記憶領域において、先頭から後方に向かって順番に、または末尾から先頭に向かって順番に、前記アドレステーブルが記録されているアドレスを書き込む電子制御装置。
  12. 請求項3に記載の電子制御装置において、
    前記記録部は、前記アドレス記憶領域において、先頭から後方に向かって順番に前記アドレステーブルが記録されているアドレスである最新アドレスを書き込み、
    前記読出部は、前記アドレス記憶領域における最後方に記録されたアドレスを前記最新アドレスと判断する電子制御装置。
  13. 請求項12に記載の電子制御装置において、
    前記記録部は、前記アドレス記憶領域において、先頭から後方に向かって順番に前記最新アドレスを書き込み、
    前記読出部は、前記アドレス記憶領域に格納されている値を前記記録部に設定されたアドレス空間の大きさの区切りでアドレスブロックとして先頭から後方に向かって検索し、前記記憶部を初期化した際の値を有し前記検索により最初に該当したアドレスブロックの直前のアドレスブロックに格納されている値を前記最新アドレスと判断する電子制御装置。
JP2019128948A 2019-07-11 2019-07-11 電子制御装置 Active JP7317609B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019128948A JP7317609B2 (ja) 2019-07-11 2019-07-11 電子制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019128948A JP7317609B2 (ja) 2019-07-11 2019-07-11 電子制御装置

Publications (2)

Publication Number Publication Date
JP2021015388A true JP2021015388A (ja) 2021-02-12
JP7317609B2 JP7317609B2 (ja) 2023-07-31

Family

ID=74531440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019128948A Active JP7317609B2 (ja) 2019-07-11 2019-07-11 電子制御装置

Country Status (1)

Country Link
JP (1) JP7317609B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182246A (ja) * 1993-11-25 1995-07-21 Sanyo Electric Co Ltd 不揮発性メモリの制御装置及び制御方法
JP2001318824A (ja) * 2000-05-10 2001-11-16 Nec Miyagi Ltd フラッシュメモリのデータ管理方式およびそのプログラムを記録した記録媒体
JP2006190036A (ja) * 2005-01-05 2006-07-20 Matsushita Electric Ind Co Ltd メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182246A (ja) * 1993-11-25 1995-07-21 Sanyo Electric Co Ltd 不揮発性メモリの制御装置及び制御方法
JP2001318824A (ja) * 2000-05-10 2001-11-16 Nec Miyagi Ltd フラッシュメモリのデータ管理方式およびそのプログラムを記録した記録媒体
JP2006190036A (ja) * 2005-01-05 2006-07-20 Matsushita Electric Ind Co Ltd メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法

Also Published As

Publication number Publication date
JP7317609B2 (ja) 2023-07-31

Similar Documents

Publication Publication Date Title
JP4418439B2 (ja) 不揮発性記憶装置およびそのデータ書込み方法
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
JP5328020B2 (ja) メモリ装置及びメモリアクセス方法
KR100645540B1 (ko) 플래시메모리의 데이터 관리 장치 및 방법
JP6568947B2 (ja) 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア
JP4122972B2 (ja) データ記録装置及びフラッシュメモリに対するデータ書き込み方法
US5802549A (en) Method and apparatus for patching pages of ROM
US8381018B2 (en) Method for data recovery for flash devices
US20060143365A1 (en) Memory device, memory managing method and program
JP2010020586A (ja) データ処理装置
JP4153324B2 (ja) 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
JP2007133541A (ja) 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
TWI556103B (zh) 記憶體裝置及其資料存取方法
JP6123766B2 (ja) データ読み出し装置、プログラムおよびデータ読み出し方法
JP4586469B2 (ja) メモリ制御装置、メモリ制御方法、プログラム
US20040049727A1 (en) Method and apparatus for allocating CRC codes in a flash ROM
JP2006003966A (ja) フラッシュメモリの書込方法
JP2021015388A (ja) 電子制御装置
US20110082995A1 (en) Information processing apparatus
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP2004234473A (ja) 不揮発性記憶装置
JP2005321843A (ja) ファームウェアの書換え方法
JPWO2021131754A5 (ja)
JP3271935B2 (ja) 制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220602

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230629

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230719

R150 Certificate of patent or registration of utility model

Ref document number: 7317609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150