JP2021506014A - 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法 - Google Patents

単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法 Download PDF

Info

Publication number
JP2021506014A
JP2021506014A JP2020531080A JP2020531080A JP2021506014A JP 2021506014 A JP2021506014 A JP 2021506014A JP 2020531080 A JP2020531080 A JP 2020531080A JP 2020531080 A JP2020531080 A JP 2020531080A JP 2021506014 A JP2021506014 A JP 2021506014A
Authority
JP
Japan
Prior art keywords
memory device
firmware image
data
firmware
mapping
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
JP2020531080A
Other languages
English (en)
Other versions
JP6814327B1 (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.)
Cypress Semiconductor Corp
Original Assignee
Cypress Semiconductor 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 Cypress Semiconductor Corp filed Critical Cypress Semiconductor Corp
Application granted granted Critical
Publication of JP6814327B1 publication Critical patent/JP6814327B1/ja
Publication of JP2021506014A publication Critical patent/JP2021506014A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

メモリデバイスが、メモリセルアレイ及びリマップ・データ構造を含むことができる。リマップ・データ構造はマッピング履歴部分及び状態部分を含むことができ、マッピング履歴部分は領域の論理アドレスと物理アドレスとの間のマッピングの集合を記憶するように構成され、状態部分はマッピングの集合のうちの1つをデバイスにとって有効な集合として識別するように構成されている。制御論理回路を、メモリセルアレイ及びリマップ・データ構造に結合することができ、記憶位置及びリマップ・データ構造へのアクセスを可能にするように構成することができる。メモリデバイスを含み、ファームウェア無線通信(FOTA)を含むファームウェア更新システム及び方法も開示する。

Description

本願は、米国特許非仮出願第16/005262号、2018年6月11日出願の国際出願であり、この米国特許非仮出願は米国特許仮出願題62/597709号、2017年12月12日出願により優先権を主張し、これらの特許出願のすべての内容は参照することによって本明細書に含める。
技術分野
本発明は一般に不揮発性メモリ内のデータを時々更新(アップデート)するシステムに関するものであり、より具体的には、ファームウェア無線通信(FOTA:firmware-over-the-air)法を利用するシステムのようなシステム用途向けのファームウェア・イメージを更新するシステムに関するものである。
背景
ファームウェア無線通信(FOTA)(無線通信によるファームウェア更新)及び他のファームウェア更新方法は、コンピュータシステムにとって主要な要件であり得る。FOTA更新は一般にトランスペアレントである必要があり、即ち、旧FW(firmware:ファームウェア)イメージと新FWイメージとを瞬時に切り換える。従来は、ファームウェアを更新する必要があるシステムは2つ以上の別個のフラッシュメモリデバイスを使用し、これらのフラッシュメモリデバイスは(例えば、ベースレジスタの使用により)プロセッサのアドレス空間の異なる範囲内へマッピング(対応付け)される。異なるアドレス範囲の各々のベースアドレスは、所望のフラッシュメモリデバイスを選択する単一のチップ選択(チップセレクト)を制御する。従って、上記瞬時の切り換えは、ベースアドレス・レジスタに記憶されているベースアドレスをスワップ(交換)することによって発生する。
図16Aに、FOTA更新を含む従来のシステム1691を示す。システム1691は、マイクロコントローラ(MCU:microcontroller unit)1693及び複数のフラッシュメモリデバイス1695−0〜1695−2を含むことができる。フラッシュメモリデバイス(1695−0〜1695−2)内の記憶位置(記憶場所)はシステムアドレス空間1697へマッピングすることができる。フラッシュメモリデバイス0 1695−0は、ベースアドレス0x000に対応することができ、旧ファームウェア・イメージ1607−0(即ち、期限切れのバージョン、従って置き換えられたバージョン)を記憶することができる。フラッシュメモリデバイス1 1695−1は、ベースアドレス0x100に対応することができ、現在のファームウェア・イメージ(即ち、現在、システムがアクセスするバージョン)を記憶することができる。フラッシュメモリデバイス2 1695−2は、ベースアドレス0x200に対応することができ、新ファームウェア・イメージ1697−2(即ち、現在のイメージを更新することを意図したバージョン)を記憶することができる。
MCU1693は、MCU1693内部のアドレス指定(アドレッシング)メカニズムを用いてファームウェア・イメージを更新することができる。MCU1693はベースアドレス・レジスタ1699を有することができ、ベースアドレス・レジスタ1699はファームウェア・イメージに対応するベースアドレスを記憶する。ベースアドレス・レジスタを用いて、フラッシュメモリデバイス1695−0〜1695−2用のそれぞれのチップ選択信号CS0〜CS2を発生する。ベースアドレス・レジスタ”ba_new_image”は、新ファームウェア・イメージのベース物理アドレス(更新前の0x200)を記憶することができる。ベースアドレス・レジスタ”ba_cur_image”は、現在のファームウェア・イメージのベース物理アドレス(更新前の0x100)を記憶することができる。ベースアドレス・レジスタ”ba_old_image”は、旧ファームウェア・イメージのベース物理アドレス(更新前の0x000)を記憶することができる。
システム1691は、ベースアドレス・レジスタ1699内の値を切り換えることによって、現在のイメージ(例えば、1697−1)から新イメージ(例えば、1697−2)へ更新することができる。具体的には、ベースアドレス・レジスタba_cur_image内の値を”cfg_cur”から”cfg_new”に切り換えることができる。こうした作業に続いて、システム1691がファームウェアを読みに行く際に、MCA1693内部のアドレス指定メカニズムが、チップ選択信号CS2を(更新作業の前に発生したCS1の代わりに)発生する。
図16Bは従来のシステム1691のブロック図であり、チップ選択を使用する方法を示す。MCU1693は、1つの出力端子(例えば、I/O(input/output:入力/出力)端子)を、フラッシュメモリデバイス1695−0/1毎のチップ選択(CS1、CS2)としての専用にする。以上より理解されるように、こうしたチップ選択(CS1、CS2)はベースアドレス・レジスタ内の値に応じて活性化することができる。一方のフラッシュメモリ(例えば、1695−0)は、現在使用中であるファームウェア・イメージを記憶することができるのに対し、他方のフラッシュメモリ(例えば、1695−1)は、現在使用中でない(即ち、旧ファームウェア・イメージ、あるいはベースアドレス・レジスタ値を切り換えることによって使用中にされるべき新ファームウェア・イメージ)を記憶することができる。
従来のFOTA方法の欠点は、コスト及び性能の限界であり得る。1つのI/O端子をフラッシュメモリデバイス毎の(即ち、各ファームウェア・イメージの)チップ選択端子としての専用にする代表的なコントローラ(例えば、MCU)を使用する場合、このコントローラは、ダイナミックRAM(DRAM:dynamic random access memory:ダイナミック・ランダムアクセスメモリ)またはスタティックRAM(SRAM:static RAM)のような他の必要なデバイス用の未使用のI/O端子を有さないことがある。その結果、追加的なI/O端子を有するコントローラを使用しなければならないことがあり、このことはシステムのコストを増加させ得る。従来のシステムは複数のフラッシュメモリデバイスを同じバスに接続することができるが、フラッシュメモリデバイスが追加される毎にバス上の容量性負荷が増加し得る。従って、バス上のフラッシュメモリデバイスの数が多くなるほど、バスはより低速で機能する。ほんの一例として、8進(オクタル)のSPI(serial peripheral interface:シリアル周辺インタフェース)バスについては、2つのフラッシュメモリデバイスを追加することは、1つのフラッシュメモリデバイスしか有さない同じバスに比べれば、最高バス速度を200MHzから133〜166MHzに低下させ得る。
図1A〜1Dは、一実施形態によるシステム及びファームウェア更新作業を示す一連のブロック図である。 図2A及び2Bは、メモリデバイスが命令及び/またはレジスタ書込みを受け取ることを更新作業に含めることができる方法を示すブロック図である。 一実施形態によるメモリデバイスの概略ブロック図である。 一実施形態によるメモリデバイスのリマップ・データ構造を示す図である。 一実施形態によるファームウェア更新作業を示す流れ図である。 図6A及び6Bは、実施形態に含めることができるメモリセルのアレイ構成を示す図である。 実施形態に含めることができるデータ構造及び対応するメモリセルアレイを示すブロック図である。 実施形態に含めることができる、可変数のプールに分割することができるメモリセルアレイを示す図である。 図9A〜9Dは、実施形態による、ファームウェアを更新するためのメモリデバイスへの入力を示す図である。 一実施形態による、ファームウェア無線通信(FOTA)更新を含むことができるシステムを示す図である。 一実施形態によるシステムのブロック図である。 図12A及び12Bは、実施形態によるメモリデバイスの透視図である。 図13A〜13Cは、実施形態による好適なデバイスの図である。 一実施形態による方法の流れ図である。 他の実施形態による方法の流れ図である。 図16A及び16Bは、FOTA更新を行う従来システムを示す図である。
詳細な説明
システムのファームウェアを更新するためのメモリデバイス、システム、及び方法を示す種々の実施形態を以下に説明する。更新は、単一のメモリデバイスで、メモリデバイスの記憶位置間でファームウェア・イメージをコピーすることなしに実行することができる。
実施形態によれば、現在のファームウェア・イメージを記憶しているのと同じメモリデバイス内に新ファームウェア・イメージをプログラムすることができる。一旦、新ファームウェア・イメージを記憶すると、メモリデバイスは、内部リマッピング(再マッピング、再配置)データ構造を用いる切り換え動作によって新ファームウェア・イメージへの切り換えを行うことができる。こうした新ファームウェア・イメージへの切り換えは瞬時に行うことができる。
以下の種々の実施形態では、同様のアイテムは同じ参照文字によって参照し、但し図番に対応する先行数字を付ける。
図1A〜1Dは、システム100及び対応するファームウェア更新作業を示す一連の流れ図である。システム100は、メモリデバイス102、コントローラ104、及びコントローラ・メモリ106を含むことができる。メモリデバイス102は、不揮発性メモリアレイ108、リマップ(再マッピング、再配置)データ構造110、及び入力/出力(I/O)兼制御回路112を含むことができる。不揮発性メモリアレイ108は複数の不揮発性メモリセルを含むことができ、これらの不揮発性メモリセルはデータを不揮発性の方法で記憶することができる。即ち、電力がない場合に、記憶しているデータを保持することができる。記憶位置は物理アドレス(PA:physical address)によりアクセスすることができる。不揮発性メモリ108はあらゆる適切な種類の不揮発性メモリセルを含むことができるが、一部の実施形態では「フラッシュ」型メモリセルを含むことができる。不揮発性メモリアレイ108は、少なくとも2つ以上のファームウェア・イメージ用に十分な記憶容量を有することができる。
リマップ・データ構造110は、ファームウェア・イメージの論理アドレス−物理アドレス(LA(logical address)→PA)マッピング、並びにこうしたLA→PAマッピング毎の状態を記録するデータを記憶することができる。例えば、エントリ110−0は、VAL(valid)の表示で示す有効なマッピング(LA_FW=PAx)を記憶する。エントリ110−1はINV(invalid)の表示で示す有効でないマッピングを記憶する。なお、リマップ・データ構造110はメモリデバイス102上に常駐してデータを不揮発性の方法で記憶する。以下の他の実施形態に示すように、リマップ・データ構造110は、論理アドレスと物理アドレスとの間の高速変換用に揮発性メモリ(図示せず)に記憶されているLA→PAルックアップ・テーブル(早見表)または他の構造を含むことができる。リマップ・データ構造110は、不揮発性メモリアレイ108の外部に位置する不揮発性メモリセル及び/または不揮発性メモリアレイ108内に位置する不揮発性メモリセルを利用することができる。
一部の実施形態では、メモリデバイス102を単一の集積回路デバイスとすることができる。こうした構成では、不揮発性メモリアレイ108、リマップ・データ構造110、及びUI/O兼制御回路112は、同じ集積回路パッケージの一部とすることができる。特定の実施形態では、不揮発性メモリアレイ108、リマップ・データ構造110、及びI/O兼制御回路112を、同じ集積回路基板の一部とすることができる(即ち、単一「チップ」内に形成される)。
I/O兼制御回路112は、不揮発性メモリセル108及びリマップ・データ構造110へのアクセスを可能にすることができる。不揮発性、メモリアレイ108に記憶されているファームウェアにアクセスするために、I/O兼制御回路112は、リマップ・データ構造110を用いて、どのLA→PAマッピングが有効であるかを特定することができ、次にこうしたマッピングを用いて、有効なファームウェア・イメージの論理アドレスを物理アドレスに向けることができる。
一部の実施形態では、所定の動作(例えば、パワー(電源)オン/リセットPOR(power-on/reset)、受信した命令、レジスタ設定)に応答して、メモリデバイス102はリマップ・データ構造110にアクセスして、LA→PAマッピング構造を揮発性メモリ(図示せず)内に作成することができる。
コントローラ104は、システム100の種々の機能を実行するための論理回路を含むことができる。一部の実施形態では、コントローラ104が、記憶されている命令116を実行することができる1つ以上のプロセッサ及び関連する回路を含むことができる。しかし、代案の実施形態は、カスタム(特注)論理回路及び/またはプログラム可能な論理回路(プログラマブル・ロジック)を含めた他のあらゆる適切な回路を含むことができる。コントローラ104は、メモリデバイス102とは異なるコントローラ・メモリ108へのアクセスを行うことができる。コントローラ・メモリ104は、あらゆる適切なメモリ回路で形成することができ、特定の実施形態では、ダイナミック・ランダムアクセスメモリ(DRAM)またはスタティックRAM(SRAM)のような揮発性メモリとすることができる。
システム100の構成要素を説明してきた。システム100における更新作業を以下に説明する。
図1Aを参照すれば、システム100は、最初に、現在のファームウェア・イメージ114を不揮発性メモリアレイ108の物理アドレスPAxから始まる位置に記憶することができる。システムの動作中に、現在のファームウェア・イメージ114がメモリデバイス102からI/O兼制御回路112によって読み出され、I/O兼制御回路112は、リマップ・データ構造110にアクセスすることによって、論理アドレス(LA_FWから始まることができる)を物理アドレス(PAxから始まることができる)に変換する。
図1Aをさらに参照すれば、システム100は新ファームウェア・イメージを受信することができる(動作103で示す)。コントローラ104は新ファームウェア・イメージ118をコントローラ・メモリ106に記憶することができる。新ファームウェア・イメージ118はネットワーク120から受信することができる。一部の実施形態では、ネットワーク120は無線ネットワークとすることができ、更新作業はFOTA動作とすることができる。
図1Bを参照すれば、コントローラ104は新ファームウェア・イメージ118を不揮発性メモリアレイ108内にプログラムすることができる。新ファームウェア・イメージ118は現在のファームウェア・イメージ114が占めていない物理的位置にプログラムされることは明らかである。図示する実施形態では、新ファームウェア・イメージ118は、PAyから始まる物理アドレスの範囲を占めることができ、この範囲は現在のファームウェア114を記憶している物理アドレスの範囲とオーバーラップ(重複)しない。新ファームウェア・イメージ118は、不揮発性メモリアレイ108の種類及びアーキテクチャに適したあらゆる技術によりプログラムすることができる。一部の実施形態では、新ファームウェア・イメージ118用の物理アドレスをコントローラ104によって発生することができる。しかし、他の実施形態では、こうした物理アドレスは、I/O兼制御回路112がコントローラ104からの1つ以上の命令に応答して発生することができる。
図1Cを参照すれば、コントローラ104は、新ファームウェア・イメージ118をリマップ・データ構造110にマッピングする論理アドレス−物理アドレス(の対応関係)もプログラムすることができる。こうした動作は、図1C中に、”LA_FW=PAy”がエントリ110−1にプログラムされることによって示す。このようにして、システム100がファームウェアにアクセスするために意図された論理アドレスを、新イメージ118の物理アドレスに割り当てることができる。しかし、図1Cに示すように、こうしたマッピングは効かない、というのはエントリ110−1が無効な状態を有し続けるからである。
図1Dを参照すれば、コントローラ104は、新たなマッピング・エントリを有効にプログラムすることによって、新ファームウェア・イメージを「有効」にすることができる。こうした動作は、図1D中に、エントリ110−1が有効(VAL)に変化し、エントリ110−0が無効になったことによって示している。不揮発性メモリアレイ108内に示すように、一旦、新たなマッピングが有効になると、PAxにあるファームウェア・イメージは無効な(例えば、期限切れの)ファームウェア・イメージ115になり、PAyにあるファームウェア・イメージが現在のファームウェア・イメージになって、システムによってアクセスされる。
一旦、新ファームウェア・イメージが有効になる(例えば、生きる)と、即座に、あるいは所定条件に応答してアクセスすることができる。多数の可能な例の内のほんの少数として、次のいずれか、あるいは全部の後に新たなマッピングが効力を生じることができる:デバイスまたはシステムの次回の電源投入またはリセット(POR:power-up or reset)動作、メモリデバイス102が所定の命令を受信すること、または所定の値がメモリデバイス102のコンフィギュレーション・レジスタに書き込まれること。
図1A〜1Dに示すような動作は、ファームウェアの更新をトランスペアレントかつ即時にすることができ、同じメモリデバイス内の位置間でデータをコピーすることを必要としないようにすることができる。なお、一部の実施形態では、メモリデバイス102が2つの位置をファームウェア用に保持することができ、これら2つの位置間で新ファームウェア・イメージの各々を「スワップ」することができる。しかし、他の実施形態では、メモリデバイス102が3つ以上の記憶位置をファームウェア用に含むことができ、新ファームウェア・イメージを受信した際に、これらの種々の位置間を循環させる(種々の位置を順に使用する)ことができる。
コントローラ104はファームウェア位置用の物理アドレスを追跡することができるが、一部の実施形態では、I/O兼制御論理回路112がこうしたタスクを担って、コントローラ104から受信したファームウェア・データ値用の物理アドレスを発生することができる。
本明細書中に示す実施形態は、メモリデバイスによって実行される種々の動作を含むことができ、これらの動作は、ファームウェア・データを不揮発性メモリアレイの記憶位置にプログラムすること、リマップ・データ構造内に値(例えば、LA−PAマッピングデータ、状態値、等)をプログラムすること、及び新バージョンのファームウェアを”有効”にする(即ち、システムにとって利用可能にする)ことを含む。こうした動作はあらゆる適切な方法で実現することができるが、図2A及び2Bは実施形態による2つのやり方を示す。
図2A及び2Bは、メモリデバイス202及び202’のブロック図である。特定の実施形態では、メモリデバイス202/202’を、図1A〜1D中に102で示すものの特定の実現とすることができる。
図2Aに、メモリデバイス202内のコンフィギュレーション・レジスタへのデータの書込みを示す。メモリデバイス202は、I/O回路212−0、制御論理回路212−1、リマップ・データ構造210、及びコンフィギュレーション・レジスタ222を含むことができる。データ値DATAをコンフィギュレーション・レジスタ222に書き込んで、ファームウェア更新作業における動作を開始するか可能にすることができる。ほんの少数の例として、このレジスタ設定によれば、次のいずれか、あるいは全部が発生し得る:新ファームウェア・イメージを「有効」にすることができる、PA→LAのマッピングデータ(210−x)をプログラムすることができる、メモリデバイスを、コントローラが新ファームウェアを記憶位置にプログラムすること(即ち、物理アドレス指定でアクセスすること)を可能にするモードにすることができる。コンフィギュレーション・レジスタ222に書き込むことは、データ及びレジスタ・アドレス(データ+アドレス)をメモリデバイスに与えることを含むことができる。さらに、こうした動作は命令(例えば、レジスタに書き込む、等)を含むこともできる。
図2Bに、ファームウェア更新作業用の特定の命令を受信するメモリデバイス202’を示す。メモリデバイス202’は、図2Aと同じアイテムを含むことができる。しかし、図2Aとは異なり、ファームウェア更新作業中の動作はメモリデバイス202’にとって専用の命令によって実行することができる。従って、制御論理回路212−1は命令デコーダ224を含むことができる。1つ以上の命令に応答して、制御論理回路212−1’は、図2Aのレジスタ書込みについて述べた動作のいずれか(即ち、新ファームウェアを「有効」にする、等)を実行することができる。一部の実施形態では、命令(命令)に1つ以上のデータ値(+データ)を添付することができる。
図3は、他の実施形態によるメモリデバイス302のブロック図である。特定の実施形態では、図3は、図1A〜1D中に102で示すもの、あるいは図2A/B中に示すものの1つの実現とすることができる。
メモリデバイス302は、I/O回路312−0、制御論理回路312−1、リマップ・データ構造310、メモリセルアレイ308、X及びYデコーダ334及び336、及びデータラッチ338を含むことができる。I/O回路312−0は、メモリデバイス302用のあらゆる適切なインタフェースを提供することができ、図示する非常に特別な実施形態では、チップ選択入力端子CS、クロック入力端子CLK、シリアルI/O(SI/O0)端子、及び任意で1つ以上の追加的なシリアルI/O(SI/On)端子を含むことができる。十分に理解された技術によれば、メモリデバイス302はアクティブ(有効)なCS信号によってアクセスすることができ、SI/O0(及びSI/On)端子上の命令、アドレス値、またはデータ値をCLK端子で受信したクロックに同期して受信することができる。しかし、こうした特定のインタフェースは限定的なものと考えるべきでない。代案の実施形態は種々のインタフェースを有するI/O回路を含むことができ、これらのインタフェースは、専用のアドレス線及びデータ線、非同期タイミング、並列バス、等を有するものを含む。
リマップ・データ構造310は、不揮発性の方法でデータを記憶して、最新のファームウェア・イメージを追跡してアクセスを可能にする。図示する実施形態では、リマップ・データ構造310が、ポインタデータ328、リマップ履歴データ330、及びマップメモリ332を含むことができる。リマップ履歴データ330は、新ファームウェア・イメージがメモリセルアレイ308内にプログラムされる毎に、LA→PAマッピングデータを記憶することができる。従って、リマップ履歴データ330は、特定のファームウェアについてのすべてのマッピングの履歴を記憶することができる(ここでは最も古いエントリを最終的に上書きする)。ポインタデータ328は、最新のリマップ履歴データのエントリを指示することができ、従って最新のファームウェア・イメージのエントリを指示することができる。マップメモリ332内のデータは、リマップ履歴データ330よりも高速にアクセスすることができ、高速のLA→PA変換を提供するように構成することができる。一部の実施形態では、マップメモリ332を揮発性のメモリ構造にすることができ、このメモリ構造に、ポインタデータ328が指示するリマップ履歴データを入れる。一部の実施形態では、ポインタデータ328及びリマップ履歴データ330を不揮発性メモリ回路に記憶する。こうした不揮発性メモリ回路は、メモリセルアレイ308の一部とすることができ、あるいはメモリセルアレイ308とは別個にすることができる。マップメモリ332は、SRAM及び/またはDRAMのような揮発性メモリ回路を含むことができる。
制御論理回路312−1は、メモリデバイス302の動作を、I/O回路312−0で受信した信号に従って実行することができる。図示する実施形態では、制御論理回路312−1が、POR回路326、命令デコーダ324、及びコンフィギュレーション・レジスタ322を含むことができる。POR回路326は、電源オンまたはリセット動作を検出及び/または開始することができる。命令デコーダ324は、I/O回路312−0で受信した命令を復号化することができる。コンフィギュレーション・レジスタ322は、メモリデバイス302が動作する方法を指示することができるコンフィギュレーション(設定)データを記憶することができる。一部の実施形態では、次のいずれかに応答して、新ファームウェア・イメージを動作状態にすることができる:POR回路326が電源オンまたはリセットの事象(イベント)を検出したこと、命令デコーダ324による1つ以上の命令の復号化、またはコンフィギュレーション・レジスタ322への所定データの書込み。新ファームウェア・イメージを動作状態にすることは、制御論理回路312−1がポインタデータ328にアクセスして、最新のファームウェア用のLA→PAマッピングをリマップ履歴データ330から見出すことを含むことができる。次に、制御論理回路312−1は、LA→PAのルックアップ構造を、リマップ履歴データ330からマップメモリ332内に作成することができる。次に、制御論理回路312−1は、マップメモリ332にアクセスして、ファームウェアの論理アドレスに対して行う読出し要求を提供する。
メモリセルアレイ308は不揮発性メモリセルを含むことができ、これらの不揮発性メモリセルはX及びYデコーダ(334/336)によって復号化(デコード)された物理アドレスによりアクセスされる。不揮発性メモリセルは、あらゆる適切な技術のものとすることができ、特定の実施形態では、シングル・トランジスタの「フラッシュ」型メモリとすることができる。メモリセルアレイ308は、あらゆる適切な編成を有することができ、特定の実施形態ではセクター単位で編成することができる。
データラッチ338は、メモリセルアレイ308から受信した読出しデータを、制御論理回路312によるSI/O0(及び存在すればSI/On)端子上への出力用に記憶することができる。データラッチ338は、SI/O0(及び存在すればSI/On)端子上で受信した書込みデータを記憶することもできる。
図4は、特定の実施形態によるリマップ・データ構造410を示す図である。リマップ・データ構造410は、本明細書中の他の実施形態について示すものの1つの特定の実現とすることができる。リマップ・データ構造410は、ポインタデータ(FR_VEC)428、リマップ履歴データ(SMFLASH)430、及びマップメモリ(SMRAM)432を含むことができる。ポインタデータ428はビット値を含むことができ、このビット値はリマップ履歴データ430内の各エントリの索引(インデックス)となる。ポインタデータ428の最終ビット値は「0」の値を有し、最新のエントリとすることができる。従って、図4では、ポインタデータ428は、最新バージョンのファームウェア用のLA→PAマッピングを記憶するエントリ「n−1」の索引となる。従って、マップメモリ432に記憶されているデータは、リマップ履歴データ430のエントリn−1に記憶されているデータに由来するものと理解するべきである。
新ファームウェア・イメージを受信すると、そのLA→PAマッピングをエントリ「n」にプログラムして、こうした新ファームウェア・イメージを「有効」にすることができ、索引nに対するポインタのビット値を1〜0に変化させることができる。
種々のシステム、デバイス、及び対応する方法を以上に説明してきた。他の方法を以下に図5を参照しながら説明する。図5は、コントローラ及び単一のメモリデバイスによりファームウェアを更新する方法の流れ図である。方法540は、本明細書中に説明したシステムのいずれか、及びその等価物によって実行することができる。方法540では、メモリデバイスはフラッシュメモリデバイスとすることができるが、他の実施形態は他のあらゆる適切な技術に基づく不揮発性の記憶装置を含むことができる。
方法540は、初期化イベントが生じるメモリデバイスを含むことができ、図示する実施形態ではPOR型のイベント540−0とすることができる。こうしたイベントに応答して、メモリデバイスは、LA→PAマッピングをリマップ履歴(例えば、SMFLASH)からマップメモリ(例えば、SMRAM)にロードすることができる。同じ動作(SMRAMに値を入れること)を生じさせることができる他の初期化イベントは、ほんの少数の例として、メモリデバイスに対する特定の命令またはコマンド(命令語)、あるいはメモリデバイスの1つ以上のコンフィギュレーション・レジスタの設定を含むことができる。
コントローラ(例えば、MCU)は現在のファームウェア・イメージを起動することができる。こうした動作は、コントローラがLAを既知の最後のファームウェア・イメージの値に設定することを含むことができる。それに加えて、コントローラは最新のイメージの(メモリデバイス内の)物理アドレスの記録を有することもできる。図示する実施形態では、現在の論理アドレスが現在の物理アドレスに等しいものと仮定する。図5では、現在のファームウェア・イメージがセクター「C」に記憶されているものと理解され、セクター「C」は物理アドレスc1、c2等を含む。
コントローラは新ファームウェア・イメージ540−4を受信することができる。こうした動作は、本明細書中に説明するもののいずれか、またはその等価物を含むことができ、新ファームウェア・イメージを無線接続上で受信してコントローラ・メモリ(RAM)に記憶することを含む。
コントローラは、新ファームウェアをメモリデバイス540−6内にプログラムすることができる。こうした動作は、コントローラが論理アドレス及び物理アドレスをデータ用に割り当てて記録することを含むことができる。図示する実施形態では、割り当てた論理アドレスが割り当てた物理アドレスに等しいものと仮定する。図5では、新ファームウェア・イメージがセクター「N」に記憶されているものと理解し、セクター「N」は物理アドレスn1、n2、等を含む。セクター「N」はセクター「C」とは異なり、セクター「C」とオーバーラップしないものと理解する。動作540−6は、一部の実施形態においてLA→PAマッピングをアプリケーション/ユーザに対して示すことができる方法を示す。
次に、コントローラはメモリデバイス上のリマップ履歴データ(SMFLASH)を更新して、新ファームウェア・イメージの位置540−8を記憶する。こうした動作は、コントローラが現在のファームウェア・イメージの論理アドレスを新ファームウェア・イメージの論理アドレスと交換することを含むことができる。図5では、このことは複数の論理アドレスのスワップを含むことができる。
方法540は、コントローラがメモリデバイス540−10内の有効ビットをセットすることによってファームウェア更新を「有効」にすることをさらに含むことができる。図5では、このことは、図4のもののようなデータ構造内のビット(即ち、ポインタFR_VEC内のビット値)をセットすることを含むことができる。
新ファームウェア・イメージが「有効」にされ、メモリデバイスに他の初期化イベント540−0(例えば、POR、特別な命令/コマンド、コンフィギュレーション・レジスタの書込み)が生じると、コントローラは新たなイメージを起動し、即ちLA(cur_img)=N、ここにN=(n1, N2,...)となる。こうして、ファームウェア更新が即座に有効になる。
図6A及び6Bは、実施形態に含めることができるメモリセルアレイ608用の構成を示す図である。図6Aは、異なるプール642、644−0、644−1に物理的に分割されるメモリセルアレイ608を示す。各プール(642、644−0、644−1)はポインタ(WL_PTR0〜2)によってアドレス指定可能であり、これらのポインタは当該プールのベースアドレスを指示することができる。1つのプール642はファームウェア・プール642として指定することができ、少なくとも2つのファームウェア・イメージを収容することができるサイズを有する。図示するように、ファームウェア・プール642は、前のファームウェア・イメージ614を(物理アドレスc0〜ciに)記憶しつつ、新ファームウェア・イメージ618を(物理アドレスn0〜niに)プログラムすることができる。一部の実施形態では、ファームウェアが絶えず更新される間に、位置をスワップすることができる。例えば、一旦、新ファームウェア・イメージ618が「有効」になると、ファームウェア・イメージ618は現在のファームウェア・イメージになり、次の新ファームウェア・イメージが物理アドレスc0〜ciにプログラムされる。
図6はスワップ動作を示す。新ファームウェア・イメージ用の論理アドレスが一時的な値として記憶される(tmp=LA(new_img))。新ファームウェア・イメージ用の論理アドレスが、現在のファームウェア・イメージの論理アドレスにセットされる(LA(new_img)=LA(cur_img))。こうした動作は、(今度は期限切れの)現在のファームウェア・イメージを、次の新ファームウェア・イメージ用のデスティネーション(送り先)として指定する。次に、新たに受信したファームウェア・イメージを現在のファームウェア・イメージとして設定する(LA(cur_img)=tmp)。
もちろん、他の実施形態では、ファームウェア・プール642が3つ以上のファームウェア・イメージを収容することができ、従って、更新は、2つのアドレス範囲間だけでスワップするのではなく、複数のアドレス範囲の全部を通して順に行う。
図6Aを参照すれば、一部の実施形態では、プール(642、644−0、644−1)をウェア・レベリング(損耗平準化)プールとすることができる。メモリセルアレイ608を含むメモリデバイスは、論理アドレス−物理アドレスのマッピングを、プール間で損耗(ウェア)が平準化されるように変更することができる。一部の実施形態では、ファームウェア・プール642を、ウェア・レベリング動作中に他のあらゆるプール(例えば、644−0/1)のように扱うことができる。即ち、一旦、ファームウェア・プール642へのアクセス数がある所定の閾値を超えると、新たなプール(例えば、644−0/1)をファームウェア・プールとして指定することができる。こうした実施形態では、複数のファームウェア・イメージを同じプール内に記憶して、ウェア・レベリング動作があるプールを動作から外して異なるプールに置き換えてプールを循環させる(順に使用する)場合に、マッピングデータを失うことを回避することができる。
図7を参照すれば、他の実施形態によるメモリデバイス702をブロック図の形で示す。メモリデバイス702は、本明細書中に示すものの1つの特定の実現とすることができる。メモリデバイス702は、複数のプール742/744−0〜744−kに分割されるメモリセルアレイ708を含むことができる。プール(742/744−0〜744−k)毎に、対応するリマップ構造710−0〜710−kが存在することができる。リマップ構造(710−0〜710−k)は、本明細書中に説明するもののいずれか、またはその等価物の形態をとることもでき、図7では図4のものと同様の構造を有するように示している。
一部の実施形態では、プール(742/744−0〜744−k)をウェア・レベリング・プールとすることができ、従って、ウェア・レベリング基準に基づいて未使用にして、プールを順に使用することができる。図7のメモリデバイス702では、いずれのプール(742/744−0〜744−k)もファームウェア・プールとして機能することができる、というのは、当該プールに対応するリマップ・データ構造が存在するからである。
一部の実施形態では、メモリセルアレイが、プログラム可能なサイズの物理的領域を有することができる。図8に、こうしたメモリセルアレイ808の一例を示す。メモリセルアレイ808は、プール842/844として示す異なる領域に分割可能な複数の記憶領域を含むことができる。これらのプールのサイズ及び物理的位置は、ポインタ値(WL_PTR0〜WL_PTR2)に応じてプログラム可能にすることができ、このポインタ値はベース物理アドレスを指示することができる。一部の実施形態では、こうしたプールをウェア・レベリング・プールにすることができる。従って、こうしたプールへのアクセスを監視するか、さもなければ追跡して、他のプールよりも多数回使用されたプールを循環(順次の使用)から外して、より損耗の小さいプールにアドレスをリマップ(再マッピング)することができる。
図8は、ポインタ値(WL_PTR0〜WL_PTR2)を用いてメモリセルアレイ808を分割することができる方法の例848を含む。例848は、1つだけのプール、2つのプール、及び3つのプールを含む。もちろん、十分な数のポインタ値が利用可能であるものとすれば、任意数のプールを作成することができる。こうした構成では、ファームウェアのサイズに応じてプールのサイズを調整することができる(即ち、少なくとも2つのイメージを記憶するのに十分なほど大きくする)。
実施形態によれば、現在のファームウェア・イメージから新たに受信したファームウェア・イメージへの迅速な切り換えを可能にするようにアクセスして修正することができるマッピングデータ構造を、メモリデバイスが記憶することができる。メモリデバイスは、あらゆる適切な方法で、あらゆる適切なプロトコルに従ってアクセスすることができるが、一部の実施形態では、チップ選択信号(CS)及び1つ以上のI/O線によりメモリデバイスにアクセスすることができる。図9A〜9Dは、実施形態による、ファームウェアを更新するための、メモリデバイスへの入力信号を示すタイミング図である。こうした入力信号に応答して、メモリデバイスは次のいずれかを実行することができる:新ファームウェア・イメージを「有効」にすること、リマップ履歴データを更新する(例えば、新たなLA→PAマッピングを追加する)こと、メモリデバイスが新ファームウェア・イメージをプログラムするための準備をすること。
図9A〜9Dの各々は、チップ選択信号(CSB)及びI/O信号(I/O)の波形を示す。I/Oは、メモリデバイスの1本のI/O線、または複数のこうしたI/O線とすることができる。図示する例では、I/O線上のデータをクロックCLKに同期して受信することができる。I/O線上で受信するデータのデータレートはあらゆる適切な形式をとることができ、シングル・データレート(1ビットサイクル)、ダブル・データレート(1サイクル当たり2ビット)、クワッド・データレート(2本のI/O線上で1サイクル当たり2ビット)、またはオクタル・データレート(4本のI/O線上で1サイクル当たり2ビット)を含む。
図9Aにレジスタ書込み命令を示す。時刻t0に、チップ選択信号がアクティブ(有効)になることができる。時刻t1に、メモリデバイスが命令”WriteRegX”を受信することができる。時刻t2におけるコンフィギュレーション(設定)データ(DATA(Reg))が、これに続くことができる。こうした命令に応答して、メモリデバイスは、命令WriteRegXが示す1つ以上のレジスタにDATA(Reg)を書き込むことができる。こうしたレジスタにデータを書き込むことは、本明細書中に説明するファームウェア更新作業またはその等価物を制御すること、そのためのデータを提供すること、あるいは開始することができる。
図9Bにアドレス指定可能なレジスタ書込み命令を示す。時刻t0に、チップ選択信号がアクティブになることができる。時刻t1に、メモリデバイスが命令”WriteAddReg”を受信することができる。時刻t2におけるアドレスデータ(ADD)、及び次の時刻t3におけるコンフィギュレーションデータが、これに続くことができる。こうした命令に応答して、メモリデバイスは、アドレスデータADDが示すレジスタにDATAを書き込むことができる。こうしたレジスタにデータを書き込むことは、本明細書中に説明するファームウェア更新作業を制御すること、そのためのデータを提供すること、あるいは開始することができる。
図9Cに、一実施形態によるマッピング命令を示す。時刻t0に、チップ選択信号がアクティブになることができる。時刻t1に、メモリデバイスが命令”NewMap”を受信することができる。時刻t2におけるデータ(DATA(Map))がこれに続くことができる。こうした命令に応答して、新イメージ用のマッピングデータ(例えば、LA→PAマッピング)を、本明細書中に説明するリマップ履歴データ構造またはその等価物に記憶することができる。値DATA(Map)はこのマッピングデータを含むことができる。
図9Dに、一実施形態による、新ファームウェア・イメージを「有効」にするための命令を示す。時刻t0に、チップ選択信号をアクティブにすることができる。時刻t11に、メモリデバイスが命令”NewMapLive”を受信することができる。任意で、データ(DATA(Ptr))がこれに続くことができる。こうした命令に応答して、提供されるべきファームウェア・イメージが転送されている際に、最新のマッピングデータの集合を示すことができる。一部の実施形態では、データを必要としない、というのは、メモリデバイス制御論理回路が新たなマッピング集合の値を更新することができるからである。しかし、他の実施形態では、DATA(Ptr)を用いてリマップ・データ構造(例えば、ポインタ値)をプログラムすることができる。こうした命令は、ファームウェア・イメージ間で、アトミックな(不可分の)即時の方法でスワップすることができる。
実施形態は、デバイスまたはモジュール用のファームウェアの更新を含むシステム、装置、及び方法を含むことができるが、実施形態は、各々がそれ自体のファームウェア更新を必要とし得る複数のデバイス/モジュールを有するシステムを含むこともできる。図10はこうしたシステム1000のブロック図である。
システム1000は、テレマティクス(情報無線送受信)制御ユニット(TCU:telematics control unit)(例えば、コントローラ)1004、コントローラ・バス1050、システム開発ライフサイクル部1052、モジュール・バス1054−0〜1054−2、及びモジュール1055−0〜1055−1を含むことができる。モジュール(1055−0〜1055−1)の各々は、メモリデバイス(1002−0〜1002−2)に記憶されているファームウェアで動作する。TCU1004はプロセッサを含むことができ、このプロセッサはメモリデバイス(1002−0〜1002−2)に対して命令を発行することができる。TCU1004は無線トランシーバ(または受信機)1058を含むこともでき、無線トランシーバ1058は、ファームウェア更新を無線ネットワーク経由で受信する。特定の実施形態では、システム1000を自動車制御システムにすることができ、TCU1004は、グローバル・ポジショニング・システム(GPS:global positioning system:全地球測位システム)、1つ以上のプロセッサ、及びコントローラ・メモリをさらに含むことができる。
図10は別個のモジュール・バス1054−0〜1054−2を示すが、他の実施形態では、2つ以上のモジュールを同じバスに接続することができる。さらに、他の実施形態では、コントローラ・バス1050をモジュール・バス(1054−0〜1054−2)と同じにすることができる。
システム1000の種々の構成要素を説明してきた。システム1000のFOTA動作を以下に説明する。
最初に、メモリデバイス1002−0〜1002−2の各々が(更新されるべき)現在のファームウェア・イメージ1014/1015を記憶することができる。
では、TCU1004が新ファームウェアを無線トランシーバ1058で受信することができ、新ファームウェアはネットワーク1020の無線接続1057上で送信される。ネットワーク1020は、あらゆる適切なネットワークとすることができ、一部の実施形態ではインターネット及び/またはセルラ・ネットワークとすることができる。図示する例では、全部のモジュール1055−0〜1055−2用の新ファームウェアを受信することができる。しかし、他の更新作業では、より少数のモジュールを更新することができることは明らかである。
では、TCU1004が新ファームウェア・イメージをそれぞれのメモリデバイス1055−0〜1055−2へ送信することができる。こうした動作は、TCU1004が新ファームウェア・イメージをコントローラ・バス1050及びモジュール・バス1054−0上で送信することを含むことができる。一実施形態では、こうした動作がコントローラ・エリア・ネットワーク(CAN:controller area network)型バス上でデータを送信することを含むことができる。
では、モジュール1055−0〜1055−2が、新ファームウェア・モジュールを、対応するメモリデバイス1002−0〜1002−2のそれぞれの位置にプログラムすることができる。こうした動作は、本明細書中に説明するもののいずれか、またはその等価物を含むことができる。1つの特定の実施形態では、新ファームウェア・イメージ1018/14を、メモリデバイスの「二次的」メモリページにプログラムすることができる(一次的メモリページは現在のファームウェア1014/15を記憶する)。一部の実施形態では、新ファームウェア・イメージのプログラミングを、モジュール1055−0〜1055−2のローカルなプロセッサ(図示せず)で実現することができる。しかし、他の実施形態では、こうしたプログラミングをTCU1004によって実行することができる。
では、新ファームウェア・イメージ1018/1014を「有効」にすることができる(他のファームウェア・イメージ1014/1015はインアクティブ(無効)として指定することができる)。こうした動作は、TCU1004から受信した入力に応答して行うことができる。こうした入力は、本明細書中に説明する命令またはレジスタ書込み、あるいはその等価物、並びにモジュール1055−0〜1055−2のローカルなプロセッサによる帯域外シグナリング(信号伝達)または動作、あるいは他の適切なシグナリング方法を含むことができるが、それらに限定されない。
図11は、他の実施形態によるシステム1100のブロック図である。システム1100は、コントローラ(MCU)1104及びメモリデバイス1002を含むことができる。メモリデバイス1002は、少なくとも2つの異なるファームウェア・イメージ(1114、1118)間の切り換えを可能にすることができる。図示するように、コントローラ1104は、図16Bに示す従来のシステムにおけるように、2つのチップ選択出力(CS1, CS2)を供給することができる。しかし、メモリデバイス1002は、単一のメモリデバイス1002及び単一のチップ選択(CS1)によるファームウェア・イメージ間の切り換えを管理することができるので、コントローラ1104は他のアプリケーションが利用可能な追加的なチップ選択出力CS2を有することができる。
実施形態は、1つ以上のコントローラ・デバイスと共に動作するメモリデバイスを有するシステムを含むことができるが、実施形態は、本明細書中に説明する異なるファームウェア・イメージ及びその等価物間の内部切り換えを可能にすることができるスタンドアロン(独立型)のメモリデバイスを含むこともできる。こうしたメモリデバイスは、同じパッケージ内に形成された複数の集積回路を含むことができるが、一部の実施形態では、メモリデバイスをコンパクトな単一の集積回路(即ち、チップ)にすることができることが有利である。図12A及び12Bは、2つのパッケージ化された単一チップのメモリデバイス1202A及び1202Bを示す。しかし、実施形態によるメモリデバイスは、回路基板上へのメモリデバイス・チップの直接的ボンディングを含めた他のあらゆる適切なパッケージ型を含むことができることは明らかである。
図13A〜13Cを参照すれば、実施形態による種々のデバイスが一連の図中に示されている。図13Aは、更新可能なファームウェアで動作する多数のサブシステム(2つを1300A−0及び1300A−1で示す)を有することができる自動車1360Aを示す。こうしたサブシステム(1300A−0、1300A−1)は、電子制御ユニット(ECU:electronic control unit)及び/または先進運転支援システム(ADAS:advanced driver assistance system)を含むことができる。しかし、他の実施形態では、こうしたサブシステムが、多数の可能な例のうちのほんの2例として、ダッシュボード・ディスプレイ/制御サブシステム、及び/またはインフォテインメント・サブシステムを含むことができる。各サブシステム(1300A−0、1300A−1)は、コントローラ及びメモリデバイスを含むことができ、FOTA型の更新を含めた本明細書中に説明するファームウェアの動作、またはその等価物を用いることができる。
図13Bに、ハンドヘルド(手持ち型)コンピュータ装置1360Bを示す。ハンドヘルド・コンピュータ装置1360Bはシステム1300Bを含むことができ、システム1300Bは、本明細書中に説明する装置1360Bまたはその等価物のファームウェア更新を実行するためのメモリデバイス1302及びコントローラ1304(現寸に比例して図示せず)を有する。
図13Cにコントローラ・デバイス1360Cを示す。コントローラ・デバイス1306Cは、工業または住宅の動作を制御するように配備されたデバイスとすることができる。多数の可能な例のうちのほんの少数として、コントローラ・デバイス1360Cは、製造ライン上の機械類を制御することができ、建物用の電子ロックとすることができ、家庭電化製品を制御することができ、照明システムを制御することができ、あるいは灌漑システムを制御することができる。装置1360Cはシステム1300Cを含むことができ、システム1300Cは、本明細書中に説明するデバイス1360Cまたはその等価物のファームウェア更新を実行するためのメモリデバイス1302及びコントローラ1304(図示せず)を有する。
ここで図14を参照すれば、一実施形態による方法が流れ図で示されている。方法1462は、システム用のファームウェアを記憶するメモリデバイスにおいて新ファームウェア・データを受信するステップを含むことができる(ブロック1462−0)。こうした動作は、メモリデバイスが、ファームウェア・データ用のプログラムまたは書込み命令を、メモリデバイス上のインタフェースを通して受信することを含むことができる。特定の実施形態では、こうした動作が、メモリデバイスがコントローラから命令を受信してファームウェア・データを所定の物理アドレスにプログラムすることを含むことができる。
受信したファームウェア・データは、不揮発性メモリセル内の、現在のファームウェア1462−2を記憶する位置とは異なる位置にプログラムすることができる。特定の実施形態では、こうした動作が、メモリデバイスが、ファームウェア・データを、フラッシュメモリアレイの1つ以上のセクターにプログラムすることを含むことができ、これらのセクターは、新ファームウェア用に指定され、現在のファームウェアを記憶するアドレス範囲とは異なる。なお、こうした動作は、ファームウェア・データをメモリデバイスのメモリセルアレイ内の1つの位置から、同じメモリデバイス内のメモリセルアレイの他の位置へコピーすることは含まない。
方法1462は、新ファームウェア用の新たなLA→PAマッピングを、メモリデバイス1462−4上の不揮発性の記憶領域内にプログラムすることを含むこともできる。一部の実施形態では、こうした動作が、こうしたデータをリマップ履歴データ構造内にプログラムすることを含むことができ、このリマップ履歴データ構造は、以前のバージョンのファームウェア用のこうしたマッピングを保持する。
方法1462は、不揮発性の状態値をメモリデバイス上にプログラムして、最新バージョンのファームウェア用の新たなLA→PAを示すステップを含むこともできる(ブロック1462−6)。一部の実施形態では、こうした動作が、ポインタデータ構造の値をプログラムすることを含むことができ、このポインタデータ構造はリマップ履歴データ構造内の1つのエントリを指示する。
図15に、他の実施形態による方法1564を流れ図の形で示す。方法1564は、FOTA法とすることができ、新ファームウェア・イメージ用のデータを無線接続1564−0上で受信した時点を特定するステップを含むことができる。こうした動作は、コントローラが、システムの無線受信機がファームウェアの更新を受信した時点を検出することを含むことができる。
新ファームウェア・イメージのデータを受信しない(ブロック1564−0からの「いいえ」の)場合、方法1564は、ルックアップ構造により、必要なファームウェアにアクセスすることができる(ブロック1564−18)。一部の実施形態では、こうした動作が、メモリデバイスがファームウェアの論理アドレスに対する読出し要求を受信することを含むことができ、こうした論理アドレスはルックアップ構造からのデータにより物理アドレスに変換される。特定の実施形態では、ルックアップ構造が揮発性メモリ内に常駐することができる。この時点で、システムのルックアップ構造は(新たに受信したあらゆるファームウェア・イメージに置き換えられることになる)現在のファームウェア・イメージに対応することは明らかである。
新ファームウェア・イメージのデータを受信した(ブロック1564からの「はい」の)場合、新ファームウェア・イメージのデータはシステムメモリに記憶することができる(ブロック1564−2)。一部の実施形態では、こうした動作が、新ファームウェア・イメージのデータを、コントローラ等によってアクセスされるDRAMまたはSRAMのような揮発性のシステムメモリに記憶することを含むことができる。
システム内のメモリデバイスのプログラム動作はブロック1564−4で開始することができる。こうした動作は、新ファームウェア・イメージを記憶するべき特定のメモリデバイスを決定することを含むことができる。一部の実施形態では、こうした動作が、コントローラが命令等をメモリデバイスに対して発行することを含むことができる。新ファームウェア・イメージは、メモリデバイスの不揮発性のセクター内の、現在のファームウェア・イメージを記憶している位置とは異なる位置にプログラムすることができる(ブロック1564−6)。こうした動作は、コントローラが、システムメモリに記憶されているファームウェア・イメージをメモリデバイスの不揮発性の記憶位置にプログラムすることを含むことができる。
新ファームウェア・イメージ用のLA→PAマッピングは、メモリデバイスの不揮発性の記憶領域内にプログラムすることができる(ブロック1564−8)。こうした動作は、こうしたデータをリマップ履歴データ構造内にプログラムすることを含めて、本明細書中に説明したもののいずれか、またはその等価物を含むことができ、リマップ履歴データ構造は、以前のファームウェア・イメージのマッピングを同じメモリデバイス内に保持することができる。
新たなLA→PAマッピングを指示するポインタをプログラムすることができる(ブロック1564−10)。こうした動作は、リマップ履歴データ構造内の1つのエントリに対応するマルチ(多)ビット値内の1つのビットをセットすることを含めて、本明細書中に説明するもののいずれか、またはその等価物を含むことができる。こうしたポインタは、メモリデバイスの不揮発性の記憶領域に記憶することができる。
方法1564は、リセット型のイベントが発生したか否かを判定することができる(ブロック1564−12)。リセット型のイベントは、メモリデバイスに、現在のファームウェア・イメージから新たにプログラムされた(「有効」な)ファームウェア・イメージへの論理アドレス・マッピングをリセットさせるイベントとすることができる。リセット型のイベントは、少数のみを挙げれば、PORイベント、メモリデバイスが特定の命令またはレジスタ書込みを受信すること、あるいは特別な入力ピンにおける信号を含めて、あらゆる適切な形態をとることができるが、それらに限定されない。
リセット型のイベントが発生していないものと判定した(ブロック1564−12からの「いいえ」の)場合、方法1564はルックアップ構造によるファームウェアへのアクセスを継続することができ(ブロック1564−18)、このことは、ファームウェア・イメージを新たに受信したファームウェア・イメージに置き換えることを継続することができる。
リセット型のイベントが発生したものと判定した(ブロック1564−12からの「はい」の)場合、メモリデバイスは、ポインタにより最新のLA→PAマッピングの集合にアクセスすることができる(ブロック1564−14)(この集合は、新たに受信したファームウェア・イメージに対応する)。次に、メモリデバイスは、新ファームウェア・イメージに対応する新たなLA→PAルックアップ構造を作成することができる(ブロック1564−16)。その結果、ブロック1564−18のファームウェアのアクセスが今度は新ファームウェア・イメージになる。
本明細書中に説明する実施形態は、本明細書中に説明するファームウェア・イメージの更新またはその等価物を実行するために呼び出すことができるアプリケーション・プログラミング・インタフェース(API:application programming interface)を含むことができる。新ファームウェア・イメージは、メモリデバイス内のある任意のアドレス範囲内にロードすることができ、このメモリデバイスは現在のファームウェア・イメージを他のアドレス範囲(addr_cur_img)内に記憶する。APIは、こうしたアドレス情報を用いてファームウェアの更新を実行することができる。例えば、APIは、”fota_switch(addr_cur_img, addr_new_img)”の形式を有することができる。
こうした構成は、ファームウェア・データをメモリデバイス内の1つの位置から他の位置へコピーしなければならない(例えば、ファームウェア・データを一旦書き込む/プログラムする)ことなしに、ファームウェアをアドレス空間内で「リロケート(移転)」する(即ち、旧ファームウェアへのアクセスから新ファームウェアへのアクセスに切り換える)ことを可能にすることができる。このリロケーション動作は「原子的」(即ち、単一バスのトランザクション)であり、本質的に即時である。例えば、本明細書中に述べるように、メモリデバイスに対する命令またはレジスタ書込みは、新ファームウェアへのリマッピング(再マッピング)を導入することができる。
本発明の実施形態は、異なるファームウェア・イメージを記憶するための複数のフラッシュメモリの使用を低減または解消することができることが有利である、というのは、異なるファームウェア・イメージを1つのメモリデバイスに記憶して、新イメージを一度記憶すると、新イメージへの即時の切り換えを行うことができるからである。このことは必要とするメモリデバイスがより少数であるので、システムのコストを低減することができる。それに加えて、通常は、異なるファームウェア・イメージを有する複数のフラッシュメモリを同じバス上に含むシステムが、バス上の1つのデバイス(またはより少数のデバイス)だけで、同じ結果を達成することができる。このことは、バスの容量を低減してシステムの性能を増加させる(即ち、バス速度を増加させる)ことができる。
本発明の実施形態は、システムが、1つのチップ選択出力に接続された1つのメモリデバイスで、ファームウェア・イメージ間の瞬時の切り換えを行うことを可能にする。このことはコストを低減する、というのは、より少数のチップ選択出力を有するコントローラ・デバイスを使用することができるからである。それに加えて、あるいはその代わりに、システム設計におけるより大きな自由度が存在し得る、というのは、1つ以上のチョップ選択出力が、今度は他のユーザ(即ち、ファームウェア・イメージにアクセス中でないユーザ)にとって自由になるからである。
これら及び他の利点は当業者にとって明らかである。
本明細書全体を通して、「一実施形態」または「実施形態」への言及は、その実施形態に関連して説明する特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態に含まれることを意味することは明らかなはずである。従って、本明細書の種々の部分における「実施形態」または「一実施形態」または「代案の実施形態」への2回以上の言及は、必ずしも全部が同じ実施形態を参照するわけではないことを強調し、そのことは明らかなはずである。さらに、本発明の1つ以上の実施形態では、特定の特徴、構造、または特性を適切に組み合わせることができる。
同様に、以上の本発明の好適な実施形態の説明では、発明の種々の態様のうちの1つ以上の理解に役立つ開示を簡素化する目的で、本発明の種々の特徴は、時として、単一の実施形態、図面、またはその説明において一緒にグループ化されていることは明らかである。しかし、こうした開示の方法は、特許請求の範囲が、各請求項中に明示的に記載した以上の特徴を要求するという意図を反映するものとして解釈するべきでない。むしろ、本発明の態様は、以上に開示した単一の実施形態の全部の特徴よりも範囲が小さい。従って、詳細な説明に続く特許請求の範囲は、これにより、この詳細な説明中に明示的に含まれ、各請求項は、本発明の別個の実施形態として自立する。

Claims (21)

  1. 物理アドレスによりアクセス可能な複数の記憶位置を有するメモリセルアレイと、
    リマップ・データ構造と、
    前記メモリセルアレイ及び前記リマップ・データ構造に結合された制御論理回路とを具えたメモリデバイスであって、
    前記記憶位置のそれぞれは別個の領域内に配置され、
    前記リマップ・データ構造は、
    前記領域の論理アドレスと物理アドレスとの間のマッピングの集合を記憶するように構成されたマッピング履歴部分と、
    前記マッピングの集合のうちの1つを前記メモリデバイスにおける有効な集合として識別するように構成された状態部分とを含み、
    前記制御論理回路は、前記記憶位置及び前記リマップ・データ構造へのアクセスを可能にするように構成されている
    メモリデバイス。
  2. 前記有効な集合の論理アドレス−物理アドレスのマッピングを記憶するように構成された揮発性メモリ回路をさらに具え、
    前記制御論理回路が、受信した論理アドレスに応答して前記揮発性メモリ回路にアクセスするように構成されている、請求項1に記載のメモリデバイス。
  3. 前記制御論理回路が命令デコーダをさらに含み、該命令デコーダは、受信した命令に応答して前記リマップ・データ構造へのアクセスを可能にするように構成されている、請求項1に記載のメモリデバイス。
  4. 前記制御論理回路が少なくとも1つのコンフィギュレーション・レジスタをさらに含み、該コンフィギュレーション・レジスタは、前記メモリデバイスへのレジスタ書込み動作によりアクセス可能であり、前記少なくとも1つのコンフィギュレーション・レジスタは、前記マッピング履歴部分用のデータ、及び前記状態部分用のデータから成るグループから選択したいずれかを記憶するように構成されている、請求項1に記載のメモリデバイス。
  5. 前記制御論理回路がパワーオン・リセット回路をさらに含み、該パワーオン・リセット回路は、前記メモリデバイスにおける電源オンまたはリセットの事象に応答して、前記有効な集合の論理アドレスを、前記メモリデバイスに記憶されているファームウェア用の最新のアドレスとして設定するように構成されている、請求項1に記載のメモリデバイス。
  6. 入力/出力(I/O)部分をさらに含み、該I/O部分は、少なくとも1つのチップ選択入力端子、少なくとも1つのクロック入力端子、及び少なくとも1つの双方向シリアルデータ入力/出力端子を含む、請求項1に記載のメモリデバイス。
  7. 前記メモリセルアレイが、複数のプールの形に配列された複数のフラッシュメモリセルを具え、前記別個の領域が第1の前記プール内に配置され、
    前記制御論理回路が、残りの前記プールへのアクセスを、ウェア・レベリング・アルゴリズムに従って変化させるように構成されている、請求項1に記載のメモリデバイス。
  8. 前記メモリセルアレイが、複数のプールの形に配列された複数のフラッシュメモリセルを具え、前記別個の領域が第1の前記プール内に配置され、
    前記制御論理回路が、前記別個の領域へのアクセスを、ウェア・レベリング・アルゴリズムに従って変化させるように構成されている、請求項1に記載のメモリデバイス。
  9. 新ファームウェア・イメージをメモリデバイスにおいて受信するステップと、
    前記新ファームウェア・イメージを前記メモリデバイスの不揮発性の記憶位置にプログラムするステップであって、前記新ファームウェア・イメージ用の前記記憶位置が、同じ前記メモリデバイス内の、現在のファームウェア・イメージが記憶されている記憶位置とは異なるステップと、
    前記新ファームウェア・イメージ用の論理アドレス(LA)−物理アドレス(PA)のマッピングの集合を、前記メモリデバイスの不揮発性のマッピング回路内にプログラムするステップであって、前記マッピング回路が、前記現在のファームウェア・イメージ用のLA−PAのマッピングの集合も含むステップと、
    前記メモリデバイスの不揮発性の状態回路内に状態値をプログラムして、前記新ファームウェア・イメージ用のLA−PAのマッピングの集合を、前記メモリデバイスに記憶されている有効なファームウェア・イメージとして示し、前記現在のファームウェア・イメージ用のLA−PAのマッピングの集合を、無効なファームウェア・イメージとして示すステップと
    を含む方法。
  10. 前記新ファームウェア・イメージを前記メモリデバイスの前記不揮発性の記憶位置にプログラムするステップが、フラッシュメモリデバイスのセクターをプログラムすることを含む、請求項9に記載の方法。
  11. 前記状態値をプログラムするステップが、前記メモリデバイスに記憶されている前記LA−PAのマッピングの集合毎に1ビットを有するマルチビット・ポインタ・データ構造内の少なくとも1ビットをプログラムすることを含む、請求項9に記載の方法。
  12. 前記新ファームウェア用のLA−PAのマッピングの集合をプログラムするステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むことから成るグループから選択した動作を含む、請求項9に記載の方法。
  13. 前記新ファームウェア・イメージにおける前記状態値をプログラムするステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むことから成るグループから選択した動作を含む、請求項9に記載の方法。
  14. 所定の条件に応答して、前記新ファームウェア・イメージの前記LA−PAのマッピングの集合のうちの1つのLA−PAのマッピングを揮発性メモリ内に生成するステップと、
    前記揮発性メモリにアクセスして、前記新ファームウェア・イメージからデータを読み出すステップと
    をさらに含む、請求項9に記載の方法。
  15. 前記所定の条件が、前記メモリデバイスにおけるパワーオン・リセット動作、所定の命令を前記メモリデバイスにおいて受信したこと、及び前記メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項14に記載の方法。
  16. 不揮発性メモリデバイスと、
    プロセッサ回路とを具えたシステムであって、
    前記不揮発性メモリデバイスは、
    異なる物理アドレスを有する領域を有するメモリセルアレイであって、前記システム用の異なるファームウェア・イメージを記憶するメモリセルアレイと、
    受信したファームウェア・イメージ用の論理アドレス(LA)−物理アドレス(PA)のマッピングを不揮発性の記憶回路内に記憶するように構成されたマッピング履歴部分と、
    前記システムによってアクセスされる現在のファームウェア・イメージを識別するデータを不揮発性の記憶回路内に記憶するように構成されたファームウェア状態部分とを含み、
    前記プロセッサ回路は、記憶されているプロセッサ命令を実行して、
    新ファームウェア・イメージをシステムメモリに記憶し、
    前記不揮発性メモリデバイスに記憶されている前記現在のファームウェア・イメージを乱すことなしに、前記システムメモリからの前記新ファームウェア・イメージを、前記不揮発性メモリデバイス内の前記領域のうちの1つにプログラムし、
    前記新ファームウェア・イメージ用のLA−PAのマッピングを、前記不揮発性メモリデバイスの前記マッピング履歴部分内にプログラムし、
    前記新ファームウェア・イメージ用のLA−PAのマッピングが前記システムによって読み込まれて、前記不揮発性メモリデバイスに記憶されている以前のバージョンのファームウェア・イメージのいずれとも異なるファームウェア・データがアクセスされることを示すように、前記ファームウェア状態部分をプログラムする
    ように構成されているシステム。
  17. 前記新ファームウェア・イメージを無線ネットワーク上で受信するように構成された無線トランシーバをさらに含む、請求項16に記載のシステム。
  18. 前記新ファームウェア・イメージ用のLA−PAのマッピングをプログラムすることが、前記プロセッサ回路が所定の命令及びデータを前記不揮発性メモリデバイスに対して発行すること、及び前記プロセッサ回路が前記不揮発性メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項16に記載のシステム。
  19. 前記ファームウェア状態部分をプログラムすることが、前記プロセッサ回路が所定の命令を前記不揮発性メモリデバイスに対して発行すること、及び前記プロセッサ回路が前記不揮発性メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むことから成るグループから選択したいずれかを含む、請求項16に記載のシステム。
  20. 前記プロセッサ回路が、前記新ファームウェア・イメージを受信する前に、前記不揮発性メモリデバイスに記憶されている以前のファームウェア・イメージにチップ選択信号によりアクセスするように構成され、
    前記プロセッサ回路が、前記新ファームウェア・イメージを受信した後に、同じ前記チップ選択信号により前記新ファームウェア・イメージにアクセスするように構成されている、
    請求項16に記載のシステム。
  21. 前記不揮発性メモリデバイスが少なくとも1つのプールを含み、該プールの各々が、
    複数のレジスタと、
    前記プール用のマッピング履歴部分と、
    前記プール用のファームウェア状態部分と
    を含む、請求項16に記載のシステム。
