(57)【要約】      （修正有）【課題】プロセッサと、揮発性メモリと、不揮発性メモリとを備えたコンピュータシステムを自動的に初期化し、環境設定をおこなう。【解決手段】上記コンピュータシステムが初期化される際に、上記不揮発性メモリ内に記憶された初期化コードを、上記揮発性メモリに自動的にコピーする工程を含んでいる。この工程では、上記揮発性メモリ内の回路が、上記コピーを自動的に作成し、そしてプロセッサによって、上記揮発性メモリからの上記初期化コードのコピーを行う。【選択図】図１
2007213571.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、揮発性メモリと、不揮発性メモリとを備えたコンピュータシステムを初期化するための方法であって、
上記コンピュータシステムが初期化される際に、上記揮発性メモリ内の回路が、上記不揮発性メモリ内に記憶された初期化コードを、上記揮発性メモリに自動的にコピーする工程と、
上記揮発性メモリからの上記初期化コードの上記コピーを、上記プロセッサによって行う工程とを含んでいる、方法。
【請求項２】
上記初期化コードの上記コピーを自動的に作成する上記工程が、
上記不揮発性メモリから上記揮発性メモリへ上記初期化コードを転送するために、上記揮発性メモリ内の上記回路が、直接メモリアクセスを行う工程を含んでいる、請求項１に記載の方法。
【請求項３】
上記不揮発性メモリから上記揮発性メモリへ上記初期化コードを転送するために直接メモリアクセスを行う上記工程は、
起動コードを起動コードバッファへ自動的に転送する工程と、
コントローラコードをコントローラコードバッファへ自動的に転送する工程とを含んでいる、請求項２に記載の方法。
【請求項４】
上記起動コードおよび上記コントローラコードは、上記起動コードバッファと上記コントローラコードバッファとを備えた共通バッファ（shared buffer）内に配置される、請求項３に記載の方法。
【請求項５】
上記プロセッサは、上記起動コードバッファから上記起動コードを実行し、
上記揮発性メモリデバイス上のコントローラは、上記コントローラコードバッファから上記コントローラコードを実行する、請求項３に記載の方法。
【請求項６】
プロセッサと、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）メモリと、フラッシュメモリとを備えたコンピュータシステムを初期化するための方法であって、
上記コンピュータシステムが初期化される際に、上記ＤＲＡＭメモリ内の直接メモリアクセス回路が、上記フラッシュメモリ内に記憶された起動コードのコピーを、上記ＤＲＡＭメモリの起動コードバッファ内に自動的に作成する工程と、
上記ＤＲＡＭメモリ内の上記起動コードバッファから上記起動コードの上記コピーを行う工程とを含んでいる、方法。
【請求項７】
上記プロセッサが、上記起動コードバッファから上記起動コードの上記コピーを行う上記工程が、
上記起動コードの上記コピーの実行に応答して、上記プロセッサから上記ＤＲＡＭメモリへコマンドを発行し、当該コマンドによって、上記直接メモリアクセス回路が、上記フラッシュメモリ内に記憶されたオペレーティングシステムコードのコピーを、上記ＤＲＡＭメモリのメモリアレイ内に自動的に作成する工程と、
上記ＤＲＡＭメモリの上記メモリアレイから、上記オペレーティングシステムコードの上記コピーを行う工程とを含んでいる、請求項６に記載の方法。
【請求項８】
上記フラッシュメモリ内に記憶された上記起動コードの上記コピーは、直接メモリアクセス転送を介して作成される、請求項６に記載の方法。
【請求項９】
上記直接メモリアクセス転送は、上記プロセッサと上記ＤＲＡＭメモリとの間に発行されるコマンドなしに開始される、請求項８に記載の方法。
【請求項１０】
上記起動コードの上記コピー作成後に、上記ＤＲＡＭメモリ内の上記直接メモリアクセス回路が、上記フラッシュメモリ内に記憶されたコントローラコードのコピーを、上記ＤＲＡＭメモリのコントローラコードバッファ内に自動的に作成する工程と、
上記コントローラコードバッファ内に記憶された上記コントローラコードの上記コピーを、上記ＤＲＡＭメモリ内のコントローラを用いて行う工程とをさらに含んでいる、請求項６に記載の方法。
【請求項１１】
組み込みシステム内の不揮発性メモリから揮発性メモリへ初期化コードをロードする方法であって、
上記組み込みシステムに電力が供給されたことを示す電力供給信号を受信する工程と、
上記初期化コードのための送信元アドレスデータとサイズデータとを、上記揮発性メモリのピン上において読み出す工程と、
上記不揮発性メモリから上記揮発性メモリへの上記初期化コードの直接メモリアクセス転送を行う工程とを含んでいる、方法。
【請求項１２】
上記直接メモリアクセス転送は、上記揮発性メモリ内の直接メモリアクセス回路によって自動的に行われる、請求項１１に記載の方法。
【請求項１３】
上記起動コードの送信元アドレスおよびサイズを、上記揮発性メモリの上記ピン上にある、上記送信元アドレスに対応する上記不揮発性メモリ内のブロックを示す上記送信元アドレスデータと、上記起動コードの上記サイズに対応するバイト数を示すサイズデータとから決定する工程と、
上記直接メモリアクセス転送を行うために、上記起動コードの送信元アドレスおよび上記サイズを用いる工程とをさらに含んでいる、請求項１２に記載の方法。
【請求項１４】
上記起動コードの上記送信元アドレスデータおよびサイズデータから、コントローラコードのための送信元アドレスを計算する工程と、
上記不揮発性メモリ内の所定の位置から、上記コントローラコードのためのサイズデータを読み出す工程と、
計算された、上記コントローラコードのための上記送信元アドレスおよび上記サイズデータを用いて、上記不揮発性メモリから上記揮発性メモリへ、上記コントローラコードの直接メモリアクセス転送を行う工程とをさらに含んでいる、請求項１１に記載の方法。
【請求項１５】
上記組み込みシステムのプロセッサからコマンドを受信する工程と、
上記プロセッサからの上記コマンドの受信に応答して、上記不揮発性メモリから上記揮発性メモリへ、オペレーティングシステムコードの直接メモリアクセス転送を行う工程とをさらに含んでいる、請求項１１に記載の方法。
【請求項１６】
メモリアレイと、
バッファと、
初期化信号を検出し、当該初期化信号の検出に応答して、外部不揮発性メモリから上記バッファへ、起動コードの直接メモリアクセス転送を行うように設定された回路とを備えた、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス。
【請求項１７】
電力が供給された際に上記初期化信号を生成する、請求項１６に記載のＤＲＡＭデバイス。
【請求項１８】
第２のバッファをさらに備えており、
上記回路は、上記外部不揮発性メモリから上記第２のバッファへ、コントローラコードを自動的に転送するようにさらに設定されている、請求項１６に記載のＤＲＡＭデバイス。
【請求項１９】
上記コントローラコードを実行するように設定されたコントローラ回路を上記第２のバッファ内にさらに備えた、請求項１８に記載のＤＲＡＭデバイス。
【請求項２０】
上記回路は、外部プロセッサからコマンドを受信し、当該コマンドの受信に応答して、上記外部不揮発性メモリから上記メモリアレイへ、オペレーティングシステムの直接メモリアクセス転送を行うようにさらに設定されている、請求項１６に記載のＤＲＡＭデバイス。
【請求項２１】
記憶用の揮発性手段と、
バッファ用の手段と、
初期化信号を検出し、当該初期化信号の検出に応答して、記憶用の外部不揮発性手段から、バッファ用の上記手段へ、起動コードの直接メモリアクセス転送を行うように設定された転送用の手段とを備えた、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス。
【請求項２２】
電力が供給された際に上記初期化信号を生成する、請求項２１に記載のＤＲＡＭデバイス。
【請求項２３】
バッファ用の第２の手段をさらに備えており、
上記転送用の手段は、上記記憶用の外部不揮発性手段から、上記バッファ用の第２の手段へ、コントローラコードを自動的に転送するようにさらに設定されている、請求項２１に記載のＤＲＡＭデバイス。
【請求項２４】
上記バッファ用の第２の手段に記憶された上記コントローラコードを実行するように設定された、制御用の手段をさらに備えた、請求項２３に記載のＤＲＡＭデバイス。
【請求項２５】
上記転送用の手段は、プロセス用の外部手段からコマンドを受信し、当該コマンドの受信に応答して、上記外部不揮発性メモリから、上記記憶用の揮発性手段へ、オペレーティングシステムの直接メモリアクセス転送を行うようにさらに設定されている、請求項２１に記載のＤＲＡＭデバイス。
【請求項２６】
プロセッサと、
不揮発性メモリデバイスと、
揮発性メモリデバイスとを備えた組み込みシステムであって、
上記揮発性メモリデバイスは、上記プロセッサと通信するためのインターフェースと、上記不揮発性メモリと通信するためのインターフェースと、バッファと、メモリアレイと、回路とを備えており、
上記回路は、上記組み込みシステムの初期化の検出に応答して、上記不揮発性メモリデバイスから上記バッファへ、起動コードの直接メモリアクセス転送を、上記不揮発性メモリと通信するための上記インターフェースを介して自動的に行うように設定されている、組み込みシステム。
【請求項２７】
上記プロセッサは、
上記バッファ内に記憶された上記起動コードを上記揮発性メモリデバイスから読み出し、
読み出された上記起動コードを実行し、
上記起動コードの実行に応答して、上記揮発性メモリ内の上記回路にコマンドを発行するように設定されており、
発行された上記コマンドの受信に応答して、上記揮発性メモリデバイス内の上記回路が、オペレーティングシステムコードを、上記不揮発性メモリから、上記不揮発性メモリと通信するための上記インターフェースを介して、上記揮発性メモリデバイスの上記メモリアレイへ自動的に転送するように設定されている、請求項２６に記載の組み込みシステム。
【請求項２８】
上記プロセッサは、
オペレーティングシステムコードの自動転送が完了したことを示す信号を、上記揮発性メモリデバイスから検出し、そして
上記信号の検出に応答して、上記揮発性メモリデバイスの上記メモリアレイ内に記憶された上記オペレーティングシステムコードの実行を開始するようにさらに設定されている、請求項２７に記載の組み込みシステム。
【請求項２９】
上記揮発性メモリデバイスは、第２のバッファをさらに備えており、
上記揮発性メモリデバイスの上記回路は、
上記起動コードの上記直接メモリアクセス転送が完了したことを示す信号の検出に応答して、上記不揮発性メモリデバイスから上記第２のバッファへ、上記不揮発性メモリと通信するための上記インターフェースを介して、コントローラコードの第２の直接メモリアクセス転送を自動的に行うようにさらに設定されている、請求項２６に記載の組み込みシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
〔本発明の背景〕
本発明の分野
本発明は、一般的には、コンピュータシステムの初期化に関する。特に、本発明は、コンピュータシステムを起動するための改善されたメモリアーキテクチャに関する。
【０００２】
従来技術の説明
携帯電話、ＰＤＡ、携帯音楽プレーヤー、電気器具などの多くの近代的な電子デバイスは、一般的に、組み込みコンピュータシステムを内蔵している。組み込みコンピュータシステムは、一般的にコンピュータプロセッサ（ホストと称される）、不揮発性メモリ（例えば、フラッシュメモリおよび／またはＲＯＭメモリ）、およびダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の揮発性メモリを備えている。ホストは、中央演算処理装置（ＣＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロコントローラユニット（ＭＣＵ）、ダイレクトメモリアクセス（ＤＭＡ）データ転送デバイスを備えている。
【０００３】
ホストは、動作中に、オペレーティングシステム、またはその他の動作コードを実行する。一般的に、不揮発性メモリよりも揮発性メモリの方が早くアクセスされるため、動作コードは揮発性メモリ内に記憶され、そしてこの揮発性メモリからホストによってアクセスされる。しかし揮発性メモリは、内部に記憶されたデータを保持するために電源を必要とするため、組み込みシステムの電源が切られたときには、揮発性メモリは通常は消去される。従って、組み込みシステムの起動時（例えば、組み込みシステムがリセット状態に入る時）に、ホストシステムによって必要とされる動作コードは、一般的に揮発性メモリ内にロードされる。一般的に動作コードは、電力が供給されていない状態においても、記憶されているデータを保持する不揮発性メモリ（例えば、ＲＯＭおよび／またはフラッシュメモリ）からロードされる。不揮発性メモリ内に記憶されたコードを揮発性メモリ内にロードし、そしてこのコードを揮発性メモリから実行するプロセスは、コードシャドーイング（code shadowing）とも称される。
【０００４】
組み込みシステムは、電力が供給されると、一般的には起動シーケンスを実行し、不揮発性メモリから揮発性メモリへ動作コードを適切にロードして、そしてこの動作コードを用いてホストを初期化する。起動シーケンスを実行するためには、ホストは一般的に、不揮発性メモリの所定の領域内に記憶された起動コードにアクセスする。起動コードは、ホストによって実行される簡素なコードである。この起動コードによって、ホストは、動作コードを揮発性メモリへロードするために必要なより複雑なアクションを実行でき、さらに動作コードの実行を開始できる。
【０００５】
ホストは、ダイレクトメモリアクセス（ＤＭＡ）を用いて、不揮発性メモリから揮発性メモリへ動作コードを転送する場合がある。ＤＭＡによって、メモリの一部は、１つの記憶場所から別の記憶場所へと迅速かつ自動的に移動できる。ＤＭＡ転送を実行するためには、ホストがＤＭＡエンジンを初期化する必要がある。場合によっては、ＤＭＡエンジンはホスト内に配置されている。ＤＭＡエンジンを初期化するために、ホストは、起動コードによって供給された情報および／または命令を用いることがある。ＤＭＡエンジンが一旦初期化されると、ホストは、不揮発性メモリから揮発性メモリへ動作コードをロードするように、ＤＭＡエンジンに対してコマンドを発行する。するとホストは、動作コード、およびホストの正常な動作に必要なその他のコードの実行を開始する。
【０００６】
組み込みシステムを上述のように起動させるためには、ホストに対して様々な特殊な環境設定を行う必要がある。例えば、一般的にホストは、複数種のメモリ（フラッシュ、ＲＯＭ、およびＤＲＡＭ）をインターフェース接続するように設定された複数のインターフェースを必要とする。ホストはまた、一般的に、起動シーケンスの一部として、起動コードを自動的にロードし、組み込みマイクロコントローラのためにコントローラコードをロードし、そして不揮発性メモリから揮発性メモリへのＤＭＡ転送を初期化および管理するための機能を備えるように設定されている。ホストは、組み込みシステムを起動するために上記のような特殊な環境設定を行う必要があるため、ホストおよび組み込みシステムの柔軟性が失われ、さらに設計コストが高くなる。
【０００７】
従って、組み込みシステムを起動するための改善されたシステムおよび方法が必要とされている。
【０００８】
〔本発明の概要〕
本発明の形態は、プロセッサと、揮発性メモリと、不揮発性メモリとを備えたコンピュータシステムを初期化するための方法および装置を提供する。一形態では、上記方法は、上記コンピュータシステムが初期化される際に、上記不揮発性メモリ内に記憶された初期化コードを、上記揮発性メモリに自動的にコピーする工程を含んでいる。この工程では、上記揮発性メモリ内の回路が、上記コピーを自動的に作成し、そしてプロセッサによって、上記揮発性メモリからの上記初期化コードのコピーを行う。
【０００９】
〔図面の簡単な説明〕
上述した本発明の特徴が詳しく理解されるように、添付図面に示されている実施形態を参照しながら、前項において概説した本発明をより具体的に説明する。しかし添付図面は、本発明の典型的な実施形態を示すものであって、本発明の範囲を限定するものと考えられることはなく、本発明は同様に効果的な別の実施形態も許容することについて留意されたい。
【００１０】
図１は、本発明の一実施形態による典型的なシステムを示すブロック図である。
【００１１】
図２は、典型的なＤＲＡＭデバイスおよびＮＡＮＤフラッシュメモリの詳細図およびデータパスを示すブロック図である。
【００１２】
図３Ａおよび図３Ｂは、本発明の一実施形態による、組み込みシステムに対する典型的な起動シーケンスを示すフローチャートである。
【００１３】
図４は、本発明の一実施形態による、組み込みシステムを起動するための典型的な状態機械を示す状態図である。
【００１４】
図５は、本発明の一実施形態による、典型的なＤＭＡエンジン／パラメータ設定の詳細を示すブロック図である。
【００１５】
図６は、本発明の一実施形態による、センスオンレスト(sense-on-rest）設定を用いてＤＭＡエンジンを初期化するための回路を示すブロック図である。
【００１６】
図７は、本発明の一実施形態による、起動コードおよびＯＳコードを記憶するための複合ＲＡＭメモリ（combined RAM memory）を示す図である。
【００１７】
〔好ましい実施形態の詳細な説明〕
本発明の実施形態は、組み込みシステムを起動するための改良されたシステムおよび方法を提供する。本発明の一実施形態では、不揮発性メモリ内に記憶された起動コードおよびコントローラコードが、揮発性メモリチップ上に配置されたＤＭＡエンジンによって、起動コードバッファおよびコントローラコードバッファ内にロードされる。揮発性メモリチップ上に配置されたＤＭＡエンジンを用いて、起動およびコントローラコードをロードすることによって、組み込みシステムを起動するために必要な処理作業負荷が、ホストプロセッサから揮発性メモリチップへオフロードされる。これによって、ホストプロセッサおよび組み込みシステムの複雑性（従って、全体的なコスト）が低減される。
【００１８】
起動コードが、不揮発性メモリから、揮発性メモリ内の起動コードバッファへロードされた後、ホストプロセッサは、上記起動コードバッファ内に記憶された起動コードにアクセスする。ホストは、起動コードバッファ内に記憶された起動コードにアクセスすると、起動動作を実行する。一実施形態では、この起動動作は、ＤＭＡエンジンに対して、揮発性メモリ内のオペレーティングシステムコードをロードするようにコマンドを発行する工程を含んでいる。次にホストは、揮発性メモリ内に記憶されたオペレーティングシステムコードを実行する。一実施形態では、起動コードおよびコントローラコードは、ホストと相互作用（interaction）することなく、ＤＭＡエンジンによって揮発性メモリチップ内へロードされる。
【００１９】
本発明の実施形態について、ホストプロセッサと、揮発性メモリと、不揮発性メモリとを備えた組み込みシステムを参照しながら以下に説明する。場合によっては、この組み込みシステムは、複数のホストプロセッサと、複数の揮発性メモリと、複数の不揮発性メモリとを備えていてもよい。上記揮発性メモリは、任意の種類のＤＲＡＭ、ＳＲＡＭ、あるいはその他任意の種類の揮発性メモリであってよい。上記不揮発性メモリは、任意の種類のＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、電気的消去およびプログラム可能な読み出し専用メモリ（ＥＥ−ＰＲＯＭ）、読み出し専用メモリ（ＰＲＯＭ）、あるいはその他任意の種類の不揮発性メモリであってよい。上記ホストプロセッサは、中央演算処理装置（ＣＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロコントローラユニット（ＭＣＵ）、ダイレクトメモリアクセス（ＤＭＡ）データ転送デバイスを含む、任意の種類のプロセッサであってよい。また、上記システム内の各チップは、場合によっては、複数種のプロセッサおよび／またはメモリを備えていてよい。例えば上記ホストは、ＣＰＵ、ＤＳＰ、およびＳＲＡＭを備えていてよい。上記不揮発性メモリは、場合によっては、ＲＯＭおよびフラッシュメモリを備えていてよい。本発明の実施形態において用いることのできる上記以外の典型的な組み合わせは、当技術分野において通常の知識を有する者には容易に明らかとなるであろう。
【００２０】
典型的な組み込みシステム
図１は、本発明の一実施形態による典型的なシステム１００を示すブロック図である。図示されているように、システム１００は、ホスト１０２、揮発性メモリ（ＤＲＡＭデバイス１１０）、および不揮発性メモリ（ＮＡＮＤフラッシュメモリ１３０）を備えている。上記ホストは、ＤＲＡＭ接続部１０４を介してＤＲＡＭデバイス１１０にアクセスする。ＤＲＡＭデバイス１１０は、フラッシュインターフェース１２２およびフラッシュメモリ接続部１２４を介して、ＮＡＮＤフラッシュメモリ１３０にアクセスする。場合によっては、上記フラッシュインターフェースはＤＲＡＭデバイス１１０上に位置しているため、ホスト１０２は、フラッシュメモリインターフェースまたは接続部を必要とせず、これによってホスト１０２の設計および選択が簡素になる。ホスト１０２は、必要に応じて、フラッシュメモリインターフェースおよび接続部を備えていてよい。
【００２１】
本発明の一実施形態では、ＤＲＡＭデバイス１１０は、ＳＲＡＭメモリアレイ１０８を備えていてよい。上記ＤＲＡＭデバイスは、起動コードおよびデータバッファ１０６、ＤＲＡＭインターフェース１１４、フラッシュマネージャ１１２、コントローラコードバッファ１１６、組み込みマイクロコントローラコア１１８、およびＤＭＡエンジン１２０をさらに備えていてよい。以下に説明するように、ＮＡＮＤフラッシュインターフェース１２２は、ＮＡＮＤフラッシュメモリ１３０内に記憶された情報（起動コード１３２、コントローラコード１３４、オペレーティングシステムおよびアプリケーションコード１３６、データ１３８を含む）、およびＮＡＮＤフラッシュメモリ１３０内に記憶されたその他任意の情報にアクセスするために用いられる。
【００２２】
図２は、本発明の一実施形態に従った、ＤＲＡＭデバイス１１０およびＮＡＮＤフラッシュメモリ１３０の詳細な図およびデータパスを示すブロック図である。場合によっては、ＮＡＮＤフラッシュメモリ１３０は、ブロックへ分割（ｂｌｋ０〜ｂｌｋｍ）され、かつパーティションに区切られている（例えば、重なり合わないメモリ領域へ分割されている）。図１に示されている各種のコード１３２、１３４、１３６は、上記パーティション内において、イメージ（例えば、一つの供給源（source）から作成されたコピー）として記憶されている。図２に示されているように、ＮＡＮＤフラッシュメモリ１３０は、コントローラコードイメージ２３４、起動イメージ２３２、オペレーティングシステム、アプリケーションおよび／またはＤＳＰコードイメージ２３６を有していてよい。ＮＡＮＤフラッシュメモリ１３０は、その他のデータ１３８をさらに有していてよい。また、前述したように、ＤＲＡＭメモリデバイス１１０は、データおよび起動コードバッファ１０６を有していてよい。場合によっては、データバッファ２１０および起動コードバッファ２１２は、図示されているように、別々のバッファとして備えられていてもよい。
【００２３】
起動シーケンスを参照しながら以下に説明するように、ＤＭＡエンジン回路１２０は、起動コードイメージ２３２から起動コードバッファ２１２へ起動コード１３２を自動的にロードし、そしてコントローラコードイメージ２３４からコントローラコード１３４を自動的にロードするために用いられる。起動コード１３２およびコントローラコード１３４がＤＲＡＭメモリデバイス１１０へロードされた後、ＤＭＡアクセスを開始するために、ＤＭＡエンジン１２０に対して発行されたコマンドが用いられる。上記ＤＭＡアクセスは、ＯＳ、アプリケーション、およびＤＳＰコードイメージ２３６からの所望のコード、およびその他のデータ１３８を、コードシャドー２０４、およびＳＤＲＡＭアレイ１０８内に記憶されたその他のデータ２０２へコピーする。
【００２４】
場合によっては、ホスト１０２から、ＤＲＡＭメモリデバイス１１０内のＤＭＡエンジン１２０および組み込みマイクロコントローラ１１８へと作業負荷をオフロードすることによって、ホスト１０２および組み込みシステム１００の設計および動作が簡素化される。また、起動コード１３２、コントローラコード１３４、およびＯＳ／アプリケーション／ＤＳＰコード１３６を、プログラマブル不揮発性メモリ１３０内に記憶させることによって、組み込みシステム１００の動作に必要なコードが、より柔軟に記憶および検索される。例えば、起動コード１３２、コントローラコード１３４、および／またはＯＳ／アプリケーション／ＤＳＰコード１３６を更新するためには、プログラマブル不揮発性メモリ１３０内の古いコードが、単に新しいコードによって書き換えられるだけである。上記コードの記憶および検索に関する情報は、上記プログラマブル不揮発性メモリ内にも記憶されるため、上記コードのいずれかが更新されると、新しい記憶および検索情報もまた、プログラマブル不揮発性メモリ１３０内にプログラムされる。
【００２５】
典型的な起動シーケンス
図３Ａおよび図３Ｂは、本発明の一実施形態に従った、組み込みシステム１００のための典型的な駆動シーケンスを示すフローチャートである。この駆動シーケンスは、ＮＡＮＤフラッシュメモリ１３０内に記憶された情報を用いる。この情報は、システム２００が起動される前に、例えば、ＮＡＮＤプログラマー３０２によってＮＡＮＤフラッシュメモリ１３０内に記憶される。ＮＡＮＤプログラマー３０２は、起動コード１３２（工程３０４）、コントローラコード１３４（工程３０６）、およびＯＳコード（工程３０８）を、ＮＡＮＤフラッシュメモリ１３０へ焼き付ける。各々のコード１３２、１３４、および１３６の相対的なメモリサイズおよび配置をいかに選択するかについては、当業者に知られている設計検討を行うことができる。
【００２６】
工程３１０においてシステム１００に電力が供給されると、工程３１２において、起動コード１３２のロードによって起動シーケンスが開始する。一実施形態では、起動コード１３２は、ＤＲＡＭメモリデバイス１１０のＤＭＡエンジン回路１２０を用いて、ＮＡＮＤフラッシュメモリ１３０から起動コードバッファ２１２へロードされる。当業者には知られているように、ＤＭＡアクセスは、例えばホスト１０２またはその他の外部コントローラ回路による外的制御または入力なしに、ＮＡＮＤフラッシュメモリ１３０から起動コードバッファ２１２へ起動コード１３２を自動的に転送する工程を含んでいる。ＤＭＡアクセスは、ＤＭＡロードが完了する（工程３１４）まで継続される。
【００２７】
ＤＭＡエンジン回路１２０は、ＮＡＮＤフラッシュメモリ１３０にアクセスするために、ＤＲＡＭメモリデバイス１１０のＮＡＮＤフラッシュインターフェース１２２を用いることができる。一実施形態では、ＤＭＡエンジン回路１２０、またはＤＲＡＭデバイス内のその他の適切な回路は、起動コード１３４を、ＮＡＮＤフラッシュメモリ１３０の所定の領域（例えばブロック０、メモリアドレス０から始まり、そして所定の長さ継続）から自動的にロードするように設定されている。必要に応じて、起動コードの送信元アドレスおよびサイズは、メモリの一領域内（例えばＲＯＭ内、あるいはＮＡＮＤフラッシュメモリ１３０の所定の領域内）に記憶されたデータによって、外部のデバイスによって供給されるようになっていてもよい。
【００２８】
工程３１２および３１４において起動コード１３２がロードされた後、工程３１６において、組み込みマイクロコントローラコア１１８によって用いられるコントローラコード１１６のロードが開始される。場合によっては、コントローラコード１３４のロードは、起動コード１３２のロード完了後に自動的に開始されるようになっていてもよい。一実施形態では、コントローラコード１３４は、ＮＡＮＤフラッシュメモリ１３０から、コントローラコード１３４が組み込みマイクロコントローラコア１１８によってアクセスされるコントローラコードバッファ１１６へとロードされるようになっていてよい。場合によっては、ＤＭＡエンジン１２０は、例えば起動コード１３２のロード後に、コントローラコード１３４を自動的にロードするように設定されていてもよい。コントローラコード１３４は、起動コード１３２内の命令を用いるか、外部デバイスによって発行された命令を用いるか、あるいは当業者に知られているその他任意の方法を用いて、ＮＡＮＤフラッシュメモリ１３０の所定の領域からロードされる。起動コード１３２およびコントローラコード１３４をロードするためのさらなる実施形態について、以下にさらに詳しく説明する。コントローラコード１３４をロードするために用いられるＤＭＡアクセスは、工程３１８においてロードが完了するまで続けられる。
【００２９】
起動コード１３２およびコントローラコード１３４が、起動コードバッファ２１２およびコントローラコードバッファ１１６へとそれぞれロードされた後、工程３２０において、組み込みマイクロコントローラ１１８がアクティブにされ、そしてＮＡＮＤフラッシュマネージャ１１２、エラー訂正符号（ＥＣＣ）、および解凍ユーティリティがセットアップされる。組み込みマイクロコントローラ１１８は、ＮＡＮＤフラッシュメモリ１３０に対して、ＮＡＮＤフラッシュ管理機能を備えるために用いられる（例えばこれによって、上記のようなフラッシュメモリマネージメントが、ホスト１０２からオフロードされる）。ＮＡＮＤフラッシュマネージャ１１２はまた、組み込みマイクロコントローラ１１８が、（例えば、ＮＡＮＤフラッシュメモリ１３０からの読み出し、およびＮＡＮＤフラッシュメモリ１３０への書き込みのためのサポートを提供することによって、）ＮＡＮＤフラッシュメモリ１３０にアクセスするために用いられる。ＥＣＣユーティリティは、ＮＡＮＤフラッシュメモリ１３０から受信したデータが正確に送信されたことを確証するため、および送信中にエラーが発生した場合はこれを訂正するために用いられる。上記コード解凍ユーティリティは、圧縮形式（例えば、ＯＳ／アプリケーションコード１３６）で記憶され、ＮＡＮＤフラッシュメモリ１３０から取り出されるコードを解凍するために用いられる。
【００３０】
組み込みマイクロコントローラ１１８がアクティブにされ、そして関連するサポート回路が初期化された後、起動バッファ２１２からホスト１０２が起動される。本発明の一実施形態では、起動バッファ２１２は、ＤＲＡＭ接続部１０４を介して、ホスト１０２によってアクセスされるようになっていてよい。起動バッファ２１２は、例えばＤＲＡＭメモリデバイス１１０内の特定かつ所定のメモリアドレスからのデータを要求することによって、ホスト１０２によってアクセスされる。必要に応じて、メモリデバイス１１０に発行された特殊コマンドを用いて、起動バッファ２１２にアクセスするようにしてもよい。ホスト１０２は、オペレーティングシステムコード１３６をＤＲＡＭメモリデバイス１１０へロードするために必要なより複雑なアクションを実行するため、および、オペレーティングシステムコード１３６ならびにホストシステム内等のその他のハードウェアデバイスを実行するために、起動バッファ２１２内に記憶された起動コード１３２を用いる。例えば、起動コード１３２は、割り込みを無効にし、ホスト１０２内のモードレジスタを初期化し、そしてメモリデバイス１１０にコマンドを発行して、オペレーティングシステムコード１３６のコードシャドーイングを開始する。起動コード１３２はまた、コードシャドーイング動作を実行するためにどのコマンドをメモリデバイス１１０へ発行するべきかを示す情報、およびＮＡＮＤフラッシュメモリ１３０内のオペレーティングシステムコード１３２の位置に関する情報を提供する。
【００３１】
工程３２２においてホスト１０２がハードウェアを起動し初期化した後、工程３２８において、ＯＳ／アプリケーション／ＤＳＰイメージ２３６がロードされる。本発明の一実施形態では、ホスト１０２は、ＤＭＡエンジン１２０へコマンドを発行して、ＮＡＮＤフラッシュメモリ１３０からＳＤＲＡＭアレイ１０８へと、ＯＳ／アプリケーション／ＤＳＰイメージ２３６のロードをＤＭＡ転送を介して開始するようになっていてよい。場合によっては、ホスト１０２は、起動コード１３２を用いて、ＤＭＡエンジン１２０および／またはコントローラ１１８に適切なコマンドを発行するようになっていてよい。ＤＭＡエンジン１２０にコマンドが発行されると、ＤＭＡエンジン１２０は、ホスト１０２と相互作用することなく、自動的かつ自発的にＤＭＡ転送を行う。一方ホスト１０２は、メモリデバイス１１０および／またはＤＭＡエンジン１２０がシャドーイングの完了（工程３２４）を示すまで、その他いくつかのタスク（待ち状態における待ちを含む）と共にアクティブのままである。
【００３２】
ＯＳ／アプリケーション／ＤＳＰイメージ２３６がロードされている間、（コア２３６が圧縮形式で記憶されている場合は、）ロードされているコアは、工程３３０において組み込みＥＣＣを用いてチェックされ、そして解凍される。一実施形態では、組み込みマイクロコントローラコア１１８および／またはその他の素子（例えば、ＤＭＡエンジン回路１２０およびＮＡＮＤフラッシュマネージャ１１２）は、転送されたコードをＥＣＣを用いてチェックし、そして解凍を実行するようになっていてよい。ＤＭＡ転送は、コードシャドー２０４のＤＭＡロードが完了する（工程３３２）まで続けられる。
【００３３】
ホスト１０２は、シャドーイングの完了（工程３２４）を判別した後、ＳＤＲＡＭアレイ１０８内に配置されたコードシャドー２０４から、オペレーティングシステムコード１３６（および、ホスト１０２によって利用されるその他任意のコード）を開始する。一実施形態では、ＯＳ／アプリケーション／ＤＳＰコード１３６のＤＭＡ転送完了後にＤＭＡエンジン１２０によって発行された信号またはコマンドは、コードシャドーイングの完了をホスト１０２に示すために用いられるようになっていてよい。ホスト１０２がＤＲＡＭメモリデバイス１１０からオペレーティングコードを開始すると、組み込みシステム１００の通常動作が開始され、そして起動シーケンス３００が正常に完了する。
【００３４】
上述した起動シーケンスは、様々な理由により、組み込みシステムの設計の改善に役立つ。例えば、場合によってはホスト１０２は、起動準備（起動コード１３２のロード等）に用いられることがないため、起動コード１３２をロードする前に、ホスト１３２を事前に初期化する必要性を克服する。ホスト１０２はまた、ＮＡＮＤフラッシュメモリ１３０の初期化には関与しないため、ホスト１０２を事前に初期化する必要性を低減することができる。さらに、ＤＲＡＭメモリデバイス１１０は、ＤＭＡエンジン１２０および組み込みマイクロコントローラコア１１８を有しているため、ホスト１０２が、ＤＭＡ転送およびコードシャドーイングのための幅広いサポートを提供する必要がない。代わりにホスト１０２は、単に、ＤＲＡＭメモリデバイス１１０にコマンドを発行して、ＤＲＡＭメモリデバイス１１０が必要なＤＭＡ転送を行うことを可能にする。
【００３５】
図４は、本発明の一実施形態による組み込みシステム１００を起動するための典型的な状態機械４００を示す状態図である。システム１００に電力が供給されると、システムの各構成要素はリセット状態４０２に入る。次の状態（ＤＭＡパラメータ状態４０４）では、ＤＭＡエンジン回路１２０は、起動コード１３２をロードするためのＤＭＡパラメータ（例えば送信元アドレス、宛先アドレス、および移動されるコードのサイズ）を用いて初期化される。本発明の一実施形態では、起動コードのための上記ＤＭＡパラメータは、センスオンリセット設定（ＳＯＲ）を用いて、ＤＭＡエンジン１２０内のレジスタ（Ｒｅｇ０）内に配置されてもよい。ＤＭＡエンジンレジスタおよびＳＯＲ設定については、以下に詳述する。
【００３６】
起動コード１３２のためのＤＭＡパラメータが記憶された後、ＤＭＡロード状態４０６においてＤＭＡロードが行われる。一実施形態では、ＤＭＡエンジン１２０は、サイズパラメータによって指定された起動コード１３２が移動されるまで、自動カウンタを用いて、送信元アドレスから宛先アドレスまで起動コード１３２を転送するようになっていてよい。読み出し要求がＮＡＮＤフラッシュメモリ１３０へ送信される毎に、ＮＡＮＤフラッシュメモリからの信号（ＮＡＮＤメモリがＲｅａｄｙであるときにアサートされ、ＮＡＮＤメモリがＢｕｓｙであるときにＬｏｗとされる、Ｒ／Ｂ＃）がＬｏｗのままとなる。これは、ＮＡＮＤフラッシュメモリ１３０からページがロードされていること（例えば、ＮＡＮＤフラッシュメモリ１３０がビジー状態であること）を示す。Ｒ／Ｂ＃信号がアサートされて、上記ページがロードされたことが示されると、ＤＭＡエンジン１２０は、（カウンタ値およびサイズパラメータに応じて、）ＮＡＮＤフラッシュメモリ１３０から別のページをロードすることによってＤＭＡ転送を継続するか、あるいは、ロードを完了させて次の状態へ遷移する。
【００３７】
起動コード１３２が、ＤＭＡエンジン１２０を介してロードを完了させた後、自動トリガは、コントローラコード１３４を転送するためのＤＭＡパラメータが初期化されるＤＭＡパラメータ状態４０４へと状態を戻す。一実施形態では、ＤＭＡパラメータは、送信元アドレス、宛先アドレス、およびコントローラコード１３４のサイズを、ＤＭＡエンジン１２０のレジスタ（Ｒｅｇ１）へロードすることによって初期化されるようになっていてよい。コントローラコード１３４のためのＤＭＡパラメータが記憶された後、状態はＤＭＡロード状態４０６へ遷移する。ＤＭＡロード状態４０６では、前述したように、送信元アドレスから宛先アドレスへコード１３４を転送することによってコントローラコード１３４のＤＭＡロードが実行され、一方でカウンタが、転送された上記コードのサイズを追跡（track）する。
【００３８】
コントローラコード１３４がロードされ、最初のＤＭＡ転送が完了した後、状態は、ＤＭＡアイドル状態４０８へ遷移する。ＤＭＡアイドル状態４０８では、ＤＭＡエンジン１２０がアイドル状態４０８のままである。同時に、組み込みマイクロコントローラ１１８は、コントローラ開始状態４１０を開始し、そしてＮＡＮＤフラッシュメモリ１３０（ＮＡＮＤフラッシュマネージャ１１２、ＥＣＣ、およびコード解凍機能等）にアクセスするためのサポートを初期化する。前述したように、組み込みマイクロコントローラコア１１８は、コントローラコードバッファ１１６内に記憶されたコントローラコード１３４を用いて初期化を行う。組み込みマイクロコントローラが開始し、ＮＡＮＤフラッシュメモリ１３０が機能化された後、状態は、ホスト起動状態４１２へ遷移する。ホスト起動状態４１２では、ホスト１０２が、例えば起動コードバッファ２１２内に記憶された起動コード１３２を用いて起動される。
【００３９】
ホスト１０２が起動して、ハードウェアの初期化が完了すると、ホストはＤＭＡエンジン１２０に対して、（例えば起動コード１３２から供給されたコマンドを用いて）コマンドを発行して、ＤＭＡエンジン１２０をＤＭＡアイドル状態４０８からＤＭＡパラメータ状態４０４へ遷移させる。ＤＭＡパラメータ状態４０４では、ホスト１０２が、ＤＭＡエンジン１２０のＤＭＡパラメータを初期化して、ＮＡＮＤフラッシュメモリ１３０からＳＤＲＡＭアレイ１０８へと、ＯＳ／アプリケーション／ＤＳＰイメージ２３６のコードシャドーイングを実行する。ホスト１０２は、例えば送信元アドレス、宛先アドレス、およびＯＳ／アプリケーション／ＤＳＰイメージ２３６のサイズにＤＭＡパラメータを与えることによって、ＤＭＡエンジン１２０を初期化する。ＯＳ／アプリケーション／ＤＳＰイメージ２３６のためのパラメータは、例えばＤＭＡエンジンレジスタ（Ｒｅｇ２）内に記憶される。ＯＳ／アプリケーション／ＤＳＰイメージ２３６のためのＤＭＡパラメータが記憶された後、状態は、ＤＭＡロード状態４０６へ遷移する。ＤＭＡロード状態４０６では、前述したように、ＯＳ／アプリケーション／ＤＳＰコード１３４を、送信元アドレスから宛先アドレスへ転送することによって、ＯＳ／アプリケーション／ＤＳＰイメージ２３６のＤＭＡロードが実行され、一方でカウンタが、転送された上記コードのサイズを追跡する。
【００４０】
ＯＳ／アプリケーション／ＤＳＰコード１３６が、ＤＭＡ転送を介してＳＤＲＡＭ１０８へロードされた後、ＤＭＡエンジン１２０はＤＭＡアイドル状態４０８へ戻り、一方でホスト１０２は、コードシャドー２０４を用いてオペレーティングシステムを開始する（ホストＯＳ開始状態４１４）。ホスト１０２が正常な動作を開始した後、ホスト１０２、または組み込みシステム１００内のその他の構成要素は、データ転送状態４１６において、さらなるＤＭＡデータ転送を初期化する。
【００４１】
ＤＭＡエンジンの制御
図５は、本発明の一実施形態による、典型的なＤＭＡエンジン１２０およびパラメータ設定の詳細を示すブロック図である。図示されているように、ＤＭＡエンジン１２０は、複数のレジスタ５０２０、５０２１、５０２２、５０２３、アドレスジェネレータおよびカウンタ５０４、ＮＡＮＤアクセス制御部５０６、およびＤＭＡ有限状態機械（ＦＳＭ）５０８を有している。ＤＭＡエンジン１２０は、起動／ＯＳ／データダウンロード制御部５１０、コントローラコードダウンロード制御部５１２、およびデータアップロード制御部５１４をさらに有している。これらの各構成要素について、以下に詳述する。
【００４２】
本発明の一実施形態では、ＤＭＡエンジンレジスタ５０２０、５０２１、５０２２、５０２３は、どのデータがＮＡＮＤフラッシュメモリ１３０からＳＤＲＡＭ１０８へロードされるのか、そしてどのデータがＳＤＲＡＭ１０８からＮＡＮＤフラッシュメモリ１３０へロードされるのかを制御するために用いられる。図示されているように、値は上記レジスト内に記憶されて、転送される送信元アドレス（ＳＡ）、宛先アドレス（ＤＡ）、およびコードのサイズを示す。
【００４３】
ＤＭＡ転送を行うためには、レジスタ５０２０、５０２１、５０２２、５０２３は、ＤＭＡ  ＦＳＭ５０８によって制御されるアドレスジェネレータおよびカウンタ５０４内に入力される。アドレスジェネレータおよびカウンタ５０４は、各々の送信元アドレス、宛先アドレス、およびサイズ入力を用いて、送信元アドレスおよび宛先アドレスを生成する。アドレスジェネレータおよびカウンタ５０４はまた、ＤＭＡ転送の進行を監視するカウンタを有している。例えばＤＭＡ転送が開始されると、アドレスジェネレータおよびカウンタ５０４はカウンタを初期化して、送信元アドレスおよび宛先アドレスを、（ＮＡＮＤフラッシュインターフェース１２２を介して）ＮＡＮＤフラッシュメモリと、（ＳＤＲＡＭインターフェース１１４、または例えば起動コードバッファ２１２のためのその他のインターフェースを介して）ＳＤＲＡＭアレイ１０８とに供給する。
【００４４】
上記アドレスジェネレータおよびカウンタが送信元アドレスおよび宛先アドレスを供給した後、ＤＭＡ  ＦＳＭ５０８は、ＮＡＮＤアクセス制御部５０６へコマンドを発行して、上記送信元アドレスから読み出され、かつ上記宛先アドレスへ書き込まれるデータを要求する。ＤＭＡエンジン１２０は、転送されているデータに応じて、起動／ＯＳ／データダウンロード制御部５１０、コントローラコードダウンロード制御部５１２、あるいはデータアップロード制御部５１４を用いて転送を行う。この転送が行われた後、アドレスジェネレータおよびカウンタ５０４は、カウンタを増加または減少させて、ＤＭＡ転送のための次の送信元アドレスおよび宛先アドレスを計算する。上記ＤＭＡ転送は、（例えばアドレスジェネレータおよびカウンタ５０４内のカウンタを用いて追跡された）サイズパラメータと等しいデータ量が転送されるまで継続される。
【００４５】
ＤＭＡエンジンの初期化
前述したように、本発明の一実施形態では、組み込みシステムに電力が供給されて、ＤＭＡエンジン１２０が初期化されると、ＤＭＡエンジン１２０は、ホスト１０２および組み込みマイクロコントローラ１１８を初期化および動作させるために用いるために、起動コード１３２およびコントローラコード１３４を、ＮＡＮＤフラッシュメモリ１３０から、ＤＲＡＭデバイス１１０内のバッファ１０６および１１６へと自動的に転送するようになっていてよい。その後、（例えばホスト１０２によって）ＤＲＡＭデバイス１１０にコマンドが発行され、これによってＯＳ／アプリケーション／ＤＳＰコード１３６が、ＤＭＡ転送を介して、ＮＡＮＤフラッシュメモリ１３０からＳＤＲＡＭアレイ１０８へロードされる。ＳＤＲＡＭアレイ１０８では、コード１３６がホスト１０２によってアクセスされる。場合によっては、
一実施形態では、起動コード１３２、コントローラコード１３４、および／またはＯＳ／アプリケーション／ＤＳＰコード１３６をロードするための適切な状態にＤＭＡ  ＦＳＭを配置するために、ＤＭＡエンジン１２０（例えばＤＭＡ  ＦＳＭ５０８）に対して出力されたＰｏｗｅｒＵｐ＿Ｔｒｉｇｇｅｒ信号およびＨｏｓｔ＿Ｔｒｉｇｇｅｒ信号を用いてもよい。例えば、ＰｏｗｅｒＵｐ＿Ｔｒｉｇｇｅｒ信号が受信されると、ＤＭＡエンジン１２０が、起動コード１３２およびコントローラコード１３４を自動的にロードするようになっていてよい。その後、Ｈｏｓｔ＿Ｔｒｉｇｇｅｒ信号が受信されると、ＤＭＡエンジン１２０が、ＯＳ／アプリケーション／ＤＳＰコード１３８を自動的にロードするようになっていてよい。
【００４６】
本発明の一実施形態では、ＮＡＮＤフラッシュメモリ１３０から起動コードバッファ２１２への起動コード１３２の最初の転送を行うために、ＤＭＡエンジン１２０の第１のレジスタ５０２０が、転送されている送信元アドレス（ＳＡ）、宛先アドレス（ＤＡ）、およびコードのサイズを用いて初期化される。場合によっては、初期化情報は、ＤＭＡエンジン１２０内においてプリセットされる（例えばＲＯＭ内に記憶される、あるいは配線接続される）。必要に応じて、上記初期化情報は、ＮＡＮＤフラッシュメモリ１３０の所定の領域内に記憶されるようになっていてよい。上記初期化情報はまた、任意の好都合の外部送信元から受信されてもよい。場合によっては、ＤＭＡエンジン１２０に対する初期化情報を得るために、組み合わせた送信元（所定のＲＯＭ、ＮＡＮＤフラッシュメモリ１３０、および／または外部送信元）を用いてもよい。コントローラコードおよびＯＳ／アプリケーション／ＤＳＰコード１３６に対する初期化情報は、上記のような送信元あるいは送信元の組み合わせから受信されるようになっていてもよい。
【００４７】
図６は、本発明の一実施形態による、センスオンレスト設定を用いてＤＭＡエンジン１２０を初期化するための回路６００を示すブロック図である。図示されている実施形態では、設定ピン６１４に送られた信号は、送信元アドレス、およびロードされる起動コード１３２のサイズを選択するために用いられる。上述したように、起動コード１３２は、起動コード１３２に対する宛先アドレスＤＡが用いられないように、あるいは設定ピン６１４を介して供給されないように、起動コードバッファ内の所定の位置にロードされる。場合によっては、設定ピン６１４は、ＤＲＡＭデバイス１１０などの数種のデバイス上において、非ＲＥＳＥＴモード中の通常動作のために共用される（例えば設定ピン６１４は、非ＲＥＳＥＴモード中のアドレスピンまたは制御ピンとして用いられる）。このため、ＤＭＡエンジン１２０を初期化するための送信元アドレスおよびサイズを供給するために、ＤＲＡＭデバイス１００に対して追加的なピンを備える必要はない。
【００４８】
本発明の一実施形態では、設定ピン６１４上に配置されたデータは、例えばセンスオンリセット（ＳＯＲ）動作中に、ラッチ６０４を用いてラッチされる。ＳＯＲ動作中に、リセット信号が内部的に生成されるか、あるいはリセットピン６０２（ＲＥＳＥＴ＃）を介してＤＲＡＭデバイス１１０によって受信される。これは、システム１００がリセットされたこと、あるいはシステム１００に電力が供給されたことを示している。例えば、システム１００に電力が供給されると、ＤＲＡＭデバイス１１０によってＰｏｗｅｒＵｐ＿Ｔｒｉｇｇｅｒ信号が生成される。リセット信号が検出されると、ラッチ６０４は、設定ピン６１４を介して供給されたデータをラッチする。本発明の一実施形態では、設定ピン６１４上の初期化データは、ホスト１０２などの外部デバイス、またはその他任意の好都合なデバイスによって供給される。必要に応じて、設定ピン６１４上の初期化データは、所望の電圧レベルへの配線接続を介して（例えばプルアップまたはプルダウン抵抗を介して）供給される。
【００４９】
リセット信号が受信されて、設定ピン６１４上に供給された初期化データがラッチ６０４によってラッチされると、この初期化データは適切なレジスタ内に配置される。本発明の一実施形態では、上記初期化データは、送信元アドレステーブル６０８およびサイズテーブル６０６内にある、起動コード１３２のための送信元アドレスおよびサイズを参照するために用いられる。図示されているように、送信元アドレスに対して４つのリセットピンが用いられる場合は、参照テーブル６０８は、送信元アドレスに対して１６通りの異なる入力を提供する。送信元アドレスは、例えばＮＡＮＤフラッシュメモリ１３０内のブロック番号として供給される。必要に応じて、ピンをさらに備えてもよく、また送信元アドレスのために直接アドレッシングを用いてもよい。サイズ値に関しては、サイズ値に対して４つのリセットピンが用いられる場合は、サイズテーブル６０６は、１６通りの可能な入力を有している。そしてこれら１６通りの可能な入力の中から、起動コード１３２のサイズが選択される。サイズ値は、例えばキロバイト（ＫＢ）数として供給される。図示されているように、各テーブル６０６および６０８は初期値を有している。これらの初期値は、設定ピン６１４に適切な電圧を印加することによって、あるいは設定ピン６１４を切断したままにしておくことによって適用される。
【００５０】
送信元アドレスおよびサイズが決定された後、これらの送信元アドレスおよびサイズは、例えばＤＭＡエンジン１２０の第１のレジスタ５０２０内に記憶される。起動コード１３２が、ＤＭＡ転送を介して、ＮＡＮＤフラッシュメモリ１３０内の起動コードイメージ２３２からＳＤＲＡＭアレイ１０８へロードされると、ＤＭＡエンジン１２０は、コントローラコード１３４のロードに進む。
【００５１】
本発明の一実施形態では、コントローラコード１３４は、起動コード１３２内に記憶されたデータを用いてロードされるようになっていてよい。このとき、起動コード１３２内の命令を用いてＤＲＡＭデバイス１１０にコマンドを発行して、コントローラコード１３４がロードされるようにするか、あるいは、起動コード１３２内のデータを、ＤＭＡエンジン１２０内のレジスタに直接ロードすることによって、コントローラコード１３４がロードされるようになっていてよい。前述したように、コントローラコード１３４をロードするために用いる情報を得るために、別の供給元（source）を用いてもよい。
【００５２】
図６に示されているように、一実施形態では、コントローラコードＤＭＡレジスタ設定は、起動コードＤＭＡレジスタ設定からのデータ、あるいは起動コード１３２内のデータから得ることができる。例えば、場合によっては、コントローラコードイメージ２３４は、ＮＡＮＤフラッシュメモリ１３０内において隣接して（例えば、利用可能な隣のメモリ空間において）、起動コードイメージ２３２を用いて記憶される。従って、コントローラコードイメージ２３２に対する送信元アドレスを決定するためには、起動コードイメージ２３２の送信元アドレスが、起動コードイメージ２３２のサイズ６１０に追加される。得られるアドレスは、コントローラコードイメージ１３４の先頭を指し示している。コントローラコード１３４に対する宛先アドレスは、前述したように予め決定される。これは、コントローラコードがコントロールコードバッファ１１６内に記憶されるためである。
【００５３】
一実施形態では、転送されるコントローラコード１３４のサイズは、起動コードイメージ２３２内または起動コードイメージ２３２の末尾に記憶されたデータから入力される。例えば、予め決定されたコントローラコードサイズ情報のサイズは、コントローラコード設定のために、起動コードイメージ２３２の末尾からレジスタ５０２１へロードされる（６１２）。このレジスタが初期化されると、ＤＭＡエンジン１２０は、ＮＡＮＤフラッシュメモリ１３０からコントローラコードバッファ１１６へと、コントローラコード１３４のＤＭＡ転送を行う。
【００５４】
一実施形態では、ＤＭＡエンジンレジスタ５０２２および５０２３は、例えば後のＯＳ／アプリケーション／ＤＳＰコード１３６の転送、またはその他任意の転送のために用いられる。必要に応じて、複数のレジスタを用いる代わりに、起動コード１３２およびコントローラコード１３４転送のためのレジスタを再度用いてもよい。必要に応じて、場合によっては、各々のＤＭＡ転送を初期化するために、単一のレジスタを用いてもよい。
【００５５】
ＯＳ／アプリケーション／ＤＳＰコード１３６を転送するためのＤＭＡエンジンレジスタ５０２２および５０２３を初期化するために、前述した方法のいずれも用いることができる。一実施形態では、ＤＭＡエンジンレジスタ５０２２および５０２３を初期化するために、ホスト１０２が起動コードバッファ２１２にアクセスして、起動コード１３２内の命令を用いるようになっていてよい。その後ＤＭＡエンジン１２０は、ホスト１０２と相互作用することなく、ＯＳ／アプリケーション／ＤＳＰコード１３６のコードシャドーイングを自動的に行う。コードシャドー２０４が生成された後、ホスト１０２は、ＳＤＲＡＭアレイ１０８からＯＳ／アプリケーション／ＤＳＰコード１３６を実行して、組み込みシステム１００の通常動作を開始する。
【００５６】
ＳＲＡＭアレイ１０８、データバッファ２１０、起動コードバッファ２１２、およびコントローラコードバッファ１１６を備えたＤＲＡＭメモリデバイス１１０を参照しながら説明してきたが、前述の動作を行うために、バッファおよびメモリアレイの好都合な設定を行うことができる。例えば一実施形態では、各ＤＭＡ転送は、特殊用途の別々のバッファ内にコードを記憶させることなく、ＮＡＮＤフラッシュメモリ１３０とＳＤＲＡＭアレイ１０８との間で行うことができる。必要に応じて、場合によっては、コードはまずＳＤＲＡＭアレイ１０８にロードされた後、別のデバイスおよび／または回路からアクセスされる前に、バッファに転送される。
【００５７】
別の実施例として、図７は、本発明の一実施形態による、起動コード１３２およびＯＳコード１３６を記憶するための複合ＲＡＭメモリ７０２（共通バッファ７０２とも称される）を示す図である。図示されているように、起動コード１３２、ＯＳ／アプリケーション／ＤＳＰコード１３６、およびその他のデータ１３８は、前述したように、ＮＡＮＤフラッシュメモリ１３０から共通バッファ７０２へと転送される。必要に応じて、上記その他のデータは、ＳＤＲＡＭアレイ１０８へ直接転送されるようになっていてよい。コントローラコード１３４は、例えばコントローラコードバッファ１１６内に記憶される。
【００５８】
一実施形態では、複合メモリ７０２内において別のデータが上書きされることを防ぐために、起動コード１３２は、複合メモリ７０２内の起動コード領域７０４内に記憶され、そしてＯＳコード、その他のコード、およびデータは、複合メモリ７０２内のＯＳコード／データ領域７０６内に記憶される。データを複合メモリ７０２内にデータを効率的に記憶させるために、起動コード領域７０４は、複合メモリ７０２の先頭に記憶され、そしてＯＳコード／データ領域７０６は、複合メモリ７０２の末尾に記憶される。データおよびコードが複合メモリ７０２内に転送される際に、メモリ７０２の上方はローメモリによって充填され、下方はハイメモリによって充填される。一実施形態では、起動コード領域７０４とＯＳコード／データ７０６領域との衝突が起こらないように、制御回路を用いてもよい。必要に応じて、場合によっては、共通メモリ７０２内に記憶された起動コード１３２を用いてホスト１０２を初期化し、そしてホスト１０２が起動された後に、上記起動コード１３２が上書きされるようにしてもよい。
【００５９】
これまで説明したように、本発明の実施形態は、起動コード１３２およびコントローラコード１３４を、ＮＡＮＤフラッシュメモリ１３０からＤＲＡＭメモリデバイス１１０へ自動的に転送するために用いることのできるＤＭＡエンジン１２０を備えたＤＲＡＭデバイス１１０を提供する。ＤＭＡエンジン１２０はまた、外部デバイスから直接または間接的にコマンドを受信し、これによってＯＳ／アプリケーション／ＤＳＰコード１３６が、ＤＲＡＭデバイス１１０内にシャドーされることを可能にする。場合によっては、ＤＭＡエンジン１２０は、組み込みマイクロコントローラ１１８またはホスト１０２入力なしに最初の起動を行うことができ、また起動／コントローラコードの記憶場所を再配置できるように適合させることができる。さらに場合によっては、起動コード１３２、およびＯＳまたはその他のコード１３６を記憶するために、共通バッファ７０２を用いることも可能である。
【００６０】
以上の説明は、本発明の実施形態に関するものであって、本発明の基本的範囲から逸脱することなく、本発明の別のさらなる実施形態を考案することができる。本発明の範囲は、特許請求の範囲によって決定される。
【図面の簡単な説明】
【００６１】
【図１】本発明の一実施形態による典型的なシステムを示すブロック図である。
【図２】典型的なＤＲＡＭデバイスおよびＮＡＮＤフラッシュメモリの詳細図およびデータパスを示すブロック図である。
【図３Ａ】本発明の一実施形態による、組み込みシステムに対する典型的な起動シーケンスを示すフローチャートである。
【図３Ｂ】本発明の一実施形態による、組み込みシステムに対する典型的な起動シーケンスを示すフローチャートである。
【図４】本発明の一実施形態による、組み込みシステムを起動するための典型的な状態機械を示す状態図である。
【図５】本発明の一実施形態による、典型的なＤＭＡエンジン／パラメータ設定の詳細を示すブロック図である。
【図６】本発明の一実施形態による、センスオンレスト(sense-on-rest）設定を用いてＤＭＡエンジンを初期化するための回路を示すブロック図である。
【図７】本発明の一実施形態による、起動コードおよびＯＳコードを記憶するための複合ＲＡＭメモリ（combined RAM memory）を示す図である。
【図１】
2007213571.tif 000003
【図２】
2007213571.tif 000004
【図３Ａ】
2007213571.tif 000005
【図３Ｂ】
2007213571.tif 000006
【図４】
2007213571.tif 000007
【図５】
2007213571.tif 000008
【図６】
2007213571.tif 000009
【図７】
2007213571.tif 000010
【外国語明細書】
2007213571000001.pdf