JP4743182B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP4743182B2
JP4743182B2 JP2007200839A JP2007200839A JP4743182B2 JP 4743182 B2 JP4743182 B2 JP 4743182B2 JP 2007200839 A JP2007200839 A JP 2007200839A JP 2007200839 A JP2007200839 A JP 2007200839A JP 4743182 B2 JP4743182 B2 JP 4743182B2
Authority
JP
Japan
Prior art keywords
rewrite
partial
program
memory
rewriting
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.)
Expired - Fee Related
Application number
JP2007200839A
Other languages
English (en)
Other versions
JP2008165729A (ja
Inventor
政裕 神谷
亨市 鈴木
直紀 伊藤
秀昭 石原
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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2007200839A priority Critical patent/JP4743182B2/ja
Priority to US12/000,001 priority patent/US7934050B2/en
Publication of JP2008165729A publication Critical patent/JP2008165729A/ja
Application granted granted Critical
Publication of JP4743182B2 publication Critical patent/JP4743182B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、アプリケーションプログラムが記憶される書換え可能な不揮発性の第1メモリの書換えを、オンボード若しくはオンチップ上で実行可能に構成されるマイクロコンピュータに関する。
図12は、車両制御用のECU(Electronic Control Unit)を示すものである。ECU1は、基板2上にマイクロコンピュータ3やその他の図示しない周辺回路が搭載されて構成されている。そのマイコン3の制御プログラムは、フラッシュメモリ4のように書換え可能な不揮発性メモリに格納されている場合がある。そして、CPU5により実行されるフラッシュメモリ4上の制御プログラムは、デバッグやバージョンアップのため必要に応じて書換えを行うようにしている。
フラッシュメモリ4の書換えを行う場合は、マイコン3を書換え用のモードに設定してリセットすることで、例えばマイコン3上のROM6に格納されている書換え用プログラムを起動し、CPU5が図示しない外部の書換え装置より転送されたデータを書き込む。例えば、特許文献1には、上記のようなフラッシュメモリの書換えに関する技術が開示されている。
特開2000−20178号公報
ところで、マイコンに対して外部よりリセットをかけることが可能な構成であれば、フラッシュメモリの書換えを行っている途中に電源電圧が低下したり、書換え装置との間の通信線が断線するなどして書換えが失敗しても、マイコンをリセットすることで書換え用プログラムを起動し、同じ手順を繰り返すことで書換えを再試行すれば良い。
しかしながら、フィールドにおいて実際にECUが動作している場合は外部よりリセット制御を行う必要はないことから、リセットを行うための端子を余分に設けるのは冗長であり、コストの増大に繋がる。そこで、ECUについてはパワーオンリセットのみが作用するように構成するのが好ましい。
そして、ECUは、フィールドでは車両のバッテリからの電源供給を常時受けている状態にあるため、基本的にパワーオンリセットが発生することもない。また、リセットが発生しなければ、マイコンの動作モードを「書換えモード」等に切換える機会もないことから、モード切替え用の端子も不要となるはずである。
ところが、上記のような構成を想定すると、フラッシュメモリの書換えが途中で失敗すると書換えプログラムを起動する手段がなくなるため、フラッシュメモリの書換えを再度行うことができなくなってしまう。
例えば、ECUがフラッシュメモリに書き込まれているアプリケーションプログラムを実行している通常動作状態で、外部の書込み装置より書換え指令が与えられたことを認識して書換えプログラムを起動すれば、1回は書換えを行うことができる。しかし、上記の書換えが途中で失敗すれば、それ以降アプリケーションプログラムは正常に実行されなくなるので、ECU上のCPUは書換え指令を認識することもできなくなる。従って、実際にはマイコンの端子数を減らすことが困難であった。
本発明は上記事情に鑑みてなされたものであり、その目的は、不揮発性メモリの書換えが失敗した場合に、外部端子を介してモード切替えを行わずとも書換えプログラムを再起動できるマイクロコンピュータを提供することにある。
請求項記載のマイクロコンピュータによれば、第1メモリには、部分書換えの許可/禁止設定を行うフラグの格納領域と、開始ブロック及び終了ブロックの番号を書き込む領域とが、全書換えチェック領域と共に当該第1メモリについて定められている最小書込み単位内のサイズで設定される。ここで、「最小書込み単位」とは、1回のライトサイクルにおいて第1メモリに書き込まれるデータの最小サイズであり、マイクロコンピュータの設計仕様に応じて定められる。
CPUにより全書換えプログラムが実行されると、最初に第1メモリの全書換えチェック領域をクリアしてから当該メモリの全領域の書換えを行ない、最後に全書換えチェック領域に全書換え完了コードを書込む。また、CPUにより部分書換えプログラムが実行されると、最初に第1メモリの部分書換えチェック領域をクリアしてから当該メモリの書換えを開始ブロックから終了ブロックまで行ない、最後に部分書換えチェック領域に部分書換え完了コードを書込む。
そして、CPUにより判定プログラムが実行されると、最初に第1メモリの全書換えチェック領域を読出し、そのデータが全書換え完了コードに一致しない場合は全書換えプログラムを実行する。即ち、例えばマイクロコンピュータのパワーオンリセットが解除されると、CPUが最初に判定プログラムを実行するように設定しておけば、全書換えチェック領域を参照することで第1メモリのアプリケーションプログラムが正常に書き換えられているか否かを判定でき、全書換えが失敗していた場合は再試行することができる。従って、第1メモリの全書換えを再試行するために、マイコンの外部端子としてリセット端子やモード設定用の端子を設ける必要がなくなり、マイコンのパッケージを小型化してコストの低下を図ることができる。
また、前記データが全書換え完了コードに一致すれば続いてフラグ格納領域を参照し、許可が設定されていれば部分書換えチェック領域を読出し、そのデータが部分書換え完了コードに一致すればアプリケーションプログラムを実行し、前記データが部分書換え完了コードに一致しない場合は部分書換えプログラムを実行する。従って、第1メモリの一部だけを書換えている途中でその書換えが失敗した場合についても、全書換えの場合と同様の効果を得ることができる。
即ち、第1メモリの部分書き換えに関する情報は、少なくとも全書換えが1回完了した後に意味を成すので、部分書き換え情報を、全書換えチェック領域と共に最小書込み単位内のサイズで持たせれば、情報量を低減して有効に利用できる。その結果、判定プログラムの実行をより短時間内に完了することができる。
請求項記載のマイクロコンピュータによれば、部分書換えチェック領域に、その次に部分書き換えを行なう対象とする領域について、部分書換えの許可/禁止設定を行うフラグの格納領域と、開始ブロック及び終了ブロックの番号を書き込む領域とを最小書込み単位内のサイズで設定し、その部分書換えチェック領域を1つ以上配置する。従って、部分書換えを、アドレスが不連続となる複数の領域についても行なうことができる。
請求項記載のマイクロコンピュータによれば、CPUは、判定プログラムを、リセット時に実行するので、第1メモリに対する書き込みが正常に行なわれているか否かをリセットが解除された場合にチェックすることで、誤った書込み或いはデータ化けなどが発生している場合にユーザプログラムの実行を停止して、プログラムの暴走を未然に防止することができる。
請求項記載のマイクロコンピュータによれば、CPUは、判定プログラムを、低消費電力モードが解除された時点(ウエイクアップ時)に実行するので、第1メモリに対する書き込みが正常に行なわれているか否かをウエイクアップ時にチェックすることで、誤った書込み或いはデータ化けなどが発生している場合にユーザプログラムの実行を停止して、プログラムの暴走を未然に防止することができる。
(第1実施例)
以下、本発明の第1実施例について図1乃至図5を参照して説明する。図5は、本発明のマイクロコンピュータ11の構成を示すブロック図である。マイコン11は、例えば、マイコン3と同様に車両制御用ECUを構成するもので、CPU12を中心として、ROM(第2メモリ)13,RAM14,フラッシュメモリ(第1メモリ)15,フラッシュコントローラ16,通信回路17などを備えており、これらはアドレスバス18及びデータバス19を介して接続されている。
フラッシュメモリ15には、CPU12によって実行されるECUとしての制御プログラムであるユーザプログラム20が記憶されるようになっている。ROM13には、フラッシュメモリ15にユーザプログラム20を書き込むための書換えプログラム21と、ユーザプログラム20,書換えプログラム21の何れを実行するかを決定するため、フラッシュメモリ15のステータスを判定する判定プログラム22が記憶されている。フラッシュコントローラ16は、CPU12がフラッシュメモリ15にアクセスする場合に、フラッシュメモリ15のブロック管理やエラー訂正処理などを行なうものである。
通信回路17は、例えば、UARTやその他のシリアル通信、又はCAN等の車内LANなどのプロトコルに対応した通信インターフェイスであり、フラッシュメモリ15のユーザ(アプリケーション)プログラム20を書換える場合には、外部の書換え装置23との間で通信を行うようになっている。そして、書換え装置23より転送された書換えデータ24は、RAM14に書き込まれる。
次に、本実施例の作用について図1乃至図3も参照して説明する。尚、フラッシュメモリ15に対するユーザプログラム20の最初の書き込みは、ROMライタなどを使用して予め行われていることを前提とする(或いは、後述する図1のステップS6において「NO」と判断された場合に、ユーザプログラム20に分岐することに替えて書換えプログラム21に分岐させることで、フラッシュメモリ15に対する最初の書き込みを行なわせることも可能である)。
図2は、フラッシュメモリ15のメモリマップを示すもので、図3は、書換えプログラム21による全書換え処理の手順、及びその書換え処理に伴うフラッシュメモリ15の状態変化を示すものである。図2に示すように、フラッシュメモリ15は、例えば、64Kバイトを単位とするブロック0〜nに分割されており、書換え処理もブロックを単位として行われる。
そして、先頭ブロック0には、「全書換え」の完了を示す「FLASHステータス0(書換えチェック領域)」と「ID領域2」とが配置され、終了ブロックnには「ID領域1」が配置されるようになっている。また、ブロック6は、一例として「部分書換え」が行われる場合の先頭ブロックに設定されており、「部分書換え」の完了を示す「FLASHステータス1(部分書換えチェック領域)」が配置されている。
「FLASHステータス0」には、全書換え処理が完了した段階で、所定のデータ、例えば55AA…55AAHが書き込まれる。「FLASHステータス1」も同様に、部分書換え処理が完了した段階で、例えば「55AA…55AA(以下、データ値はHEXで示す)」が書き込まれる。「ID領域2」と「ID領域1」には同じデータが書き込まれるようになっており、後述する照合確認のために使用される。
これらの「ID領域」には、フラッシュメモリ15の書換えを許可するIDやパスワードなどが格納され、当該領域の先頭と末尾には、同一のIDステータス(IDコード)1,2が書き込まれる。また、部分書換えの許可/禁止を設定するためのフラグ格納領域と、部分書換えの開始ブロック番号,終了ブロック番号を格納する領域や、その他プログラムIDやパスワードなどが格納される。
<全書換え処理>
図3に示す全書換え処理において、CPU12は、最初にブロック0の「FLASHステータス0」にデータ「0000…0000」を書き込んでクリアしてから、各ブロック0,…,6,…,n毎に、「消去」、「書込み」、「ベリファイ」を順次行ってゆく。そして、最後に「FLASHステータス0」にデータ「55AA…55AA」を書き込んで処理を終了する。
尚、ID領域2,1の「部分書換え」に関するデータは、後に「部分書換え」を行なうケースがあるか否かに応じて、この段階で許可/禁止の設定や、開始,終了ブロック番号の設定を書き込んでおくようにする。
また、図3には、全書換え処理の進行に伴い、「FLASHステータス0,1」,ID領域2,1の「IDステータス1,2」の書き込みデータが変化する状態を示している。フラッシュメモリ15に既に書き込みが行われていると、「FLASHステータス0」のデータは「55AA…55AA」になっている。そして、最初にデータ「0000…0000」が書き込まれるが、次のブロック0の消去で「FFFF…FFFF」に変化し、次の「書込み」では「FLASHステータス0」の書き込みは行わないようにして、上記データ値を維持する。そして、最後の書込み処理で「55AA…55AA」に戻る。従って、全書換え処理中の「FLASHステータス0」は、「55AA…55AA」以外の値になっている。
また、「FLASHステータス1」も、既に書き込みが行われている状態では初期値が「55AA…55AA」になっているが、ブロック6の消去で「FFFF…FFFF」に変化し、次の「書込み」で「55AA…55AA」に書き戻される。ID領域2の「IDステータス2_1,2_2」も、初期値は「55AA…55AA」、ブロック0の消去で「FFFF…FFFF」、次の「書込み」で「55AA…55AA」に書き戻される。ID領域1の「IDステータス1_1,1_2」も、同様に初期値は「55AA…55AA」、ブロックnの消去で「FFFF…FFFF」、次の「書込み」で「55AA…55AA」に書き戻される。
尚、全書換え処理中の「ベリファイ」において書込みエラーが検出されると、CPU12はその時点で内部リセットを発生させてリセットベクタから実行を開始し、判定プログラム22、即ち、図1に示すフラッシュステータス判定処理を実行するようになっている。また、例えば、全書換え処理を開始してから終了するまでの時間をタイマによりカウントし、所定時間内に処理が終了しない場合(タイムアウト)に内部リセットを発生させても良い。図1において、CPU12は、フラッシュメモリ15の「FLASHステータス0」を読み出して、そのデータ値が書換え完了コード「55AA…55AA」に一致するかどうかを判定する(ステップS1)。
「FLASHステータス0」のデータ値が書換え完了コードに一致しなければ(「NO」)、CPU12は、ID領域2の「IDステータス2_1,2_2」が何れも正常コード「55AA…55AA」であるか否かを判断する(ステップS5)。そして、何れも正常コードであれば(「YES」)、ID領域2に書き込まれているIDやパスワードは有効であると判定し、書換えプログラム21の実行を開始する。この場合、書換えプログラム21は、ID領域2に書き込まれているIDやパスワードについて認証を行い、その認証結果が「OK」であれば図3のフローチャートの処理を開始する。
また、ステップS5において「NO」と判断すると、CPU12はステップS6に移行し、ID領域1の「IDステータス1_1,1_2」が何れも正常コード「55AA…55AA」であるか否かを判断する。そして、何れも正常コードであれば(「YES」)、ID領域1に書き込まれているIDやパスワードは有効であると判定し、書換えプログラム21の実行を開始する。
即ち、図3に示すように、ID領域2,1の何れか一方について、正しく書き込みが行われない状態で全書換え処理が終了すると、そのIDステータスは「FFFF…FFFFF」となっており、正常なデータが書き込まれていない。しかし、他方のID領域には必ず正常なデータが書き込まれているので、何れか有効な方を選択するようにしている。
また、ID領域2,1の何れも正常なデータでない場合(ステップS6,「NO」)、CPU12はユーザプログラム20を実行する。この場合は、何らかの理由により、ユーザプログラム20に対する一番最初の書き込みが正常に行われていなかったか、或いはフラッシュメモリ15の一部やバス18,19に故障が発生した、といったような異常状態と推定される。
従って、このまま書換えを実行すると、フラッシュメモリ15に異常なデータが書き込まれるおそれがあることから、ユーザプログラム20に分岐する。そして、当該プログラム20に用意されているメモリチェックルーチンが正常であれば、そのチェックルーチンによりフラッシュメモリ15のチェックサムを計算する。その結果、異常が判定されればエラー処理を行う。この場合、フラッシュメモリ15に正常な書き込みを行うことは不能であるから、必要に応じて部品交換などの処置を行うようにする。
<部分書換え処理>
また、図4は、フラッシュメモリ15の部分書換え処理を示す。部分書換え処理については、前述したように、フィールドにおいてECU−マイコン11に電源が投入された状態のまま、ユーザプログラム20の一部を書換えてバージョンアップを行う場合を想定している。従って、マイコン11がユーザプログラム20を実行している状態で、書換え装置23を接続し、その書換え装置23が部分書換え指令を発行すると、ユーザプログラム20中においてその部分書換え指令を認識し、図4の部分書換え処理を実行する。また、フラッシュメモリ15のブロック0は、部分書換えの対象としないように予め決定されている。
図4は、ブロック6の部分書換えを行なう場合であり、ID領域の開始ブロック番号,終了ブロック番号は何れも「6」に設定されている。尚、部分書換えプログラムは、書換えプログラム21の一部となっている。CPU12は、最初にブロック6の「FLASHステータス1」にデータ「0000…0000」を書き込んでクリアしてから、ブロック6の「消去」、「書込み」、「ベリファイ」を順次行う。そして、最後に「FLASHステータス1」にデータ「55AA…55AA」を書き込んで処理を終了する。
また、図4には、部分書換え処理の進行に伴い、「FLASHステータス1」の書き込みデータが変化する状態を示している。尚、ブロック6のみしか書換えを行なわないため、「FLASHステータス0」,ID領域2,1の「IDステータス1,2」のデータは「55AA…55AA」のままである。
この場合、フラッシュメモリ15に既に書き込みが行われているので、「FLASHステータス1」のデータは「55AA…55AA」になっている。そして、最初にデータ「0000…0000」が書き込まれるが、次のブロック6の消去で「FFFF…FFFF」に変化し、次の「書込み」では「FLASHステータス1」の書き込みは行わず、上記データ値を維持する。そして、最後の書込み処理で「55AA…55AA」に戻る。従って、部分書換え処理中の「FLASHステータス」は、「55AA…55AA」以外の値になっている。
また、部分書換えにおけるブロック6の「ベリファイ」において書込みエラーが検出された場合も、CPU12は同様にその時点で内部リセットを発生させてリセットベクタから実行を開始し、図1に示すフラッシュステータス判定処理を実行する。この場合、「FLASHステータス0」のデータ値は書換え完了コードに一致するので、CPU12はステップS1で「YES」と判定し、ステップS5と同様にID領域2の「IDステータス2_1,2_2」が何れも正常コードであるか否かを判断する(ステップS2)。
ID領域2のステータスが正常コードであれば(「YES」)、CPU12は同領域において部分書換えが「許可」に設定されているか否かを判断する(ステップS3)。そして、「許可」に設定されていれば(「YES」)、ブロック6の「FLASHステータス1」を読出し、データ値が書換え完了コード「55AA…55AA」に一致するか否かを判断する(ステップS4)。書換え完了コードに一致しなければ(「NO」)書換えプログラム21に分岐し、図4の部分書換え処理を再試行する。
尚、部分書換え処理の場合、ブロック0は書換え対象より外されているので、基本的にステップS2では「YES」と判断されるはずであり、「NO」と判断されるのは、ステップS6で「NO」と判断される場合と同様に異常な状態である。従って、同様にユーザプログラム20に分岐し、メモリチェックルーチンを実行する。また、ステップS5,S6のように、ブロックnのID領域1の確認を重ねて行う必要はない。
また、CPU12における内部リセットの発生は、その他、ウォッチドックタイマなどにより暴走を検知した場合やバスエラーなどによっても発生するので、その場合も図1の判定処理は実行される。この時、フラッシュメモリ15の書換えが正常に行われていれば、判定処理ではステップS1〜S4において何れも「YES」と判定されるので、CPU12は判定処理を抜けてユーザプログラム20へ分岐し、当該プログラム20を実行する。また、ステップS3において、部分書換え処理が「禁止」に設定されている場合も(「NO」)、ユーザプログラム20に分岐する。
以上のように本実施例によれば、マイコン11のCPU12により書換えプログラム21が実行されると、最初にフラッシュメモリ15のFLASHステータス0をクリアしてから当該メモリ15の全領域の書換えを行ない、最後にFLASHステータス0に書換え完了コード「55AA…55AA」を書込む。そして、CPU12が判定プログラム22を実行すると、最初にフラッシュメモリ15のFLASHステータス0を読出し、そのデータが書換え完了コードに一致しない場合、CPU12は書換えプログラム21を再度実行する。
即ち、CPU12が判定プログラム22を実行してFLASHステータス0を参照すれば、フラッシュメモリ15のユーザプログラム20が正常に書き換えられているか否かを判定でき、書換えが失敗していた場合は再試行できる。従って、フラッシュメモリ15の書換えを再試行するために、マイコン11の外部端子としてリセット端子やモード設定用の端子を設ける必要がなくなり、マイコン11のパッケージを小型化してコストの低下を図ることができる。
また、CPU12が書換えプログラム21を実行すると、フラッシュメモリ15の2つのIDステータス2_1,2_2に同一のIDコードを書込み、判定プログラム22を実行した場合に、FLASHステータス0のデータが書換え完了コードに一致しなければIDステータス2_1,2_2を夫々読出し、両者のデータが共に前記IDコードに一致すれば書換えプログラム21を実行するので、メモリ15に書き込みを行った主体が正当なアクセス権を有していることを確認して、不正な書き込みを防止できる。
更に、フラッシュメモリ15の2つのブロック0,nに設定されるIDステータス2,1に同一のIDコードを書込み、CPU12が判定プログラム22を実行し、FLASHステータス0のデータが書換え完了コードに一致しなければ、2つのブロック0,nについてIDステータス2,1を夫々読出し、何れか一方のブロックで両者の読出しデータが共にIDコードに一致すれば書換えプログラム21を実行する。従って、フラッシュメモリ15の書換えが途中で失敗した場合でも、何れか一方のブロックで確実にIDコードの一致を確認できる。
また、CPU12により書換えプログラム21の一部である部分書換えプログラムが実行されると、最初にフラッシュメモリ15のFLASHステータス1をクリアし、当該メモリの書換えを開始位置から終了位置まで行ない、最後に部分FLASHステータス1に部分書換え完了コード「55AA…55AA」を書込む。
そして、CPU12が判定プログラム22を実行し、FLASHステータス1のデータが書換え完了コードに一致する場合は、続いてフラグ格納領域を参照し、許可が設定されていればFLASHステータス1を読出す。その読み出しデータが部分書換え完了コードに一致しない場合は部分書換えプログラムを実行するので、フラッシュメモリ15の一部だけを書換えている途中でその書換えが失敗した場合について、全領域書換えの場合と同様の効果を得ることができる。例えば、フィールドにおいてユーザプログラム20の一部を書換えてバージョンアップを図る場合などに有効である。
加えて、CPU12が書換えプログラム21を実行すると、フラッシュメモリ15のIDステータス2_1,2_2に同一のIDコードを書込むと共にフラグ格納領域への部分書換えの許可/禁止設定,開始位置及び終了位置の書き込み設定も行う。そして、CPU12が判定プログラム22を実行し、FLASHステータス0より読み出したデータが書換え完了コードに一致すれば、IDステータス2_1,2_2を夫々読出し、両者の読出しデータが共にIDコードに一致すればFLASHステータ1を参照するので、フラッシュメモリ15の部分書き換えを行なう場合についても、IDコードの一致確認を行うことができる。
更にまた、CPU12は、判定プログラム22を、リセット時に実行するので、フラッシュメモリ15に対する書き込みが正常に行なわれているか否かをリセットが解除された場合にチェックすることで、誤った書込み或いはデータ化けなどが発生している場合にユーザプログラム20の実行を停止して、プログラム20の暴走を未然に防止することができる。
(第2実施例)
図6乃至図9は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。図6は、第1実施例の図2相当図である。第2実施例では、先頭ブロック0の冒頭16バイトに、「FLASHステータス0」と共に、部分書換えの許可/禁止を設定するためのフラグ格納領域と、部分書換えの開始ブロック番号,終了ブロック番号を格納する領域とが配置されている。そして、「ID領域2」,「ID領域1」は削除されている。また、終了ブロックnについては、第1実施例と異なり、格別な領域設定は行われていない。ブロック6は、第1実施例と同様に「部分書換え」が行われる場合の先頭ブロックに設定され、「FLASHステータス1」が配置されている。
尚、16バイトは、フラッシュコントローラ16がフラッシュメモリ15に対してデータの書込みを行う場合の最小書込み単位として設定されているサイズである。即ち、CPU12がフラッシュメモリ15に1バイトのデータを書き込む場合でも、フラッシュコントローラ16はエラーチェックを行なうため、上記1バイトデータのアドレスを含む連続した16バイトのデータを単位として、書込み(リード・モディファイ・ライト)を行なうようになっている。
次に、第2実施例の作用について説明する。
<全書換え処理>
図7に示す全書換え処理において、部分書換え許可禁止フラグは「許可」=「01H」,部分書換え開始ブロック/終了ブロックは「0006H」に設定されている。CPU12は、最初にブロック0の「FLASHステータス0」にデータ「0000…0000」を書き込んでクリアすると共に、部分書換え許可禁止フラグ,部分書換え開始ブロック/終了ブロックの格納領域もゼロクリアする。そして、第1実施例と同様に、各ブロック0,…,6,…,n毎に、「消去」、「書込み」、「ベリファイ」を順次行ってゆく。そして、最後に「FLASHステータス0」にデータ「55AA…55AA」を書き込むと共に、部分書換え許可禁止フラグを「01H」に、部分書換え開始ブロック/終了ブロックに「0006H」を書き込んで処理を終了する。すなわち、「FLASHステータス0,1」に関しては、データ値の変化は第1実施例と全く同様である。
<部分書換え処理>
また、図8は、フラッシュメモリ15の部分書換え処理を示す。部分書換え処理についても、「FLASHステータス1」に関するデータ値の変化は第1実施例と全く同様である。そして、「FLASHステータス0」,部分書換え許可禁止フラグの状態、並びに部分書換え開始ブロック/終了ブロックの値は初期値のまま変化しない。
図9は、図1相当のフラッシュステータス判定処理であり、ステップS1,S3,S4のみとなっている。すなわち、第2実施例ではIDステータスが正常コードであるか否かをチェックしないため、判定処理が簡単になっている。
以上のように第2実施例によれば、部分書換えの許可/禁止設定を行うフラグの格納領域と、開始位置及び終了位置を書き込む領域とを、全書換えチェック領域と共にフラッシュメモリ15の最小書込み単位のサイズで設定した。即ち、フラッシュメモリ15の部分書き換えに関する情報は、少なくとも全書換えが1回完了した後に意味を成すので、部分書き換え情報を、全書換えチェック領域と共に最小書込み単位のサイズで持たせれば、情報量を低減した上で有効に利用することができる。
また、本発明に関連する従来技術の1つに、国際公開第WO2004/031966号パンフレットに開示されているものがある。この従来技術では、複数のブロック(最小消去単位)からなるメモリについて、どのブロックが消去済みであるかを判断するため、各ブロックにフラグを設けてそのフラグの状態を判定することで、消去済みであるか否かを決定するようにしている。しかしながら、マイコンの起動時に各ブロック毎に設けられているフラグの状態を判定すると、判定に時間を要するためプログラムの起動が遅れることになり、その起動遅れは、メモリのブロック数が増加するのに伴って大きくなってしまう。
データメモリとしての用途では、起動時にはそのメモリを使用するホストマイコン自体が初期化を行なうため、その間にメモリの判定を行うことも可能である。ところが、プログラムメモリとしての用途では、メモリの処理により起動が遅れることは、プログラム,即ち、マイコン自体の起動が遅れることに繋がってしまう。
これに対して、第2実施例によれば、フラッシュメモリ15について第1実施例のようにIDコードをチェックしないので、判定プログラムの実行をより短時間内に完了することができる。
(第3実施例)
図10及び図11は本発明の第3実施例を示すものであり、第2実施例と異なる部分のみ説明する。第3実施例は、部分書換えを行うブロックが複数ある場合に対応した処理を示す。図10に示すように、部分書換えを行うブロックが「6,11」の2ブロックであるとする。この場合、ブロック0のFLASHステータス0には、第2実施例と同様にブロック6の部分書換え(1)を行うための情報が配置され、ブロック6のFLASHステータス1には、ブロック11の部分書換え(2)を行うための情報,すなわち、部分書換え(2)の許可/禁止を設定するためのフラグ格納領域と、部分書換えの開始ブロック番号,終了ブロック番号を格納する領域とが計16バイトで配置されている。
そして、ブロック11には、部分書換えチェック領域としてFLASHステータス2が配置されており、そのFLASHステータス2と共に、更に続けて部分書換えを行う場合に対応して、部分書換え(3)を行うための情報が計16バイトで配置されている。部分書換え(3)を行わない場合、許可/禁止設定フラグは「禁止」に設定される。
図11は、図9相当図であり、図9におけるステップS3,S4が、部分書換え(1)に対応するステップS3’,S4’となっている。続いて、部分書換え(2)に対応する判断ステップが、ステップS11,S12として配置されている。
尚、部分書換えが最大2ブロックまでと規定されている場合は図11に示す判定処理で対応すれば良く、部分書換えが最大3ブロックまで行われる場合は、ステップS12に続いて、部分書換え(3)に対応する判断ステップを、ステップS13,S14として配置すれば良い。その場合、第3実施例のケースでは、部分書換え(3)の許可/禁止設定フラグが「禁止」に設定されるため、ステップS13で(NO)と判断してユーザプログラムに移行することになる。
以上のように第3実施例によれば、ブロック6の部分書換えチェック領域に、その次に部分書き換えを行なう対象とする領域について、部分書換えの許可/禁止設定を行うフラグの格納領域と、開始位置及び終了位置を書き込む領域とを最小書込み単位のサイズで設定し、その部分書換えチェック領域を1つ以上配置するので、部分書換えを、アドレスが不連続となる複数のブロックについても行なうことができる。
本発明は上記し又は図面に記載した実施例にのみ限定されるものではなく、以下のような変形が可能である。
ブロックnに、ブロック0と同じID領域を設け、ステップS5,S6で二重にチェックする処理は、必要に応じて行えば良い。また、ブロック0におけるIDコードのチェックも、必要に応じて行えば良い。
FLASHステータス0,1やID領域2,1をフラッシュメモリ15のどこに配置するかは、適宜変更して実施しても良い。
書換え完了コードやIDコードのデータ値についても、適宜変更して実施可能である。
ブロック0を、部分書き換えの対象としても良い。
フラッシュメモリ15のブロック容量は、64Kバイトに限らない。
第1メモリは、ブロック単位で書換えを行うものに限ることはない。また、書き換えを行なう際に、「ベリファイ」処理はメモリの仕様に応じて実施すれば良い。
更に、ステップS2におけるチェックも必要に応じて行えば良い。
部分書換え処理についても、仕様上必要とされる場合に実施すれば良い。
書換えデータ24は、RAM14に一括転送される場合に限らず、書換え装置23より順次送信されるデータを受信しながら書換えを行っても良い。
マイコン11が、動作用クロックの供給を停止した状態で待機する低消費電力モード(スリープ,ストップモード)を実行可能に構成されている場合、CPU12は、判定プログラム22を、低消費電力モードの解除(ウエイクアップ)時に実行するようにしても良い。斯様に構成すれば、フラッシュメモリ15に対する書き込みが正常に行なわれているか否かをウエイクアップ時にもチェックすることで、誤った書込み或いはデータ化けなどが発生している場合にユーザプログラム20の実行を停止して、プログラム20の暴走を未然に防止することができる。
最小書き込み単位は、16バイトに限ることはなく、マイクロコンピュータの個別の仕様に応じて適宜変更すれば良い。
フラッシュコントローラ16も、必要に応じて設ければ良く、CPU12が直接フラッシュメモリ15に書き込みを行っても良い。
第2,第3実施例における「FLASHステータス0,1」等と、部分書換えに関する情報との合計サイズは、最小書き込み単位より小さくても良い。
車両制御用のECUを構成するマイクロコンピュータに限ることなく、書換え可能な不揮発性メモリを備えているマイクロコンピュータであれば適用可能である。
本発明の第1実施例であり、フラッシュステータス判定処理の内容を示すフローチャート フラッシュメモリのメモリマップ 書換えプログラムによる全書換え処理の手順、及びその書換え処理に伴うフラッシュメモリの状態変化を示す図 部分書換え処理に対応する図3相当図 マイクロコンピュータの構成を示すブロック図 本発明の第2実施例を示す図2相当図 図3相当図 図4相当図 図1相当図 本発明の第3実施例を示す図6相当図 図9相当図 従来のECUにおけるフラッシュメモリの書換え状態を示す図
符号の説明
図面中、11はマイクロコンピュータ、12はCPU、13はROM(第2メモリ)、15はフラッシュメモリ(第1メモリ)、20はユーザプログラム(アプリケーションプログラム)、21は書換えプログラム(部分書換えプログラム)を示す。

Claims (4)

  1. アプリケーションプログラムが記憶されている書換え可能な不揮発性の第1メモリと、この第1メモリの全書換えを行なうための全書換えプログラム,前記第1メモリの部分書換えを行なうための部分書換えプログラム,及び前記第1メモリの書換え判定を行うための判定プログラムが記憶されている第2メモリと、前記各プログラムを読み出して実行するCPUとを備えてなるマイクロコンピュータにおいて、
    前記第1メモリは、複数の一定容量のブロックからなり、前記各ブロックは複数の最小書き込み単位からなり、
    前記全書換えプログラム及び前記部分書換えプログラムは、前記ブロックを単位として全書換え及び前記部分書換えを行い、
    前記第1メモリの先頭に位置するブロック内の先頭の最小書き込み単位に、全書換えチェック領域を配置すると共に、前記部分書換えの許可/禁止設定を行うフラグの格納領域と、前記部分書換えの開始ブロックの番号及び終了ブロックの番号を書き込む領域とを配置し、
    前記第1メモリの前記部分書換えの対象となる先頭のブロック内の先頭の最小書き込み単位に、部分書換えチェック領域を配置し、
    前記CPUにより前記全書換えプログラムが実行されると、最初に前記第1メモリの前記全書換えチェック領域をクリアしてから当該メモリの全領域の書換えを行ない、最後に前記全書換えチェック領域に全書換え完了コードを書込み、
    記CPUにより前記部分書換えプログラムが実行されると、最初に前記第1メモリの前記部分書換えチェック領域をクリアしてから当該メモリの書換えを前記開始ブロックから前記終了ブロックまで行ない、最後に前記部分書換えチェック領域に部分書換え完了コードを書込み、
    前記CPUにより前記判定プログラムが実行されると、最初に前記第1メモリの前記全書換えチェック領域を読出し、読み出されたデータが前記全書換え完了コードに一致しない場合は前記全書換えプログラムを実行し、前記データが前記全書換え完了コードに一致する場合は、続いて前記部分書換えの許可/禁止設定を行うフラグ格納領域を参照し、前記許可が設定されていれば前記部分書換えチェック領域を読出し、読み出されたデータが前記部分書換え完了コードに一致する場合は前記アプリケーションプログラムを実行し、前記データが前記部分書換え完了コードに一致しない場合は前記部分書換えプログラムを実行することを特徴とするマイクロコンピュータ。
  2. 前記部分書換えチェック領域には、その次に部分書き換えを行なう対象とする領域について、前記部分書換えの許可/禁止設定を行うフラグの格納領域と、前記開始ブロック及び終了ブロックの番号を書き込む領域とが前記最小書込み単位内のサイズで設定されており、
    前記部分書換えチェック領域を1つ以上備えることを特徴とする請求項1記載のマイクロコンピュータ。
  3. 前記CPUは、前記判定プログラムを、リセット時に実行することを特徴とする請求項1又は2記載のマイクロコンピュータ。
  4. 前記CPUは、前記判定プログラムを、低消費電力モードが解除された時点に実行することを特徴とする請求項1乃至3の何れかに記載のマイクロコンピュータ。
JP2007200839A 2006-12-07 2007-08-01 マイクロコンピュータ Expired - Fee Related JP4743182B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007200839A JP4743182B2 (ja) 2006-12-07 2007-08-01 マイクロコンピュータ
US12/000,001 US7934050B2 (en) 2006-12-07 2007-12-06 Microcomputer for flash memory rewriting

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006330799 2006-12-07
JP2006330799 2006-12-07
JP2007200839A JP4743182B2 (ja) 2006-12-07 2007-08-01 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JP2008165729A JP2008165729A (ja) 2008-07-17
JP4743182B2 true JP4743182B2 (ja) 2011-08-10

Family

ID=39695088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007200839A Expired - Fee Related JP4743182B2 (ja) 2006-12-07 2007-08-01 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP4743182B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013021423A1 (ja) * 2011-08-10 2013-02-14 トヨタ自動車株式会社 リプログラミングシステム及びリプログラミング方法
JP5920243B2 (ja) * 2013-02-26 2016-05-18 株式会社デンソー 制御システム
JP6217664B2 (ja) * 2015-02-10 2017-10-25 トヨタ自動車株式会社 マイコン装置
JP6528700B2 (ja) 2016-02-17 2019-06-12 株式会社デンソー 車載制御装置、及び車載制御装置を含む車載ネットワーク
US10877700B1 (en) * 2019-08-16 2020-12-29 Silicon Motion, Inc. Flash memory controller and method capable of efficiently reporting debug information to host device
WO2023127516A1 (ja) * 2021-12-27 2023-07-06 ソニーグループ株式会社 置換装置、情報処理方法および情報処理装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105694A (ja) * 1998-09-28 2000-04-11 Nec Ic Microcomput Syst Ltd フラッシュメモリ、フラッシュメモリを備えたマイクロコンピュータおよびフラッシュメモリへのプログラム格納方法
JP2003015929A (ja) * 2001-06-28 2003-01-17 Matsushita Electric Ind Co Ltd 不揮発性メモリの制御方法
JP2004102893A (ja) * 2002-09-12 2004-04-02 Matsushita Electric Ind Co Ltd リモートダウンローダ及びリモートダウンロード方法
JP2005321843A (ja) * 2004-05-06 2005-11-17 Hitachi Ltd ファームウェアの書換え方法
JP2006268176A (ja) * 2005-03-22 2006-10-05 Denso Corp フラッシュeepromのデータ正否判定方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000105694A (ja) * 1998-09-28 2000-04-11 Nec Ic Microcomput Syst Ltd フラッシュメモリ、フラッシュメモリを備えたマイクロコンピュータおよびフラッシュメモリへのプログラム格納方法
JP2003015929A (ja) * 2001-06-28 2003-01-17 Matsushita Electric Ind Co Ltd 不揮発性メモリの制御方法
JP2004102893A (ja) * 2002-09-12 2004-04-02 Matsushita Electric Ind Co Ltd リモートダウンローダ及びリモートダウンロード方法
JP2005321843A (ja) * 2004-05-06 2005-11-17 Hitachi Ltd ファームウェアの書換え方法
JP2006268176A (ja) * 2005-03-22 2006-10-05 Denso Corp フラッシュeepromのデータ正否判定方法

Also Published As

Publication number Publication date
JP2008165729A (ja) 2008-07-17

Similar Documents

Publication Publication Date Title
US10509568B2 (en) Efficient secure boot carried out in information processing apparatus
US7197613B2 (en) Nonvolatile memory
EP2638466B1 (en) Software updating process for an embedded device
JP4743182B2 (ja) マイクロコンピュータ
JP4534498B2 (ja) 半導体装置およびその起動処理方法
US6587916B2 (en) Microcomputer with built-in programmable nonvolatile memory
JP4227149B2 (ja) 電子制御装置の情報記憶方法
JP2990181B1 (ja) フラッシュメモリ、フラッシュメモリを備えたマイクロコンピュータおよびフラッシュメモリへのプログラム格納方法
JP7022809B2 (ja) コンピュータシステム、および、その安全管理方法、および、コンピュータソフトウェア製品
JP5576557B2 (ja) プロセッサシステム及びその制御方法
CN107015878B (zh) 用于计算机的系统修复方法及系统
US7934050B2 (en) Microcomputer for flash memory rewriting
JP7091486B2 (ja) 電子制御装置、電子制御装置のセキュリティ検証方法
US7836219B1 (en) System and method for authentication of embedded RAID on a host RAID card
US20100185927A1 (en) Microprocessor System for Controlling at Least Partly Safety-Critical Processes
JP6622360B2 (ja) 情報処理装置
JP6708596B2 (ja) 電子制御装置及び制御プログラム検証方法
JPH11265283A (ja) 記憶装置におけるファームウェアの修正方法及び記憶装置
TWI768316B (zh) 記憶體裝置以及安全開機的記憶體管理方法
TWI726436B (zh) 電腦基本輸入輸出系統bios修復方法及實施該修復方法之電腦系統
TWI446351B (zh) 資料寫入方法與電腦系統
JP2001331382A (ja) 不揮発性メモリの管理方法および管理装置
JP4131147B2 (ja) プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ
CN113495808A (zh) 存储器装置以及安全开机的存储器管理方法
CN117348910A (zh) 一种智能座舱MCU的BootLoader升级方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110322

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: 20110412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110425

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4743182

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees