(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-23
(45)【発行日】2022-01-18
(54)【発明の名称】単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法
(51)【国際特許分類】
G06F 12/06 20060101AFI20220111BHJP
G06F 8/65 20180101ALI20220111BHJP
G06F 12/02 20060101ALI20220111BHJP
【FI】
G06F12/06 520E
G06F8/65
G06F12/02 570A
【外国語出願】
(21)【出願番号】P 2020210313
(22)【出願日】2020-12-18
(62)【分割の表示】P 2020531080の分割
【原出願日】2018-11-19
【審査請求日】2021-10-19
(32)【優先日】2017-12-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-06-11
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364997
【氏名又は名称】サイプレス セミコンダクター コーポレーション
【氏名又は名称原語表記】Cypress Semiconductor Corporation
【住所又は居所原語表記】198 Champion Court, San Jose, CA 95134, United States of America
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【氏名又は名称】吉澤 雄郎
(72)【発明者】
【氏名】ステファン ロスナー
(72)【発明者】
【氏名】セルゲイ オストリコフ
(72)【発明者】
【氏名】クリフ ジットロー
(72)【発明者】
【氏名】伊勢 雄一
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2013-161117(JP,A)
【文献】特開2009-265877(JP,A)
【文献】米国特許出願公開第2017/0168725(US,A1)
【文献】米国特許出願公開第2015/0248244(US,A1)
【文献】米国特許出願公開第2016/0210132(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
G06F 12/06
G06F 8/65
(57)【特許請求の範囲】
【請求項1】
リマップ・データ構造を記憶するように構成されたメモリ回路と、
状態部分とを具えたメモリデバイスであって、
前記リマップ・データ構造は、論理アドレス-物理アドレスのマップを、前記メモリデバイスのメモリセルアレイに記憶されている複数のファームウェア・バージョン毎に含み、前記メモリセルアレイは、第1ファームウェア・バージョンを第1組の物理アドレスに記憶し、第2ファームウェア・バージョンを第2組の物理アドレスに記憶するように構成され、前記第1組の物理アドレスは前記第2組の物理アドレスとオーバーラップせず、
前記状態部分は、前記マップのうちの1つを前記メモリデバイス用の有効マップとして識別するように構成され、前記メモリセルアレイと前記リマップ・データ構造とは同じ集積回路基板で形成されるメモリデバイス。
【請求項2】
前記メモリセルアレイ及び前記リマップ・データ構造に結合された制御論理回路をさらに具え、該制御論理回路は、前記メモリセルアレイ及び前記リマップ・データ構造へのアクセスを可能にするように構成されている、請求項1に記載のメモリデバイス。
【請求項3】
前記有効マップを記憶するように構成された揮発性メモリ回路をさらに具え、前記制御回路は、受信した論理アドレスに応答して前記揮発性メモリ回路にアクセスするように構成されている、請求項2に記載のメモリデバイス。
【請求項4】
前記制御論理回路が命令デコーダをさらに含み、該命令デコーダは、受信した命令に応答して前記リマップ・データ構造へのアクセスを可能にするように構成されている、請求項2に記載のメモリデバイス。
【請求項5】
前記制御論理回路が少なくとも1つのコンフィギュレーション・レジスタをさらに含み、該コンフィギュレーション・レジスタは、前記メモリデバイスへのレジスタ書込み動作によりアクセス可能であり、前記少なくとも1つのコンフィギュレーション・レジスタは、前記リマップ・データ構造用のデータ、及び前記状態部分用のデータの少なくとも一方を記憶するように構成されている、請求項2に記載のメモリデバイス。
【請求項6】
前記制御論理回路がパワーオン・リセット回路をさらに含み、該パワーオン・リセット回路は、前記メモリデバイスに関連する電源オンまたはリセットの事象に応答して、前記有効マップの論理アドレスを、前記メモリデバイスに記憶されている前記複数のファームウェア・バージョンのうちの1つ用の最新のアドレスとして設定するように構成されている、請求項2に記載のメモリデバイス。
【請求項7】
前記メモリセルアレイが、複数のプールの形に配列された複数のフラッシュメモリセルを具え、前記制御論理回路が、前記複数のプールのうちの2つ以上へのアクセスを、ウェア・レベリング・アルゴリズムに従って変化させるように構成されている、請求項2に記載のメモリデバイス。
【請求項8】
前記状態部分が、前記複数のファームウェア・バージョン毎に1ビットを有するマルチビット・ポインタ・データ構造内の少なくとも1ビットを含む、請求項1に記載のメモリデバイス。
【請求項9】
新ファームウェア・イメージをメモリデバイスにおいて受信するステップと、
前記新ファームウェア・イメージを前記メモリデバイスの第2の不揮発性の記憶位置に置くステップであって、前記第2の不揮発性の記憶位置は、現在のファームウェア・イメージを記憶する前記メモリデバイスの第1の不揮発性の記憶位置とオーバーラップしないステップと、
前記新ファームウェア・イメージ用の論理アドレス-物理アドレスのマッピングを、前記メモリデバイスのメモリ回路に記憶されているリマップ・データ構造内に置くステップであって、該リマップ・データ構造は、現在のファームウェア・イメージ用の論理アドレス-物理アドレスのマッピングを含むステップと、
前記新ファームウェア・イメージ用の論理アドレス-物理アドレスのマッピングが有効なファームウェア・イメージであることを示す第1状態値を提供し、前記現在のファームウェア・イメージ用の論理アドレス-物理アドレスのマッピングが無効なファームウェア・イメージであることを示す第2状態値を提供するステップと
を含む方法。
【請求項10】
前記新ファームウェア・イメージを第2の不揮発性の記憶位置に置くステップが、フラッシュメモリデバイスのセクターをプログラムすることを含む、請求項9に記載の方法。
【請求項11】
前記第1状態値を提供するステップが、マルチビット・ポインタ・データ構造内の少なくとも1ビットをプログラムすることを含み、前記マルチビット・ポインタ・データ構造は、前記メモリデバイスに記憶されている前記論理アドレス-物理アドレスのマッピング毎に1ビットを含む、請求項9に記載の方法。
【請求項12】
前記新ファームウェア・イメージ用の論理アドレス-物理アドレスのマッピングを置くステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むこと、の少なくとも一方を含む、請求項9に記載の方法。
【請求項13】
前記新ファームウェア・イメージ用の前記第1状態値を提供するステップが、所定の命令及びデータを前記メモリデバイスにおいて受信すること、及び前記メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むこと、の少なくとも一方を含む、請求項9に記載の方法。
【請求項14】
所定の事象に応答して、他の論理アドレス-物理アドレスのマッピングを生成して揮発性メモリ内に置くステップであって、前記他の論理アドレス-物理アドレスのマッピングは、前記新ファームウェア・イメージ用の前記論理アドレス-物理アドレスのマッピングに基づくステップと、
前記メモリデバイスの前記少なくとも1つの所定のレジスタにデータを書き込むステップと
をさらに含む、請求項9に記載の方法。
【請求項15】
前記所定の事象が、前記メモリデバイスにおけるパワーオン・リセット動作、所定の命令を前記メモリデバイスにおいて受信したこと、及び前記メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むこと、のうちの1つを含む、請求項14に記載の方法。
【請求項16】
不揮発性メモリデバイスと、
トランシーバと、
プロセッサ回路とを具えたシステムであって、
前記不揮発性メモリデバイスは、
異なる物理アドレスによりアクセス可能な異なるファームウェア・イメージを記憶するように構成されたメモリセルアレイと、
前記異なるファームウェア・イメージ毎の論理アドレス-物理アドレスのマッピングを記憶するように構成されたマッピング部分と、
前記システムによってアクセスされる第1ファームウェア・イメージを識別するデータを記憶するように構成された状態部分とを含み、
前記トランシーバは、第2ファームウェア・イメージを無線ネットワーク経由で受信するように構成され、
前記プロセッサ回路は、命令を実行して、
前記メモリセルアレイに記憶されている前記第1ファームウェア・イメージを乱すことなしに、前記第2ファームウェア・イメージを前記メモリセルアレイ内に置き、
前記第2ファームウェア・イメージ用の論理アドレス-物理アドレスのマッピングを前記マッピング部分内に置き、
前記状態部分に、前記第1ファームウェア・イメージの使用から前記第2ファームウェア・イメージの使用への切り換えを示させる
ように構成され、
前記第2ファームウェア・イメージ用の前記論理アドレス-物理アドレスのマッピングは、前記第2ファームウェア・イメージにアクセスするために使用されるシステム。
【請求項17】
前記プロセッサ回路が、所定の命令及びデータを前記不揮発性メモリデバイスに対して発行すること、及び前記不揮発性メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むこと、の少なくとも一方により、前記第2ファームウェア・イメージ用の前記論理アドレス-物理アドレスのマッピングを前記マッピング部分内に置くように構成されている、請求項16に記載のシステム。
【請求項18】
前記プロセッサ回路が、前記状態部分に、所定の命令及びデータを前記不揮発性メモリデバイスに対して発行すること、及び前記不揮発性メモリデバイスの少なくとも1つの所定のレジスタにデータを書き込むこと、の少なくとも一方による前記切り換えを示させるように構成されている、請求項16に記載のシステム。
【請求項19】
前記第2ファームウェア・イメージの受信前に、前記プロセッサ回路が、前記不揮発性メモリデバイスに記憶されている前記第1ファームウェア・イメージにチップ選択信号によりアクセスするように構成され、前記第2ファームウェア・イメージの受信後に、前記プロセッサ回路が、前記第2ファームウェア・イメージに前記チップ選択信号によりアクセスするように構成されている、請求項16に記載のシステム。
【請求項20】
前記不揮発性メモリデバイスが、前記異なるファームウェア・イメージ毎に1つのプール、該プール毎に異なるマッピング部分、及び該プール毎に異なる状態部分を含み、前記状態部分の各々が、対応するマッピング部分のエントリ毎に1ビットを有するマルチビット・ポインタ・データ構造内の少なくとも1ビットを含む、請求項16に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、米国特許非仮出願第16/005262号、2018年6月11日出願の国際
出願であり、この米国特許非仮出願は米国特許仮出願題62/597709号、2017
年12月12日出願により優先権を主張し、これらの特許出願のすべての内容は参照する
ことによって本明細書に含める。
【0002】
技術分野
本発明は一般に不揮発性メモリ内のデータを時々更新(アップデート)するシステムに
関するものであり、より具体的には、ファームウェア無線通信(FOTA:firmware-ove
r-the-air)法を利用するシステムのようなシステム用途向けのファームウェア・イメー
ジを更新するシステムに関するものである。
【背景技術】
【0003】
背景
ファームウェア無線通信(FOTA)(無線通信によるファームウェア更新)及び他の
ファームウェア更新方法は、コンピュータシステムにとって主要な要件であり得る。FO
TA更新は一般にトランスペアレントである必要があり、即ち、旧FW(firmware:ファ
ームウェア)イメージと新FWイメージとを瞬時に切り換える。従来は、ファームウェア
を更新する必要があるシステムは2つ以上の別個のフラッシュメモリデバイスを使用し、
これらのフラッシュメモリデバイスは(例えば、ベースレジスタの使用により)プロセッ
サのアドレス空間の異なる範囲内へマッピング(対応付け)される。異なるアドレス範囲
の各々のベースアドレスは、所望のフラッシュメモリデバイスを選択する単一のチップ選
択(チップセレクト)を制御する。従って、上記瞬時の切り換えは、ベースアドレス・レ
ジスタに記憶されているベースアドレスをスワップ(交換)することによって発生する。
【0004】
図16Aに、FOTA更新を含む従来のシステム1691を示す。システム1691は
、マイクロコントローラ(MCU:microcontroller unit)1693及び複数のフラッシ
ュメモリデバイス1695-0~1695-2を含むことができる。フラッシュメモリデ
バイス(1695-0~1695-2)内の記憶位置(記憶場所)はシステムアドレス空
間1697へマッピングすることができる。フラッシュメモリデバイス0 1695-0
は、ベースアドレス0x000に対応することができ、旧ファームウェア・イメージ16
07-0(即ち、期限切れのバージョン、従って置き換えられたバージョン)を記憶する
ことができる。フラッシュメモリデバイス1 1695-1は、ベースアドレス0x10
0に対応することができ、現在のファームウェア・イメージ(即ち、現在、システムがア
クセスするバージョン)を記憶することができる。フラッシュメモリデバイス2 169
5-2は、ベースアドレス0x200に対応することができ、新ファームウェア・イメー
ジ1697-2(即ち、現在のイメージを更新することを意図したバージョン)を記憶す
ることができる。
【0005】
MCU1693は、MCU1693内部のアドレス指定(アドレッシング)メカニズム
を用いてファームウェア・イメージを更新することができる。MCU1693はベースア
ドレス・レジスタ1699を有することができ、ベースアドレス・レジスタ1699はフ
ァームウェア・イメージに対応するベースアドレスを記憶する。ベースアドレス・レジス
タを用いて、フラッシュメモリデバイス1695-0~1695-2用のそれぞれのチッ
プ選択信号CS0~CS2を発生する。ベースアドレス・レジスタ”ba_new_image”は、
新ファームウェア・イメージのベース物理アドレス(更新前の0x200)を記憶するこ
とができる。ベースアドレス・レジスタ”ba_cur_image”は、現在のファームウェア・イ
メージのベース物理アドレス(更新前の0x100)を記憶することができる。ベースア
ドレス・レジスタ”ba_old_image”は、旧ファームウェア・イメージのベース物理アドレ
ス(更新前の0x000)を記憶することができる。
【0006】
システム1691は、ベースアドレス・レジスタ1699内の値を切り換えることによ
って、現在のイメージ(例えば、1697-1)から新イメージ(例えば、1697-2
)へ更新することができる。具体的には、ベースアドレス・レジスタba_cur_image内の値
を”cfg_cur”から”cfg_new”に切り換えることができる。こうした作業に続いて、シス
テム1691がファームウェアを読みに行く際に、MCA1693内部のアドレス指定メ
カニズムが、チップ選択信号CS2を(更新作業の前に発生したCS1の代わりに)発生
する。
【0007】
図16Bは従来のシステム1691のブロック図であり、チップ選択を使用する方法を
示す。MCU1693は、1つの出力端子(例えば、I/O(input/output:入力/出力
)端子)を、フラッシュメモリデバイス1695-0/1毎のチップ選択(CS1、CS
2)としての専用にする。以上より理解されるように、こうしたチップ選択(CS1、C
S2)はベースアドレス・レジスタ内の値に応じて活性化することができる。一方のフラ
ッシュメモリ(例えば、1695-0)は、現在使用中であるファームウェア・イメージ
を記憶することができるのに対し、他方のフラッシュメモリ(例えば、1695-1)は
、現在使用中でない(即ち、旧ファームウェア・イメージ、あるいはベースアドレス・レ
ジスタ値を切り換えることによって使用中にされるべき新ファームウェア・イメージ)を
記憶することができる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来のFOTA方法の欠点は、コスト及び性能の限界であり得る。1つのI/O端子を
フラッシュメモリデバイス毎の(即ち、各ファームウェア・イメージの)チップ選択端子
としての専用にする代表的なコントローラ(例えば、MCU)を使用する場合、このコン
トローラは、ダイナミックRAM(DRAM:dynamic random access memory:ダイナミ
ック・ランダムアクセスメモリ)またはスタティックRAM(SRAM:static RAM)の
ような他の必要なデバイス用の未使用のI/O端子を有さないことがある。その結果、追
加的なI/O端子を有するコントローラを使用しなければならないことがあり、このこと
はシステムのコストを増加させ得る。従来のシステムは複数のフラッシュメモリデバイス
を同じバスに接続することができるが、フラッシュメモリデバイスが追加される毎にバス
上の容量性負荷が増加し得る。従って、バス上のフラッシュメモリデバイスの数が多くな
るほど、バスはより低速で機能する。ほんの一例として、8進(オクタル)のSPI(se
rial peripheral interface:シリアル周辺インタフェース)バスについては、2つのフ
ラッシュメモリデバイスを追加することは、1つのフラッシュメモリデバイスしか有さな
い同じバスに比べれば、最高バス速度を200MHzから133~166MHzに低下させ得る
。
【図面の簡単な説明】
【0009】
【
図1】
図1A~1Dは、一実施形態によるシステム及びファームウェア更新作業を示す一連のブロック図である。
【
図2】
図2A及び2Bは、メモリデバイスが命令及び/またはレジスタ書込みを受け取ることを更新作業に含めることができる方法を示すブロック図である。
【
図3】一実施形態によるメモリデバイスの概略ブロック図である。
【
図4】一実施形態によるメモリデバイスのリマップ・データ構造を示す図である。
【
図5】一実施形態によるファームウェア更新作業を示す流れ図である。
【
図6】
図6A及び6Bは、実施形態に含めることができるメモリセルのアレイ構成を示す図である。
【
図7】実施形態に含めることができるデータ構造及び対応するメモリセルアレイを示すブロック図である。
【
図8】実施形態に含めることができる、可変数のプールに分割することができるメモリセルアレイを示す図である。
【
図9】
図9A~9Dは、実施形態による、ファームウェアを更新するためのメモリデバイスへの入力を示す図である。
【
図10】一実施形態による、ファームウェア無線通信(FOTA)更新を含むことができるシステムを示す図である。
【
図11】一実施形態によるシステムのブロック図である。
【
図12】
図12A及び12Bは、実施形態によるメモリデバイスの透視図である。
【
図13】
図13A~13Cは、実施形態による好適なデバイスの図である。
【
図16】
図16A及び16Bは、FOTA更新を行う従来システムを示す図である。
【発明を実施するための形態】
【0010】
詳細な説明
システムのファームウェアを更新するためのメモリデバイス、システム、及び方法を示
す種々の実施形態を以下に説明する。更新は、単一のメモリデバイスで、メモリデバイス
の記憶位置間でファームウェア・イメージをコピーすることなしに実行することができる
。
【0011】
実施形態によれば、現在のファームウェア・イメージを記憶しているのと同じメモリデ
バイス内に新ファームウェア・イメージをプログラムすることができる。一旦、新ファー
ムウェア・イメージを記憶すると、メモリデバイスは、内部リマッピング(再マッピング
、再配置)データ構造を用いる切り換え動作によって新ファームウェア・イメージへの切
り換えを行うことができる。こうした新ファームウェア・イメージへの切り換えは瞬時に
行うことができる。
【0012】
以下の種々の実施形態では、同様のアイテムは同じ参照文字によって参照し、但し図番
に対応する先行数字を付ける。
【0013】
図1A~1Dは、システム100及び対応するファームウェア更新作業を示す一連の流
れ図である。システム100は、メモリデバイス102、コントローラ104、及びコン
トローラ・メモリ106を含むことができる。メモリデバイス102は、不揮発性メモリ
アレイ108、リマップ(再マッピング、再配置)データ構造110、及び入力/出力(
I/O)兼制御回路112を含むことができる。不揮発性メモリアレイ108は複数の不
揮発性メモリセルを含むことができ、これらの不揮発性メモリセルはデータを不揮発性の
方法で記憶することができる。即ち、電力がない場合に、記憶しているデータを保持する
ことができる。記憶位置は物理アドレス(PA:physical address)によりアクセスする
ことができる。不揮発性メモリ108はあらゆる適切な種類の不揮発性メモリセルを含む
ことができるが、一部の実施形態では「フラッシュ」型メモリセルを含むことができる。
不揮発性メモリアレイ108は、少なくとも2つ以上のファームウェア・イメージ用に十
分な記憶容量を有することができる。
【0014】
リマップ・データ構造110は、ファームウェア・イメージの論理アドレス-物理アド
レス(LA(logical address)→PA)マッピング、並びにこうしたLA→PAマッピ
ング毎の状態を記録するデータを記憶することができる。例えば、エントリ110-0は
、VAL(valid)の表示で示す有効なマッピング(LA_FW=PAx)を記憶する。エントリ11
0-1はINV(invalid)の表示で示す有効でないマッピングを記憶する。なお、リマップ
・データ構造110はメモリデバイス102上に常駐してデータを不揮発性の方法で記憶
する。以下の他の実施形態に示すように、リマップ・データ構造110は、論理アドレス
と物理アドレスとの間の高速変換用に揮発性メモリ(図示せず)に記憶されているLA→
PAルックアップ・テーブル(早見表)または他の構造を含むことができる。リマップ・
データ構造110は、不揮発性メモリアレイ108の外部に位置する不揮発性メモリセル
及び/または不揮発性メモリアレイ108内に位置する不揮発性メモリセルを利用するこ
とができる。
【0015】
一部の実施形態では、メモリデバイス102を単一の集積回路デバイスとすることがで
きる。こうした構成では、不揮発性メモリアレイ108、リマップ・データ構造110、
及びUI/O兼制御回路112は、同じ集積回路パッケージの一部とすることができる。
特定の実施形態では、不揮発性メモリアレイ108、リマップ・データ構造110、及び
I/O兼制御回路112を、同じ集積回路基板の一部とすることができる(即ち、単一「
チップ」内に形成される)。
【0016】
I/O兼制御回路112は、不揮発性メモリセル108及びリマップ・データ構造11
0へのアクセスを可能にすることができる。不揮発性、メモリアレイ108に記憶されて
いるファームウェアにアクセスするために、I/O兼制御回路112は、リマップ・デー
タ構造110を用いて、どのLA→PAマッピングが有効であるかを特定することができ
、次にこうしたマッピングを用いて、有効なファームウェア・イメージの論理アドレスを
物理アドレスに向けることができる。
【0017】
一部の実施形態では、所定の動作(例えば、パワー(電源)オン/リセットPOR(po
wer-on/reset)、受信した命令、レジスタ設定)に応答して、メモリデバイス102はリ
マップ・データ構造110にアクセスして、LA→PAマッピング構造を揮発性メモリ(
図示せず)内に作成することができる。
【0018】
コントローラ104は、システム100の種々の機能を実行するための論理回路を含む
ことができる。一部の実施形態では、コントローラ104が、記憶されている命令116
を実行することができる1つ以上のプロセッサ及び関連する回路を含むことができる。し
かし、代案の実施形態は、カスタム(特注)論理回路及び/またはプログラム可能な論理
回路(プログラマブル・ロジック)を含めた他のあらゆる適切な回路を含むことができる
。コントローラ104は、メモリデバイス102とは異なるコントローラ・メモリ108
へのアクセスを行うことができる。コントローラ・メモリ104は、あらゆる適切なメモ
リ回路で形成することができ、特定の実施形態では、ダイナミック・ランダムアクセスメ
モリ(DRAM)またはスタティックRAM(SRAM)のような揮発性メモリとするこ
とができる。
【0019】
システム100の構成要素を説明してきた。システム100における更新作業を以下に
説明する。
【0020】
図1Aを参照すれば、システム100は、最初に、現在のファームウェア・イメージ1
14を不揮発性メモリアレイ108の物理アドレスPAxから始まる位置に記憶することが
できる。システムの動作中に、現在のファームウェア・イメージ114がメモリデバイス
102からI/O兼制御回路112によって読み出され、I/O兼制御回路112は、リ
マップ・データ構造110にアクセスすることによって、論理アドレス(LA_FWから始ま
ることができる)を物理アドレス(PAxから始まることができる)に変換する。
【0021】
図1Aをさらに参照すれば、システム100は新ファームウェア・イメージを受信する
ことができる(動作103で示す)。コントローラ104は新ファームウェア・イメージ
118をコントローラ・メモリ106に記憶することができる。新ファームウェア・イメ
ージ118はネットワーク120から受信することができる。一部の実施形態では、ネッ
トワーク120は無線ネットワークとすることができ、更新作業はFOTA動作とするこ
とができる。
【0022】
図1Bを参照すれば、コントローラ104は新ファームウェア・イメージ118を不揮
発性メモリアレイ108内にプログラムすることができる。新ファームウェア・イメージ
118は現在のファームウェア・イメージ114が占めていない物理的位置にプログラム
されることは明らかである。図示する実施形態では、新ファームウェア・イメージ118
は、PAyから始まる物理アドレスの範囲を占めることができ、この範囲は現在のファーム
ウェア114を記憶している物理アドレスの範囲とオーバーラップ(重複)しない。新フ
ァームウェア・イメージ118は、不揮発性メモリアレイ108の種類及びアーキテクチ
ャに適したあらゆる技術によりプログラムすることができる。一部の実施形態では、新フ
ァームウェア・イメージ118用の物理アドレスをコントローラ104によって発生する
ことができる。しかし、他の実施形態では、こうした物理アドレスは、I/O兼制御回路
112がコントローラ104からの1つ以上の命令に応答して発生することができる。
【0023】
図1Cを参照すれば、コントローラ104は、新ファームウェア・イメージ118をリ
マップ・データ構造110にマッピングする論理アドレス-物理アドレス(の対応関係)
もプログラムすることができる。こうした動作は、
図1C中に、”LA_FW=PAy”がエント
リ110-1にプログラムされることによって示す。このようにして、システム100が
ファームウェアにアクセスするために意図された論理アドレスを、新イメージ118の物
理アドレスに割り当てることができる。しかし、
図1Cに示すように、こうしたマッピン
グは効かない、というのはエントリ110-1が無効な状態を有し続けるからである。
【0024】
図1Dを参照すれば、コントローラ104は、新たなマッピング・エントリを有効にプ
ログラムすることによって、新ファームウェア・イメージを「有効」にすることができる
。こうした動作は、
図1D中に、エントリ110-1が有効(VAL)に変化し、エントリ
110-0が無効になったことによって示している。不揮発性メモリアレイ108内に示
すように、一旦、新たなマッピングが有効になると、PAxにあるファームウェア・イメー
ジは無効な(例えば、期限切れの)ファームウェア・イメージ115になり、PAyにある
ファームウェア・イメージが現在のファームウェア・イメージになって、システムによっ
てアクセスされる。
【0025】
一旦、新ファームウェア・イメージが有効になる(例えば、生きる)と、即座に、ある
いは所定条件に応答してアクセスすることができる。多数の可能な例の内のほんの少数と
して、次のいずれか、あるいは全部の後に新たなマッピングが効力を生じることができる
:デバイスまたはシステムの次回の電源投入またはリセット(POR:power-up or rese
t)動作、メモリデバイス102が所定の命令を受信すること、または所定の値がメモリ
デバイス102のコンフィギュレーション・レジスタに書き込まれること。
【0026】
図1A~1Dに示すような動作は、ファームウェアの更新をトランスペアレントかつ即
時にすることができ、同じメモリデバイス内の位置間でデータをコピーすることを必要と
しないようにすることができる。なお、一部の実施形態では、メモリデバイス102が2
つの位置をファームウェア用に保持することができ、これら2つの位置間で新ファームウ
ェア・イメージの各々を「スワップ」することができる。しかし、他の実施形態では、メ
モリデバイス102が3つ以上の記憶位置をファームウェア用に含むことができ、新ファ
ームウェア・イメージを受信した際に、これらの種々の位置間を循環させる(種々の位置
を順に使用する)ことができる。
【0027】
コントローラ104はファームウェア位置用の物理アドレスを追跡することができるが
、一部の実施形態では、I/O兼制御論理回路112がこうしたタスクを担って、コント
ローラ104から受信したファームウェア・データ値用の物理アドレスを発生することが
できる。
【0028】
本明細書中に示す実施形態は、メモリデバイスによって実行される種々の動作を含むこ
とができ、これらの動作は、ファームウェア・データを不揮発性メモリアレイの記憶位置
にプログラムすること、リマップ・データ構造内に値(例えば、LA-PAマッピングデ
ータ、状態値、等)をプログラムすること、及び新バージョンのファームウェアを”有効
”にする(即ち、システムにとって利用可能にする)ことを含む。こうした動作はあらゆ
る適切な方法で実現することができるが、
図2A及び2Bは実施形態による2つのやり方
を示す。
【0029】
図2A及び2Bは、メモリデバイス202及び202’のブロック図である。特定の実
施形態では、メモリデバイス202/202’を、
図1A~1D中に102で示すものの
特定の実現とすることができる。
【0030】
図2Aに、メモリデバイス202内のコンフィギュレーション・レジスタへのデータの
書込みを示す。メモリデバイス202は、I/O回路212-0、制御論理回路212-
1、リマップ・データ構造210、及びコンフィギュレーション・レジスタ222を含む
ことができる。データ値DATAをコンフィギュレーション・レジスタ222に書き込んで、
ファームウェア更新作業における動作を開始するか可能にすることができる。ほんの少数
の例として、このレジスタ設定によれば、次のいずれか、あるいは全部が発生し得る:新
ファームウェア・イメージを「有効」にすることができる、PA→LAのマッピングデー
タ(210-x)をプログラムすることができる、メモリデバイスを、コントローラが新
ファームウェアを記憶位置にプログラムすること(即ち、物理アドレス指定でアクセスす
ること)を可能にするモードにすることができる。コンフィギュレーション・レジスタ2
22に書き込むことは、データ及びレジスタ・アドレス(データ+アドレス)をメモリデ
バイスに与えることを含むことができる。さらに、こうした動作は命令(例えば、レジス
タに書き込む、等)を含むこともできる。
【0031】
図2Bに、ファームウェア更新作業用の特定の命令を受信するメモリデバイス202’
を示す。メモリデバイス202’は、
図2Aと同じアイテムを含むことができる。しかし
、
図2Aとは異なり、ファームウェア更新作業中の動作はメモリデバイス202’にとっ
て専用の命令によって実行することができる。従って、制御論理回路212-1は命令デ
コーダ224を含むことができる。1つ以上の命令に応答して、制御論理回路212-1
’は、
図2Aのレジスタ書込みについて述べた動作のいずれか(即ち、新ファームウェア
を「有効」にする、等)を実行することができる。一部の実施形態では、命令(命令)に
1つ以上のデータ値(+データ)を添付することができる。
【0032】
図3は、他の実施形態によるメモリデバイス302のブロック図である。特定の実施形
態では、
図3は、
図1A~1D中に102で示すもの、あるいは
図2A/B中に示すもの
の1つの実現とすることができる。
【0033】
メモリデバイス302は、I/O回路312-0、制御論理回路312-1、リマップ
・データ構造310、メモリセルアレイ308、X及びYデコーダ334及び336、及
びデータラッチ338を含むことができる。I/O回路312-0は、メモリデバイス3
02用のあらゆる適切なインタフェースを提供することができ、図示する非常に特別な実
施形態では、チップ選択入力端子CS、クロック入力端子CLK、シリアルI/O(SI
/O0)端子、及び任意で1つ以上の追加的なシリアルI/O(SI/On)端子を含む
ことができる。十分に理解された技術によれば、メモリデバイス302はアクティブ(有
効)なCS信号によってアクセスすることができ、SI/O0(及びSI/On)端子上の
命令、アドレス値、またはデータ値をCLK端子で受信したクロックに同期して受信する
ことができる。しかし、こうした特定のインタフェースは限定的なものと考えるべきでな
い。代案の実施形態は種々のインタフェースを有するI/O回路を含むことができ、これ
らのインタフェースは、専用のアドレス線及びデータ線、非同期タイミング、並列バス、
等を有するものを含む。
【0034】
リマップ・データ構造310は、不揮発性の方法でデータを記憶して、最新のファーム
ウェア・イメージを追跡してアクセスを可能にする。図示する実施形態では、リマップ・
データ構造310が、ポインタデータ328、リマップ履歴データ330、及びマップメ
モリ332を含むことができる。リマップ履歴データ330は、新ファームウェア・イメ
ージがメモリセルアレイ308内にプログラムされる毎に、LA→PAマッピングデータ
を記憶することができる。従って、リマップ履歴データ330は、特定のファームウェア
についてのすべてのマッピングの履歴を記憶することができる(ここでは最も古いエント
リを最終的に上書きする)。ポインタデータ328は、最新のリマップ履歴データのエン
トリを指示することができ、従って最新のファームウェア・イメージのエントリを指示す
ることができる。マップメモリ332内のデータは、リマップ履歴データ330よりも高
速にアクセスすることができ、高速のLA→PA変換を提供するように構成することがで
きる。一部の実施形態では、マップメモリ332を揮発性のメモリ構造にすることができ
、このメモリ構造に、ポインタデータ328が指示するリマップ履歴データを入れる。一
部の実施形態では、ポインタデータ328及びリマップ履歴データ330を不揮発性メモ
リ回路に記憶する。こうした不揮発性メモリ回路は、メモリセルアレイ308の一部とす
ることができ、あるいはメモリセルアレイ308とは別個にすることができる。マップメ
モリ332は、SRAM及び/またはDRAMのような揮発性メモリ回路を含むことがで
きる。
【0035】
制御論理回路312-1は、メモリデバイス302の動作を、I/O回路312-0で
受信した信号に従って実行することができる。図示する実施形態では、制御論理回路31
2-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から見出すことを含むことができる。次に、制御論理回路3
12-1は、LA→PAのルックアップ構造を、リマップ履歴データ330からマップメ
モリ332内に作成することができる。次に、制御論理回路312-1は、マップメモリ
332にアクセスして、ファームウェアの論理アドレスに対して行う読出し要求を提供す
る。
【0036】
メモリセルアレイ308は不揮発性メモリセルを含むことができ、これらの不揮発性メ
モリセルはX及びYデコーダ(334/336)によって復号化(デコード)された物理
アドレスによりアクセスされる。不揮発性メモリセルは、あらゆる適切な技術のものとす
ることができ、特定の実施形態では、シングル・トランジスタの「フラッシュ」型メモリ
とすることができる。メモリセルアレイ308は、あらゆる適切な編成を有することがで
き、特定の実施形態ではセクター単位で編成することができる。
【0037】
データラッチ338は、メモリセルアレイ308から受信した読出しデータを、制御論
理回路312によるSI/O0(及び存在すればSI/On)端子上への出力用に記憶す
ることができる。データラッチ338は、SI/O0(及び存在すればSI/On)端子
上で受信した書込みデータを記憶することもできる。
【0038】
図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に記憶されているデータ
に由来するものと理解するべきである。
【0039】
新ファームウェア・イメージを受信すると、そのLA→PAマッピングをエントリ「n
」にプログラムして、こうした新ファームウェア・イメージを「有効」にすることができ
、索引nに対するポインタのビット値を1~0に変化させることができる。
【0040】
種々のシステム、デバイス、及び対応する方法を以上に説明してきた。他の方法を以下
に
図5を参照しながら説明する。
図5は、コントローラ及び単一のメモリデバイスにより
ファームウェアを更新する方法の流れ図である。方法540は、本明細書中に説明したシ
ステムのいずれか、及びその等価物によって実行することができる。方法540では、メ
モリデバイスはフラッシュメモリデバイスとすることができるが、他の実施形態は他のあ
らゆる適切な技術に基づく不揮発性の記憶装置を含むことができる。
【0041】
方法540は、初期化イベントが生じるメモリデバイスを含むことができ、図示する実
施形態ではPOR型のイベント540-0とすることができる。こうしたイベントに応答
して、メモリデバイスは、LA→PAマッピングをリマップ履歴(例えば、SMFLASH)か
らマップメモリ(例えば、SMRAM)にロードすることができる。同じ動作(SMRAMに値を入
れること)を生じさせることができる他の初期化イベントは、ほんの少数の例として、メ
モリデバイスに対する特定の命令またはコマンド(命令語)、あるいはメモリデバイスの
1つ以上のコンフィギュレーション・レジスタの設定を含むことができる。
【0042】
コントローラ(例えば、MCU)は現在のファームウェア・イメージを起動することが
できる。こうした動作は、コントローラがLAを既知の最後のファームウェア・イメージ
の値に設定することを含むことができる。それに加えて、コントローラは最新のイメージ
の(メモリデバイス内の)物理アドレスの記録を有することもできる。図示する実施形態
では、現在の論理アドレスが現在の物理アドレスに等しいものと仮定する。
図5では、現
在のファームウェア・イメージがセクター「C」に記憶されているものと理解され、セク
ター「C」は物理アドレスc1、c2等を含む。
【0043】
コントローラは新ファームウェア・イメージ540-4を受信することができる。こう
した動作は、本明細書中に説明するもののいずれか、またはその等価物を含むことができ
、新ファームウェア・イメージを無線接続上で受信してコントローラ・メモリ(RAM)
に記憶することを含む。
【0044】
コントローラは、新ファームウェアをメモリデバイス540-6内にプログラムするこ
とができる。こうした動作は、コントローラが論理アドレス及び物理アドレスをデータ用
に割り当てて記録することを含むことができる。図示する実施形態では、割り当てた論理
アドレスが割り当てた物理アドレスに等しいものと仮定する。
図5では、新ファームウェ
ア・イメージがセクター「N」に記憶されているものと理解し、セクター「N」は物理ア
ドレスn1、n2、等を含む。セクター「N」はセクター「C」とは異なり、セクター「
C」とオーバーラップしないものと理解する。動作540-6は、一部の実施形態におい
てLA→PAマッピングをアプリケーション/ユーザに対して示すことができる方法を示
す。
【0045】
次に、コントローラはメモリデバイス上のリマップ履歴データ(SMFLASH)を更新して
、新ファームウェア・イメージの位置540-8を記憶する。こうした動作は、コントロ
ーラが現在のファームウェア・イメージの論理アドレスを新ファームウェア・イメージの
論理アドレスと交換することを含むことができる。
図5では、このことは複数の論理アド
レスのスワップを含むことができる。
【0046】
方法540は、コントローラがメモリデバイス540-10内の有効ビットをセットす
ることによってファームウェア更新を「有効」にすることをさらに含むことができる。図
5では、このことは、
図4のもののようなデータ構造内のビット(即ち、ポインタFR_VEC
内のビット値)をセットすることを含むことができる。
【0047】
新ファームウェア・イメージが「有効」にされ、メモリデバイスに他の初期化イベント
540-0(例えば、POR、特別な命令/コマンド、コンフィギュレーション・レジス
タの書込み)が生じると、コントローラは新たなイメージを起動し、即ちLA(cur_img)=N
、ここにN=(n1, N2,...)となる。こうして、ファームウェア更新が即座に有効になる。
【0048】
図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にプログラムされる。
【0049】
図6はスワップ動作を示す。新ファームウェア・イメージ用の論理アドレスが一時的な
値として記憶される(tmp=LA(new_img))。新ファームウェア・イメージ用の論理アドレ
スが、現在のファームウェア・イメージの論理アドレスにセットされる(LA(new_img)=LA
(cur_img))。こうした動作は、(今度は期限切れの)現在のファームウェア・イメージ
を、次の新ファームウェア・イメージ用のデスティネーション(送り先)として指定する
。次に、新たに受信したファームウェア・イメージを現在のファームウェア・イメージと
して設定する(LA(cur_img)=tmp)。
【0050】
もちろん、他の実施形態では、ファームウェア・プール642が3つ以上のファームウ
ェア・イメージを収容することができ、従って、更新は、2つのアドレス範囲間だけでス
ワップするのではなく、複数のアドレス範囲の全部を通して順に行う。
【0051】
図6Aを参照すれば、一部の実施形態では、プール(642、644-0、644-1
)をウェア・レベリング(損耗平準化)プールとすることができる。メモリセルアレイ6
08を含むメモリデバイスは、論理アドレス-物理アドレスのマッピングを、プール間で
損耗(ウェア)が平準化されるように変更することができる。一部の実施形態では、ファ
ームウェア・プール642を、ウェア・レベリング動作中に他のあらゆるプール(例えば
、644-0/1)のように扱うことができる。即ち、一旦、ファームウェア・プール6
42へのアクセス数がある所定の閾値を超えると、新たなプール(例えば、644-0/
1)をファームウェア・プールとして指定することができる。こうした実施形態では、複
数のファームウェア・イメージを同じプール内に記憶して、ウェア・レベリング動作があ
るプールを動作から外して異なるプールに置き換えてプールを循環させる(順に使用する
)場合に、マッピングデータを失うことを回避することができる。
【0052】
図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のものと同様の構造を有するように示
している。
【0053】
一部の実施形態では、プール(742/744-0~744-k)をウェア・レベリン
グ・プールとすることができ、従って、ウェア・レベリング基準に基づいて未使用にして
、プールを順に使用することができる。
図7のメモリデバイス702では、いずれのプー
ル(742/744-0~744-k)もファームウェア・プールとして機能することが
できる、というのは、当該プールに対応するリマップ・データ構造が存在するからである
。
【0054】
一部の実施形態では、メモリセルアレイが、プログラム可能なサイズの物理的領域を有
することができる。
図8に、こうしたメモリセルアレイ808の一例を示す。メモリセル
アレイ808は、プール842/844として示す異なる領域に分割可能な複数の記憶領
域を含むことができる。これらのプールのサイズ及び物理的位置は、ポインタ値(WL_PTR
0~WL_PTR2)に応じてプログラム可能にすることができ、このポインタ値はベース物理ア
ドレスを指示することができる。一部の実施形態では、こうしたプールをウェア・レベリ
ング・プールにすることができる。従って、こうしたプールへのアクセスを監視するか、
さもなければ追跡して、他のプールよりも多数回使用されたプールを循環(順次の使用)
から外して、より損耗の小さいプールにアドレスをリマップ(再マッピング)することが
できる。
【0055】
図8は、ポインタ値(WL_PTR0~WL_PTR2)を用いてメモリセルアレイ808を分割する
ことができる方法の例848を含む。例848は、1つだけのプール、2つのプール、及
び3つのプールを含む。もちろん、十分な数のポインタ値が利用可能であるものとすれば
、任意数のプールを作成することができる。こうした構成では、ファームウェアのサイズ
に応じてプールのサイズを調整することができる(即ち、少なくとも2つのイメージを記
憶するのに十分なほど大きくする)。
【0056】
実施形態によれば、現在のファームウェア・イメージから新たに受信したファームウェ
ア・イメージへの迅速な切り換えを可能にするようにアクセスして修正することができる
マッピングデータ構造を、メモリデバイスが記憶することができる。メモリデバイスは、
あらゆる適切な方法で、あらゆる適切なプロトコルに従ってアクセスすることができるが
、一部の実施形態では、チップ選択信号(CS)及び1つ以上のI/O線によりメモリデ
バイスにアクセスすることができる。
図9A~9Dは、実施形態による、ファームウェア
を更新するための、メモリデバイスへの入力信号を示すタイミング図である。こうした入
力信号に応答して、メモリデバイスは次のいずれかを実行することができる:新ファーム
ウェア・イメージを「有効」にすること、リマップ履歴データを更新する(例えば、新た
なLA→PAマッピングを追加する)こと、メモリデバイスが新ファームウェア・イメー
ジをプログラムするための準備をすること。
【0057】
図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ビ
ット)を含む。
【0058】
図9Aにレジスタ書込み命令を示す。時刻t0に、チップ選択信号がアクティブ(有効
)になることができる。時刻t1に、メモリデバイスが命令”WriteRegX”を受信するこ
とができる。時刻t2におけるコンフィギュレーション(設定)データ(DATA(Reg))が
、これに続くことができる。こうした命令に応答して、メモリデバイスは、命令WriteReg
Xが示す1つ以上のレジスタにDATA(Reg)を書き込むことができる。こうしたレジスタにデ
ータを書き込むことは、本明細書中に説明するファームウェア更新作業またはその等価物
を制御すること、そのためのデータを提供すること、あるいは開始することができる。
【0059】
図9Bにアドレス指定可能なレジスタ書込み命令を示す。時刻t0に、チップ選択信号
がアクティブになることができる。時刻t1に、メモリデバイスが命令”WriteAddReg”
を受信することができる。時刻t2におけるアドレスデータ(ADD)、及び次の時刻t3
におけるコンフィギュレーションデータが、これに続くことができる。こうした命令に応
答して、メモリデバイスは、アドレスデータADDが示すレジスタにDATAを書き込むことが
できる。こうしたレジスタにデータを書き込むことは、本明細書中に説明するファームウ
ェア更新作業を制御すること、そのためのデータを提供すること、あるいは開始すること
ができる。
【0060】
図9Cに、一実施形態によるマッピング命令を示す。時刻t0に、チップ選択信号がア
クティブになることができる。時刻t1に、メモリデバイスが命令”NewMap”を受信する
ことができる。時刻t2におけるデータ(DATA(Map))がこれに続くことができる。こう
した命令に応答して、新イメージ用のマッピングデータ(例えば、LA→PAマッピング
)を、本明細書中に説明するリマップ履歴データ構造またはその等価物に記憶することが
できる。値DATA(Map)はこのマッピングデータを含むことができる。
【0061】
図9Dに、一実施形態による、新ファームウェア・イメージを「有効」にするための命
令を示す。時刻t0に、チップ選択信号をアクティブにすることができる。時刻t11に
、メモリデバイスが命令”NewMapLive”を受信することができる。任意で、データ(DATA
(Ptr))がこれに続くことができる。こうした命令に応答して、提供されるべきファーム
ウェア・イメージが転送されている際に、最新のマッピングデータの集合を示すことがで
きる。一部の実施形態では、データを必要としない、というのは、メモリデバイス制御論
理回路が新たなマッピング集合の値を更新することができるからである。しかし、他の実
施形態では、DATA(Ptr)を用いてリマップ・データ構造(例えば、ポインタ値)をプログ
ラムすることができる。こうした命令は、ファームウェア・イメージ間で、アトミックな
(不可分の)即時の方法でスワップすることができる。
【0062】
実施形態は、デバイスまたはモジュール用のファームウェアの更新を含むシステム、装
置、及び方法を含むことができるが、実施形態は、各々がそれ自体のファームウェア更新
を必要とし得る複数のデバイス/モジュールを有するシステムを含むこともできる。
図1
0はこうしたシステム1000のブロック図である。
【0063】
システム1000は、テレマティクス(情報無線送受信)制御ユニット(TCU:tele
matics control unit)(例えば、コントローラ)1004、コントローラ・バス105
0、システム開発ライフサイクル部1052、モジュール・バス1054-0~1054
-2、及びモジュール1055-0~1055-1を含むことができる。モジュール(1
055-0~1055-1)の各々は、メモリデバイス(1002-0~1002-2)
に記憶されているファームウェアで動作する。TCU1004はプロセッサを含むことが
でき、このプロセッサはメモリデバイス(1002-0~1002-2)に対して命令を
発行することができる。TCU1004は無線トランシーバ(または受信機)1058を
含むこともでき、無線トランシーバ1058は、ファームウェア更新を無線ネットワーク
経由で受信する。特定の実施形態では、システム1000を自動車制御システムにするこ
とができ、TCU1004は、グローバル・ポジショニング・システム(GPS:global
positioning system:全地球測位システム)、1つ以上のプロセッサ、及びコントロー
ラ・メモリをさらに含むことができる。
【0064】
図10は別個のモジュール・バス1054-0~1054-2を示すが、他の実施形態
では、2つ以上のモジュールを同じバスに接続することができる。さらに、他の実施形態
では、コントローラ・バス1050をモジュール・バス(1054-0~1054-2)
と同じにすることができる。
【0065】
システム1000の種々の構成要素を説明してきた。システム1000のFOTA動作
を以下に説明する。
【0066】
最初に、メモリデバイス1002-0~1002-2の各々が(更新されるべき)現在
のファームウェア・イメージ1014/1015を記憶することができる。
【0067】
では、TCU1004が新ファームウェアを無線トランシーバ1058で受信することが
でき、新ファームウェアはネットワーク1020の無線接続1057上で送信される。ネ
ットワーク1020は、あらゆる適切なネットワークとすることができ、一部の実施形態
ではインターネット及び/またはセルラ・ネットワークとすることができる。図示する例
では、全部のモジュール1055-0~1055-2用の新ファームウェアを受信するこ
とができる。しかし、他の更新作業では、より少数のモジュールを更新することができる
ことは明らかである。
【0068】
では、TCU1004が新ファームウェア・イメージをそれぞれのメモリデバイス105
5-0~1055-2へ送信することができる。こうした動作は、TCU1004が新フ
ァームウェア・イメージをコントローラ・バス1050及びモジュール・バス1054-
0上で送信することを含むことができる。一実施形態では、こうした動作がコントローラ
・エリア・ネットワーク(CAN:controller area network)型バス上でデータを送信
することを含むことができる。
【0069】
では、モジュール1055-0~1055-2が、新ファームウェア・モジュールを、対
応するメモリデバイス1002-0~1002-2のそれぞれの位置にプログラムするこ
とができる。こうした動作は、本明細書中に説明するもののいずれか、またはその等価物
を含むことができる。1つの特定の実施形態では、新ファームウェア・イメージ1018
/14を、メモリデバイスの「二次的」メモリページにプログラムすることができる(一
次的メモリページは現在のファームウェア1014/15を記憶する)。一部の実施形態
では、新ファームウェア・イメージのプログラミングを、モジュール1055-0~10
55-2のローカルなプロセッサ(図示せず)で実現することができる。しかし、他の実
施形態では、こうしたプログラミングをTCU1004によって実行することができる。
【0070】
では、新ファームウェア・イメージ1018/1014を「有効」にすることができる(
他のファームウェア・イメージ1014/1015はインアクティブ(無効)として指定
することができる)。こうした動作は、TCU1004から受信した入力に応答して行う
ことができる。こうした入力は、本明細書中に説明する命令またはレジスタ書込み、ある
いはその等価物、並びにモジュール1055-0~1055-2のローカルなプロセッサ
による帯域外シグナリング(信号伝達)または動作、あるいは他の適切なシグナリング方
法を含むことができるが、それらに限定されない。
【0071】
図11は、他の実施形態によるシステム1100のブロック図である。システム110
0は、コントローラ(MCU)1104及びメモリデバイス1002を含むことができる
。メモリデバイス1002は、少なくとも2つの異なるファームウェア・イメージ(11
14、1118)間の切り換えを可能にすることができる。図示するように、コントロー
ラ1104は、
図16Bに示す従来のシステムにおけるように、2つのチップ選択出力(
CS1, CS2)を供給することができる。しかし、メモリデバイス1002は、単一のメモリ
デバイス1002及び単一のチップ選択(CS1)によるファームウェア・イメージ間の切
り換えを管理することができるので、コントローラ1104は他のアプリケーションが利
用可能な追加的なチップ選択出力CS2を有することができる。
【0072】
実施形態は、1つ以上のコントローラ・デバイスと共に動作するメモリデバイスを有す
るシステムを含むことができるが、実施形態は、本明細書中に説明する異なるファームウ
ェア・イメージ及びその等価物間の内部切り換えを可能にすることができるスタンドアロ
ン(独立型)のメモリデバイスを含むこともできる。こうしたメモリデバイスは、同じパ
ッケージ内に形成された複数の集積回路を含むことができるが、一部の実施形態では、メ
モリデバイスをコンパクトな単一の集積回路(即ち、チップ)にすることができることが
有利である。
図12A及び12Bは、2つのパッケージ化された単一チップのメモリデバ
イス1202A及び1202Bを示す。しかし、実施形態によるメモリデバイスは、回路
基板上へのメモリデバイス・チップの直接的ボンディングを含めた他のあらゆる適切なパ
ッケージ型を含むことができることは明らかである。
【0073】
図13A~13Cを参照すれば、実施形態による種々のデバイスが一連の図中に示され
ている。
図13Aは、更新可能なファームウェアで動作する多数のサブシステム(2つを
1300A-0及び1300A-1で示す)を有することができる自動車1360Aを示
す。こうしたサブシステム(1300A-0、1300A-1)は、電子制御ユニット(
ECU:electronic control unit)及び/または先進運転支援システム(ADAS:adv
anced driver assistance system)を含むことができる。しかし、他の実施形態では、こ
うしたサブシステムが、多数の可能な例のうちのほんの2例として、ダッシュボード・デ
ィスプレイ/制御サブシステム、及び/またはインフォテインメント・サブシステムを含
むことができる。各サブシステム(1300A-0、1300A-1)は、コントローラ
及びメモリデバイスを含むことができ、FOTA型の更新を含めた本明細書中に説明する
ファームウェアの動作、またはその等価物を用いることができる。
【0074】
図13Bに、ハンドヘルド(手持ち型)コンピュータ装置1360Bを示す。ハンドヘ
ルド・コンピュータ装置1360Bはシステム1300Bを含むことができ、システム1
300Bは、本明細書中に説明する装置1360Bまたはその等価物のファームウェア更
新を実行するためのメモリデバイス1302及びコントローラ1304(現寸に比例して
図示せず)を有する。
【0075】
図13Cにコントローラ・デバイス1360Cを示す。コントローラ・デバイス130
6Cは、工業または住宅の動作を制御するように配備されたデバイスとすることができる
。多数の可能な例のうちのほんの少数として、コントローラ・デバイス1360Cは、製
造ライン上の機械類を制御することができ、建物用の電子ロックとすることができ、家庭
電化製品を制御することができ、照明システムを制御することができ、あるいは灌漑シス
テムを制御することができる。装置1360Cはシステム1300Cを含むことができ、
システム1300Cは、本明細書中に説明するデバイス1360Cまたはその等価物のフ
ァームウェア更新を実行するためのメモリデバイス1302及びコントローラ1304(
図示せず)を有する。
【0076】
ここで
図14を参照すれば、一実施形態による方法が流れ図で示されている。方法14
62は、システム用のファームウェアを記憶するメモリデバイスにおいて新ファームウェ
ア・データを受信するステップを含むことができる(ブロック1462-0)。こうした
動作は、メモリデバイスが、ファームウェア・データ用のプログラムまたは書込み命令を
、メモリデバイス上のインタフェースを通して受信することを含むことができる。特定の
実施形態では、こうした動作が、メモリデバイスがコントローラから命令を受信してファ
ームウェア・データを所定の物理アドレスにプログラムすることを含むことができる。
【0077】
受信したファームウェア・データは、不揮発性メモリセル内の、現在のファームウェア
1462-2を記憶する位置とは異なる位置にプログラムすることができる。特定の実施
形態では、こうした動作が、メモリデバイスが、ファームウェア・データを、フラッシュ
メモリアレイの1つ以上のセクターにプログラムすることを含むことができ、これらのセ
クターは、新ファームウェア用に指定され、現在のファームウェアを記憶するアドレス範
囲とは異なる。なお、こうした動作は、ファームウェア・データをメモリデバイスのメモ
リセルアレイ内の1つの位置から、同じメモリデバイス内のメモリセルアレイの他の位置
へコピーすることは含まない。
【0078】
方法1462は、新ファームウェア用の新たなLA→PAマッピングを、メモリデバイ
ス1462-4上の不揮発性の記憶領域内にプログラムすることを含むこともできる。一
部の実施形態では、こうした動作が、こうしたデータをリマップ履歴データ構造内にプロ
グラムすることを含むことができ、このリマップ履歴データ構造は、以前のバージョンの
ファームウェア用のこうしたマッピングを保持する。
【0079】
方法1462は、不揮発性の状態値をメモリデバイス上にプログラムして、最新バージ
ョンのファームウェア用の新たなLA→PAを示すステップを含むこともできる(ブロッ
ク1462-6)。一部の実施形態では、こうした動作が、ポインタデータ構造の値をプ
ログラムすることを含むことができ、このポインタデータ構造はリマップ履歴データ構造
内の1つのエントリを指示する。
【0080】
図15に、他の実施形態による方法1564を流れ図の形で示す。方法1564は、F
OTA法とすることができ、新ファームウェア・イメージ用のデータを無線接続1564
-0上で受信した時点を特定するステップを含むことができる。こうした動作は、コント
ローラが、システムの無線受信機がファームウェアの更新を受信した時点を検出すること
を含むことができる。
【0081】
新ファームウェア・イメージのデータを受信しない(ブロック1564-0からの「い
いえ」の)場合、方法1564は、ルックアップ構造により、必要なファームウェアにア
クセスすることができる(ブロック1564-18)。一部の実施形態では、こうした動
作が、メモリデバイスがファームウェアの論理アドレスに対する読出し要求を受信するこ
とを含むことができ、こうした論理アドレスはルックアップ構造からのデータにより物理
アドレスに変換される。特定の実施形態では、ルックアップ構造が揮発性メモリ内に常駐
することができる。この時点で、システムのルックアップ構造は(新たに受信したあらゆ
るファームウェア・イメージに置き換えられることになる)現在のファームウェア・イメ
ージに対応することは明らかである。
【0082】
新ファームウェア・イメージのデータを受信した(ブロック1564からの「はい」の
)場合、新ファームウェア・イメージのデータはシステムメモリに記憶することができる
(ブロック1564-2)。一部の実施形態では、こうした動作が、新ファームウェア・
イメージのデータを、コントローラ等によってアクセスされるDRAMまたはSRAMの
ような揮発性のシステムメモリに記憶することを含むことができる。
【0083】
システム内のメモリデバイスのプログラム動作はブロック1564-4で開始すること
ができる。こうした動作は、新ファームウェア・イメージを記憶するべき特定のメモリデ
バイスを決定することを含むことができる。一部の実施形態では、こうした動作が、コン
トローラが命令等をメモリデバイスに対して発行することを含むことができる。新ファー
ムウェア・イメージは、メモリデバイスの不揮発性のセクター内の、現在のファームウェ
ア・イメージを記憶している位置とは異なる位置にプログラムすることができる(ブロッ
ク1564-6)。こうした動作は、コントローラが、システムメモリに記憶されている
ファームウェア・イメージをメモリデバイスの不揮発性の記憶位置にプログラムすること
を含むことができる。
【0084】
新ファームウェア・イメージ用のLA→PAマッピングは、メモリデバイスの不揮発性
の記憶領域内にプログラムすることができる(ブロック1564-8)。こうした動作は
、こうしたデータをリマップ履歴データ構造内にプログラムすることを含めて、本明細書
中に説明したもののいずれか、またはその等価物を含むことができ、リマップ履歴データ
構造は、以前のファームウェア・イメージのマッピングを同じメモリデバイス内に保持す
ることができる。
【0085】
新たなLA→PAマッピングを指示するポインタをプログラムすることができる(ブロ
ック1564-10)。こうした動作は、リマップ履歴データ構造内の1つのエントリに
対応するマルチ(多)ビット値内の1つのビットをセットすることを含めて、本明細書中
に説明するもののいずれか、またはその等価物を含むことができる。こうしたポインタは
、メモリデバイスの不揮発性の記憶領域に記憶することができる。
【0086】
方法1564は、リセット型のイベントが発生したか否かを判定することができる(ブ
ロック1564-12)。リセット型のイベントは、メモリデバイスに、現在のファーム
ウェア・イメージから新たにプログラムされた(「有効」な)ファームウェア・イメージ
への論理アドレス・マッピングをリセットさせるイベントとすることができる。リセット
型のイベントは、少数のみを挙げれば、PORイベント、メモリデバイスが特定の命令ま
たはレジスタ書込みを受信すること、あるいは特別な入力ピンにおける信号を含めて、あ
らゆる適切な形態をとることができるが、それらに限定されない。
【0087】
リセット型のイベントが発生していないものと判定した(ブロック1564-12から
の「いいえ」の)場合、方法1564はルックアップ構造によるファームウェアへのアク
セスを継続することができ(ブロック1564-18)、このことは、ファームウェア・
イメージを新たに受信したファームウェア・イメージに置き換えることを継続することが
できる。
【0088】
リセット型のイベントが発生したものと判定した(ブロック1564-12からの「は
い」の)場合、メモリデバイスは、ポインタにより最新のLA→PAマッピングの集合に
アクセスすることができる(ブロック1564-14)(この集合は、新たに受信したフ
ァームウェア・イメージに対応する)。次に、メモリデバイスは、新ファームウェア・イ
メージに対応する新たなLA→PAルックアップ構造を作成することができる(ブロック
1564-16)。その結果、ブロック1564-18のファームウェアのアクセスが今
度は新ファームウェア・イメージになる。
【0089】
本明細書中に説明する実施形態は、本明細書中に説明するファームウェア・イメージの
更新またはその等価物を実行するために呼び出すことができるアプリケーション・プログ
ラミング・インタフェース(API:application programming interface)を含むこと
ができる。新ファームウェア・イメージは、メモリデバイス内のある任意のアドレス範囲
内にロードすることができ、このメモリデバイスは現在のファームウェア・イメージを他
のアドレス範囲(addr_cur_img)内に記憶する。APIは、こうしたアドレス情報を用い
てファームウェアの更新を実行することができる。例えば、APIは、”fota_switch(ad
dr_cur_img, addr_new_img)”の形式を有することができる。
【0090】
こうした構成は、ファームウェア・データをメモリデバイス内の1つの位置から他の位
置へコピーしなければならない(例えば、ファームウェア・データを一旦書き込む/プロ
グラムする)ことなしに、ファームウェアをアドレス空間内で「リロケート(移転)」す
る(即ち、旧ファームウェアへのアクセスから新ファームウェアへのアクセスに切り換え
る)ことを可能にすることができる。このリロケーション動作は「原子的」(即ち、単一
バスのトランザクション)であり、本質的に即時である。例えば、本明細書中に述べるよ
うに、メモリデバイスに対する命令またはレジスタ書込みは、新ファームウェアへのリマ
ッピング(再マッピング)を導入することができる。
【0091】
本発明の実施形態は、異なるファームウェア・イメージを記憶するための複数のフラッ
シュメモリの使用を低減または解消することができることが有利である、というのは、異
なるファームウェア・イメージを1つのメモリデバイスに記憶して、新イメージを一度記
憶すると、新イメージへの即時の切り換えを行うことができるからである。このことは必
要とするメモリデバイスがより少数であるので、システムのコストを低減することができ
る。それに加えて、通常は、異なるファームウェア・イメージを有する複数のフラッシュ
メモリを同じバス上に含むシステムが、バス上の1つのデバイス(またはより少数のデバ
イス)だけで、同じ結果を達成することができる。このことは、バスの容量を低減してシ
ステムの性能を増加させる(即ち、バス速度を増加させる)ことができる。
【0092】
本発明の実施形態は、システムが、1つのチップ選択出力に接続された1つのメモリデ
バイスで、ファームウェア・イメージ間の瞬時の切り換えを行うことを可能にする。この
ことはコストを低減する、というのは、より少数のチップ選択出力を有するコントローラ
・デバイスを使用することができるからである。それに加えて、あるいはその代わりに、
システム設計におけるより大きな自由度が存在し得る、というのは、1つ以上のチョップ
選択出力が、今度は他のユーザ(即ち、ファームウェア・イメージにアクセス中でないユ
ーザ)にとって自由になるからである。
【0093】
これら及び他の利点は当業者にとって明らかである。
【0094】
本明細書全体を通して、「一実施形態」または「実施形態」への言及は、その実施形態
に関連して説明する特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態
に含まれることを意味することは明らかなはずである。従って、本明細書の種々の部分に
おける「実施形態」または「一実施形態」または「代案の実施形態」への2回以上の言及
は、必ずしも全部が同じ実施形態を参照するわけではないことを強調し、そのことは明ら
かなはずである。さらに、本発明の1つ以上の実施形態では、特定の特徴、構造、または
特性を適切に組み合わせることができる。
【0095】
同様に、以上の本発明の好適な実施形態の説明では、発明の種々の態様のうちの1つ以
上の理解に役立つ開示を簡素化する目的で、本発明の種々の特徴は、時として、単一の実
施形態、図面、またはその説明において一緒にグループ化されていることは明らかである
。しかし、こうした開示の方法は、特許請求の範囲が、各請求項中に明示的に記載した以
上の特徴を要求するという意図を反映するものとして解釈するべきでない。むしろ、本発
明の態様は、以上に開示した単一の実施形態の全部の特徴よりも範囲が小さい。従って、
詳細な説明に続く特許請求の範囲は、これにより、この詳細な説明中に明示的に含まれ、
各請求項は、本発明の別個の実施形態として自立する。