(57)【要約】  フラッシュメモリサブシステムがその中に組み込まれるシステム・オン・チップに結合された、フラッシュメモリを含むデジタルシステムが開示される。システム・オン・チップは、フラッシュメモリテスト装置などのホストシステムを接続することのできる、ユニバーサルシリアルバス（ＵＳＢ）やＩＥＥＥ１３９４インターフェースなどの標準外部インターフェースのサポートを含む。フラッシュメモリの初期化は、ホストシステムと組込みフラッシュメモリサブシステムコントローラの間の通信チャネルを開くことによって実施される。次いで、ホストシステムは、フラッシュメモリアレイのフォーマット、アプリケーションプログラムのロードなどのフラッシュメモリサブシステムの初期化を通信チャネルを介して実施することができる。
2009512076.tif 000002
【特許請求の範囲】
【請求項１】
中央演算処理装置、組込み不揮発性メモリサブシステムコントローラ、外部インターフェースを含むシステム集積回路を備え、組込みサブシステムコントローラに結合された１つまたは複数の不揮発性メモリアレイをさらに備えるデジタルシステムにおいて、不揮発性メモリサブシステムを初期化する方法であって、
初期化命令を実行するように前記中央演算処理装置を操作するステップであって、前記初期化命令が、前記外部インターフェースと前記組込みサブシステムコントローラの間の通信チャネルを開くコマンドを含むステップと、
前記外部インターフェースに印加され、前記通信チャネルを介して前記組込みサブシステムコントローラに通信される初期化コマンドに従って前記１つまたは複数の不揮発性メモリアレイを初期化するステップと
を含む方法。
【請求項２】
前記外部インターフェースを介して１つまたは複数の初期化命令をダウンロードするステップをさらに含み、
前記操作するステップが、ダウンロードした前記１つまたは複数の初期化命令を実行するように前記中央演算処理装置を操作するステップを含む請求項１に記載の方法。
【請求項３】
前記システム集積回路が、１つまたは複数の初期化命令を格納するシステムプログラムメモリも含み、
前記操作するステップが、前記中央演算処理装置を操作して、前記システムプログラムメモリに格納された前記１つまたは複数の初期化命令を実行するステップを含む請求項１に記載の方法。
【請求項４】
前記初期化するステップが、
ファイルシステムに従って前記１つまたは複数の不揮発性メモリアレイをフォーマットするステップを含む請求項１に記載の方法。
【請求項５】
前記初期化するステップが、
前記中央演算処理装置によって実行可能なアプリケーションソフトウェアプログラムを前記１つまたは複数の不揮発性メモリアレイにロードするステップをさらに含む請求項４に記載の方法。
【請求項６】
前記初期化するステップが、
アプリケーションデータを前記１つまたは複数の不揮発性メモリアレイに事前ロードするステップをさらに含む請求項５に記載の方法。
【請求項７】
前記初期化するステップが、
前記組込みサブシステムコントローラ用のシステムファームウェアを更新するステップを含む請求項１に記載の方法。
【請求項８】
前記システム集積回路がシステムランダムアクセスメモリをさらに含み、
前記ダウンロードするステップが、
前記１つまたは複数の初期化命令を前記システムランダムアクセスメモリに格納するステップを含み、
前記操作するステップが、
前記システムランダムアクセスメモリから前記１つまたは複数の初期化命令を取り出すステップと、
取り出した前記１つまたは複数の初期化命令を実行するステップとを含む請求項２に記載の方法。
【請求項９】
前記システム集積回路がシステム読取り専用メモリをさらに含み、
前記中央演算処理装置をパワーアップするステップと、
前記中央演算処理装置で、前記システム読取り専用メモリに格納された少なくとも１つのブートシーケンス命令を実行して、アプリケーションプログラムが常駐しているかどうかを検出するように前記１つまたは複数の不揮発性メモリアレイに照会するステップとをさらに含み、
アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐していないと前記実行するステップが判定したことに応答して、前記ダウンロードするステップが実施される請求項２に記載の方法。
【請求項１０】
アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐していると前記実行するステップが判定したことに応答して、前記アプリケーションプログラムを前記中央演算処理装置で実行するステップをさらに含む請求項９に記載の方法。
【請求項１１】
前記１つまたは複数の不揮発性メモリアレイが１つまたは複数のフラッシュメモリアレイを含む請求項１に記載の方法。
【請求項１２】
前記外部インターフェースにホストシステムを接続するステップをさらに含み、
前記初期化するステップが、ホストシステムによって前記外部インターフェースを介して実施される請求項１に記載の方法。
【請求項１３】
システム集積回路であって、
中央演算処理装置と、
メモリサブシステムコントローラと、
外部インターフェースと
を備えるシステム集積回路と、
前記メモリサブシステムコントローラに結合された１つまたは複数の不揮発性メモリアレイと
を備えるデジタルシステムであって、
前記中央演算処理装置が、アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐しているかどうかを判定するように前記１つまたは複数の不揮発性メモリアレイに照会し、アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐していないと判定したことに応答して、初期化命令を実行するようにプログラムされるデジタルシステム。
【請求項１４】
前記中央演算処理装置がさらに、アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐していないと判定したことに応答して、前記外部インターフェースを介して前記初期化命令をダウンロードするようにプログラムされる請求項１３に記載のデジタルシステム。
【請求項１５】
前記中央演算処理装置に結合され、ダウンロードした前記実行可能命令を格納するシステムランダムアクセスメモリをさらに備える請求項１４に記載のデジタルシステム。
【請求項１６】
ダウンロードした前記実行可能命令が、前記外部インターフェースと前記メモリサブシステムコントローラとの間の通信チャネルを開くために中央演算処理装置によって実行可能な１つまたは複数の命令のシーケンスを含む請求項１５に記載のデジタルシステム。
【請求項１７】
前記中央演算処理装置に結合され、前記中央演算処理装置によって実行可能なブートシーケンス命令を格納するシステム読取り専用メモリであって、前記ブートシーケンス命令が、アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐しているかどうかを判定するように前記１つまたは複数の不揮発性メモリアレイに照会する命令を含むシステム読取り専用メモリをさらに備える請求項１３に記載のデジタルシステム。
【請求項１８】
前記ブートシーケンス命令が、アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐していないと判定したことに応答して、前記外部インターフェースを介して実行可能命令をダウンロードする命令をさらに含む請求項１７に記載のデジタルシステム。
【請求項１９】
前記中央演算処理装置がさらに、アプリケーションプログラムが前記１つまたは複数の不揮発性メモリアレイ内に常駐していないと判定したことに応答して、前記システム読取り専用メモリから前記初期化命令を取り出すようにプログラムされる請求項１７に記載のデジタルシステム。
【請求項２０】
前記外部インターフェースが、業界標準インターフェースプロトコルに従って構築される請求項１３に記載のデジタルシステム。
【請求項２１】
前記１つまたは複数の不揮発性メモリアレイが１つまたは複数のフラッシュメモリアレイを含む請求項１３に記載のデジタルシステム。
【請求項２２】
前記システム集積回路が、
前記中央演算処理装置に前記メモリサブシステムコントローラを結合するシステムバスと、
前記メモリサブシステムコントローラのインターフェースに前記システムバスを結合するインターフェース回路であって、前記メモリサブシステムコントローラの前記インターフェースが標準フラッシュメモリインターフェースに対応するインターフェース回路と
をさらに備える請求項２１に記載のデジタルシステム。
【請求項２３】
前記システム集積回路に結合された少なくとも１つのペリフェラル機能をさらに備える請求項１３に記載のシステム。
【請求項２４】
前記少なくとも１つのペリフェラル機能が、
オーディオ出力インターフェースを含む請求項２３に記載のシステム。
【請求項２５】
前記少なくとも１つのペリフェラル機能が、
ユーザ入力要素と、
ディスプレイと
を含む請求項２３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリシステムの分野でのものであり、より詳細には、統合デジタルシステムに対して使用されるフラッシュメモリの初期化を対象とする。
【背景技術】
【０００２】
一般に「フラッシュ」メモリと呼ばれる不揮発性固体メモリ技術の人気は、近年著しく上昇した。フラッシュメモリは通常、従来型ＥＥＰＲＯＭデバイスのようなチップ全体または比較的大きいブロックとしてではなく、比較的小さいブロックとして消去および再書込みすることのできる電気的消去可能半導体メモリを指す。フラッシュメモリは、格納データの不揮発性（すなわち、電源の取外し後のデータ保持）が不可欠であるが、再書込みの頻度が比較的低い応用例に対して特に普及している。フラッシュメモリの一般的な応用例は、ポータブルオーディオプレーヤ、携帯電話ハンドセット内の電話番号および電話活動の「ＳＩＭ」カードストレージ、コンピュータおよびワークステーション用の「サムキー（ｔｈｕｍｂｋｅｙ）」取外し可能記憶装置、デジタルカメラ用の記憶装置などを含む。
【０００３】
典型的な従来型フラッシュメモリ製品は、実質上、１つまたは複数のデバイスの形態のフラッシュメモリストレージ資源（または「アレイ」）と、フラッシュメモリ製品に対してメモリコントローラとして働く集積回路とを含む１つまたは複数の集積回路からなる「チップセット」として構成される。フラッシュメモリアレイは、個々のメモリセルにランダムにアクセスすることのできる、いわゆるＮＯＲフラッシュメモリとして構成することができ、またはメモリのページまたはブロックの順次アクセスが必要とされる、いわゆるＮＡＮＤフラッシュメモリとして構成することができる。当技術分野で周知のように、こうしたフラッシュメモリ構成のそれぞれは利点と欠点を有する。例えば、ＮＯＲフラッシュメモリは小容量コードストレージに対して特に有利であり、一方ＮＡＮＤフラッシュメモリは、オーディオプレーヤやデジタルカメラなどの大容量データストレージに対して特に有利である。近年、特にＮＡＮＤフラッシュメモリにおいて、各フラッシュメモリセルがマルチビットデータ値（通常は４つの可能な状態のうちの１つとして格納される２ビット値）を格納することのできるマルチレベルセル（ＭＬＣ）フラッシュメモリの使用が普及している。
【０００４】
ある典型的な構成によれば、カード上に取り付けられたフラッシュメモリ資源およびサブシステムコントローラとを含むフラッシュメモリサブシステムとしてフラッシュメモリが製造および販売される。そのようなサブシステムの例は、周知のＣＯＭＰＡＣＴ  ＦＬＡＳＨ（ＣＦ）カード、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ（ＳＤ）カード、およびＭＵＬＴＩＭＥＤＩＡカードを含む。図１に、例示的な従来型フラッシュメモリシステム２をブロック図形式で示す。この構成では、複数のフラッシュメモリ装置（「アレイ」）１２が、フラッシュメディアインターフェースＦＭＩによってサブシステムコントローラ１０に接続され、フラッシュメディアインターフェースＦＭＩは通常、サブシステムコントローラ１０から物理アドレス信号および制御信号を通信し、デバイス１２との間で双方向にデータを通信するバスである。サブシステムコントローラ１０はインターフェースバスＩＦによってコネクタＣに接続される。当技術分野で周知であるように、カメラ、コンピュータ、オーディオプレーヤなどのホスト装置にコネクタＣによってフラッシュメモリシステム２を挿入または接続することができる。コネクタＣおよびインターフェースバスＩＦは、フラッシュメモリシステム２がそれに従って構築および実現される特定の規格に従って構成される（例えば、ＣＦカード、ＳＤカード、またはＭＵＬＴＩＭＥＤＩＡカード）。
【０００５】
他の周知の構成（例えばＳＭＡＲＴ  ＭＥＤＩＡカード）では、フラッシュメモリシステムはサブシステムコントローラを含まない。そのような構成では、類推のために図１を参照すると、フラッシュメディアインターフェースＦＭＩが、フラッシュメモリシステムの外部に位置するコントローラ、例えばフラッシュメモリを使用するホスト装置（例えばカメラ）に含まれるコントローラに接続される。
【０００６】
通常、従来型フラッシュメモリアレイは、カードにアセンブリされるまでは、（恐らくは、チップテストレベルで確立される不良ブロックのマーキングを除いて）フォーマットまたは初期化されない。フラッシュメモリ初期化は通常、ファイルシステムに従ってアレイをフォーマットすること、使用時に物理的不良メモリ位置を避けるように不良マップを生成すること、メモリアレイの低レベルユーザエリアフォーマット、フラッシュメモリシステムを使用するシステムによって実行することのできるアプリケーションソフトウェアのディスクイメージをロードすること、サブシステムコントローラが実装されるシステムでは、ファームウェアおよび動作パラメータをダウンロードすること、局部発振器周波数をトリミングすることなどの機能を含む。初期化プロセスの結果は、ホストシステムから論理アドレスに対応する物理位置でデータを書き込むことができ、読み取ることのできるフラッシュメモリシステムである。さらに、万一物理メモリの一部が不良となった場合、または追加のディスクイメージデータをアドオンアプリケーションに関して格納すべきである場合に、フラッシュメモリシステムの構成を動作中に更新することもできることが企図される。
【０００７】
一般に、フラッシュメモリ資源の初期化は通常、フラッシュメモリシステム製造業者により、通常はフラッシュメモリ装置１２およびサブシステムコントローラ１０が従来の方式で最終的システムボードに取り付けられ、したがって相互接続された後に実施される。例示として図２に示されるように、フラッシュメモリシステム２の製造後に、フラッシュメモリシステム２は、コネクタＣおよびテストケーブルＤＵＴ＿ＣＢＬを介してテスタＴＳＴＲに接続される。テスタＴＳＴＲは、テストケーブルＤＵＴ＿ＣＢＬおよびコネクタＣを介してフラッシュメモリシステム２と通信し、フラッシュメモリシステム２内の電気的接続の継続が保証され、コネクタＣの端子の適切なＤＣ挙動が保証され、フラッシュメモリ装置１２の初期化の前に実行することのできる一定の基本機能テストが実施される。さらに、当技術分野で周知のように、テスタＴＳＴＲは通常、そのフラッシュメモリ装置１２を含むフラッシュメモリシステム２の機能をテストし、フラッシュメモリシステム２を初期化するために、フラッシュメモリシステム２、具体的にはコントローラ１０に診断コマンドを印加することができる。上述のように、フラッシュメモリシステム２の従来の初期化は、フラッシュメモリ装置１２のフラッシュメモリ資源をフォーマットおよび構成すること、フラッシュメモリ装置１２の物理的不良メモリ位置を検出してログを取ること、制御プログラム（「ファームウェア」）をコントローラ１０（例えば、コントローラ１０内に組み込まれたＮＯＲフラッシュメモリ）にロードすること、および所期のアプリケーションでの使用に適するように、ＤＯＳまたはディスクイメージの形態でアプリケーションソフトウェアをフラッシュメモリ装置１２にロードすることを含む。そのようなアプリケーションソフトウェアの例は、コントローラ１０で実行することができるデータ暗号化ソフトウェア、消耗レベリング（ｗｅａｒ  ｌｅｖｅｌｉｎｇ）アルゴリズムなどを含む。
【０００８】
しかし、最近では、フラッシュメモリストレージは、いわゆる「システム・オン・チップ」または「ＳＯＣ」によって制御されるものを含む、多くの新しい応用例と共に使用することが望ましくなった。企図されるこうしたＳＯＣ応用例では、単一の集積回路が、中央演算処理装置（ＣＰＵ）、そのシステムメモリ（ＲＡＭおよびＲＯＭ）、標準インターフェース機能（例えばＵＳＢ、シリアルＩ／Ｏなど）、およびシステムで有用な他のペリフェラルを統合する。現在構成されているように、フラッシュメモリを使用するコンシューマ装置用のＳＯＣアーキテクチャは、その不揮発性再書込み可能ストレージ機能の利点を活用するために、ＳＯＣからフラッシュメモリ装置への外部インターフェースと共に、フラッシュメモリサブシステムコントローラもＳＯＣに統合する。図３に、これから説明する、フラッシュメモリを使用するＳＯＣベースのアーキテクチャのそのような従来型構成を示す。
【０００９】
図３に示されるように、ＳＯＣ２０は、１つまたは複数のＮＡＮＤフラッシュメモリ装置として通常は構成されるフラッシュメモリ３５（当然ながら、代わりにＮＯＲフラッシュメモリを使用することもできる）と従来型フラッシュメモリインターフェースＮＡＮＤ＿ＩＦによってインターフェースする。この構成では、フラッシュメモリサブシステムコントローラ２９が、図１で上述したようにフラッシュメモリサブシステムの一部としてではなく、ＳＯＣ２０内に実現される。ＳＯＣ２０は、実際はシステム・オン・チップ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）であり、したがってＣＰＵ２２と、図３に示されるようにＣＰＵ２２が従来型バスＣＰＵ＿ＢＵＳによって接続されるシステムＲＯＭ２４、システムＲＡＭ２６、標準インターフェース３０（例えばＵＳＢ、ＳＣＳＩ、ＲＳ−２３２、または他のインターフェース）などの様々なシステム機能を含む。ＳＯＣ２０内に他のペリフェラルも含めることができ、そのペリフェラルは、バスブリッジ２８およびペリフェラルバスＰＥＲ＿ＢＵＳを介してＣＰＵ２２と通信する。図３の例でのそのような１つのペリフェラルはサブシステムコントローラ２９であり、サブシステムコントローラ２９はペリフェラルバスＰＥＲ＿ＢＵＳとサブシステムコントローラ２９との間で信号を変換する標準インターフェース２７Ａ、２７ＢによってペリフェラルバスＰＥＲ＿ＢＵＳに結合され、この変換は、全体的な再設計を必要とすることなく従来型サブシステムコントローラ２９をＳＯＣ２９内に容易に実装することを可能にする。したがって、ＳＯＣ２２は、ディスクストレージと同様に、フラッシュメモリ３５を不揮発性ストレージとして使用する形で容易に動作することができる。例えば、フラッシュメモリ３５上にアプリケーションプログラムを維持することができるものとしての、バルクデータストレージを維持することができる。例えば、アプリケーションプログラムがより大規模なシステム内のディスクストレージから呼び出され、ロードされるのとほぼ同様に、フラッシュメモリ３５上に格納されたアプリケーションプログラムを、サブシステムコントローラ２９（およびバスＰＥＲ＿ＢＵＳ、ＣＰＵ＿ＢＵＳ、ならびに様々なインターフェースおよびブリッジ）を介してシステムＲＡＭ２６にロードし、ＣＰＵ２２で実行することができる。同様に、ＣＰＵ２２により、サブシステムコントローラ２９によってフラッシュメモリ３５からデータを格納し、データにアクセスすることができる。
【００１０】
遺憾ながら、従来型初期化方法は、サブシステムコントローラ２９がフラッシュメモリから分離され、ＳＯＣ２０内に実施されるこの構成でのフラッシュメモリ３５を容易に初期化することができない。具体的には、フラッシュメモリ３５のいくつかの部分は、対応するサブシステムコントローラ（サブシステムコントローラ２９など）によるアクセスを除いてアクセス可能ではなく、初期化プロセスに関係するのは、フラッシュメモリ３５のこうした「システム」部分である。しかし、初期化の前に、図３の従来型ＳＯＣ構成では、サブシステムコントローラ２９はフラッシュメモリ３５の初期化のためにアクセス可能ではない。図３は、本発明に関連して推測される、ＳＯＣ構成でのフラッシュメモリ３５の初期化に対する力任せ手法を示し、それによって、テスタＴＳＴＲが特殊バスＳＰＣ＿ＢＵＳを介してフラッシュメモリ３５の特別に設計されたインターフェースに接続し、このインターフェースを介して診断コマンドを実行し、初期化を実施する。しかし、この推測される手法は、特別なテストハードウェア（テスタＴＳＴＲおよび特殊バスＳＰＣ＿ＢＵＳ）の作成、ならびにフラッシュメモリ３５への特殊インターフェースの作成を必要とし、そのどちらもシステムの製造および生産にかなりのコストを増し加え、システムを構成および初期化することのできる柔軟性を限定する。
【００１１】
別の背景として、米国特許第６００９４９６号は、組込みフラッシュメモリを備えるマイクロコントローラアーキテクチャを説明しており、そのマイクロコントローラアーキテクチャでは、オンボードマイクロプロセッサが、オンボード読取り専用メモリに格納された再プログラミング制御ルーチンを実行して、組込みフラッシュメモリを再プログラムする。この米国特許第６００９４９６号はまた、新たに製造したときにマイクロコントローラシステムを手動でこの再プログラミングモードに設定することができ、その場合にはマイクロプロセッサがオンボードＲＯＭからの再プログラミング制御ルーチンを実行して、外部インターフェースを介して受信したデータで組込みフラッシュメモリをプログラムすることも開示している。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
したがって、本発明の目的は、統合フラッシュメモリサブシステムコントローラを有するシステム・オン・チップ（ＳＯＣ）型システム用のフラッシュメモリサブシステムを初期化する方法およびシステムを提供することである。
【００１３】
本発明の別の目的は、そのような初期化のために従来型テストハードウェアを利用することのできる方法およびシステムを提供することである。
【００１４】
本発明の別の目的は、そのような初期化を実現するためにＳＯＣハードウェアを根本的に再構成する必要のない方法およびシステムを提供することである。
【００１５】
本発明の他の目的および利点は、以下の明細書を図面と共に参照した当業者には明らかとなるであろう。
【課題を解決するための手段】
【００１６】
ＳＯＣの標準外部インターフェースが外部テストハードウェアにアクセス可能にされるシステム・オン・チップ（ＳＯＣ）アーキテクチャとして本発明を実装することができる。外部テストハードウェアからＳＯＣのシステムメモリにダウンロードされ、またはシステムＲＯＭ内に既に存在する実行可能初期化プログラムが、ＣＰＵによる実行時に、外部テストハードウェアとＳＯＣ内のフラッシュメモリサブシステムコントローラとの間の通信チャネルを開く。この通信チャネルは、外部テストハードウェアがサブシステムコントローラを介してフラッシュメモリの初期化を実施し、ＳＯＣで使用するためにフラッシュメモリを準備し、ＳＯＣアプリケーションプログラムをフラッシュメモリ上にロードすることなどを可能にする。
【発明を実施するための最良の形態】
【００１７】
本発明をその好ましい実施形態に関連して、すなわち、テストハードウェアを利用して、デジタルオーディオプレーヤ（ＤＡＰ）などのフラッシュメモリサブシステムコントローラを含むシステム・オン・チップ（ＳＯＣ）で使用するためにフラッシュメモリを初期化するシステムおよび方法として実装されたものとして説明する。そのような構成で使用されるときに本発明が特に有益となることが企図されるので、本発明のこの特定の例示的実装が選択される。しかし、本発明の利点がフラッシュメモリシステムの他のアーキテクチャおよび実装にも適用できることも企図される。したがって、以下の説明が例示としてのみ与えられるのであって、特許請求された本発明の真の範囲を限定するものではないことを理解されたい。
【００１８】
図４に、デジタルシステム６０を参照しながら、本発明の好ましい実施形態の例示的実装を示す。この例でのシステム６０は、それが含む特定のペリフェラルを仮定すると、デジタルオーディオプレーヤ（ＤＡＰ）に対応する。もちろん、システム６０が実行するシステムソフトウェアおよびシステム６０のペリフェラルの構成によって主に決定されるいくつかの機能のうちの任意の１つに対してシステム６０を意図することができることを、本明細書を参照した当業者は容易に理解されよう。そのような他のデジタルシステムの例は、ワイヤレス電話ハンドセットなどの通信システム、ワイヤレスＥメールシステム（例えばＢＬＡＣＫＢＥＲＲＹ装置）、デジタルオーディオレコーダ、電子計算器、在庫制御または配送ビジネスで有用となるようなハンドヘルドコンピューティングシステム（すなわち「パームトップ」装置）などを含む。本発明の好ましい実施形態によれば、デジタルシステム６０は、システム・オン・チップ（「ＳＯＣ」）４０に基づき、ＳＯＣ４０は、ほぼすべての基本システム機能を単一の集積回路内に実施する。この例でのＳＯＣ４０は、デジタルシステム６０のメインコンピューティング構成要素である中央演算処理装置（ＣＰＵ）４２を含む。好ましくは、ＣＰＵ４２は、例えばシステムＲＯＭ４４、システムＲＡＭ４６（ＳＯＣ４０がブートアップされた後に）、およびその初期化の後にフラッシュメモリ５５内に格納されるソフトウェア命令を実行することによって動作する汎用または応用例特有のマイクロプロセッサまたはマイクロコンピュータである。本発明に関連して、ＣＰＵ４２によって実施される機能が、ＳＯＣ４０内の様々なバスを介して通信されるコマンド、または機能に対する制御信号線（図４には図示せず）によるＳＯＣ４０内の様々な他の機能の制御を含むことが企図される。
【００１９】
この例示的アーキテクチャでは、ＣＰＵ４２が、システムバスＣＰＵ＿ＢＵＳによってシステム読取り専用メモリ（ＲＯＭ）４４およびシステムランダムアクセスメモリ（ＲＡＭ）４６に接続される。システムＲＯＭ４４およびシステムＲＡＭ４６を実現するのに使用される特定のサイズ、アーキテクチャ、および技術は、ＳＯＣ４０を統合するのに利用可能な技術、ならびに所望の性能および信頼性の特徴に依存する。本明細書を参照した当業者がそれぞれの特定の装備に対してこうしたメモリ機能を容易に実現できるであろうことが企図される。この例示的アーキテクチャでは、システムバスＣＰＵ＿ＢＵＳ上には標準インターフェース５０およびバスブリッジ４８を含む他の機能も常駐する。
【００２０】
標準インターフェース５０は、一方の側のＣＰＵ４２およびシステムバスＣＰＵ＿ＢＵＳの他のレジデントと、他方の側の外部装置またはシステムとの間の通信のサポートのための必要な信号変換、バッファリング、ならびに他の機能を実現する従来型インターフェース機能である。標準インターフェース５０は、業界標準インターフェースプロトコルに従って構築され、動作することが好ましいという意味で「標準」である。そのようなインターフェースプロトコルの例は、ユニバーサルシリアルバス（ＵＳＢ）１．１および２．０インターフェース、ＩＥＥＥ１３９４（または「Ｆｉｒｅｗｉｒｅ」）インターフェース、周知のＲＳ−２３２などのシリアルインターフェース、ＳＣＳＩインターフェースなどを含む。システム６０の現代の実装では、デジタルオーディオプレーヤに対応するときは特に、標準インターフェース５０は通常、ＵＳＢまたはＩＥＥＥ１３９４インターフェース規格に従う。ＤＡＰ技術分野で周知のように、ホストコンピュータとＤＡＰとの間のオーディオファイル（さらに最近では写真および他のデータ）の同期、ならびに場合によってはＤＡＰ内の電池の充電が、通常はＵＳＢ２．０またはＩＥＥＥ１３９４インターフェースを介して実施される。図４の例では、標準インターフェース５０は、ＵＳＢ２．０インターフェースであり、したがってＵＳＢ接続ＵＳＢ＿２によってホストシステムＨＯＳＴに接続される。
【００２１】
上記で触れ、図４で示したように、バスブリッジ４８もシステムバスＣＰＵ＿ＢＵＳ上に常駐する。バスブリッジ４８は、この例ではシステムバスＣＰＵ＿ＢＵＳをペリフェラルバスＰＥＲ＿ＢＵＳに結合する従来型バスインターフェースである。ＳＯＣ４０の外部の様々なペリフェラルが、適切な外部コネクタおよび回路板導線によってペリフェラルバスＰＥＲ＿ＢＵＳ上に常駐する。ＤＡＰに対応する、システム６０のこの例では、ペリフェラルバスＰＥＲ＿ＢＵＳのレジデントは、ＳＤフラッシュメモリインターフェース５１、ＬＣＤディスプレイ５３、キー、ボタン、スイッチなどの様々な入力要素５５、およびオーディオ出力インターフェース５７を含む。
【００２２】
本発明の好ましい実施形態によれば、標準インターフェース機能４７ＡもペリフェラルバスＰＥＲ＿ＢＵＳ上に常駐する。インターフェース機能４７Ａは、フラッシュメモリサブシステムコントローラ４９と共に実現され、またはフラッシュメモリサブシステムコントローラ４９の一部として実現されるインターフェース機能４７Ｂと通信する。本発明のこの実施形態によれば、標準インターフェース機能４７Ａ、４７Ｂ、およびサブシステムコントローラ４９はすべてＳＯＣ４０に統合される。サブシステムコントローラ４９の構築および設計を容易にするために、標準インターフェース４７Ｂは、（例えば図１に示される）従来型フラッシュメモリシステムで使用される従来型Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ（ＳＤ）インターフェースに対応することができ、この場合、標準インターフェース機能４７Ａは、ＳＤインターフェースから図示されるペリフェラルバスＰＥＲ＿ＢＵＳに信号を変換するための従来型トランスレータ機能である。この構成では、サブシステムコントローラ４９および標準インターフェース４７ＢをＳＯＣ４０に統合するのに、追加の回路設計が必要であるとしてもわずかである。別法として、もちろん、ペリフェラルバスＰＥＲ＿ＢＵＳと直接的にインターフェースするようにサブシステムコントローラ４９を構築することもでき、または代替実施形態ではさらに、システムバスＣＰＵ＿ＢＵＳと直接的にインターフェースする（したがってバスブリッジ４８の仲介機能が回避される）ように構築することもできる。上記およびその他のアーキテクチャ上の変形形態が本明細書を参照した当業者には明らかとなるであろうことが企図される。
【００２３】
本発明のこの実施形態でＳＯＣ４０内に統合されるサブシステムコントローラ４９は、フラッシュメモリインターフェースＮＡＮＤ＿ＩＦに接続され、フラッシュメモリインターフェースＮＡＮＤ＿ＩＦにはフラッシュメモリ５５が接続される（または接続可能である）。ＳＯＣ４０内の統合サブシステムコントローラ４９はしばしば「組込み」コントローラとも呼ばれる。フラッシュメモリインターフェースＮＡＮＤ＿ＩＦは、従来型フラッシュメモリインターフェースバスまたは構造となることが企図され、したがって、アドレス信号をフラッシュメモリ５５に搬送する導線、１つまたは複数のチップ選択制御線、読取りおよび書込みストローブまたはクロック線、および双方向データバスを含む。一般的なフラッシュメモリ構成では、アドレスおよびデータ信号は、インターフェース回路およびシステムボードエリアを節約するために、共通の線の組（「アドレス／データ線」）にわたって時間多重化される。
【００２４】
好ましくは、本発明のこの実施形態でのサブシステムコントローラ４９は、例えば、インターフェースＮＡＮＤ＿ＩＦを介する、関連するフラッシュメモリ５５からのデータの読取りおよび関連するフラッシュメモリ５５へのデータの書込みの制御、誤り訂正コード化の実施、（ＣＰＵ４２からの）論理アドレスの（フラッシュメモリ５５内の）物理アドレスへのマッピング、フラッシュメモリ５５内の不良メモリセルのマッピングの初期化および維持、消耗レベリングの実施などを含む、従来型フラッシュメモリ制御機能を実施する。したがって、当技術分野で周知のように、好ましくは、サブシステムコントローラ４９は、マイクロコントローラやマイクロプロセッサなどの論理機能と、その実行可能ソフトウェア命令、およびフラッシュメモリ５５のマッピングおよび構成に関するシステム情報を格納するためのそれ自体の内部メモリ（揮発性、不揮発性、またはその両方）とを含むように構築される。当技術分野で周知の典型的なサブシステムコントローラの構成および機能の一例が、本願の譲受人に譲渡され、参照により本明細書に組み込まれる米国特許第６４２６８９３号に記載されている。図４およびこの説明から明らかなように、サブシステムコントローラ４９がＳＯＣ４０内で実現され、ＳＯＣ４０に統合されることを除いて、そのような従来のオペレーションおよび構成を本発明のこの好ましい実施形態によるサブシステムコントローラ４９と共に使用できることが企図される。この例示的アーキテクチャ、ならびに特定のシステム構成に対して適切な他の同等のアーキテクチャによるサブシステムコントローラ４９およびその機能を、過度な実験なしに本明細書を参照した当業者がそのように容易に実現することができることが企図される。
【００２５】
任意選択で、上記で参照した米国特許第６４２６８９３で想定される単一のマイクロプロセッサまたはマイクロコントローラを使用するのではなく、マルチプロセッサアーキテクチャに従ってサブシステム４９を実現することができる。例えば、１次ＣＰＵと類似の構成のフラッシュプロセッサ（すなわち同種マルチプロセッサ環境）、または異なるアーキテクチャ（すなわち異機種マルチプロセッサ環境）のフラッシュプロセッサと共に１次ＣＰＵを実装することができる。どちらの場合も、フラッシュプロセッサは、すべてのフラッシュアクセスオペレーションの管理、および消耗レベリング、誤り訂正などの補助機能を含む、フラッシュメモリ５５の管理専用のシステム資源（メモリなど）を備える。１次ＣＰＵは、ホストアプリケーションを実行し、ホストとの通信を管理し、リアルタイムオペレーティングシステムおよびファイルシステムと共にサブシステムコントローラ４９に関するサポート環境を管理するアプリケーションプロセッサとして働く専用資源を備えることができる。追加のオプションは、アプリケーションプロセッサおよびフラッシュプロセッサ、または１次ＣＰＵと組み合わせて、データ暗号化および暗号化解除などの計算上複雑なオペレーションを実施するスレーブデジタル信号プロセッサ（ＤＳＰ）として働くＤＳＰを設けることである。
【００２６】
本発明のこの実施形態によるシステム６０のフラッシュメモリ５５は、当技術分野で周知のようにブロック消去可能となるように、したがって実装するシステムによって望まれるように再書込み可能となるように各アレイ内に配置されたフラッシュ電気消去可能およびプログラム可能読取り専用メモリ（ＥＥＰＲＯＭ）セルの１つまたは複数のアレイに対応する。本発明のこの好ましい実施形態では、フラッシュメモリ５５を構成する１つまたは複数のアレイ内の個々のメモリセルに対して使用される特定のメモリ技術は、各アレイ内にＮＡＮＤまたはＮＯＲ型フラッシュメモリとして構成されたバイナリまたはマルチレベルセル（ＭＬＣ）型でよい。システム６０がＤＡＰであるこの特定の例示的実装では、ＭＬＣ  ＮＡＮＤフラッシュメモリ技術が主にシリアルにアクセスされるデータのバルクストレージに対して好ましいことになることが企図される。データの書込み、データのフラッシュ消去、論理−物理アドレスマッピング、および消耗レベリングの管理のためのブロックおよびページとしての、本発明のこの実施形態によるフラッシュメモリ５５を構成する１つまたは複数のフラッシュメモリアレイの配置は、いくつかのそのような配置のうちの任意の１つに従うことができる。本発明によるシステム６０内のフラッシュメモリ５５として実現するのに適した内部アーキテクチャおよびサポート回路の例が、すべて本願の譲受人に譲渡され、この参照により本明細書に組み込まれる米国特許第５１７２３３８号、第５６０２９８７号、第５３１５５４１号、第５２００９５９号、第５２７０９７９号、第５４２８６２１号、第５６６３９０１号、第５５３２９６２号、第５４３０８５９号、第５７１２１８０号、第６１５１２４８号、第６２２２７６２号、および第６４２６８９３号に記載されている。
【００２７】
上記で議論したように、システム６０の製造中のある時点で、フラッシュメモリ５５を使用することができるようにフラッシュメモリ５５を初期化することが必要である。フラッシュメモリ初期化は通常、ファイルシステムに従ってフラッシュメモリ５５をフォーマットする機能、不良メモリ位置が使用のためにマッピングされないように不良メモリ位置を検出する機能、初期論理−物理アドレスメモリマップを生成する機能、消耗レベリングブックキーピングおよびアルゴリズムを実施する機能などを含む。例えばサブシステムコントローラ４９のシステムファームウェアおよび動作パラメータをダウンロードし、局部発振器周波数をトリミングするために、サブシステムコントローラ４９自体の初期化も実施することができる。さらに、フラッシュメモリ５５およびシステム６０に関する特定の応用例に応じて、フラッシュメモリ５５の初期化は、システム６０のＣＰＵ４２によって後で実行するために実行可能アプリケーションソフトウェアをフラッシュメモリ５５にロードすること、この実行可能アプリケーションソフトウェアのためのアプリケーションデータ（例えば、ＤＡＰとしてのシステム６０に対してＭＰ３オーディオファイル）をフラッシュメモリ５５に事前ロードすることも含むことができる。
【００２８】
本発明の好ましい実施形態によれば、システム６０は、この場合はＵＳＢ２．０インターフェースである標準インターフェース５０を介してホストシステムＨＯＳＴがフラッシュメモリ５５の初期化を実施することを可能にする。もちろん、上述のように、別法としてこの標準インターフェースは、ＩＥＥＥ１３９４（Ｆｉｒｅｗｉｒｅ）インターフェースなどの異なる規格に従うこともできる。製造の状況では、ホストシステムＨＯＳＴは、Ｔａｎｉｓｙｓ  Ｔｅｃｈｎｏｌｏｇｙから市販されているテスト装置などの製造テスト装置、または製造業者で使用される代替の独自のフラッシュメモリテスト装置となることが企図される。フラッシュメモリ５５のこの初期化をシステム６０の組立て完了後に（すなわち、ディスプレイ５３、オーディオ出力５７、含まれる入力要素５５などのペリフェラルと共に）、または最終組立ての前のフラッシュメモリ５５へのＳＯＣ４０の接続の直後に実施できることが企図される。
【００２９】
あるいは、ホストシステムＨＯＳＴが従来型標準インターフェース（例えばＵＳＢ２．０）を介してＳＯＣ４０と通信していることを考慮して、ホストシステムＨＯＳＴがフラッシュメモリ初期化を実施するための適切なアプリケーションでプログラムされた従来型パーソナルコンピュータまたはワークステーションでよいことが企図される。この代替実施形態ではさらに、ホストシステムＨＯＳＴによって実施されるフラッシュメモリ初期化を製造中（すなわち、フラッシュメモリ５５の「最初の」初期化のために）のみで実施する必要はなく、例えば、フラッシュメモリ５５内の「ファームウェア」として格納されたシステム６０用の実行可能アプリケーション、または実際に、サブシステムコントローラ４９によって実行可能なファームウェアシステムソフトウェア（やはりフラッシュメモリ５５に格納することができる）をアップグレードするために、システムの使用および配置の後でも実施できることが企図される。
【００３０】
次に図５を参照して、本発明の好ましい実施形態によるフラッシュメモリ５５の初期化を実施する際のホストシステムＨＯＳＴと組み合わせたＳＯＣ４０の動作をこれから詳細に説明する。この例では、ＳＯＣ４０はこの初期化が開始するときにはまだパワーアップされない。上述のように、製造の特定のステージに応じて、様々な周辺装置をまだペリフェラルバスＰＥＲ＿ＢＵＳに接続する必要はないが、望むなら１つまたは複数の周辺装置をそのように接続することができる。この初期化プロセスが開始するときにはやはり、後のプロセスで停止または待ち状態を回避するために、フラッシュメモリ５５がインターフェースＮＡＮＤ＿ＩＦによってＳＯＣ４０に接続されることが好ましい。プロセス７０では、ホストシステムＨＯＳＴが、図４の例でのバスＵＳＢ＿２を介して標準インターフェース５０に接続される。ホストシステムＨＯＳＴはもちろん、以下で説明する方式で初期化を実施するための必要なソフトウェア命令でプログラムされる。本明細書を参照した当業者がそのような初期化プログラムを容易に導出できることが企図され、実際に、以下で説明するオペレーションを実施するためのわずかな修正のみが行われた従来型フラッシュメモリ初期化プログラムがホストシステムＨＯＳＴ内に常駐することができることが企図される。
【００３１】
プロセス７２では、ＣＰＵ４２を含むＳＯＣ４０がパワーアップされる。パワーアップ時に、ＳＯＣ４０などのシステムについて従来通り、システムＲＯＭ４４内に常駐するブートシーケンスがまずＣＰＵ４２によって実行され（図５のプロセス７４）、従来型スタートアップ命令およびリセット命令がＣＰＵ４２によって実行され、その動作が開始される。本発明のこの好ましい実施形態によれば、システムＲＯＭ４４内に格納されたブートシーケンスは実行可能命令を含み、この実行可能命令により、ＣＰＵ４２はフラッシュメモリ５５に照会して、パワーアップまたはリセット時に実行可能アプリケーションを探し、以下で説明するように、その照会オペレーションの後に条件付き命令が続く。したがって、実行されるブートシーケンス（プロセス７４）の一部として、ＣＰＵ４２は、判定７５を実行して、実行可能アプリケーションコードがフラッシュメモリ５５内に常駐するかどうかを判定する。
【００３２】
図６は、本発明の好ましい実施形態による判定７５に関連して使用される、初期化されたときのフラッシュメモリ５５の例示的論理メモリマップである。図示されるように、フラッシュメモリ５５は、論理ブロックアドレス（ＬＢＡ）００００から最大ＬＢＡ値ｍａｘＬＢＡにわたる論理メモリスペースに対応する物理容量を含む。この論理メモリスペースは主にユーザデータに充てられ、ユーザデータにはＬＢＡ００００から最大ＬＢＡｍａｘＵｓｅｒＬＢＡまでのメモリスペースが割り当てられる。この例では、フラッシュメモリ５５内のメモリスペースの最上位の１Ｍバイトは、ｍａｘＵｓｅｒＬＢＡのＬＢＡから、アドレスｍａｘＵｓｅｒＬＢＡ＋１Ｍに等しい最大ＬＢＡ値ｍａｘＬＢＡにわたってアプリケーションファームウェアプログラム格納のために予約される。好ましくは、ＬＢＡ値ｍａｘＵｓｅｒＬＢＡより上のメモリスペースはユーザにとってアクセス可能とはならず、それに対するアクセスはサブシステムコントローラ４９によってブロックされる。図６に示されるように、本発明のこの好ましい実施形態によれば、アプリケーションファームウェアの２つのコピーが、フラッシュメモリ５５の初期化後にフラッシュメモリスペースの最上位部分に格納される。アプリケーションファームウェアコピーＡは、フラッシュメモリ５５内のＬＢＡ値ｍａｘＵｓｅｒＬＢＡ＋５１２ｋとＬＢＡ値ｍａｘＬＢＡの間のメモリスペース内に常駐し、アプリケーションファームウェアコピーＢは、ＬＢＡ値ｍａｘＵｓｅｒＬＢＡとＬＢＡ値ｍａｘＵｓｅｒＬＢＡ＋５１２ｋの間のメモリスペース内に常駐する。本発明のこの実施形態によれば、ファームウェアコピーＡおよびＢは同一のものとし、アプリケーションファームウェアの冗長コピーとして働く。
【００３３】
本発明の好ましい実施形態によれば、ＣＰＵ４２は、ＬＢＡアドレスｍａｘＵｓｅｒＬＢＡより上のフラッシュメモリ５５に照会することによってシステムＲＯＭ４４からブートシーケンスを実行する。ＬＢＡｍａｘＵｓｅｒＬＢＡとｍａｘＬＢＡの間のスペースがアプリケーションファームウェアの有効なコピーであるコピーＡまたはコピーＢを含む場合、判定７６はＹＥＳであり、プロセス７６でアプリケーションファームウェアが実行される。次いで、ＳＯＣ４０およびシステム６０の通常のシステム動作（ペリフェラルが存在する範囲で）が、プロセス７４で見つかったアプリケーションプログラムに従って開始される。アプリケーションファームウェアの有効性は、各コピーについての従来の周期的冗長性チェックサム（ＣＲＣ）値の評価によって判定され、一方のコピーが有効であり、他方のコピーが壊れている場合、好ましくは、冗長性のために、有効なコピーがフラッシュメモリ５５内の他方のコピーの位置にコピーされる。
【００３４】
一方、ＬＢＡｍａｘＵｓｅｒＬＢＡとｍａｘＬＢＡの間のメモリスペースがブランクである場合、またはアプリケーションファームウェアの有効なコピーを含まない場合（例えば、ＣＲＣが両方のコピーに関して失敗した場合）、判定７５はＮＯの結果を返し、アプリケーションファームウェアが存在しないことを示す。これはもちろん、フラッシュメモリ５５の初期化の前のケースである。
【００３５】
具体的には保守またはファームウェアアップグレード操作でアプリケーションプログラムがフラッシュメモリ５５内に存在するかどうかを判定７５が判定する代わりに、アプリケーションプログラムが既にフラッシュメモリ５５内に常駐する場合を考慮して、判定７５が異なる基準に基づくことも企図される。当技術分野で周知のように、スタートアップ時にキーの特別な組合せを押下することなどにより、一般にはシステムのパワーサイクリングと組み合わせて、システムのファームウェアアップグレードを実施することができる。
【００３６】
本発明のこの好ましい実施形態によれば、判定７５からのＮＯの結果、またはそのような他の基準が満たされたことに応答して、ＣＰＵ４２は、プロセス８０に対応する、システムＲＯＭ４４からの命令のシーケンスを実行し、プロセス８０では、いくつかの「パススルー」コマンドロジックがイネーブルされ、その結果、コマンドが標準インターフェース５０を介してＳＯＣ４０によって受信され、実行のためにサブシステムコントローラ４９に「パススルー」される。この例では、こうしたパススルーコマンドは、低レベルフラッシュメモリデバイスドライバにより、サブシステムコントローラ４９で実行するために標準インターフェース５０を介して受信された要求をフォーマットするようにＣＰＵ４２に命令するＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ）拡張コマンドの形式である。実際には、パススルーコマンドロジックは、ＣＰＵ４２によって実行され、そのＳＣＳＩコマンドインタプリタとその低レベルデバイスドライバとをインターフェースする１つのグルーロジックコードである。
【００３７】
あるいは、この初期化シーケンスをホストシステムＨＯＳＴからシステムＲＡＭ４６にダウンロードし、ＣＰＵ４２で実行して、アプリケーションファームウェアの存在を判定するようにフラッシュメモリ５５に照会し、次いで通信チャネルを確立することができる。この代替実施形態ではさらに、その初期化状態を判定するようにＣＰＵ４２がフラッシュメモリ５５に照会する命令はシステムＲＯＭ内に存在することができ、次いで、初期化が必要である場合、初期化シーケンスの残りがホストシステムＨＯＳＴからシステムＲＡＭ４６にダウンロードされる。ダウンロードされる初期化シーケンスコードまたは常駐初期化シーケンスコードの上記およびその他の組合せが、特定の応用例のために選択された特定の適合と共に、本明細書を参照した当業者には明らかとなるであろうことが企図される。
【００３８】
ＣＰＵ４２がＳＣＳＩパススルーコマンドロジックをイネーブルするとき、プロセス８２で、通信チャネルがホストシステムＨＯＳＴとサブシステムコントローラ４９の間で開かれる。この通信チャネルは、システム６０で使用されるものと同様であることが企図され、ＤＡＰとして構成されたとき、ホストコンピュータとフラッシュメモリの間で音楽ファイルの同期が実施される。実際には、プロセス８２で、ＣＰＵ４２が実質上、ホストシステムＨＯＳＴとサブシステムコントローラ４９の間の直接通信経路を確立することが企図され、その結果、ＣＰＵ４２によるかなりの実行を必要とすることなく、コマンドおよびデータがこの経路を介して転送される。図７に、本発明のこの好ましい実施形態によるプロセス８２でＳＯＣ４０内のＣＰＵ４２によって確立される、ホストシステムＨＯＳＴとフラッシュメモリ５５の間のこの通信チャネルを示す。
【００３９】
もちろん、この動作でのＣＰＵ４２の関与の範囲はＳＯＣ４０の特定のアーキテクチャに依存する。しかし、図２に関して上記で説明したように、初期化中に従来型テスト装置と従来型フラッシュメモリシステムの間の通信と同様の方式で、この通信チャネルがフラッシュメモリ５５の初期化のためにホストシステムＨＯＳＴとサブシステムコントローラ４９の間の通信を可能にすることが好ましく、この構成は、ホストシステムＨＯＳＴの初期化ハードウェアおよびソフトウェアを、従来型フラッシュメモリ製造装置および処理で既に実現されているのと同様にすることを可能にする。
【００４０】
プロセス８２で通信チャネルが開かれたことに続いて、プロセス８４で、ホストシステムＨＯＳＴは、チャネル（図７）を介して初期化コマンドおよびデータをサブシステムコントローラ４９に転送する。当技術分野で周知のように、こうした初期化コマンドは、サブシステムコントローラ４９に、通常のオペレーションでは普通ならアクセス可能ではないフラッシュメモリ５５のシステムメモリ位置にアクセスさせる、必要な診断命令などを含む。
【００４１】
例えば、通信チャネルが上述のＳＣＳＩパススルーコマンド拡張によって実施された場合、ＣＰＵ４２によって解釈されるべきパススルーコマンドは非常に限定される。
【００４２】
すべてのメディアタイプについて：
Ｃｈｅｃｋ  Ｍｅｄｉａ  Ｃａｒｄ  Ｔｙｐｅ（Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｄ０ｈ）（ＳＤ／ＭＭＣまたはＣＦ  Ｍｅｄｉａタイプをチェックするため）
ＳＤ／ＭＭＣ  Ｍｅｄｉａについて：
Ｍｅｄｉａ  Ｃａｒｄ  ＳＤ  Ｅｘｅｃｕｔｅ  Ｃｏｍｍａｎｄ（Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｄ１ｈ）
Ｍｅｄｉａ  Ｃａｒｄ  ＳＤ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌ  Ｃｏｍｍａｎｄ（Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｄ２ｈ）
ＣＦ  Ｍｅｄｉａについて：
Ｍｅｄｉａ  Ｃａｒｄ  ＣＦ  Ｓｅｎｄ  Ｃｏｍｍａｎｄ（Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｄ１ｈ）
Ｍｅｄｉａ  Ｃａｒｄ  ＣＦ  Ｄａｔａ  Ｃｏｍｍａｎｄ（Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｄ２ｈ）
Ｍｅｄｉａ  Ｃａｒｄ  ＣＦ  Ｓｔａｔｕｓ  Ｃｏｍｍａｎｄ（Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｄ３ｈ）
チェックメディアカードタイプコマンドは、フラッシュメモリ５５のメディアタイプを識別するようにサブシステムコントローラ４９に照会し、さらにＳＯＣ４０のパススルーコマンドの実行をイネーブルまたはディスエーブルする（すなわち、ディスエーブルされたとき、コマンドコードＤ１ｈなどはパススルーコマンドとして解釈されない）。
【００４３】
ＳＤ／ＭＭＣメディアの例では、イネーブルされたとき、ホストシステムＨＯＳＴがＭｅｄｉａ  Ｃａｒｄ  ＳＤ  Ｅｘｅｃｕｔｅコマンド（Ｄ１ｈ）を発行したときに、ＣＰＵ４２は、対応するネイティブコマンドをサブシステムコントローラ４９に対して発行する。ホストシステムＨＯＳＴからのＥｘｅｃｕｔｅコマンドは、データ転送の方向（フラッシュメモリ５５に対して、またはフラッシュメモリ５５から）、コマンドのタイプ、コマンドを修飾する引数などを含む引数を含むことができる。Ｅｘｅｃｕｔｅコマンドの受信時に、ＣＰＵ４２は、対応するネイティブコマンドをサブシステムコントローラ４９に送り、ホストシステムＨＯＳＴとフラッシュメモリサブシステムの間のデータ転送のためのバッファとして働く。Ｍｅｄｉａ  Ｃａｒｄ  ＳＤ  ホスト制御コマンドを使用して、フラッシュメモリサブシステムに対するオペレーションの頻度などのいくつかの属性を示すことができ、待ち状態、ブロック長、および他の制御属性をホストに示すことができる。ＣＦメディアの例では、Ｓｅｎｄコマンドは、後続のデータコマンドでアクセスすべきフラッシュメモリ５５の特定のセクタ位置、シリンダ位置、および装置位置を示し、それが、ホストシステムＨＯＳＴからフラッシュメモリ５５にデータを送り、またはフラッシュメモリ５５からホストシステムＨＯＳＴにデータを送るためのネイティブコマンドとしてＣＰＵ４２によってサブシステムコントローラ４９に転送される。ＣＦステータスコマンドは単に、サブシステムコントローラ４９のステータスレジスタからステータス情報を取り出すためにホストシステムＨＯＳＴによって発行されるコマンドである。
【００４４】
上記の背景技術で米国特許第６００９４９６号に関して触れたように、従来型マイクロコントローラアーキテクチャは、オンボードマイクロプロセッサを使用して、組込みフラッシュメモリをプログラムする際に再プログラミング制御ルーチンを実行する。本発明のこの実施形態に従って使用されるパススルーコマンドおよびコマンドロジックは、従来の方式に比べて特に有利である。こうしたコマンドは、フラッシュメモリサブシステムの制御を実施する際に、ホストシステムＨＯＳＴにそのような制御を実施することを可能にする代わりにＣＰＵ４２の役割を最小限に抑えるからである。さらに、比較的小さいコマンドセットは、ＣＰＵ４２に対するオーバヘッドを低減し、新しいメモリカードタイプに対するコマンドの拡張を可能にする。
【００４５】
本発明のこの実施形態によれば、プロセス８６で、ホストシステムＨＯＳＴによって発行されるこうしたパススルーコマンドのシーケンスが、サブシステムコントローラ４９を介してフラッシュメモリ５５を初期化する。当技術分野で周知であり、かつ上述のように、初期化プロセス８６は、所望のファイルシステムおよび構造に従ってフラッシュメモリ５５をフォーマットすること、不良メモリ位置を検出およびマッピングすること、論理−物理アドレスマッピング構造およびマッピング自体を確立すること、およびフラッシュメモリ５５内のメモリセルの最大の耐用寿命を保証するための適切な消耗レベリングアルゴリズムをサブシステムコントローラ４９に提供することなどのオペレーションを含む。この時点で、システムファームウェア、動作パラメータ、局部発振器周波数などもサブシステムコントローラ４９自体の中で初期化することができる。さらに、やはり上述のように、フラッシュメモリ５５の初期化が、ＣＰＵ４２によってそのシステムオペレーションで使用するための、フラッシュメモリ５５へのアプリケーションソフトウェアのロードも含み（例えば、図６の例でのＬＢＡアドレスｍａｘＵｓｅｒＬＢＡより上のメモリスペースにロードされた冗長コピーＡおよびＢとして）、恐らくはアプリケーションデータ（例えば、ＤＡＰとして構成されたシステム６０の場合、ＭＰ３オーディオファイル、ＪＰＥＧ写真ファイルなど）のフラッシュメモリ５５への事前ロードも含むことが企図される。そのようなプログラムコードおよびデータのロードおよび事前ロードは、もちろん、上述のフラッシュメモリ５５のフォーマットおよび他のシステム初期化に続くことになる。
【００４６】
初期化プロセス８６、および恐らくはフラッシュメモリ５５のそのような機能テストおよびデータ検証の完了に続いて、そのような初期化でのホストシステムＨＯＳＴの動作が完了する。次いで、ホストシステムＨＯＳＴは、Ｃｈｅｃｋ  Ｍｅｄｉａ  Ｃａｒｄ  Ｔｙｐｅコマンド（Ｄ０ｈ）を発行することによってパススルーコマンド機能をディスエーブルし、プロセス８８で、システムバスＣＰＵ＿ＢＵＳを解放する。次いで、望まれる範囲または可能な範囲のＳＯＣ４０およびシステム６０の動作（ペリフェラル機能の存在に応じて）が、望みの通りに続行することができる。初期化の状況、例えばＳＯＣ４０またはシステム６０の製造中では、ＣＰＵ４２は、単にアイドル状態またはオフ状態に入ることができる。初期化がファームウェア更新または他の保守オペレーションに対応する場合、ＣＰＵ４２は、その代わりにリセットまたはリブートすることができ、その通常オペレーションに従ってフラッシュメモリ５５からのアプリケーションプログラムの実行を開始する（すなわち判定７５がＹＥＳ）。本明細書を参照した当業者が望みの通りに次のオペレーションのシーケンスを容易に実施するであろうことが企図される。
【００４７】
上述のように、上述のアーキテクチャおよび方法に対する様々な代替実施形態が、本発明としての使用および本発明に関連しての使用に適している。例えば、フラッシュメモリコントローラ回路を含む、システム・オン・チップまたは他の大規模システム統合の特定のアーキテクチャは、特定の応用例に応じて非常に広範に変化することができる。例えば、本発明の好ましい実施形態のバス構造およびインターフェース構成は、システム設計者の望む通りに任意の数の代替形態を取ることができる。同様に、そのような統合システムの特定の応用例は、上述の例示的ＤＡＰを超えて、ほんの数例を挙げれば、汎用または特殊目的コンピューティングシステム、ポータブルオーディオおよびビデオプレーヤおよびレコーダ、ワイヤレス（または有線）電話ハンドセットおよびシステム、在庫または配送制御のために使用されるようなポータブル特殊目的システムなどのシステムを含む多数の形態のうちの任意の１つを取ることもできる。フラッシュメモリ資源の初期化に関係する特定のタスクは、本発明の好ましい実施形態に関連して上記で説明したものよりも多くのタスクまたは少ないタスク（あるいは実際には完全に異なるタスク）を含むことができる。上記およびその他の代替実施形態が、特許請求された本発明の範囲内にあることを、本明細書を参照した当業者は容易に理解するであろうことが企図される。
【００４８】
本発明の好ましい実施形態によれば、フラッシュメモリ資源は、システム・オン・チップアーキテクチャを利用する高度に統合されたデジタルシステムで、フラッシュメモリの初期化のための特別なインターフェースおよびテスト装置を設けるかなりのコストを招くことなく、プログラムおよびデータのディスク代用品および他の不揮発性バルクストレージとして有用なものとなる可能性がある。むしろ、本発明によれば、従来型ホストコンピュータまたはテスト装置は、システム・オン・チップによって既に提供されている従来型標準インターフェース技術を使用して、統合フラッシュメモリサブシステムコントローラと通信することができ、フラッシュメモリ資源を効率的かつ容易に初期化する。本発明の結果として開発時間および製造費用が最小限に抑えられると共に、最終的システムの構築、動作、および管理での多大の柔軟性が得られる。
【００４９】
本発明をその好ましい実施形態に従って説明したが、もちろん、本発明の利点および特典を得る、こうした実施形態の修正形態および代替実施形態が、本明細書および図面を参照した当業者には明らかとなるであろうことが企図される。そのような修正形態および代替実施形態が本明細書で特許請求される本発明の範囲内にあることが企図される。
【図面の簡単な説明】
【００５０】
【図１】従来型フラッシュメモリサブシステムのブロック形式の電気的図である。
【図２】図１のフラッシュメモリサブシステムを初期化する従来型システムのブロック形式の電気的図である。
【図３】フラッシュメモリを使用し、フラッシュメモリを初期化する従来型の望ましくない方式を含む、推測されるシステム・オン・チップ（ＳＯＣ）のブロック形式の電気的図である。
【図４】システム・オン・チップ（ＳＯＣ）アーキテクチャに従って構築され、フラッシュメモリを初期化する資源を含む本発明の好ましい実施形態によるフラッシュメモリを使用するデジタルシステムのブロック形式の電気的図である。
【図５】本発明の好ましい実施形態によるフラッシュメモリ資源の初期化を実施する際の図４のシステムの動作を示す流れ図である。
【図６】本発明の好ましい実施形態による、図４のシステムのフラッシュメモリ資源内のユーザメモリスペースおよび予約済みメモリスペースを示すメモリマップ図である。
【図７】本発明の好ましい実施形態による、ホストシステムとフラッシュメモリ資源およびサブシステムコントローラとの間のシステム・オン・チップを介して通信チャネルを開くことを示す図４のシステムのブロック形式の電気的図である。
【図１】
2009512076.tif 000003
【図２】
2009512076.tif 000004
【図３】
2009512076.tif 000005
【図４】
2009512076.tif 000006
【図５】
2009512076.tif 000007
【図６】
2009512076.tif 000008
【図７】
2009512076.tif 000009
【国際調査報告】
2009512076.tif 000010
2009512076.tif 000011