JP2016133874A - 情報処理装置及びフラッシュメモリ制御方法 - Google Patents

情報処理装置及びフラッシュメモリ制御方法 Download PDF

Info

Publication number
JP2016133874A
JP2016133874A JP2015006688A JP2015006688A JP2016133874A JP 2016133874 A JP2016133874 A JP 2016133874A JP 2015006688 A JP2015006688 A JP 2015006688A JP 2015006688 A JP2015006688 A JP 2015006688A JP 2016133874 A JP2016133874 A JP 2016133874A
Authority
JP
Japan
Prior art keywords
data
area
storage area
count
upper limit
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
JP2015006688A
Other languages
English (en)
Other versions
JP2016133874A5 (ja
JP6421042B2 (ja
Inventor
崇 倉藤
Takashi Kurafuji
崇 倉藤
明 粟谷
Akira Awatani
明 粟谷
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2015006688A priority Critical patent/JP6421042B2/ja
Priority to US14/990,668 priority patent/US20160210070A1/en
Priority to CN201610028282.5A priority patent/CN105808456A/zh
Publication of JP2016133874A publication Critical patent/JP2016133874A/ja
Publication of JP2016133874A5 publication Critical patent/JP2016133874A5/ja
Application granted granted Critical
Publication of JP6421042B2 publication Critical patent/JP6421042B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】フラッシュメモリにおけるデータの消去回数を記録したデータの改ざんを防止すること。
【解決手段】本発明に係る情報処理装置は、データが格納されるデータ格納領域と、データ格納領域におけるデータの消去回数を示す消去回数データが格納される消去回数格納領域とを有する少なくとも1つのフラッシュメモリと、プロセッサと、少なくとも1つのフラッシュメモリとの間に接続される制御回路を備える。制御回路は、データ格納領域に格納されるデータのプロセッサによる変更を許容し、消去回数格納領域に格納される消去回数データのプロセッサによる変更を抑止する。
【選択図】図1

Description

本発明は、情報処理装置及びフラッシュメモリ制御方法に関し、例えばフラッシュメモリにおけるデータの消去回数を記録する技術に関する。
特許文献1には、複数のメモリブロックによって構成されるブロック消去型フラッシュメモリを有する半導体メモリ装置が開示されている。メモリブロックは、最小消去単位である。メモリブロックは、消去カウンタ書込みエリアを含む書き込みステータス書込みエリアを有する。消去カウンタ書込みエリアには、そのメモリブロックが消去された回数が書き込まれる。この半導体メモリ装置は、各メモリブロックの消去カウンタ書込みエリアに書き込まれた消去回数を比較することで、消去された回数が最も少ないメモリブロックにデータを書き込む。
また、特許文献2には、フラッシュメモリを有するデータ記録システムが開示されている。フラッシュメモリには、そのフラッシュメモリへのデータ書込み回数を示す書込み回数データが格納される。このデータ記録システムのCPUは、書込み回数データの値が閾値を超えると、アラームを出力する。
特開2001−312891号公報 特開2008−186295号公報
しかしながら、特許文献1及び特許文献2に開示の技術は、消去カウンタ書込みエリアのデータ(書込み回数データ)が保護されていないため、悪意のある第三者が消去カウンタ書込みエリアのデータ(書込み回数データ)を容易に改ざんできてしまうという問題がある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、情報処理装置は、データ格納領域に格納されるデータのプロセッサによる変更は許容し、データ格納領域におけるデータの消去回数を示す消去回数データのプロセッサによる変更は抑止するものである。
前記一実施の形態によれば、フラッシュメモリにおけるデータの消去回数を記録したデータの改ざんを防止することができる。
実施の形態1に係るマイクロコントローラの構成を示す図である。 実施の形態1に係るフラッシュシーケンサの構成を示す図である。 実施の形態1に係るデータ格納用フラッシュメモリと管理ステータス用フラッシュメモリの構成を示す図である。 実施の形態1に係るフラッシュシーケンサのコマンドを示す図である。 実施の形態1に係るフラッシュシーケンサのデータ消去処理のフローチャートである。 実施の形態1に係る管理ステータス用フラッシュメモリの状態遷移図である。 実施の形態2に係る管理ステータス用フラッシュメモリの構成を示す図である。 実施の形態2に係るフラッシュシーケンサのデータ消去処理のフローチャートである。 実施の形態3に係るデータ格納用フラッシュメモリと管理ステータス用フラッシュメモリの構成を示す図である。 実施の形態3に係るフラッシュシーケンサのデータ消去処理のフローチャートである。 実施の形態3に係るフラッシュシーケンサのコマンドを示す図である。 実施の形態3に係るフラッシュシーケンサのカウント許可設定処理のフローチャートである。 実施の形態3の変形例に係るフラッシュシーケンサのカウント許可設定処理のフローチャートである。 実施の形態4に係るデータ格納用フラッシュメモリと管理ステータス用フラッシュメモリの構成を示す図である。 実施の形態4に係るフラッシュシーケンサのデータ消去処理(前半)のフローチャートである。 実施の形態4に係るフラッシュシーケンサのデータ消去処理(後半)のフローチャートである。 実施の形態4に係るフラッシュシーケンサのコマンドを示す図である。 実施の形態4に係るフラッシュシーケンサのカウント上限値設定処理のフローチャートである。
以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
<実施の形態1>
(実施の形態1の構成)
まず、実施の形態1について説明する。図1を参照して、本実施の形態1に係るマイクロコントローラ1の構成について説明する。図1に示すように、マイクロコントローラ1は、CPU(Central Processing Unit)2と、RAM(Random Access Memory)3と、データ格納用フラッシュメモリ4と、管理ステータス用フラッシュメモリ5と、フラッシュシーケンサ6と、周辺回路7とを有する。
CPU2は、データ格納用フラッシュメモリ4に格納されたデータに基づいて処理を実行する。より具体的には、CPU2は、データ格納用フラッシュメモリ4に格納されたデータに基づいて処理を実行する。すなわち、データ格納用フラッシュメモリ4に格納されるデータには、マイクロコントローラ1としての機能を実現する処理をCPU2に実行させるプログラム(ソフトウェア)が含まれる。なお、CPU2は、データ格納用フラッシュメモリ4に格納されたプログラムをRAM3にロードしてから実行するようにしてもよい。
RAM3は、CPU2によって利用されるデータが格納される揮発性メモリである。このRAM3に格納されるデータには、CPU2がプログラムを実行する際における演算処理中のデータや、データ格納用フラッシュメモリ4に格納されたデータを更新する際に一時的に退避する更新前のデータ等が含まれる。また、上述したように、データ格納用フラッシュメモリ4からロードしたプログラムを格納するようにしてもよい。
データ格納用フラッシュメモリ4は、CPU2によって利用されるデータが格納される不揮発性メモリである。管理ステータス用フラッシュメモリ5は、データ格納用フラッシュメモリ4の状態を示すデータが格納される不揮発性メモリである。
フラッシュシーケンサ6は、データ格納用フラッシュメモリ4と管理ステータス用フラッシュメモリ5を制御する回路である。フラッシュシーケンサ6は、CPU2と、データ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5との間に接続される。言い換えると、フラッシュシーケンサ6は、CPU2、データ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5らと相互にリードライト可能に構成されている。
これにより、CPU2がフラッシュシーケンサ6を介さなければデータ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5に対してデータの書き込み及びデータの消去を実施できないようにしている。なお、CPU2によるデータ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5からのデータの読み出しは、上記の書き込み及び消去と同様にフラッシュシーケンサ6を介さなければ実施できないようにしてもよく、フラッシュシーケンサ6を介することなく直接実施できるようにしてもよい。
周辺回路7は、タイマ及びシリアルI/O等の回路のうち、少なくとも1つの回路を含む。CPU2は、周辺回路7を任意に利用して処理を実行する。周辺バス8は、CPU2、フラッシュシーケンサ6、及び、周辺回路7が接続される。
続いて、図2を参照して、本実施の形態1に係るフラッシュシーケンサ6の構成について説明する。フラッシュシーケンサ6は、制御部10と、アドレス受信部11と、コマンド受信部12と、ステータス送信部13とを有する。
制御部10は、データ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5の制御を実行する。
アドレス受信部11は、CPU2から送信されたアドレスデータを受信する。アドレスデータは、データ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5におけるアドレスを示すデータである。
コマンド受信部12は、CPU2から送信されたライトデータを受信する。ライトデータは、フラッシュシーケンサ6が実施する制御内容を指定するために、CPU2からフラッシュシーケンサ6に対して書き込まれるデータである。ライトデータで指定される制御内容として、データ格納用フラッシュメモリ4へのデータの書込み、及び、データ格納用フラッシュメモリ4に格納されたデータの消去などがある。より具体的には、CPU2は、予め定められた順序でライトデータをフラッシュシーケンサ6に対して書き込むことで、フラッシュシーケンサ6が実施する制御内容を指定する。この一連のライトデータは、フラッシュシーケンサ6の制御内容を指定するコマンドに相当する。
ステータス送信部13は、CPU2に対してステータスデータを送信する。ステータスデータは、フラッシュシーケンサ6によるデータ格納用フラッシュメモリ4及び管理ステータス用フラッシュメモリ5の制御状態を示すデータである。ステータスデータは、例えば、制御状態として、書き込みエラー及び消去エラー等が示される。
アドレス受信部11は、アドレス指定レジスタ21を有する。アドレス指定レジスタ21は、CPU2からアドレスデータが書き込まれるレジスタである。このアドレス指定レジスタ21へのCPU2からのアドレスデータの書き込みは、上述のアドレスデータの受信に相当する。
コマンド受信部12は、コマンド指定レジスタ22を有する。コマンド指定レジスタ22は、CPU2からライトデータが書き込まれるレジスタである。このコマンド指定レジスタ22へのCPU2からのライトデータの書き込みは、上述のライトデータの受信に相当する。
ステータス送信部13は、ステータスレジスタ23を有する。ステータスレジスタ23は、制御部10からステータスデータが書き込まれるレジスタである。このステータスレジスタ23への制御部10からのデータの書き込みは、上述のステータスデータの送信に相当する。すなわち、CPU2は、周辺バス8を介して、ステータスレジスタ23に書き込まれたステータスデータを読み出すことができる。
制御部10は、コマンド指定レジスタ22に書き込まれた一連のライトデータ(コマンド)に対応する制御を、データ格納用フラッシュメモリ4のうち、アドレス指定レジスタ21に書き込まれたアドレスデータが示すアドレスに対して実施する。
なお、図2では、アドレス指定レジスタ21とコマンド指定レジスタ22が別々に設けられている例を用いて説明したが、これに限られない。例えば、アドレス指定レジスタ21とコマンド指定レジスタ22は、物理的に1つのレジスタとしてもよい。この場合、例えば、このレジスタに対して、アドレスデータの後に、ライトデータを書き込む等すればよい。また、アドレスデータ及びライドデータは、フラッシュシーケンサ6に対してパラレルに(複数ビットが同時に)入力されることに限られず、シリアルに(1ビットずつ)入力されるようにしてもよい。
続いて、図3を参照して、本実施の形態1に係るデータ格納用フラッシュメモリ4と管理ステータス用フラッシュメモリ5の構成について説明する。
まず、データ格納用フラッシュメモリ4の構成について説明する。データ格納用フラッシュメモリ4は、複数のブロックB0〜BNを有する(Nは、所定の正整数。以降も同様。)。以下、ブロックB0〜BNは、特にいずれかに限定せずに言及する場合には、「ブロックB」と言う。
ブロックB0〜BNのそれぞれは、データ格納用フラッシュメモリ4において、データが消去される最小単位となる。ブロックB0〜BNのそれぞれは、典型的には、同一サイズである。ブロックB0〜BNのそれぞれは、ブロックB0〜BNのそれぞれのサイズよりも小さいサイズでデータを書き込むことが可能である。
続いて、管理ステータス用フラッシュメモリ5の構成について説明する。管理ステータス用フラッシュメモリ5は、複数のブロックB0〜BNのそれぞれに対応する複数の管理ステータス領域M0〜MNを有する。言い換えると、管理ステータス格納領域Miは、ブロックBiに対応する(iは、0〜Nのいずれの整数でも該当。以降も同様。)。複数の管理ステータス領域M0〜MNは、それぞれ対応するカウンタC0〜CNを有する。すなわち、管理ステータス格納領域Miは、カウンタCiを有する。管理ステータス領域M0〜MNのそれぞれは、典型的には、同一サイズである。
複数のカウンタC0〜CNのそれぞれは、複数のブロックB0〜BNのそれぞれに対応し、ブロックB0〜BNのそれぞれにおけるデータの消去回数を示すカウント値が格納される。すなわち、管理ステータス領域MiのカウンタCiは、ブロックBiのカウント値が格納される。カウンタC1〜CNのそれぞれは、典型的には、同一サイズである。
以下、管理ステータス領域M0〜MNは、特にいずれかに限定せずに言及する場合には、「管理ステータス領域M」と言う。また、カウンタC0〜CNも、特にいずれかに限定せずに言及する場合には、「カウンタC」と言う。
ここで、管理ステータス領域M0〜MNのそれぞれは、フラグ領域と、A領域と、B領域とを有する。図3では、管理ステータス領域M0の構成のみを代表的に図示して説明するが、管理ステータス領域M1〜MNの構成も管理ステータス領域M0と同様である。
フラグ領域F0は、A領域M0_AとB領域M0_Bのいずれの領域が有効かを示す値が格納される。以下、A領域M0_AとB領域M0_Bのうち、有効な領域を「有効領域」とも言い、有効でない領域を「無効領域」とも言う。例えば、フラグ領域F0の値が所定値である場合には、A領域M0_Aが有効領域となり、B領域M0_Bが無効領域となる。フラグ領域Fの値が上記所定値以外の場合には、A領域M0_Aが無効領域となり、かつB領域M0_Bが有効領域となる。
A領域M0_A及びB領域M0_Bのそれぞれは、カウンタC0_A及びカウンタC0_Bのそれぞれを有する。すなわち、カウンタC0は、カウンタC0_A及びカウンタC0_Bを有する。したがって、フラグ領域Fに格納される値は、カウンタC0_AとカウンタC0_Bのいずれのカウント値が有効かを示す値とも言える。A領域M0_AとB領域M0_Bは、交互にカウント値が更新される。
より具体的には、A領域M0_Aが有効である場合には、A領域M0_AのカウンタC0_Aに現在のカウント値が格納されている。この場合、カウント値を更新するときには、カウンタC0_Aのカウント値は更新されず、そのカウント値の更新後の値が新たな現在のカウント値としてカウンタC0_Bに格納される。その後、B領域M0_Bが有効にされる。一方、B領域M0_Bが有効である場合には、B領域M0_BのカウンタC0_Bに現在のカウント値が格納されている。この場合、カウント値を更新するときには、カウンタC0_Bのカウント値は更新されず、そのカウント値の更新後の値が新たな現在のカウント値としてカウンタC0_Aに格納される。その後、A領域M0_Aが有効にされる。
フラグ領域F0、A領域M0_A、及びB領域M0_Bのそれぞれは、管理ステータス用フラッシュメモリ5において、データが消去される最小単位(ブロック)以上のサイズとなる。より具体的には、フラグ領域F0、A領域M0_A、及びB領域M0_Bのそれぞれは、典型的には、異なる1つのブロックで構成される。すなわち、フラグ領域F、A領域M0_A、及びB領域M0_Bのそれぞれは、典型的には、同一サイズである。しかしながら、例えば、カウント値の最大値が1つのブロックのデータ量で表現できない場合には、A領域M0_A、及びB領域M0_Bのそれぞれは、複数のブロックで構成されていてもよい。フラグ領域F0も、現実的にはそれに格納される値は1つのブロックのデータ量で表現可能であるが、複数のブロックで構成されていてもよい。また、フラグ領域F0、A領域M0_A、及びB領域M0_Bのそれぞれに格納される値は、必ずしも、それぞれの領域を構成するブロックにおける全てのビットを使用して表現する必要はない。よって、フラグ領域F0、A領域M0_A、及びB領域M0_Bのそれぞれに格納される値は、サイズの異なるデータで表現されていてもよい。
以下、特に管理ステータス領域M0〜MNのいずれかのものに限定せずに言及する場合には、フラグ領域は「フラグ領域F」と言い、A領域は「A領域M_A」と言い、B領域は「B領域M_B」と言い、A領域のカウンタは「カウンタC_A」と言い、B領域のカウンタは「カウンタC_B」と言う。
本実施の形態1では、このように、データ格納用フラッシュメモリ4におけるデータの消去回数を、管理ステータス用フラッシュメモリ5においてカウント値として管理することで、悪意のある第三者によるデータ格納用フラッシュメモリ4のデータ(例えばソフトウェア)の改ざんを検出可能としている。悪意のある第三者によってソフトウェアが不正に改ざんされた場合には、データ格納用フラッシュメモリ4におけるソフトウェアを正規に更新した回数よりも、管理ステータス用フラッシュメモリ5によって管理される消去回数が多くなる。フラッシュメモリでは、データを書き換える場合に一度データを消去する必要があるからである。そのため、例えば、正規な業者がデータ格納用フラッシュメモリ4のソフトウェアを更新する場合に、これまでの更新回数と、管理ステータス用フラッシュメモリ5によって管理される消去回数とを比較することで、悪意のある第三者によるデータ格納用フラッシュメモリ4のソフトウェアの不正改ざんを検出することが可能となる。
(実施の形態1の動作)
続いて、図4を参照して、実施の形態1に係るフラッシュシーケンサ6のコマンドについて説明する。図4に示すように、フラッシュシーケンサ6を制御するコマンドとして、データ書込みコマンドと、データ消去コマンドとが用意されている。
データ格納用フラッシュメモリ4に対してデータを書き込む場合、CPU2は、周辺バス8を介して、アドレス指定レジスタ21にアドレスデータを書き込むことにより、データ格納用フラッシュメモリ4のうち、データを書き込むアドレスを指定する。そして、CPU2は、書き込みコマンドを示すライトデータをコマンド指定レジスタ22に順次書き込む。より具体的には、CPU2は、データ格納用フラッシュメモリ4に対して4バイトのデータを書き込む場合には、図4に示すように、H’E8、H’02、4バイトのデータ(2バイトのデータを2回)、H’D0の順番でライトデータをコマンド指定レジスタ22に順次書き込む。また、CPU2は、データ格納用フラッシュメモリ4に対して16バイトのデータを書き込む場合には、図4に示すように、H’E8、H’08、16バイトのデータ(2バイトのデータを8回)、H’D0の順番でライトデータをコマンド指定レジスタ22に順次書き込む。なお、「H’」は、それに続く数値が16進数表記であることを意味する。
これに応じて、フラッシュシーケンサ6の制御部10は、データ格納用フラッシュメモリ4のうち、アドレス指定レジスタ21に書き込まれたアドレスデータが示すアドレスに対して、コマンド指定レジスタ22に対して書き込まれたデータを書き込む。すなわち、制御部10は、2回目の書き込みでH’02が書き込まれた場合には、3〜4回目に書き込まれた4バイトのデータを、アドレスデータで指定されたアドレスから4バイト分の領域に書き込む。また、制御部10は、2回目の書き込みでH‘08が書き込まれた場合には、3〜10回目に書き込まれた16バイトのデータを、アドレスデータで指定されたアドレスから16バイト分の領域に書き込む。
データ格納用フラッシュメモリ4のデータを消去する場合、CPU2は、周辺バス8を介して、アドレス指定レジスタ21にアドレスデータを書き込むことにより、データ格納用フラッシュメモリ4のうち、データを消去するブロックBのアドレスを指定する。そして、CPU2は、データ消去コマンドを示すライトデータをコマンド指定レジスタ22に順次書き込む。より具体的には、CPU2は、H’20、H’D0の順番でライトデータをコマンド指定レジスタ22に順次書き込む。
これに応じて、フラッシュシーケンサ6の制御部10は、データ格納用フラッシュメモリ4のうち、アドレス指定レジスタ21に書き込まれたアドレスデータが示すアドレスのブロックBのデータを消去する。このデータの消去時に、制御部10は、データを消去するブロックBに対応する管理ステータス領域MのカウンタCのカウント値をインクリメントして更新する。
なお、制御部10は、管理ステータス用フラッシュメモリ5においてカウント値を更新するカウンタCが含まれる管理ステータス領域Mのアドレスを、アドレス指定レジスタで指定されたデータ格納用フラッシュメモリ4のブロックBのアドレスから自動的に算出する。このアドレスを算出する方法として、次に説明する第1の方法又は第2の方法を採用してもよく、他の任意の方法を採用してもよい。
例えば、第1の方法では、全てのブロックB0〜BN及び管理ステータス領域M0〜MNについて、ブロックBのアドレスと、そのブロックBに対応する管理ステータス領域Mのアドレスとを対応付けて示すテーブルを、フラッシュシーケンサ6が有する記憶部に予め格納しておく。記憶部は、例えば、テーブルを記憶可能なメモリを含む。そして、制御部10は、そのテーブルに基づいて、データを消去するブロックBのアドレスから、カウント値を更新する管理ステータス領域Mのアドレスを導出してもよい。
例えば、第2の方法では、データを消去するブロックBのアドレスの所定の下位アドレスを削除する(アドレスを所定のビット数だけ右にシフトする)ことで得られたアドレスを、管理ステータス領域Mのアドレスとする。すなわち、第2の方法は、ブロックB0〜BNのサイズよりも、管理ステータス領域M0〜MNのサイズの方が小さい場合に使用することができる。例えば、ブロックB0〜BNのサイズが管理ステータス領域M0〜MNのサイズの65536倍である場合、ブロックBのアドレスの下位16ビットを削除する(アドレスを16ビットだけ右にシフトする)ことで、管理ステータス領域M0〜MNのアドレスが得られる。なお、ブロックBのアドレスの所定の下位アドレスを削除したアドレスが、管理ステータス領域M0〜MNのアドレスと所定サイズだけずれる場合には、そのずれ量のオフセットを加算又は減算することで管理ステータス領域M0〜MNのアドレスを算出すればよい。
ここで、制御部10は、CPU2から管理ステータス用フラッシュメモリ5のアドレスを指定して書き込みコマンド及びデータ消去コマンドが発行された場合、CPU2に対してエラーを返す。より具体的には、制御部10は、アドレス指定レジスタ21に書き込まれたアドレスデータが示すアドレスが、管理ステータス用フラッシュメモリ5のアドレスを示している場合、データ書き込み及びデータ消去は実施しない。この場合、さらに、制御部10は、ステータス送信部13によってエラーを通知するステータスデータをCPU2に対して送信するようにしてもよい。
より具体的には、制御部10は、エラーを示すステータスデータをステータスレジスタ23に格納する。例えば、ステータスレジスタ23の特定のビットがエラーフラグとして定義されており、このエラーフラグに1を格納する。なお、書き込みエラーと消去エラーを示すエラーフラグを、まとめて同一ビットに定義してもよく、異なるビットに定義してもよい。このステータスデータは、周辺バス8を介してCPU2に送信される。これによって、CPU2は、フラッシュシーケンサ6のステータス送信部13から送信されたステータスデータがエラーを示している場合に、データ書き込み又はデータ消去がエラーして実行されなかったことを認識することができる。
このように、管理ステータス用フラッシュメモリ5のアドレスを指定しての書き込みコマンド及びデータ消去コマンドを抑止することで、悪意のある第三者による消去回数(カウント値)の改ざんを防止することを可能としている。ここで、管理ステータス用フラッシュメモリ5の全ての領域に対するデータ書き込み及びデータ消去をエラーとして扱わないようにしてもよい。例えば、管理ステータス用フラッシュメモリ5のうち、フラグ領域F、カウンタC(A領域M_A、B領域M_A)のアドレスが指定された場合にエラーとして扱い、他の領域が指定された場合にはデータ書き込み及びデータ消去を可能としてもよい。このようにしても、消去回数(カウント値)の改ざんを防止することができるからである。
続いて、図5を参照して、本実施の形態1に係るフラッシュシーケンサ6のデータ消去処理について説明する。
フラッシュシーケンサ6の制御部10は、コマンド受信部12によってデータ消去コマンドを示すライトデータが受信された場合、データを消去するブロックBに対応する管理ステータス領域Mのフラグ領域Fの値を読み出す。このブロックBは、アドレス受信部11によって受信されたアドレスデータが示すアドレスに位置するブロックBとなる。制御部10は、読み出した値に基づいてA領域M_AとB領域M_Bのうち、いずれの領域が有効領域であり、いずれが無効領域であるかを判定する(S1)。
制御部10は、無効領域のデータを消去して、新たなカウント値を書き込み可能な状態にする(S2)。制御部10は、データを消去するブロックBに対応する管理ステータス領域M内の有効領域に格納された現在のカウント値を読み出す(S3)。制御部10は、読み出した現在のカウント値に1を加算した値を、新たなカウント値として無効領域に書き込む(S4)。制御部10は、書き込みが完了すると、フラグ領域Fの値を更新して、有効領域を無効化し、無効領域を有効化する。すなわち、制御部10は、新たなカウント値が格納された領域を有効領域として示し、他方の領域を無効領域として示すようにフラグ領域Fの値を更新する(S5)。これらの管理ステータス用フラッシュメモリ5の制御の完了後に、制御部10は、データ格納用フラッシュメモリ4のうち、アドレス指定レジスタ21に書き込まれたアドレスデータが示すアドレスのブロックBのデータを消去し、データ消去処理を終了する(S6)。
(実施の形態1の特徴および効果)
以上に説明したように、本実施の形態1では、フラッシュシーケンサ6(制御回路)は、ブロックB(データ格納領域)に格納されるデータのCPU2(プロセッサ)による変更を許容し、カウンタC(消去回数格納領域)に格納されるカウント値(消去回数データ)のCPU2による変更を抑止するようにしている。
これによれば、管理ステータス用フラッシュメモリ5のカウンタCを直接指定してデータの変更(書き込み及び消去)をすることができないため、悪意のある第三者が任意のカウント値を変更することができない。すなわち、本実施の形態1によれば、フラッシュメモリにおける消去回数(カウント値)の改ざんを防止することができる。
また、本実施の形態1では、フラッシュシーケンサ6は、データ格納用フラッシュメモリ4におけるデータの消去に先行してカウント値を更新するようにしている。言い換えると、フラッシュシーケンサ6は、カウンタCに格納されたカウント値を更新した後に、ブロックBに格納されたデータを消去するようにしている。
これによれば、悪意のある第三者が、マイクロコントローラ1のリセット又は電源切断・投入等の手段によって、フラッシュシーケンサ6のデータ消去処理を中断させたとしても、実際のデータ消去よりも先にカウント値が更新されるため、実際の消去回数よりも少ない不当なカウント値に改ざんすることができない。よって、悪意のある第三者がデータ格納用フラッシュメモリ4におけるデータの不正改ざんを隠蔽するためにカウント値を少ない値に改ざんすることを防止できる。
また、本実施の形態1では、図5に示すように、ブロックBのデータを消去する場合、A領域M_A及びB領域M_Bのうち、フラグ領域Fの値(領域情報)が有効と示す領域からカウント値を取得し、取得したカウント値を更新して他方の領域に格納し、その他方の領域を有効と示すようにフラグ領域Fの値を更新するようにしている。これによれば、悪意のある第三者が、マイクロコントローラ1のリセット又は電源切断・投入等の手段によって、フラッシュシーケンサ6のデータ消去処理を中断させたとしても、実際の消去回数よりも少ない不当なカウント値に改ざんすることができない。
例えば、上述の処理によれば、フラグ領域Fの値、A領域M_Aのカウント値、及び、B領域M_Bのカウント値は、図6に示す(1)〜(3)の状態を遷移することになる。なお、図6では、A領域M_Aが有効な状態から処理が開始された例を示している。
(1)の状態は、無効領域のカウント値が消去された状態を示している(図5のS2)。(2)の状態は、現在のカウント値に1を加算した値が新たなカウント値として無効領域に書き込まれた状態を示している(図5のS4)。(3)の状態は、新たなカウント値が格納された領域を有効領域として示すようにフラグ領域Fの値が更新された状態を示している(図5のS5)。なお、上述したように、(3)の状態にされた後に、実際にデータの消去が実施される(図5のS6)。
まず、(1)の状態で処理が中断された場合、カウント値は更新前の値が有効になっており、データの消去が実施される前であるため、カウント値と実際の消去回数は一致する。(2)の状態で処理が中断された場合も、カウント値は更新前の値が有効になっており、データの消去が実施される前であるため、カウント値と実際の消去回数は一致する。(3)の状態で処理が中断された場合、カウント値は更新後の値が有効となるが、データの消去が実施される前であるため、カウント値は実際の消去回数よりも多くなる。
したがって、本実施の形態1によれば、カウント値が実際の消去回数よりも少なくなることはない。これによれば、悪意のある第三者によってデータ格納用フラッシュメモリ4におけるデータが不正に改ざんされた場合には、必ず正規にデータを更新した回数よりもカウント値が多くなる。そのため、悪意のある第三者がデータ格納用フラッシュメモリ4のソフトウェアなどを不正に書き換えたことを確実に検出できる。
<実施の形態2>
続いて、実施の形態2について説明する。実施の形態1と同様の内容については、適宜説明を省略する。例えば、実施の形態2では、マイクロコントローラ1の構成、フラッシュシーケンサ6の構成、及びデータ格納用フラッシュメモリ4の構成は、図1〜3を参照して説明した実施の形態1における構成と同様であるため、説明を省略する。
(実施の形態2の構成)
続いて、図7を参照して、本実施の形態1に係る管理ステータス用フラッシュメモリ5の構成について説明する。
実施の形態2では、管理ステータス用フラッシュメモリ5は、管理ステータス格納用領域Mを1つだけ有する。すなわち、図7に示すように、フラグ領域F、A領域M_A、及び、B領域M_Bのそれぞれを、1つだけ有する。A領域M_Aは、複数のブロックB0〜BNのそれぞれに対応する複数のカウンタC0_A〜CN_Aを有する。B領域M_Bは、複数のブロックB0〜BNのそれぞれに対応する複数のカウンタC0_B〜CN_Bを有する。
このように、本実施の形態2では、複数のカウンタC0_A〜CN_Aは1つのA領域M_Aにまとめられており、複数のカウンタC0_B〜CN_Bは1つのB領域M_Bにまとめられている。よって、データ格納用フラッシュメモリ4の全てのブロックB0〜BNに対して、フラグ領域F、A領域M_A、及び、B領域M_B(3つのブロック)を1つだけ用意すればよい。カウンタC0_A〜CN_A及びカウンタC0_B〜CN_Bのそれぞれは、典型的には、同一サイズである。すなわち、A領域M_AとB領域M_Bは、典型的には、同一構成とされる。
A領域M_AとB領域M_Bは、実施の形態1と同様に、交互にカウント値が更新される。しかしながら、フラッシュメモリでは、データの書き込みを行う前にデータを消去する必要があり、ブロック単位(A領域M_A単位、B領域M_B単位)でデータが消去されてしまうため、更新対象でないカウンタのカウント値も初期化されてしまう。そのため、カウンタのカウント値を更新する場合には、更新対象のカウンタについては、有効領域からカウント値を取得し、取得したカウント値をインクリメントしたカウント値を無効領域に格納し、更新対象でないカウンタについては、有効領域から取得したカウント値をそのまま無効領域に格納する。
(実施の形態2の動作)
続いて、図8を参照して、実施の形態2に係るフラッシュシーケンサ6のデータ消去処理について説明する。なお、ここで、データ消去処理を開始するときにA領域M_Aが有効である場合について説明するが、データ消去処理を開始するときにB領域M_Bが有効である場合も同様に実施することが可能である。B領域M_Bが有効である場合には、以降の説明におけるカウンタC0_A〜CN_AとカウンタC0_B〜CN_Bとが逆に読み替えられること等は自明であるため、説明は省略する。
制御部10は、実施の形態1におけるステップS1、2と同様に、A領域M_AとB領域M_Bが有効か無効かを判定し、無効領域のデータを消去する(S11、S12)。すなわち、制御部10は、A領域M_Aが有効である(B領域M_Bが無効である)と判定し、無効領域であるB領域M_Bのデータを消去する。
実施の形態2では、制御部10は、カウンタC0_A〜CN_Aのカウント値の設定を順番に実行可能とするために、処理中のカウンタC_A、C_Bのアドレスを示すポインタを管理する。処理中のカウンタC_A、C_Bのアドレスを示すポインタは、例えば、フラッシュシーケンサ6が有する記憶部に格納される。ポインタは、初期値として、有効領域における先頭のカウンタC0_A、C0_Bのアドレスが設定される。なお、ポインタは、A領域M_AのカウンタC_Aと、B領域M_BのカウンタC_Bのいずれか1つのアドレスのみを示すものであってもよい。この場合であっても、他方のカウンタのアドレスは、ポインタが示すアドレスに対して、所定のオフセット(例えばA領域M_Aのサイズ)を加算もしくは減算することで算出することができる。
制御部10は、ポインタが、データを消去するブロックBに対応するカウンタC_A、C_Bを示すか否かを判定する(S13)。言い換えると、制御部10は、処理中のカウンタC_A、C_Bが、データを消去するブロックBに対応するカウンタC_A、C_Bであるか否かを判定する。なお、この判定には、任意の方法を採用してもよい。
例えば、上述した第1の方法と同様に判定する場合には、全てのブロックB0〜BN、カウンタC0_A〜CN_A、C0_B〜CN_Bについて、ブロックBのアドレスと、そのブロックBに対応するカウンタC_A及びカウンタC_Bのアドレスとを対応付けて示すテーブルを、フラッシュシーケンサ6が有する記憶部に予め格納しておく。そして、制御部10は、そのテーブルに基づいて、データを消去するブロックBのアドレスから、そのデータを消去するブロックBに対応するカウンタC_A及びカウンタC_Bのアドレスを導出してもよい。
また、例えば、上述した第2の方法と同様に判定する場合には、データを消去するブロックBのアドレスの所定の下位アドレスを削除することで得られたアドレスが、ポインタが示すアドレス(カウンタC_A、C_Bのいずれかのアドレス)と一致する場合に、ポインタが、そのブロックBに対応するカウンタC_A、C_Bを示すと判定する。そうでない場合には、ポインタが、そのブロックBに対応するカウンタC_A、C_Bを示さないと判定する。なお、この場合も、ブロックBのアドレスの下位アドレスを削除したアドレスが、そのブロックBに対応するカウンタC_A又はカウンタC_Bのアドレスと所定サイズだけずれる場合には、そのずれ量のオフセットを加算又は減算して得られたアドレスを、ポインタが示すアドレスと比較すればよい。
ポインタが、データを消去するブロックBに対応するカウンタC_A、C_Bを示すと判定した場合(S13:消去対象ブロック用)、制御部10は、有効領域であるA領域M_Aにおいてポインタが示すカウンタC_Aのカウント値を読み出す(S14)。制御部10は、読み出したカウント値に1を加算した値を、新たなカウント値として、無効領域であるB領域M_Bにおいてポインタが示すカウンタC_Bに書き込む(S15)。
ポインタが、データを消去するブロックBに対応するカウンタC_A、C_Bを示さないと判定した場合(S13:消去対象外ブロック用)、制御部10は、有効領域であるA領域M_Aにおいてポインタが示すカウンタC_Aのカウント値を読み出す(S16)。制御部10は、読み出したカウント値を、そのまま新たなカウント値として、無効領域であるB領域M_Bにおいてポインタが示すカウンタC_Bに書き込む(S17)。
無効領域へのカウント値の書き込みの完了後(S15、S17)、制御部10は、ポインタが、最終ブロックBNに対応するカウンタCN_A、C_BNを示すか否かを判定する(S18)。言い換えると、制御部10は、処理中のカウンタC_A、C_Bが、最終ブロックBNに対応するカウンタCN_A、C_BNであるか否かを判定する。
ポインタが、最終ブロックBNに対応するカウンタCN_A、CN_Bを示さない場合(S18:最終ブロック以外)、制御部10は、ポインタが示すアドレスを次のブロックBに対応するカウンタCN_A、CN_Bのアドレスに更新し(S19)、再度、S13からのカウンタの更新処理を繰り返す。これにより、カウンタC0_A、C0_B〜カウンタCN_A、CN_Bの順に処理が進められる。なお、ポインタの更新は、例えば、カウンタC0_A〜CN_A及びカウンタC0_B〜CN_Bが、同一サイズであり、隙間なく並べられている場合には、ポインタが示すアドレスをカウンタC_A、C_Bのサイズだけ進めるようにすればよい。また、例えば、ポインタが、カウンタC0_A、C0_Bのサイズ分の下位ビットを省略した形式でカウンタC0_A、C0_Bのアドレスを示している場合には、ポインタの更新は、ポインタが示すアドレスを1ずつインクリメントするようにすればよい。
ポインタが、最終ブロックBNに対応するカウンタCN_A、C_BNを示す場合(S18:最終ブロック)、制御部10は、実施の形態1におけるステップS5、S6と同様に、フラグ領域Fの値を更新し、ブロックBのデータを消去してデータ消去処理を終了する(S20)。
(実施の形態2の特徴および効果)
以上に説明したように、本実施の形態2では、制御部10は、データを消去するブロックBに対応するカウンタC_A、C_Bについては、フラグ領域Fの値が有効と示す領域(実施の形態2の例では、A領域M_A)からカウント値を取得し、取得したカウント値を更新して他方の領域(実施の形態2の例では、B領域M_B)に格納し、それ以外のカウンタC_A、C_Bについては、フラグ領域Fの値が有効と示す領域から取得したカウント値をそのまま他方の領域に格納している。
これによれば、複数のカウント値C0_A〜CN_A及び複数のカウント値C0_B〜CN_Bのそれぞれを、A領域M_A及びB領域M_Bのそれぞれにまとめて管理することが可能となる。そのため、管理ステータス用フラッシュメモリ5において、フラグ領域Fを1つだけ有するだけでよい。よって、管理ステータス用フラッシュメモリ5の容量を削減することができ、低コストでデータの不正改ざんを検出する機構を構築できる。
一方で、本実施の形態2では、実施の形態1と比較して、データ消去処理において、全てのカウンタC0_A〜CN_A又はC0_B〜CN_Bのカウント値の更新を必要とするため、データ消去処理における処理時間が長期化する。そのため、管理ステータス用フラッシュメモリ5の容量よりも処理時間を優先する場合には、実施の形態1の構成が好適である。
<実施の形態3>
続いて、実施の形態3について説明する。実施の形態1と同様の内容については、適宜説明を省略する。例えば、実施の形態3では、マイクロコントローラ1の構成、フラッシュシーケンサ6の構成、及びデータ格納用フラッシュメモリ4の構成は、図1〜3を参照して説明した実施の形態1における構成と同様であるため、説明を省略する。
(実施の形態3の構成)
続いて、図9を参照して、本実施の形態1に係る管理ステータス用フラッシュメモリ5の構成について説明する。
実施の形態3では、実施の形態1と比較して、管理ステータス領域M0〜MNのそれぞれは、さらに、複数のカウント許可フラグ領域A0〜ANのそれぞれを有する。すなわち、管理ステータス領域Miは、カウント許可フラグ領域Aiを有する。以下、カウント許可フラグA0〜ANは、特にいずれかに限定せずに言及する場合には、「カウント許可フラグA」と言う。
カウント許可フラグ領域A0〜ANのそれぞれは、カウンタC0〜CNのそれぞれによる消去回数のカウントの可否を示すカウント許可フラグが格納される。よって、制御部10は、カウント許可フラグ領域Aiのカウント許可フラグがカウント禁止を示す場合には、カウンタCiのカウント値を更新しない。一方、制御部10は、カウント許可フラグ領域Aiのカウント許可フラグがカウント許可を示す場合には、カウンタCiのカウント値を更新する。ここで、カウント許可フラグは、例えば、”1”でカウント禁止を示し、”0”でカウント許可を示すフラグである。
A領域M0_A及びB領域M0_Bのそれぞれは、カウント許可フラグ領域A0_A及びカウント許可フラグ領域A0_Bのそれぞれを有する。すなわち、カウント許可フラグ領域A0は、カウント許可フラグ領域A0_A及びカウント許可フラグ領域A0_Bを有する。したがって、フラグ領域Fに格納される値は、カウント許可フラグ領域A0_Aとカウント許可フラグ領域A0_Bのいずれのカウント許可フラグが有効かを示す値とも言える。
より具体的には、A領域M0_Aが有効である場合には、A領域M0_Aのカウント許可フラグ領域A0_Aに現在のカウント許可フラグが格納されている。この場合、カウント許可フラグを更新するときには、カウント許可フラグ領域A0_Aのカウント許可フラグは更新されず、そのカウント許可フラグの更新後の値が新たな現在のカウント許可フラグとしてカウント許可フラグ領域A0_Bに格納される。その後、B領域M0_Bが有効にされる。一方、B領域M0_Bが有効である場合には、B領域M0_Bのカウント許可フラグ領域A0_Bに現在のカウント許可フラグが格納されている。この場合、カウント許可フラグを更新するときには、カウント許可フラグ領域A0_Bのカウント許可フラグは更新されず、そのカウント許可フラグの更新後の値が新たな現在のカウント許可フラグとしてカウント許可フラグ領域A0_Aに格納される。その後、A領域M0_Aが有効にされる。
以下、特に管理ステータス領域M0〜MNのいずれかのものに限定せずに言及する場合には、A領域のカウント許可フラグ領域は「カウント許可フラグ領域A_A」と言い、B領域のカウント許可フラグ領域は「カウント許可フラグ領域A_B」と言う。
(実施の形態3の動作)
続いて、図10を参照して、実施の形態3に係るフラッシュシーケンサ6のデータ消去処理について説明する。
制御部10は、実施の形態1におけるステップS1と同様に、A領域M_AとB領域M_Bが有効か無効かを判定する(S31)。制御部10は、データを消去するブロックBに対応する管理ステータス領域M内の有効領域のカウント許可フラグ領域Aからカウント許可フラグを読み出す(S32)。制御部10は、読み出したカウント許可フラグがカウント許可を示しているかカウント禁止を示しているかを判定する(S33)。
読み出したカウント許可フラグがカウント許可を示している場合(S33:Yes)、制御部10は、実施の形態1におけるステップS2〜4と同様に、無効領域のデータを消去し、有効領域から現在のカウント値を読み出し、読み出した現在のカウント値に1を加算した値を無効領域に書き込む(S34〜S36)。制御部10は、ステップS32で読み出したカウント許可フラグを、データを消去するブロックBに対応する管理ステータス領域M内の無効領域のカウント許可フラグ領域Aにそのまま書き込む(S37)。そして、制御部10は、実施の形態1におけるステップS5、S6と同様に、フラグ領域Fの値を更新し、ブロックBのデータを消去してデータ消去処理を終了する(S38、S39)。
読み出したカウント許可フラグがカウント禁止を示している場合(S33:No)、制御部10は、ステップS34〜S38のいずれの処理も実施することなく、ブロックBのデータを消去してデータ消去処理を終了する(S39)。
続いて、図11を参照して、実施の形態3に係るフラッシュシーケンサ6のコマンドについて説明する。実施の形態3では、図11に示すように、実施の形態1と比較して、さらに、カウント許可設定コマンドが用意されている。
データの消去回数のカウントの許可を設定する場合、CPU2は、周辺バス8を介して、アドレス指定レジスタ21にアドレスデータを書き込むことにより、データ格納用フラッシュメモリ4のうち、データの消去回数のカウントを許可するブロックBのアドレスを指定する。そして、CPU2は、カウント許可設定コマンドを示すライトデータをコマンド指定レジスタ22に順次書き込む。より具体的には、CPU2は、H’40、H’02、カウント許可フラグへの設定値、H’D0の順番でライトデータをコマンド指定レジスタ22に順次書き込む。
これに応じて、フラッシュシーケンサ6の制御部10は、アドレス指定レジスタで指定されたデータ格納用フラッシュメモリ4のブロックBに対応する管理ステータス領域Mのカウント許可フラグ領域Aのカウント許可フラグを、ライトデータとして書き込まれた設定値に基づいて変更する。
なお、制御部10は、管理ステータス用フラッシュメモリ5においてカウント許可フラグを更新するカウント許可フラグ領域Aが含まれる管理ステータス領域Mのアドレスを、アドレス指定レジスタで指定されたデータ格納用フラッシュメモリ4のブロックBのアドレスから自動的に算出する。このアドレスを算出する方法として、上述した第1の方法又は第2の方法を採用してもよく、他の任意の方法を採用するようにしてもよい。
ここで、制御部10は、CPU2から管理ステータス用フラッシュメモリ5のアドレスを指定してカウント許可設定コマンドが発行された場合、CPU2に対してエラーを返す。より具体的には、制御部10は、アドレス指定レジスタ21に書き込まれたアドレスデータが示すアドレスが、管理ステータス用フラッシュメモリ5のアドレスを示している場合、カウント許可フラグの変更は実施しない。また、この場合、制御部10は、ステータス送信部13によってエラーを通知するステータスデータをCPU2に対して送信する。なお、カウント許可設定エラーを示すエラーフラグは、書き込みエラーと消去エラーを示すエラーフラグと、をまとめて同一ビットに定義してもよく、異なるビットに定義してもよい。
なお、以上の説明では、データ格納用フラッシュメモリ4のブロックBのアドレスを指定することで、カウント許可設定コマンドを発行する例について説明したが、これに限られない。例えば、管理ステータス用フラッシュメモリ5のうち、カウント許可フラグ領域A_A、A_Bのアドレスを指定してカウント許可設定コマンドが発行された場合には、エラーとして扱わず、カウント許可フラグの変更を可能としてもよい。このようにしても、フラグ領域F、カウンタCのアドレスが指定された場合にエラーとして扱いさえすれば、消去回数(カウント値)の改ざんを防止することができるからである。
続いて、図12を参照して、本実施の形態3に係るフラッシュシーケンサ6のカウント許可設定処理について説明する。
フラッシュシーケンサ6の制御部10は、コマンド受信部12によってカウント許可設定コマンドを示すライトデータが受信された場合、データの消去回数のカウントの許可を設定するブロックBに対応する管理ステータス領域Mのフラグ領域Fの値を読み出す。このブロックBは、アドレス受信部11によって受信されたアドレスデータが示すアドレスに位置するブロックBとなる。制御部10は、読み出した値に基づいてA領域M_AとB領域M_Bのうち、いずれの領域が有効領域であり、いずれが無効領域であるかを判定する(S41)。
制御部10は、無効領域のデータを消去して、新たなカウント許可フラグを書き込み可能な状態にする(S42)。制御部10は、データの消去回数のカウントの許可を設定するブロックBに対応する管理ステータス領域M内の有効領域に格納された現在のカウント値を読み出す(S43)。制御部10は、読み出したカウント値を、そのまま無効領域に書き込む(S44)。制御部10は、データの消去回数のカウントの許可を設定するブロックBに対応する管理ステータス領域M内の有効領域に格納された現在のカウント許可フラグを読み出す(S45)。制御部10は、読み出した現在のカウント許可フラグと、カウント許可設定コマンドにおいてコマンド指定レジスタ22に格納された設定値との論理積演算(AND演算)の結果となる値を、新たなカウント許可フラグとして無効領域に書き込む(S46)。制御部10は、新たなカウント許可フラグが格納された領域を有効領域として示し、他方の領域を無効領域として示すようにフラグ領域Fの値を更新する(S47)。
(実施の形態3の特徴および効果)
以上に説明したように、本実施の形態3では、カウント許可を示すカウント許可フラグ(許可情報)が格納されたカウント許可フラグ領域Aに対応するカウンタCについてはカウント値を更新し、禁止を示すカウント許可フラグが格納されたカウント許可フラグ領域Aに対応するカウンタCについてはカウント値の更新を抑止するようにしている。
これによれば、カウントが禁止されたカウンタCではカウント値を更新しないため、データ消去処理の時間を短縮することができる。例えば、セキュリティを確保する上で重要なデータが格納された領域についてのみ、データの改ざんを検出すればよい場合に、データ格納用フラッシュメモリ4におけるデータの消去時間を短縮でき、データを更新する際のスループットを改善できる。例えば、データ格納用フラッシュメモリ4に格納されるソフトウェアのうち、ブートローダのように重要なソフトウェアが格納されたブロックBに対応するカウンタCによるカウントのみを許可することができる。
また、本実施の形態3では、カウント許可フラグを変更する場合、カウント値については、A領域M_AとB領域M_Bのうち、フラグ領域Fの値が有効と示す領域から取得したカウント値をそのまま他方の領域に格納するようにしている。これによれば、あるブロックBに対応するカウンタCによるカウントの許可状態を変更する場合であっても、カウント値は変更されないため、実施の形態1と同様にカウント値を保護することができる。
また、本実施の形態3では、A領域M_A及びB領域M_Bのうち、フラグ領域Fの値が有効と示さない領域に対して変更後のカウント許可フラグを格納し、その領域を有効と示すようにフラグ領域Fの値を更新するようにしている。すなわち、カウント許可設定コマンドに応じた処理フローは、データ消去における管理ステータス用フラッシュメモリ5の処理フローと同様となる。よって、図6を参照して説明したように、悪意のある第三者が、マイクロコントローラ1のリセット又は電源切断・投入等の手段によって、フラッシュシーケンサ6のカウント許可設定処理を中断させたとしても、カウント許可フラグを改ざんすることができない。
また、本実施の形態3では、CPU2から受信したカウント許可設定コマンドによって、カウント許可フラグの禁止から許可への変更が要求された場合にはカウント許可フラグの変更を許容し、カウント許可フラグの許可から禁止への変更が要求された場合にはカウント許可フラグの変更を抑止するようにしている。より具体的には、有効領域から読み出したカウント許可フラグと、カウント許可設定コマンドにおいて指定された新たな設定値との論理積演算の結果を、新たなカウント許可フラグとして無効領域に書き込むようにしている。
これによれば、消去回数(カウント値)のカウントを禁止するように変更することを防止できる。このため、悪意のある第三者が消去回数のカウントを禁止して、データ格納用フラッシュメモリ4におけるデータの不正改ざんを隠蔽することを防止できる。
なお、上述の説明では、カウンタCとカウント許可フラグ領域Aの両方を1つの管理ステータス領域Mに有する例について説明したが、カウンタCとカウント許可フラグ領域Aとを異なる管理ステータス領域Mに有するようにしてもよい。
また、上述の説明では、実施の形態1に対してカウント許可設定機能を追加した形態について説明したが、実施の形態2に対してもカウント許可設定機能を追加した形態についても当然に実施可能である。この場合、管理ステータス用フラッシュメモリ5において1つの管理ステータス領域Mを有するようにし、そのA領域M_AにおいてカウンタC0_A〜CN_Aとカウント許可フラグA0_A〜AN_Aを有し、そのB領域M_BにおいてカウンタC0_B〜CN_Bとカウント許可フラグA0_B〜AN_Bを有するようにしてもよい。また、管理ステータス用フラッシュメモリ5において2つの管理ステータス領域Mを有するようにし、一方の管理ステータス領域Mは、図7に示す構成とし、他方の管理ステータス領域Mは、A領域M_Aにおいてカウント許可フラグA0_A〜AN_Aを有し、B領域M_Bにおいてカウント許可フラグA0_B〜AN_Bを有するようにしてもよい。すなわち、実施の形態2に対してカウント許可設定機能を追加した場合においても、カウンタCとカウント許可フラグ領域Aとを異なる管理ステータス領域Mに有するようにしてもよい。
また、上述の説明では、カウント許可フラグが、”1”でカウント禁止を示し、”0”でカウント許可を示すフラグである例について説明したが、これに限られない。例えば、カウント許可フラグは、”0”でカウント禁止を示し、”1”でカウント許可を示すフラグであってもよい。この場合、上述のステップS46では、読み出したカウント許可フラグと、設定値との論理和演算(OR演算)の結果となる値を、新たなカウント許可フラグとすればよい。
(実施の形態3の変形例)
フラッシュメモリでは、一般的にデータを消去した場合には、全てのビットが”1”に初期化され、データの書き込みによって任意のビットが”1”から”0”に変更される。そして、本実施の形態3では、カウント許可フラグがカウント禁止からカウント許可を示すようにする変更を許容している。そのため、カウント許可フラグを上述の”1”でカウント禁止を示し、”0”でカウント許可を示すフラグとし、カウンタCとカウント許可フラグ領域Aとを異なる管理ステータス領域M(すなわち、異なるブロック)に有するようにした場合には、データを消去することなく、カウント許可フラグを変更することができる。すなわち、この場合には、次に図13を参照して説明するように、カウント許可設定処理を実施してもよい。
フラッシュシーケンサ6の制御部10は、ステップS41、S45と同様に、A領域M_AとB領域M_Bが有効か無効かを判定し、有効領域に格納された現在のカウント許可フラグを読み出す(S51、S55)。制御部10は、読み出したカウント許可フラグがカウント許可を示すか否かを判定する(S53)。
カウント許可フラグがカウント禁止を示す場合(S53:No)、制御部10は、カウント許可設定コマンドにおいてコマンド指定レジスタ22に格納された設定値を、新たなカウント許可フラグとして無効領域に書き込む(S54)。制御部10は、ステップS47と同様に、フラグ領域Fの値を更新する(S55)。カウント許可フラグがカウント許可を示す場合(S53:Yes)、制御部10は、ステップS54、S55の処理は実行しない。
このような処理によれば、カウント許可設定処理においてデータを消去する必要が無くなるため、カウント許可設定処理の時間を短縮することができる。
<実施の形態4>
続いて、実施の形態4について説明する。実施の形態3と同様の内容については、適宜説明を省略する。例えば、実施の形態4では、マイクロコントローラ1の構成、フラッシュシーケンサ6の構成、及びデータ格納用フラッシュメモリ4の構成は、図1〜3を参照して説明した実施の形態3における構成と同様であるため、説明を省略する。
(実施の形態4の構成)
続いて、図14を参照して、本実施の形態4に係る管理ステータス用フラッシュメモリ5の構成について説明する。
図14に示すように、実施の形態4では、管理ステータス用フラッシュメモリ5は、実施の形態3と比較して、さらに、拡張管理ステータス領域EMを有する。拡張管理ステータス領域EMは、カウント上限値領域ULを有する。カウント上限値領域ULは、ブロックB0〜BNにおけるデータの消去回数の上限値であるカウント上限値が格納される。
より具体的には、拡張管理ステータス領域EMは、フラグ領域EFと、A領域EM_Aと、B領域EM_Bとを有する。フラグ領域EFは、上述のフラグ領域Fと同様に、A領域EM_AとB領域EM_Bのいずれの領域が有効かを示す値が格納される。なお、フラグ領域EFの詳細な内容については、フラグ領域Fと同様であるため、説明を省略する。
A領域EM_A及びB領域EM_Bのそれぞれは、カウント上限値領域UL_A及びカウント上限値領域UL_Bのそれぞれが格納される。すなわち、カウント上限値領域ULは、カウント上限値領域UL_A及びカウント上限値領域UL_Bを有する。したがって、フラグ領域EFに格納される値は、カウント上限値領域UL_Aとカウント上限値領域UL_Bのいずれのカウント上限値が有効であるかを示す値とも言える。A領域EM_A及びB領域EM_Bは、上述のA領域M_AとB領域M_Bと同様に、交互に上限値が更新される。
より具体的には、A領域EM_Aが有効である場合には、A領域EM_Aのカウント上限値領域UL_Aに現在のカウント上限値が格納されている。この場合、カウント上限値を更新するときには、カウント上限値領域UL_Aのカウント値は更新されず、そのカウント上限値の更新後の値が新たな現在のカウント上限値としてカウント上限値領域UL_Bに格納される。その後、B領域EM_Bが有効にされる。一方、B領域EM_Bが有効である場合には、B領域EM_Bのカウント上限値領域UL_Bに現在のカウント上限値が格納されている。この場合、カウント上限値を更新するときには、カウント上限値領域UL_Bのカウント上限値は更新されず、そのカウント上限値の更新後の値が新たな現在のカウント上限値としてカウント上限値領域UL_Aに格納される。その後、A領域EM_Aが有効にされる。
フラグ領域EF、A領域EM_A、及びB領域EM_Bは、管理ステータス用フラッシュメモリ5において、データが消去される最小単位(ブロック)以上のサイズとなる。より具体的には、フラグ領域EF、A領域EM_A、及びB領域EM_Bのそれぞれは、典型的には、異なる1つのブロックで構成される。すなわち、フラグ領域EF、A領域EM_A、及びB領域EM_Bのそれぞれは、典型的には、同一サイズである。しかしながら、例えば、カウント上限値が1つのブロックのデータ量で表現できない場合には、A領域EM_A、及びB領域EM_Bのそれぞれは、複数のブロックで構成されていてもよい。フラグ領域EFも、現実的にはそれに格納される値は1つのブロックのデータ量で表現可能であるが、複数のブロックで構成されていてもよい。また、フラグ領域EF、A領域EM_A、及びB領域EM_Bのそれぞれに格納される値は、必ずしも、それぞれの領域を構成するブロックにおける全てのビットを使用して表現する必要はない。よって、フラグ領域EM、A領域EM_A、及びB領域EM_Bのそれぞれに格納される値は、サイズの異なるデータで表現されていてもよい。
(実施の形態4の動作)
続いて、図15及び図16を参照して、実施の形態3に係るフラッシュシーケンサ6のデータ消去処理について説明する。ステップS31の処理は、実施の形態1におけるステップS1の処理と同様であるため、説明を省略する。
制御部10は、実施の形態3におけるステップS31〜S33と同様に、A領域EM_AとB領域EM_Bが有効か無効かを判定し、カウント許可フラグを読み出し、読み出したカウント許可フラグがカウント許可を示しているか否かを判定する(S61〜S63)。
読み出したカウント許可フラグがカウント許可を示している場合(S63:Yes)、制御部10は、拡張管理ステータス領域EMのフラグ領域EFの値を読み出し、読み出した値に基づいてA領域EM_AとB領域EM_Bのうち、いずれの領域が有効領域であり、いずれが無効領域であるかを判定する(S64)。制御部10は、拡張管理ステータス領域EM内の有効領域に格納されたカウント上限値を読み出す(S65)。制御部10は、実施の形態3におけるステップS35と同様に、現在のカウント値を読み出す(S66)。
制御部10は、読み出した現在のカウント値に1を加算した値が、読み出したカウント上限値以下であるか否かを判定する(S67)。現在のカウント値に1を加算した値がカウント上限値よりも大きい場合(S67:No)、ステータスレジスタ23のエラーフラグに1を格納することで、エラーを通知するステータスデータをエラー割り込み信号としてCPU2に出力してデータ消去処理を終了する(S68)。なお、このエラー(消去回数エラー)を示すエラーフラグは、カウント許可設定エラー、書き込みエラー、及び消去エラーを示すエラーフラグと同一ビットにまとめて定義してもよく、異なるビットに定義してもよい。
現在のカウント値に1を加算した値がカウント上限値以下である場合(S67:Yes)、制御部10は、実施の形態3におけるステップS34、S36〜S39と同様に、無効領域のデータを消去し、現在のカウント値に1を加算した値を無効領域に書き込み、カウント許可フラグを無効領域に書き込み、フラグ領域Fの値を更新し、ブロックBのデータを消去する(S69〜S73)。そして、データ消去処理を終了する。
読み出したカウント許可フラグがカウント禁止を示している場合(S63:No)、制御部10は、ステップS64〜72のいずれの処理も実施することなく、ブロックBのデータを消去してデータ消去処理を終了する(S73)。
続いて、図17を参照して、実施の形態4に係るフラッシュシーケンサ6のコマンドについて説明する。実施の形態4では、図17に示すように、実施の形態3と比較して、さらに、カウント上限値設定コマンドが用意されている。
カウント上限値を設定する場合、CPU2は、周辺バス8を介して、カウント上限値設定コマンドを示すライトデータをコマンド指定レジスタ22に順次書き込む。より具体的には、CPU2は、H’43、H’02、カウント上限値への設定値、H’D0の順番でライトデータをコマンド指定レジスタ22に順次書き込む。
これに応じて、フラッシュシーケンサ6の制御部10は、拡張管理ステータス領域EMのカウント上限値領域ULのカウント上限値を、ライトデータとして書き込まれた設定値に基づいて変更する。
なお、カウント上限値は、拡張管理ステータス領域EMのみに格納されているため、アドレス指定レジスタ21に書き込まれたアドレスデータは考慮されない。しかしながら、これに限られない。例えば、管理ステータス用フラッシュメモリ5のうち、カウント上限値領域ULのアドレスを指定してカウント上限値設定コマンドが発行された場合には、エラーとして扱わず、カウント上限値の変更を可能としてもよい。このようにしても、フラグ領域F、カウンタC(A領域M_A、B領域M_A)のアドレスが指定された場合にエラーとして扱いさえすれば、消去回数(カウント値)の改ざんを防止することができるからである。
続いて、図18を参照して、本実施の形態4に係るフラッシュシーケンサ6のカウント上限値設定処理について説明する。
フラッシュシーケンサ6の制御部10は、コマンド受信部12によってカウント上限値設定コマンドを示すライトデータが受信された場合、拡張管理ステータス領域EMのフラグ領域EFの値を読み出す。制御部10は、読み出した値に基づいてA領域EM_AとB領域EM_Bのいずれの領域が有効領域であり、いずれが無効領域であるかを判定する(S71)。制御部10は、拡張管理ステータス領域EM内の有効領域に格納された現在のカウント上限値を読み出す(S72)。制御部10は、カウント上限値設定コマンドにおいてコマンド指定レジスタ22に格納された設定値が、読み出した現在のカウント上限値未満であるか否かを判定する(S73)。
設定値がカウント上限値未満であると判定した場合(S73:Yes)、制御部10は、拡張管理ステータス領域EM内の無効領域のデータを消去して、新たなカウント上限値を書き込み可能な状態にする(S74)。制御部10は、設定値を新たなカウント上限値として無効領域に書き込む(S75)。制御部10は、新たなカウント上限値が格納された領域を有効領域として示し、他方の領域を無効領域として示すようにフラグ領域Fの値を更新する(S76)。
設定値がカウント上限値以上であると判定した場合(S73:No)、ステータスレジスタ23のエラーフラグに1を格納することで、エラーを通知するステータスデータをエラー割り込み信号をCPU2に出力してカウント上限値設定処理を終了する(S77)。なお、このエラー(カウント上限値設定エラー)を示すエラーフラグは、消去回数エラー、カウント許可設定エラー、書き込みエラー、及び消去エラーを示すエラーフラグと同一ビットにまとめて定義してもよく、異なるビットに定義してもよい。
(実施の形態4の特徴および効果)
以上に説明したように、本実施の形態4では、カウンタCが示すカウント値が、カウント上限値(上限値格納領域)に格納されたカウント上限値を超える場合には、ブロックBにおけるデータの消去を抑止するようにしている。これによれば、悪意のある第三者がデータ格納用フラッシュメモリ4におけるデータの改ざんを繰り返し、ソフトウェアのデバッグ等を実施すること防止できる。
また、本実施の形態4では、カウント上限値を変更する場合、カウント値は変更されないため、実施の形態1や実施の形態3と同様にカウント値を保護することができる。
また、本実施の形態4では、A領域EM_A及びB領域EM_Bのうち、フラグ領域Fの値が有効と示さない領域に対して変更後のカウント上限値を格納し、その領域を有効と示すようにフラグ領域Fの値を更新するようにしている。すなわち、カウント上限値設定コマンドに応じた処理フローは、データ消去における管理ステータス用フラッシュメモリの処理フローと同様となる。よって、図6を参照して説明したように、悪意のある第三者が、マイクロコントローラ1のリセット又は電源切断・投入等の手段によって、フラッシュシーケンサ6のカウント上限値設定処理を中断させたとしても、カウント上限値を改ざんすることができない。
また、本実施の形態4では、CPU2から受信したカウント上限値設定コマンドによって、カウント上限値を低くする変更が要求された場合にはカウント上限値の変更を許容し、カウント上限値を高くする変更が要求された場合にはカウント上限値の変更を抑止するようにしている。これによれば、悪意のある第三者がカウント上限値を増加させて、データ格納用フラッシュメモリ4の改ざんを継続することを防止できる。
また、上述の説明では、実施の形態3に対してカウント上限値によるデータ消去抑止機能及びカウント上限値設定機能を追加した形態について説明したが、実施の形態1又は実施の形態2に対してもデータ消去抑止機能及びカウント上限値設定機能を追加した形態についても当然に実施可能である。
また、カウント上限値領域ULを、カウンタC及びカウント許可フラグ領域Aと同様に、管理ステータス領域M0〜MNのそれぞれに有するようにしてもよい。この場合、制御部10は、ブロックBにおけるデータ消去を許容するか抑止するかを、そのブロックBに対応する管理ステータス領域MにおいてカウンタCのカウント値がカウント上限値領域ULのカウント上限値を超えるか否かによって判定する。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
上記実施の形態1〜4では、マイクロコントローラ1の例について説明したが、これに限られない。上述のフラッシュメモリ4、5及びフラッシュシーケンサ6等の適用対象となる情報処理装置は、マイクロコントローラに限られず、パーソナルコンピュータ等であってもよい。ただし、パーソナルコンピュータ等に適用する場合には、好ましくは、フラッシュメモリ4、5とフラッシュシーケンサ6が1つのチップに含まれているとよい。そのようにすることで、フラッシュメモリ4、5をフラッシュシーケンサ6を介さずに他の装置に接続することで、不正にフラッシュメモリ4、5のデータを改ざん可能とすることを防止することができる。
上記実施の形態1〜4では、データが格納される領域(ブロックB)と、そのデータの消去回数を示すカウント値が格納される領域(カウンタC)とを異なるフラッシュメモリ4、5に有する例について説明したが、これに限られない。すなわち、ブロックBと管理ステータス領域M(カウンタC)とを同一のフラッシュメモリに有するようにしてもよい。このようにしても、管理ステータス領域M(カウンタC)のアドレスを指定したデータ書込み及びデータ消去を抑止すれば、消去回数(カウント値)の改ざんを防止することができるからである。
しかしながら、上述したように、フラッシュメモリは、その全て又は殆どのブロック(データの最小消去単位)が同一サイズとされることが多い。一方で、管理ステータス領域Mにおけるデータ(フラグ領域Fの値、カウント値)は、ブロックBにおけるデータ(例えばソフトウェア)よりもサイズが小さい。そのため、それらのデータを同一のフラッシュメモリに格納するようにすることで、管理ステータス領域Mにおけるデータを、ブロックBと同一サイズのブロックに格納してしまうとフラッシュメモリにおいて実質的に利用されない無駄な領域が生じてしまう。したがって、好ましくは、実施の形態1〜4において説明したように、ブロックBと管理ステータス領域M(カウンタC)とを異なるフラッシュメモリに有するようにするとよい。そのようにすることで、管理ステータス用フラッシュメモリ5として、データ格納用フラッシュメモリ4よりもブロックサイズの小さいフラッシュメモリを採用することで、上述の無駄を無くし、全体的なフラッシュメモリの容量を削減することができる。また、ブロックサイズを小さくすることができるため、カウント値等の更新時におけるデータ消去及びデータ書き込み時間を短縮することができる。
例えば、マイクロコントローラでは、ブロックサイズが大きいコードフラッシュメモリ(プログラム格納用フラッシュメモリ)と、それよりもブロックサイズの小さいデータフラッシュメモリ(データ格納用フラッシュメモリ)とを混載する場合がある。このような場合、管理ステータス用フラッシュメモリ4として、データフラッシュメモリを利用すると有効である。
また、上記実施の形態1〜4では、管理ステータス領域MがA領域M_AとB領域M_Bとを有するようにし、カウンタC_A、C_B及びカウント許可フラグ領域A_A、A_Bを、A領域M_AとB領域M_Bのそれぞれに有する例について説明したが、これに限られない。管理ステータス領域Mは、カウンタと、カウント許可フラグ領域を1つだけ有するようにしてもよい。しかしながら、好ましくは、上述したように、A領域M_AとB領域M_Bのデータを交互に更新するようにすることで、図6を参照して説明したように、データが不正に改ざんされないようにすることができる。
また、上記実施の形態3では、カウント許可フラグを変更可能としているが、カウント許可フラグとして、予め定められた固定値を有するようにしてもよい。上述の実施の形態4でも、カウント上限値を変更可能としているが、カウント上限値として、予め定められた固定値を有するようにしてもよい。
また、上記実施の形態1〜4では、カウンタCがカウント値として消去回数そのものを示す例について説明したが、これに限られない。例えば、カウンタCがカウント値として、消去回数に所定の値を乗じた値を示すようにしてもよい。すなわち、この場合には、制御部10は、カウント値に所定の値を加算することで、カウントCのカウント値を更新する。
1 マイクロコントローラ
2 CPU
3 RAM
4 データ格納用フラッシュメモリ
5 管理ステータス用フラッシュメモリ
6 フラッシュシーケンサ
7 周辺回路
8 周辺バス
10 制御部
11 アドレス受信部
12 コマンド受信部
13 ステータス送信部
21 アドレス指定レジスタ
22 コマンド指定レジスタ
23 ステータスレジスタ
B、B0〜BN ブロック
M、M0〜MN 管理ステータス領域
C、C0〜CN、C_A、C_B、C0_A〜CN_A、C0_B〜CN_B カウンタ
F、F0〜FN、EF フラグ領域
M_A、M0_A〜MN_A、EM_A A領域
M_B、M0_B〜MN_B、EM_B B領域
A、A0〜AN、A_A、A_B、A0_A〜AN_A、A0_B〜AN_B カウント許可フラグ領域
EM 拡張管理ステータス領域
UL、UL_A、UL_B カウント上限値領域

Claims (12)

  1. データが格納されるデータ格納領域と、前記データ格納領域におけるデータの消去回数を示す消去回数データが格納される消去回数格納領域とを有する少なくとも1つのフラッシュメモリと、
    プロセッサと、前記少なくとも1つのフラッシュメモリとの間に接続される制御回路と、を備え、
    前記制御回路は、前記データ格納領域に格納されるデータの前記プロセッサによる変更を許容し、前記消去回数格納領域に格納される消去回数データの前記プロセッサによる変更を抑止する、
    情報処理装置。
  2. 前記制御回路は、前記消去回数格納領域に格納された消去回数データを更新した後に、前記データ格納領域に格納されたデータを消去する、
    請求項1に記載の情報処理装置。
  3. 前記消去回数格納領域は、前記消去回数データが格納される第1の消去回数格納領域及び第2の消去回数格納領域を含み、
    前記少なくとも1つのフラッシュメモリは、前記第1の消去回数格納領域と、前記第2の消去回数格納領域のいずれが有効か示す領域情報が格納される領域情報格納領域とを含み、
    前記制御回路は、前記データ格納領域におけるデータを消去する場合、前記第1の消去回数格納領域及び前記第2の消去回数格納領域のうち、前記領域情報が有効と示す消去回数格納領域から前記消去回数データを取得し、取得した消去回数データを更新して他方の消去回数格納領域に格納し、当該他方の消去回数格納領域を有効と示すように前記領域情報を更新する、
    請求項1に記載の情報処理装置。
  4. 前記少なくとも1つのフラッシュメモリは、複数の前記データ格納領域と、複数の前記第1の消去回数格納領域と、複数の前記第2の消去回数格納領域とを有し、
    前記制御回路は、前記データを消去するデータ格納領域に対応する消去回数格納領域については、前記領域情報が有効と示す消去回数格納領域から前記消去回数データを取得し、取得した消去回数データを更新して他方の消去回数格納領域に格納し、それ以外の消去回数格納領域については、前記領域情報が有効と示す消去回数格納領域から取得した消去回数データをそのまま他方の消去回数格納領域に格納する、
    請求項3に記載の情報処理装置。
  5. 前記少なくとも1つのフラッシュメモリは、複数の前記データ格納領域を有し、
    前記少なくとも1つのフラッシュメモリは、さらに、前記複数のデータ格納領域のそれぞれに対応するように、複数の前記消去回数格納領域と、前記消去回数データの更新の許可/禁止を示す許可情報が格納される複数の許可情報格納領域とを有し、
    前記制御回路は、許可を示す許可情報が格納された許可情報格納領域に対応する消去回数格納領域については前記消去回数データを更新し、禁止を示す許可情報が格納された許可情報格納領域に対応する消去回数格納領域については前記消去回数データの更新を抑止する、
    請求項1に記載の情報処理装置。
  6. 前記プロセッサは、前記許可情報の変更を要求する変更要求データを前記制御回路に送信し、
    前記制御回路は、前記プロセッサから受信した変更要求データによって、前記許可情報の禁止から許可への変更が要求された場合には前記許可情報の変更を許容し、前記許可情報の許可から禁止への変更が要求された場合には前記許可情報の変更を抑止する、
    請求項5に記載の情報処理装置。
  7. 前記許可情報格納領域は、前記許可情報が格納される第1の許可情報格納領域及び第2の許可情報格納領域を含み、
    前記少なくとも1つのフラッシュメモリは、さらに、前記第1の許可情報格納領域と、前記第2の許可情報格納領域のいずれが有効か示す領域情報が格納される領域情報格納領域とを含み、
    前記制御回路は、前記許可情報を変更する場合、前記第1の許可情報格納領域及び前記第2の許可情報格納領域のうち、前記領域情報が有効と示さない許可情報格納領域に対して変更後の許可情報を格納し、当該許可情報格納領域を有効と示すように前記領域情報を更新する、
    請求項6に記載の情報処理装置。
  8. 前記少なくとも1つのフラッシュメモリは、さらに、前記消去回数の上限値が格納される上限値格納領域を有し、
    前記制御回路は、前記消去回数データが示す消去回数が、前記上限値格納領域に格納された上限値を超える場合には、前記データ格納領域におけるデータの消去を抑止する、
    請求項1に記載の情報処理装置。
  9. 前記プロセッサは、前記上限値の変更を要求する上限値変更要求データを前記制御回路に送信し、
    前記制御回路は、前記プロセッサから受信した上限値変更要求データによって、前記上限値を低くする変更が要求された場合には前記上限値の変更を許容し、前記上限値を高くする変更が要求された場合には前記上限値の変更を抑止する、
    請求項8に記載の情報処理装置。
  10. 前記上限値格納領域は、前記上限値が格納される第1の上限値格納領域及び第2の上限値格納領域を含み、
    前記少なくとも1つのフラッシュメモリは、さらに、前記第1の上限値格納領域と、前記第2の上限値格納領域のいずれが有効か示す領域情報が格納される領域情報格納領域とを含み、
    前記制御回路は、前記上限値を変更する場合、前記第1の上限値格納領域及び前記第2の上限値格納領域のうち、前記領域情報が有効と示さない上限値格納領域に対して変更後の上限値を格納し、当該上限値格納領域を有効と示すように前記領域情報を更新する、
    請求項9に記載の情報処理装置。
  11. 前記少なくとも1つのフラッシュメモリは、前記データ格納領域を含む第1のブロックを有する第1のフラッシュメモリと、前記消去回数格納領域を含む第2のブロックを有する第2のフラッシュメモリとを有し、
    前記第2のブロックは、前記第1のブロックよりもサイズの小さいデータ消去単位である、
    請求項1に記載の情報処理装置。
  12. データが格納されるデータ格納領域と、前記データ格納領域におけるデータの消去回数を示す消去回数データが格納される消去回数格納領域とを有する少なくとも1つのフラッシュメモリに対するデータ変更要求を、プロセッサから受け、
    前記データ変更要求において変更対象として、前記データ格納領域が指定された場合には前記データを変更し、前記消去回数格納領域が指定された場合には前記消去回数データを変更しない、
    フラッシュメモリ制御方法。
JP2015006688A 2015-01-16 2015-01-16 情報処理装置 Active JP6421042B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015006688A JP6421042B2 (ja) 2015-01-16 2015-01-16 情報処理装置
US14/990,668 US20160210070A1 (en) 2015-01-16 2016-01-07 Information processing apparatus and flash memory control method
CN201610028282.5A CN105808456A (zh) 2015-01-16 2016-01-15 信息处理设备和闪速存储器控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015006688A JP6421042B2 (ja) 2015-01-16 2015-01-16 情報処理装置

Publications (3)

Publication Number Publication Date
JP2016133874A true JP2016133874A (ja) 2016-07-25
JP2016133874A5 JP2016133874A5 (ja) 2018-01-11
JP6421042B2 JP6421042B2 (ja) 2018-11-07

Family

ID=56407937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015006688A Active JP6421042B2 (ja) 2015-01-16 2015-01-16 情報処理装置

Country Status (3)

Country Link
US (1) US20160210070A1 (ja)
JP (1) JP6421042B2 (ja)
CN (1) CN105808456A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3594818A1 (en) 2018-07-12 2020-01-15 Renesas Electronics Corporation Information processing device and control methods

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017174481A (ja) * 2016-03-24 2017-09-28 ルネサスエレクトロニクス株式会社 半導体装置
US10635325B2 (en) * 2016-11-22 2020-04-28 Arm Limited Managing persistent storage writes in electronic systems
WO2020240234A1 (en) * 2019-05-31 2020-12-03 Micron Technology, Inc. Method for checking the erasing phase of a memory device
TWI694449B (zh) * 2019-09-16 2020-05-21 旺宏電子股份有限公司 記憶體系統以及記憶體操作方法
US11194515B2 (en) 2019-09-16 2021-12-07 Macronix International Co., Ltd. Memory system, method of operating memory, and non-transitory computer readable storage medium
US11556272B2 (en) * 2020-09-18 2023-01-17 Kioxia Corporation System and method for NAND multi-plane and multi-die status signaling

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527924A (ja) * 1991-07-12 1993-02-05 Internatl Business Mach Corp <Ibm> 半導体メモリを用いた外部記憶システム及びその制御方法
JPH06124596A (ja) * 1991-11-28 1994-05-06 Hitachi Ltd フラッシュメモリを使用した記憶装置
JPH0877074A (ja) * 1994-09-09 1996-03-22 Hitachi Ltd フラッシュメモリを用いた記憶装置システム
JPH10247164A (ja) * 1997-03-05 1998-09-14 Sony Corp Icメモリー装置
JPH11110983A (ja) * 1997-10-06 1999-04-23 Hitachi Ltd フラッシュメモリの消去回数管理方法及びそれを用いたデータ処理装置
JP2002011206A (ja) * 2000-06-30 2002-01-15 Omron Corp 遊技機の制御装置
WO2008066058A1 (fr) * 2006-11-30 2008-06-05 Kabushiki Kaisha Toshiba Système mémoire

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US709039A (en) * 1901-05-25 1902-09-16 Fred Clarkson Pickett Combined electric and gas lighting system.
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
JP2003263421A (ja) * 2002-03-07 2003-09-19 Mitsubishi Electric Corp マイクロコンピュータ
JP2004318940A (ja) * 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置
JP4335659B2 (ja) * 2003-12-19 2009-09-30 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
JP5792019B2 (ja) * 2011-10-03 2015-10-07 株式会社日立製作所 半導体装置
US9256525B2 (en) * 2011-12-02 2016-02-09 Kabushiki Kaisha Toshiba Semiconductor memory device including a flag for selectively controlling erasing and writing of confidential information area
US9984007B2 (en) * 2014-03-28 2018-05-29 Samsung Electronics Co., Ltd. Storage system and method for performing and authenticating write-protection thereof
CN104156317A (zh) * 2014-08-08 2014-11-19 浪潮(北京)电子信息产业有限公司 一种非易失性闪存的擦写管理方法及系统
KR102282962B1 (ko) * 2014-12-22 2021-07-30 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0527924A (ja) * 1991-07-12 1993-02-05 Internatl Business Mach Corp <Ibm> 半導体メモリを用いた外部記憶システム及びその制御方法
JPH06124596A (ja) * 1991-11-28 1994-05-06 Hitachi Ltd フラッシュメモリを使用した記憶装置
JPH0877074A (ja) * 1994-09-09 1996-03-22 Hitachi Ltd フラッシュメモリを用いた記憶装置システム
JPH10247164A (ja) * 1997-03-05 1998-09-14 Sony Corp Icメモリー装置
JPH11110983A (ja) * 1997-10-06 1999-04-23 Hitachi Ltd フラッシュメモリの消去回数管理方法及びそれを用いたデータ処理装置
JP2002011206A (ja) * 2000-06-30 2002-01-15 Omron Corp 遊技機の制御装置
WO2008066058A1 (fr) * 2006-11-30 2008-06-05 Kabushiki Kaisha Toshiba Système mémoire

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3594818A1 (en) 2018-07-12 2020-01-15 Renesas Electronics Corporation Information processing device and control methods
JP2020009347A (ja) * 2018-07-12 2020-01-16 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法
US11137937B2 (en) 2018-07-12 2021-10-05 Renesas Electronics Corporation Information processing device and control method determining valid data in multiple memory areas based on multiple valid flags
JP7089423B2 (ja) 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法

Also Published As

Publication number Publication date
US20160210070A1 (en) 2016-07-21
JP6421042B2 (ja) 2018-11-07
CN105808456A (zh) 2016-07-27

Similar Documents

Publication Publication Date Title
JP6421042B2 (ja) 情報処理装置
JP6306578B2 (ja) メモリ保護装置及び保護方法
US6952778B1 (en) Protecting access to microcontroller memory blocks
KR100734340B1 (ko) 상이한 메모리 기술 특성을 갖는 분할 메모리 장치
JP5891274B2 (ja) データ記憶装置とその異常電圧からの保護方法
US9213846B2 (en) Using flash storage device to prevent unauthorized use of software
US20150058979A1 (en) Processing system
US11100011B2 (en) Flash translation layer with hierarchical security
JP2004310477A (ja) メモリカード
JP2004258946A (ja) メモリカード
JP7020989B2 (ja) 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
JP6080180B2 (ja) 不揮発性メモリでのマーカプログラミング
JP6963534B2 (ja) メモリ保護回路及びメモリ保護方法
JP5464226B2 (ja) 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
US20130080690A1 (en) Method to emulate eeprom using flash memory
US20040186947A1 (en) Access control system for nonvolatile memory
EP1079340A2 (en) Integrated circuit card protected from unauthorized access
JP7369701B2 (ja) 処理回路上で実行されるべきプログラムをデバッグするときにメタデータにアクセスする方法
JP5520880B2 (ja) フラッシュメモリ装置
US20190042116A1 (en) Techniques for preventing memory corruption
JP2019074797A (ja) 不揮発性メモリのデータ書換方法及び半導体装置
JP5932951B2 (ja) 消去カウンタをインクリメントするための方法および装置
JP2011060082A (ja) メモリ制御装置
US20220113879A1 (en) System with Increasing Protected Storage Area and Erase Protection
JP2007064762A (ja) 半導体装置、テストモード制御回路

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181015

R150 Certificate of patent or registration of utility model

Ref document number: 6421042

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150