JP5055850B2 - フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム - Google Patents

フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム Download PDF

Info

Publication number
JP5055850B2
JP5055850B2 JP2006165977A JP2006165977A JP5055850B2 JP 5055850 B2 JP5055850 B2 JP 5055850B2 JP 2006165977 A JP2006165977 A JP 2006165977A JP 2006165977 A JP2006165977 A JP 2006165977A JP 5055850 B2 JP5055850 B2 JP 5055850B2
Authority
JP
Japan
Prior art keywords
flash memory
command
command type
program
status register
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
JP2006165977A
Other languages
English (en)
Other versions
JP2007334646A (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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2006165977A priority Critical patent/JP5055850B2/ja
Publication of JP2007334646A publication Critical patent/JP2007334646A/ja
Application granted granted Critical
Publication of JP5055850B2 publication Critical patent/JP5055850B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、フラッシュメモリのコマンドタイプを判定する技術およびフラッシュメモリの書き込み/消去を制御する技術に関する。
プリンタ、スキャナ等の情報機器においては、ファームウェアがフラッシュメモリに格納されている。例えば、プリンタの場合、プリンタの通常モードを制御するプログラムであるメインプログラムがメインプログラムセクタに格納されている。プリンタの起動処理を実行する起動プログラムや、プリンタの書き換えモードを制御してフラッシュメモリを書き換える書き換えモードプログラムなどはブートセクタに格納されている。
フラッシュメモリの書き換えは、セクタ単位で行われる。通常、情報機器への新しい機能の追加や、ファームウェアのバグ修正や、特定顧客向けのカスタマイズなどのために、情報機器のファームウェアはバージョンアップされるので、フラッシュメモリの書き換えは比較的頻繁に行われる(例えば、特許文献1参照)。
特開2004−13536号公報
フラッシュメモリの書き換え/消去を制御するためには、制御コマンド(ライトコマンド、イレースコマンド等)が用いられるが、現在、フラッシュメモリのコマンドタイプには大きくAMD系(コマンド体系がAMD社製のROMに準拠しているもの))とINTEL系(コマンド体系がINTEL社製のROMに準拠しているもの)の2つがある。しかしながら、プリンタのファームウェアからコマンドを送ることによってフラッシュメモリへの書き込み/消去をおこなうにあたり、フラッシュメモリのコマンドタイプをファームウェアから認識する技術が確立されておらず、1つのファームウェアからは決め打ちしたどちらか1種類のコマンドタイプにしか対応できなかった。
本発明は、コマンドタイプをファームウェアから判定することを目的とする。また、コマンドタイプの異なるフラッシュメモリに対する書き込み/消去の制御を1つのファームウェアにて実現することを目的とする。
本発明は、フラッシュメモリのコマンドタイプを判定する方法であって、前記フラッシュメモリをCFIコマンドで照会し、前記フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得し、取得したコマンドセットIDに基づいて前記フラッシュメモリのコマンドタイプを判定する。また、フラッシュメモリのコマンドタイプを判定する方法であって、前記フラッシュメモリをステータスレジスタクリアコマンドで照会し、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する。この構成によれば、CFIコマンドまたはステータスレジスタクリアコマンドでの照会を行い、照会可否の結果を利用してフラッシュメモリのコマンドタイプを判定することが可能となる。
本発明において、前記CFIコマンドで照会不能なフラッシュメモリをステータスレジスタクリアコマンドで照会し、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する。この構成によれば、CFIコマンドに準拠していないフラッシュメモリであっても、さらに、ステータスレジスタクリアコマンドでの照会を行うことで、フラッシュメモリのコマンドタイプを判定することができる。
本発明は、上記フラッシュメモリのコマンド判定の結果に基づいて選択した制御プログラムで前記フラッシュメモリを制御する。この構成によれば、コマンド判定の結果に基づいてフラッシュメモリを制御する制御プログラムを選択することができるので、コマンドタイプの異なるフラッシュメモリに対する制御の自動化を図ることができる。
本発明は、異なるコマンドタイプに対応し、フラッシュメモリを制御する複数のドライバプログラムと、上記フラッシュメモリのコマンド判定の結果に基づいて判定したコマンドタイプに対応するドライバプログラムを選択する手段とを備える。この構成によれば、コマンド判定の結果に基づいて判定したコマンドタイプに対応するドライバプログラムを選択することで、コマンドタイプの異なるフラッシュメモリに対する書き込み/消去の制御を1つのファームウェアにて実現することが可能となる。
本発明によれば、CFIコマンドまたはステータスレジスタクリアコマンドでの照会を行い、照会可否の結果を利用してフラッシュメモリのコマンドタイプを判定することが可能となる。また、本発明によれば、コマンド判定の結果に基づいて判定したコマンドタイプに対応するドライバプログラムを選択することで、コマンドタイプの異なるフラッシュメモリに対する書き込み/消去の制御を1つのファームウェアにて実現することが可能となる。
例えば、プリンタ生産開始当初はAMD系のコマンドタイプをもったフラッシュメモリが安価であったが、途中からINTEL系のコマンドタイプをもったフラッシュメモリの方が安価になったと言う場合に、従来であれば実装するフラッシュメモリのファームウェアを変更しないと後者に切り替えることができなかったが、この発明によりファームウェアの変更なしに後者に切り替えることが可能になる。
図1は本発明の実施形態におけるコマンドタイプ判定プログラムのフロー図を示す。本実施形態では、実装されているフラッシュメモリがCFI(Common Flash Interface)に準拠している場合は、CFIコマンドを利用してフラッシュメモリのコマンドタイプを判定する。CFIに準拠していない場合は、ステータスレジスタクリアコマンドを利用してフラッシュメモリのコマンドタイプを判定する。このように本実施形態では、この2段構成およびステータスレジスタクリアコマンドを使ってフラッシュメモリのコマンドタイプを判定する。
CFIコマンドは、全フラッシュメモリ共通のコマンド群であるが、これに準拠していないフラッシュメモリも普通にある。また、CFIコマンドに対応したフラッシュメモリは、自分がどのコマンドタイプに該当するかをコマンドセットIDとしてもっており、CFIコマンドにて取得することができる。
図1に示すように、本実施形態のコマンドタイプ判定プログラムでは、まず、対象となるフラッシュメモリをCFIコマンドで照会可能か否かを判定する(ステップS11)。CFIコマンドでの照会が可能な場合(ステップS11:Yes)、CFIコマンドにてコマンドセットIDを取得する(ステップS12)。そして、コマンドセットIDからコマンドタイプを判定する(ステップS13)。コマンドタイプは、コマンドセットIDから一意に決まる。
CFIコマンドでの照会が不能な場合(ステップS11:No)は、ステータスレジスタクリアコマンドでの照会が可能か否かを判定する(ステップS14)。そして、ステータスレジスタクリアコマンドでの照会が不能な場合(ステップS14:No)、コマンドタイプはAMD系と判断し(ステップS15)、ステータスレジスタクリアコマンドでの照会が可能な場合(ステップS14:Yes)、コマンドタイプはINTEL系と判断する(ステップS16)。
次に、コマンドタイプ判定の具体例について説明する。ここではROMへのアクセスはワードアクセスであるとして説明する。
図2は本実施形態のコマンドタイプ判定フローを示す。本実施形態では、まず、CFIクエリストラクチャ読み出しを行う(ステップS21)。この場合、読み出しアドレスは、格納データがQ,R,Y以外であることを保証できる領域のアドレスとする。書き換え対象セクタは、セクタイレーズ中に電源断されると値が不安定となるため書き換え非対象セクタのアドレスとするのが望ましい。
次に、CFIクエリストラクチャ読み出しによりQ,R,Yの読み出しが出来たか否か判定する(ステップS22)。CFIに準拠しているROMであれば、Q,R,Yを読み出すことができる。
Q,R,Yの読み出しが出来た場合(ステップS22:YES)は、CFIコマンドセットID読み出しを行う(ステップS23)。そして、コマンドセットIDの値を調べる(ステップS24)。CFIに準拠していれば、コマンドセットIDによってコマンドタイプを一意に特定できる。すなわち、コマンドセットIDに従って、コマンドタイプがAMD系(ステップS25)、Intel系(ステップS26)と識別する。Q,R,Yの読み出しが不可能な場合(ステップS22:NO)は、CFIに準拠していない場合であり、CFIコマンドを使用せずにAMD系/Intel系判断処理を行う(ステップS29)。
CFIコマンドを使用しないAMD系/Intel系の判定処理は以下の手順にて行う。判定はIntel系のROMにしかないステータスレジスタ読み出しコマンドを利用して行う。すなわち、ステータスレジスタ読み出しコマンドを利用して、ステータスレジスタ読み出しコマンドでステータスレジスタが読み出せた場合は、Intel系(ステップS31)と識別し、ステータスレジスタ読み出しコマンドでステータスレジスタが読み出せない場合はAMD系(ステップS32)と識別する。
図3は図2のステップS29のCFIコマンドを使用しないAMD系/Intel系判定処理の詳細フローチャートを示す。このフローでは、Intel系コマンドのステータスレジスタクリアコマンド(50H)を送る(ステップS42)。すなわち、ROMのステータスレジスタをクリアする。これによりROMのステータス値は必ずFFh以外の値になる。そして、格納データがFFhであるROM上のアドレスを取得する(ステップS43)。ここで取得したアドレスが「adr」であるとする。
次に、Intel系コマンドのステータスレジスタ読み出しコマンド(70H)を送りステータスをアドレスadrから読み出す(ステップS44)。読み出したステータスが「data」であるとする。すなわち、ステップS43で取得したアドレスadrからROMのステータスを読み出す。ROMのステータス値はステータスレジスタ読み出しコマンドを送ればROM上の任意のアドレスから読み出せる。そして、Intel系コマンドのリセットコマンドを送る(ステップS45)。
次に、data=FFhかどうか判定する(ステップS46)。すなわち、ステップ44でFFhが読めたということはステータスレジスタ読み出しコマンドをサポートしていないということであり、つまりIntel系のROMではなくAMD系のROMであるということが分かる。逆にFFh以外が読めればステータスレジスタ読み出しコマンドをサポートしており、Intel系のROMであると判断できる。すなわち、判定結果に応じて、Intel系(ステップS47)またはAMD系(ステップS48)と識別する。
本発明の実施形態におけるコマンドタイプ識別プログラムのフロー図 本発明の実施形態におけるコマンドタイプ認識フロー図 本発明の実施形態におけるCFIコマンドを使用しないAMD系/Intel系判定処理の詳細フローチャート

Claims (6)

  1. フラッシュメモリのコマンドタイプを判定する方法であって、
    前記フラッシュメモリをCFIコマンドで照会し、該照会が可能な場合、前記フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得し、前記照会が不能な場合、前記フラッシュメモリをステータスレジスタクリアコマント゛で照会し、取得した前記コマンドセットID又は前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定するコマンドタイプ判定方法。
  2. フラッシュメモリのコマンドタイプを判定するためにコンピュータを
    前記フラッシュメモリをCFIコマンドで照会する手段、前記照会が可能な場合、前記フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得する手段、前記照会が不能な場合、前記フラッシュメモリをステータスレジスタクリアコマント゛で照会する手段、取得した前記コマンドセットID又は前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する手段として機能させるためのプログラム。
  3. 請求項1記載の方法により判定した結果に基づいて選択した制御プログラムで前記フラッシュメモリを制御する制御方法。
  4. コンピュータを、請求項2に記載のプログラムの実行により判定した結果に基づいて選択した制御プログラムで前記フラッシュメモリを制御する手段として機能させるためのプログラム。
  5. 異なるコマンドタイプに対応し、フラッシュメモリを制御する複数のドライバプログラムと、請求項1記載の方法により判定したコマンドタイプに対応するドライバプログラムを選択する手段とを備える制御装置。
  6. 異なるコマンドタイプに対応し、フラッシュメモリを制御する複数のドライバプログラムと、請求項2に記載のプログラムの実行により判定したコマンドタイプに対応するドライバプログラムを選択する手段とを備える制御装置。