JP2020531080A 2017-12-12 2018-11-19 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法 Active JP6814327B1 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762597709P 2017-12-12 2017-12-12
US62/597,709 2017-12-12
US16/005,262 US10552145B2 (en) 2017-12-12 2018-06-11 Memory devices, systems, and methods for updating firmware with single memory device
US16/005,262 2018-06-11
PCT/US2018/061742 WO2019118130A1 (en) 2017-12-12 2018-11-19 Memory devices, systems, and methods for updating firmware with single memory device

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2020210313A Division JP6999017B2 (ja) 2017-12-12 2020-12-18 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法

Publications (2)

Publication Number Publication Date
JP6814327B1 JP6814327B1 (ja) 2021-01-13
JP2021506014A true JP2021506014A (ja) 2021-02-18

Family

ID=66696768

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020531080A Active JP6814327B1 (ja) 2017-12-12 2018-11-19 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法
JP2020210313A Active JP6999017B2 (ja) 2017-12-12 2020-12-18 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2020210313A Active JP6999017B2 (ja) 2017-12-12 2020-12-18 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法

Country Status (5)

Country Link
US (2) US10552145B2 (ja)
JP (2) JP6814327B1 (ja)
CN (1) CN111433750B (ja)
DE (1) DE112018006329T8 (ja)
WO (1) WO2019118130A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11231448B2 (en) 2017-07-20 2022-01-25 Targus International Llc Systems, methods and devices for remote power management and discovery
US11537389B2 (en) 2017-12-12 2022-12-27 Infineon Technologies LLC Memory devices, systems, and methods for updating firmware with single memory device
US10552145B2 (en) 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
WO2021035156A1 (en) 2019-08-22 2021-02-25 Targus International Llc Systems and methods for participant-controlled video conferencing
TWI726524B (zh) * 2019-12-09 2021-05-01 新唐科技股份有限公司 電子處理裝置及記憶體控制方法
US11435929B2 (en) 2020-08-27 2022-09-06 Dell Products L.P. System and method for content addressable storage system update appliance
CN112764685B (zh) * 2021-01-26 2022-07-15 华中科技大学 一种消除固态盘中预写式日志重复数据写的方法及设备
WO2022204911A1 (en) * 2021-03-30 2022-10-06 Yangtze Memory Technologies Co., Ltd. Memory device with embedded firmware repairing mechanism
DE102021002079B3 (de) * 2021-04-20 2022-05-12 Daimler Ag Verfahren zum effizienten Ablegen von Daten
CN113407934B (zh) * 2021-08-20 2021-12-24 博流智能科技(南京)有限公司 安全的多固件融合系统及多固件融合控制方法
CN116302005B (zh) * 2023-05-11 2023-08-22 合肥智芯半导体有限公司 芯片、芯片升级方法、装置、电子设备及可读存储介质
CN116560700B (zh) * 2023-07-11 2023-09-22 沐曦集成电路(上海)有限公司 芯片固件升级系统
CN117785755B (zh) * 2024-02-23 2024-05-28 北京超弦存储器研究院 Cxl内存模组及资源配置方法、控制芯片、介质和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009265877A (ja) * 2008-04-24 2009-11-12 Kyocera Mita Corp 電子機器
JP2013161117A (ja) * 2012-02-01 2013-08-19 Canon Inc 画像形成装置、画像形成装置の制御方法、及びプログラム
US20150248244A1 (en) * 2014-03-03 2015-09-03 Dong-young Seo Method of operating a flash memory system using a migration operation
US20170168725A1 (en) * 2015-12-10 2017-06-15 Kabushiki Kaisha Toshiba Memory system that updates firmware in response to predetermined events

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596738A (en) * 1992-01-31 1997-01-21 Teac Corporation Peripheral device control system using changeable firmware in a single flash memory
US5426769A (en) 1993-08-26 1995-06-20 Metalink Corp. System and method for producing input/output expansion for single chip microcomputers
US5477176A (en) 1994-06-02 1995-12-19 Motorola Inc. Power-on reset circuit for preventing multiple word line selections during power-up of an integrated circuit memory
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US8296467B2 (en) * 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US20080147964A1 (en) * 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7698698B2 (en) * 2004-09-30 2010-04-13 Smith Micro Software, Inc. Method for over-the-air firmware update of NAND flash memory based mobile devices
US20070061597A1 (en) * 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
US7702821B2 (en) * 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US20100217789A1 (en) * 2006-01-20 2010-08-26 Niigata University Physical random number generation method and physical random number generator
US20070255889A1 (en) * 2006-03-22 2007-11-01 Yoav Yogev Non-volatile memory device and method of operating the device
KR100782080B1 (ko) * 2006-09-07 2007-12-04 삼성전자주식회사 이동 통신 단말기 및 시스템의 펌웨어 갱신 방법
CN100504814C (zh) * 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
US8320302B2 (en) 2007-04-20 2012-11-27 Elster Electricity, Llc Over the air microcontroller flash memory updates
US8560823B1 (en) * 2007-04-24 2013-10-15 Marvell International Ltd. Trusted modular firmware update using digital certificate
US8539471B2 (en) * 2007-12-13 2013-09-17 Telefonaktiebolaget L M Ericsson (Publ) Updating firmware of an electronic device
US20090320012A1 (en) 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
US9223642B2 (en) * 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US9547589B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
ATE540371T1 (de) * 2008-06-23 2012-01-15 St Ericsson Sa Elektronische vorrichtung und verfahren zur software- oder firmwareaktualisierung einer elektronischen vorrichtung
GB2465193A (en) * 2008-11-10 2010-05-12 Symbian Software Ltd Detecting updated files in a firmware over the air update using CRC values
US8412909B2 (en) * 2009-04-08 2013-04-02 Samsung Electronics Co., Ltd. Defining and changing spare space and user space in a storage apparatus
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8869138B2 (en) 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US9189385B2 (en) * 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8344767B2 (en) 2010-10-14 2013-01-01 Fairchild Semiconductor Corporation Low power power-on-reset (POR) circuit
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
WO2012109679A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for application direct virtual memory management
JP5002719B1 (ja) * 2011-03-10 2012-08-15 株式会社東芝 情報処理装置、外部記憶装置、ホスト装置、中継装置、制御プログラム及び情報処理装置の制御方法
KR101720101B1 (ko) * 2011-03-18 2017-03-28 삼성전자주식회사 메모리 시스템에 데이터를 쓰는 쓰기 방법 및 메모리 시스템의 데이터 쓰기 방법
US20120260138A1 (en) * 2011-04-05 2012-10-11 Downing Iii Robert L Error logging in a storage device
US9183393B2 (en) 2012-01-12 2015-11-10 Facebook, Inc. Multiple system images for over-the-air updates
CN102855151B (zh) 2012-08-21 2016-06-08 武汉电信器件有限公司 不打断业务的光模块固件在应用升级方法
US8954694B2 (en) * 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
KR20150099269A (ko) * 2014-02-21 2015-08-31 삼성전자주식회사 펌웨어를 갱신하기 위한 전자 장치 및 방법
US9244767B1 (en) * 2014-07-07 2016-01-26 Sandisk Technologies Inc. Data storage device with in-memory parity circuitry
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10073627B2 (en) * 2015-01-13 2018-09-11 Sandisk Technologies Llc Addressing, interleave, wear leveling, and initialization schemes for different chip enables and memory arrays of different types
US9459857B2 (en) * 2015-01-21 2016-10-04 HGST Netherlands B.V. Managing wear of system areas of storage devices
KR20160118602A (ko) * 2015-04-02 2016-10-12 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 장치들
EP3133604B1 (en) * 2015-08-17 2020-11-11 Harman Becker Automotive Systems GmbH Method and device for fail-safe erase of flash memory
TWI551991B (zh) * 2015-11-20 2016-10-01 群聯電子股份有限公司 記憶體管理方法與系統及其記憶體儲存裝置
US10958435B2 (en) * 2015-12-21 2021-03-23 Electro Industries/ Gauge Tech Providing security in an intelligent electronic device
KR102456490B1 (ko) * 2016-01-12 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US10430263B2 (en) * 2016-02-01 2019-10-01 Electro Industries/Gauge Tech Devices, systems and methods for validating and upgrading firmware in intelligent electronic devices
US10025583B2 (en) * 2016-02-17 2018-07-17 International Business Machines Corporation Managing firmware upgrade failures
US10129083B2 (en) 2016-02-24 2018-11-13 Wipro Limited Methods for optimizing an over-the-air update using a lightweight device update protocol (LWDUP)
US20170249155A1 (en) * 2016-02-26 2017-08-31 Sandisk Technologies Inc. Memory System and Method for Fast Firmware Download
US10282251B2 (en) * 2016-09-07 2019-05-07 Sandisk Technologies Llc System and method for protecting firmware integrity in a multi-processor non-volatile memory system
KR20180049338A (ko) * 2016-10-31 2018-05-11 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US10339318B2 (en) * 2016-11-07 2019-07-02 SK Hynix Inc. Semiconductor memory system and operating method thereof
US10325108B2 (en) * 2016-12-30 2019-06-18 Intel Corporation Method and apparatus for range based checkpoints in a storage device
US11163624B2 (en) * 2017-01-27 2021-11-02 Pure Storage, Inc. Dynamically adjusting an amount of log data generated for a storage system
US10642488B2 (en) * 2017-10-23 2020-05-05 Micron Technology, Inc. Namespace size adjustment in non-volatile memory devices
US11580034B2 (en) * 2017-11-16 2023-02-14 Micron Technology, Inc. Namespace encryption in non-volatile memory devices
US10678703B2 (en) * 2017-11-16 2020-06-09 Micron Technology, Inc. Namespace mapping structual adjustment in non-volatile memory devices
US10915440B2 (en) * 2017-11-16 2021-02-09 Micron Technology, Inc. Namespace mapping optimization in non-volatile memory devices
US10552145B2 (en) 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009265877A (ja) * 2008-04-24 2009-11-12 Kyocera Mita Corp 電子機器
JP2013161117A (ja) * 2012-02-01 2013-08-19 Canon Inc 画像形成装置、画像形成装置の制御方法、及びプログラム
US20150248244A1 (en) * 2014-03-03 2015-09-03 Dong-young Seo Method of operating a flash memory system using a migration operation
US20170168725A1 (en) * 2015-12-10 2017-06-15 Kabushiki Kaisha Toshiba Memory system that updates firmware in response to predetermined events

Also Published As

Publication number Publication date
US11061663B2 (en) 2021-07-13
JP6999017B2 (ja) 2022-01-18
WO2019118130A1 (en) 2019-06-20
CN111433750B (zh) 2023-12-29
CN111433750A (zh) 2020-07-17
US20200301698A1 (en) 2020-09-24
JP6814327B1 (ja) 2021-01-13
US20190179625A1 (en) 2019-06-13
US10552145B2 (en) 2020-02-04
JP2021061023A (ja) 2021-04-15
DE112018006329T8 (de) 2020-10-29
DE112018006329T5 (de) 2020-08-20

Similar Documents

Publication Publication Date Title
JP6814327B1 (ja) 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法
US7506099B2 (en) Semiconductor storage apparatus
US8041878B2 (en) Flash file system
US7953953B2 (en) Method and apparatus for reducing page replacement time in system using demand paging technique
US8301829B2 (en) Flash memory device and flash memory system including buffer memory
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
JP2006031696A (ja) バッドブロック管理部を含むフラッシュメモリシステム
WO2007058624A1 (en) A controller for non-volatile memories, and methods of operating the memory controller
JP2006294061A (ja) メモリ管理
KR20090081657A (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
KR20080007470A (ko) Mram을 이용하는 비휘발성 메모리 시스템
US20140281150A1 (en) Difference l2p method
KR101041837B1 (ko) 파일저장 제어장치 및 방법
JP2019531546A (ja) 高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置
US20210026620A1 (en) Memory devices, systems, and methods for updating firmware with single memory device
CN107045423B (zh) 存储器装置及其数据存取方法
US11126573B1 (en) Systems and methods for managing variable size load units
JP2009526294A (ja) メモリ素子を有する電子デバイス及びその動作方法
US20130132659A1 (en) Microcontroller and method of controlling microcontroller
US7899974B2 (en) Nonvolatile memory, mapping control apparatus and method of the same
US10559359B2 (en) Method for rewriting data in nonvolatile memory and semiconductor device
JP2004234473A (ja) 不揮発性記憶装置
JP2007213179A (ja) 不揮発性半導体記憶装置
JP2003216343A (ja) マイクロコンピュータシステムおよびそのデータアクセス方法
JP2012190055A (ja) メモリの制御方法、メモリの制御回路、記憶装置、及び電子機器

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200729

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200729

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201012

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201218

R150 Certificate of patent or registration of utility model

Ref document number: 6814327

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250