JP2006165977A 2006-06-15 2006-06-15 フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム Expired - Fee Related JP5055850B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006165977A JP5055850B2 (ja) 2006-06-15 2006-06-15 フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006165977A JP5055850B2 (ja) 2006-06-15 2006-06-15 フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム

Publications (2)

Publication Number Publication Date
JP2007334646A JP2007334646A (ja) 2007-12-27
JP5055850B2 true JP5055850B2 (ja) 2012-10-24

Family

ID=38934067

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006165977A Expired - Fee Related JP5055850B2 (ja) 2006-06-15 2006-06-15 フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム

Country Status (1)

Country Link
JP (1) JP5055850B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3681323B2 (ja) * 2000-06-30 2005-08-10 シャープ株式会社 メモリカード
US7039796B2 (en) * 2002-06-04 2006-05-02 Hewlett-Packard Development Company, L.P. Method and system of locating a position in memory at which to store incoming firmware image
JP2004185290A (ja) * 2002-12-03 2004-07-02 Alps Electric Co Ltd フラッシュメモリに対するリード・ライト方法
JP2004227635A (ja) * 2003-01-21 2004-08-12 Renesas Technology Corp 不揮発性半導体メモリおよび不揮発性半導体メモリを内蔵したマイクロコンピュータ

Also Published As

Publication number Publication date
JP2007334646A (ja) 2007-12-27

Similar Documents

Publication Publication Date Title
JP5137002B2 (ja) メモリコントローラ
US6601132B2 (en) Nonvolatile memory and method of writing data thereto
US8769188B2 (en) Nonvolatile memory controller and method for writing data to nonvolatile memory
US20070043901A1 (en) Optical disc recording system with shared non-volatile memory design
JP2004295865A (ja) 自動ブーティングシステム及び自動ブーティング方法
US20160188233A1 (en) Method for interrupting cleaning procedure of flash memory
JP4234766B1 (ja) 電子機器およびその制御方法
JP2006302342A (ja) 不揮発性半導体メモリ装置とメモリシステム
JP2009187604A (ja) 磁気ディスク装置
KR100704618B1 (ko) 플래시 메모리의 데이터 복구 장치 및 방법
JP5073977B2 (ja) 半導体記憶装置のベリファイ制御方式及びその方法
JP5055850B2 (ja) フラッシュメモリのコマンドタイプ判定方法、フラッシュメモリのコマンドタイプ判定プログラム、フラッシュメモリの制御方法、フラッシュメモリの制御プログラム
JP5884663B2 (ja) 電子制御装置およびデータ書換システム
KR101627322B1 (ko) 비-휘발성 버퍼를 이용한 데이터 저장 장치 및 방법
JP3681323B2 (ja) メモリカード
JP4740233B2 (ja) 不揮発性記憶装置、不揮発性メモリのコントローラ、及び不揮発性記憶システム
US7783824B2 (en) Data processing device having flash ROM, and a flash ROM data erasing method
JP4936271B2 (ja) 半導体記憶装置
US20180081796A1 (en) Data Storage Device and Data Writing Method Thereof
JP4213140B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2007052558A (ja) フラッシュメモリ書換え装置、フラッシュメモリ書換え方法及びフラッシュメモリ書換えプログラム
JP2007069514A (ja) インクジェット記録装置
JP4235624B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP5207434B2 (ja) メモリシステム
JP2005316831A (ja) 電子制御装置及びデータ調整方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080331

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120411

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20120411

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120716

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

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5055850

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees