(57)【要約】【課題】状態不一致により読み出しができないという不都合を解消すること。【解決手段】ビット幅１の通常モード以外に、複数の通信ビット幅モードおよび、コマンド省略モードを有し、ソフトリセットコマンドに対応し、コマンド省略モードを抜けるための特定のビット列が定義された、シリアルフラッシュロムの制御装置であって、動作モードを把握できない状態になった場合には、特定のビット列と、ソフトリセットコマンドを、ビット幅の大きなモードから小さなモードへ切り替えながら順次シリアルフラッシュへ送信する初期コマンドシーケンスを実行する事で、シリアルフラッシュロムをビット幅１の通常モード状態に確定させ、シリアルフラッシュロムのデータを通常モードで読みだすように制御することを特徴とする。【選択図】図１
2019074820.tif 000002
【特許請求の範囲】
【請求項１】
ビット幅１の通常モード以外に、複数の通信ビット幅モードおよび、コマンド省略モードを有し、ソフトリセットコマンドに対応し、コマンド省略モードを抜けるための特定のビット列が定義された、シリアルフラッシュロムと、
前記シリアルフラッシュロム制御に対応したシリアルフラッシュロムコントローラを備えるメモリ制御装置であって、
シリアルフラッシュロムコントローラが、シリアルフラッシュロムの動作モードを把握できない状態になった場合には、上記特定のビット列と、ソフトリセットコマンドを、ビット幅の大きなモードから小さなモードへ切り替えながら順次シリアルフラッシュへ送信する初期コマンドシーケンスを実行する事で、シリアルフラッシュロムをビット幅１の通常モード状態に確定させ、シリアルフラッシュロムのデータを通常モードで読みだすように制御することを特徴とするメモリ制御装置。
【請求項２】
前記シリアルフラッシュロムコントローラが、シリアルフラッシュロムの動作モードを把握できない状態とは、シリアルフラッシュロムコントローラのみハードウェアリセットされ、シリアルフラッシュロムはハードウェアリセットされなかった状態であること、を特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記特定のビット列とは、４０ビット以上の０であることを特徴とする請求項１又は請求項２に記載のメモリ制御装置。
【請求項４】
前記特定のビット列とは、４０ビット以上の１であることを特徴とする請求項１又は請求項２に記載のメモリ制御装置。
【請求項５】
起動から特定のフェーズまで起動処理が進むまでの間に、特定のエラー例外が発生した場合には、エラー例外処理として前記初期コマンドシーケンスを実行し、再度起動処理の最初から再開することを特徴とする請求項１乃至請求項４の何れか一項に記載のメモリ制御装置。
【請求項６】
前記特定のフェーズまで起動処理が進んだ以降に、例外ベクタを別領域に切り替えることで、エラー例外が発生したとしても、エラー例外処理として前記初期コマンドシーケンスは実行しないように制御することを特徴とする請求項５に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置に関する。
【背景技術】
【０００２】
近年のシリアルフラッシュＲＯＭ（以下、ＳＲＯＭと記す）には、読出しパフォーマンス向上のためのコマンドや動作モード（以下、ハイパフォーマンスモードと記す）が存在する。例えば、Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏ  コマンドのＰｅｒｆｏｒｍａｎｃｅ  Ｅｎｈａｎｃｅ  Ｍｏｄｅ（Ｃｏｎｔｉｎｕｏｕｓ  Ｒｅａｄ  Ｍｏｄｅと呼ぶＲＯＭメーカもある）がこれに該当する。
【０００３】
通常、ＳＲＯＭに対してリードを行う際には、コマンドを発行後にアドレスを発行することによって、所定のサイクル後にＳＲＯＭからデータが出力される。これに対して、Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｎｈａｎｃｅ  Ｍｏｄｅにおいては、コマンドの発行は初回のリード時のみでよく、以降はコマンドの発行を省略して、アドレスのみを発行することによって、リードが可能となる。ここで、Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｎｈａｎｃｅ  Ｍｏｄｅによってリードを行っている期間に、ＳＲＯＭに対して別のコマンドを発行する場合、Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｎｈａｎｃｅ  Ｍｏｄｅを一旦終了した後に、別のコマンドを発行する必要がある。終了させる方法は２通りあり、一つは、ＳＲＯＭに対してＰｅｒｆｏｒｍａｎｃｅ  Ｅｎｈａｎｃｅ  Ｍｏｄｅ  Ｒｅｓｅｔコマンド（Ｃｏｎｔｉｎｕｏｕｓ  Ｒｅａｄ  Ｍｏｄｅ  Ｒｅｓｅｔコマンドと呼ぶＲＯＭメーカもある）を発行する方法である。もう一つは、ＳＲＯＭ自体をリセットする方法で、ＳＲＯＭに対してＲｅｓｅｔ  Ｅｎａｂｌｅコマンド（Ｅｎａｂｌｅ  Ｒｅｓｅｔコマンドと呼ぶＲＯＭメーカもある）を発行後、Ｒｅｓｅｔコマンドを発行する方法である。
【０００４】
また、ＲＯＭのデータ読み出し時に使用されるアドレスは、通常時には３バイトのアドレス情報が使用される。しかしながら、近年のＲＯＭでは、アドレス３バイトではＲＯＭの容量に対してアドレスが不足するため、４バイトのアドレス指定を行わなければならないＲＯＭも存在する。このような場合には、ＳＲＯＭのコンフィグレーションレジスタを書き換えるコマンドを使用して、アドレスを３バイトモードから、４バイトモードに変更する手順が必要になる。また逆にアドレス４バイトモードから３バイトへ戻す場合にも同様に、ＲＯＭのレジスタを書き換えるか、Ｒｅｓｅｔコマンドを発行してやる必要がある。
【０００５】
ハイパフォーマンスモードについてさらに一例を挙げると、Ｑｕａｄ  ＳＰＩ  Ｍｏｄｅと呼ばれる動作モードをサポートするＲＯＭメーカがある。通常、ＳＲＯＭに対する「コマンド」発行は、１本のデータ線を使用して行う（以下、このモードを通常モードと記す）が、Ｑｕａｄ  ＳＰＩ  Ｍｏｄｅにおいては、４本のデータ線を使用して行う。このため、８ビットのコマンド発行に要するサイクル数は、通常モードにおいては８サイクルだが、Ｑｕａｄ  ＳＰＩ  Ｍｏｄｅにおいては２サイクルで済む。ただし、Ｑｕａｄ  ＳＰＩ  Ｍｏｄｅにおいては、通常モードによるコマンド発行はサポートされておらず、何らかの要因のために、通常モードでコマンド発行をする場合には、Ｑｕａｄ  ＳＰＩ  Ｍｏｄｅを一旦終了した後に、通常モードによるコマンド発行をする必要がある。終了する方法は２通りあり、一つは、ＳＲＯＭのコンフィグレーションレジスタの設定を変更し、動作モードを通常モード（Ｅｘｔｅｎｄｅｄ  ＳＰＩ  Ｍｏｄｅと呼ぶＲＯＭメーカもある）に変更する方法である。もう一つは、ＳＲＯＭ自体をリセットする方法で、前述と同様の方法である。
【０００６】
このようなプログラムが格納されているＲＯＭにアクセスするためのバスに障害が発生した場合に、異常を検知して、異常から復帰するための手段が開示されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−５０７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＳＲＯＭには各社、各種様々な物が存在し、リセット端子を持たないＳＲＯＭも存在する。ＳＲＯＭを使用する制御装置において、バスの障害等から復帰させるために制御装置自体がリセットされた場合には、ＳＲＯＭコントローラもリセットされ、初期状態の通常読み出しモードでＳＲＯＭからのリードを再開しようとするが、一方のＳＲＯＭにはリセット端子がないため、ハイパフォーマンスモードのまま、例えばＱｕａｄ  ＳＰＩ  Ｍｏｄｅのままである可能性がある。このような場合、ＳＲＯＭコントローラは通常モードで読みだそうとするため、モードの不一致により、ＳＲＯＭのデータが読み出せず、再起動処理が動作しないという不都合が生じる可能性がある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明に係るメモリ制御装置は、
ビット幅１の通常モード以外に、複数の通信ビット幅モードおよび、コマンド省略モードを有し、ソフトリセットコマンドに対応し、コマンド省略モードを抜けるための特定のビット列が定義された、シリアルフラッシュロムと、
前記シリアルフラッシュロム制御に対応したシリアルフラッシュロムコントローラを備えるメモリ制御装置であって、
シリアルフラッシュロムコントローラが、シリアルフラッシュロムの動作モードを把握できない状態になった場合には、上記特定のビット列と、ソフトリセットコマンドを、ビット幅の大きなモードから小さなモードへ切り替えながら順次シリアルフラッシュへ送信する初期コマンドシーケンスを実行する事で、シリアルフラッシュロムをビット幅１の通常モード状態に確定させ、シリアルフラッシュロムのデータを通常モードで読みだすように制御することを特徴とする。
【発明の効果】
【００１０】
本発明に係るメモリ制御装置によれば、状態不一致により読み出しができないという不都合を解消できる。
【図面の簡単な説明】
【００１１】
【図１】本発明のメモリ制御装置の構成を示す図である。
【図２】ＳＲＯＭ通信方式の一例を示す図である。
【図３】ＳＲＯＭ読み出しモード一覧を示す図である。
【図４】初期コマンドシーケンスとＳＲＯＭ状態遷移を示す図である。
【図５】初期コマンドシーケンスを示す図である。
【図６】起動処理を示す図である。
【図７】起動処理を示す図である。
【発明を実施するための形態】
【００１２】
以下に、添付図面を参照して本発明を実施するための形態について詳細に説明する。以下に説明する実施の形態は、本発明の実現するための一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。
【００１３】
（実施例１）
メモリ制御装置の構成の一部を図１に示す。
【００１４】
図１において、符号１０１はＣＰＵ、符号１０２はシリアルフラッシュロムコントローラ（ＳＲＯＭコントローラ）、符号１０３はシリアルフラッシュロム（ＳＲＯＭ）、符号１０４はバスである。符号１０３のＳＲＯＭには制御装置の制御プログラムが格納されており、符号１０１のＣＰＵが符号１０４のバス、符号１０２のＳＲＯＭコントローラを介して、前期制御プログラムを読み出し、実行する事で、制御装置が動作する。プログラムの読み出しは、ＣＰＵ１０１がバス１０４に対し、アドレス、読み出しサイズ等を含む制御情報とともにＲｅａｄトランザクションを発生させ、トランザクションを受けたＳＲＯＭコントローラ１０２がＳＲＯＭにリードコマンドを発行し、読み出しサイズ分ＳＲＯＭからプログラムを読み出し、バスを介してＣＰＵにプログラムを渡す。
【００１５】
符号１０５はリセット回路であり、ユーザの指示や、制御装置内の図示はしないウォッチドッグタイマから、タイマの満了を受けて、制御装置内にリセット信号を供給する機能を有する。図１の場合、符号１０１、１０２、１０４の各ブロックにリセット信号を供給するが、符号１０３のＳＲＯＭにはリセット端子がないため、リセット信号は供給しない。
【００１６】
符号１０６は内蔵ＲＯＭであり、ＳＲＯＭから読み出しを開始する前に、ＣＰＵが実行する処理プログラムが格納されている。本実施例では初期コマンドシーケンス処理が内蔵ＲＯＭに格納されているが、その処理の詳細については後述する。
【００１７】
符号１０２のＳＲＯＭコントローラと、符号１０３のＳＲＯＭの間は、ＳＲＯＭコントローラからＳＲＯＭ方向へのＣＳ（チップセレクト信号）、ＣＬＫ（クロック）信号、双方向のＤＩ／ＩＯ０、ＤＯ／ＩＯ１、ＷＰ＃／ＩＯ２、ＨＯＬＤ＃／ＩＯ３信号で接続される。／で記載している信号は、ＳＲＯＭコントローラおよびＳＲＯＭの動作モードによって機能が変わる信号である。信号の詳細については後述する。
【００１８】
ここで、ＳＲＯＭからのプログラム（データ）読み出し方法について、最も基本となる方法について説明する（図２（ａ））。この読み出し方法は、ＳＲＯＭであれば必ず対応しているＳｉｎｇｌｅ  ＳＰＩモードを使用した読み出し方法であり、制御装置が起動し、従来のＳＲＯＭコントローラが読み出し動作を開始する際の初期読み出し方法である。
【００１９】
ＳＲＯＭから読み出しを行う際には、まずＳＲＯＭコントローラはＣＳ信号（符号２０１）をＳＲＯＭに対してアサートし、クロック（符号２０２）を発生させ、このクロックに同期して１バイトのコマンド（符号２０３）と３バイトのアドレス（符号２０４）を、ＤＩ信号として３２クロックかけてＳＲＯＭに送信する。詳細は後述するが、データの読み出しにおいても様々なコマンドが存在し、また、コマンド自体が省略される場合もあるが、初期読み出しでは最も基本となるＲｅａｄ（０ｘ０３）コマンドが使用される。またアドレスについても、容量が大きいＲＯＭの場合には３バイトのアドレスでは不足するため、４バイトのアドレスが使用される場合もある。これらについては後述する。
【００２０】
Ｒｅａｄコマンドと３バイトアドレスを受けたＳＲＯＭは、要求のあったアドレスに対応するデータをクロック信号に同期してＤＯ信号として送出する（符号２０５）。読み出しデータのサイズはＣＳのアサート期間とクロックできまり、ＣＳアサートとクロックが続く限り、連続データ（アドレス増加方向）として信号ＤＯに送出される。ＣＳがデアサートされ、再度アサートされた際には、コマンドフェーズから開始されるが、逆に言うと、ＣＳのアサートが続く限り、クロックに同期して連続データを読み続ける事ができる（その間、クロック中断、再開でデータの送出を中断、再開させる事ができる）。
【００２１】
先にも述べたが、データの読み出しには、プロトコル、コマンド等様々な物があり、例えば本実施例のＳＲＯＭコントローラは図３のような読み出しモードに対応している。ただし、接続されるＳＲＯＭについては、各メーカ、各品種により、対応していないモードも存在する。これらのモードはデータの読み出しパフォーマンスを上げるためのもので、コマンド、アドレス、データの伝送に使用する信号数を２、４本（Ｄｕａｌ、  Ｑｕａｄ）と増やしたり、コマンドを省略する（ｅｎｈａｎｃｅｄ  ｍｏｄｅ）事で、オーバヘッドを小さくしたりする手段が取られている。
【００２２】
図３の中から、Ｑｕａｄ  ＳＰＩプロトコルの  Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏコマンドを使用した例について説明する（図２（ｂ）、（ｃ））。
【００２３】
まず、Ｑｕａｄ  ＳＰＩプロトコルを使用してデータを読み出すためには、ＳＲＯＭをＱｕａｄ  ＳＰＩモードに入れてやる必要がある。そのためにＳＲＯＭコントローラはＳＰＩプロトコルで、例えばＷｒｉｔｅ  Ｎｏｎｖｏｌａｔｉｌｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒコマンド（０ｘｂ１）を用いて、Ｎｏｎｖｏｌａｔｉｌｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒの特定ビットを書き換え、Ｑｕａｄ  ＳＰＩモードに変更する。具体的にはＳＲＯＭコントローラから、ＤＩ信号で、コマンド０ｘＢ１とライトレジスタ値（８ｂｉｔ）を送出する事で、レジスタを書き換える（Ｑｕａｄ  ＳＰＩモードへの変更方法はＳＲＯＭにも依存するため、必ずしも上記手段で変更するとは限らない）。
【００２４】
Ｑｕａｄ  ＳＰＩモードに遷移したＳＲＯＭコントローラはＣＳ信号（符号２１１）をＳＲＯＭに対してアサートし、クロック（符号２１２）を発生させ、このクロックに同期して１バイトのコマンド（Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏ、  ０ｘＥＢ）を４ｂｉｔ、２クロックで送出する（符号２０６、Ｓｉｎｇｌｅ  ＳＰＩモードにおける  ＤＩ，ＤＯ，ＷＰ＃，ＨＯＬＤ＃信号は、Ｑｕａｄ  ＳＰＩモードではＩＯ０，ＩＯ１，ＩＯ２，ＩＯ３信号として使用され、通信用に４ｂｉｔの信号が利用可能になる）。Ｑｕａｄ  Ｉ／Ｏコマンドでは、アドレスも４ｂｉｔ、６クロックで総出される（符号２０７）。
【００２５】
また本実施例におけるＳＲＯＭは、Ｆａｓｔ  Ｒｅａｄコマンドでは、高速なクロックを使用する事ができるが、アドレスフェーズと、データフェーズの間に、ダミーフェーズを挿入する必要がある。このダミーフェーズのクロック数はクロックの周波数やＳＲＯＭに依存する。またダミーフェーズのクロック数は、Ｆａｓｔ  Ｒｅａｄコマンドを開始する前にＳＲＯＭのレジスタに設定する必要があり、例えば前出のＷｒｉｔｅ  Ｎｏｎｖｏｌａｔｉｌｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒコマンドを用いて設定する（ダミークロック数の変更方法もＳＲＯＭに依存するため、必ずしも上記手段で変更するとは限らない）。
【００２６】
さらに本実施例におけるＳＲＯＭでは、上記ダミークロックの最初の２クロック（＝８ｂｉｔ）を使用して、Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｎｈａｎｃｅ  Ｉｎｄｉｃａｔｏｒを挿入する。このＩｎｄｉｃａｔｏｒは、次のトランザクション（次のＣＳアサート期間）がＥｎｈａｎｃｅｄモードで行われるかどうかを示す。Ｅｎｈａｎｃｅｄモードを示していた場合、次のトランザクションでは、コマンドフェーズが省略され、前のトランザクション（つまり、本トランザクション）で用いられたコマンドが繰り返されたものとして動作する。例えば図２（ｂ）において、ＩｎｄｉｃａｔｏｒにＥｎｈａｎｃｅｄモードを示すコードが入っていた場合、つぎのトランザクションである図２（ｃ）のでは、コマンドフェーズが省略され、アドレスフェーズから開始される（符号２１０）。Ｉｎｄｉｃａｔｏｒは、０ｘＡ５がＥｎｈａｎｃｅｄモードを示しており（ＳＲＯＭの仕様に依存するが、０ｘ００や０ｘＦＦなど全ｂｉｔが同じ値をＩｎｄｉｃａｔｏｒとして使用する事はない）、それ以外の場合は、非Ｅｎｈａｎｃｅｄモードと解釈される。
【００２７】
図２（ａ）、（ｂ）、（ｃ）を比較すると、（ａ）のＲｅａｄコマンド（Ｓｉｎｇｌｅ  ＳＰＩモード）では、４８クロックかけて２バイトのデータをリードし、（ｂ）、（ｃ）ではそれぞれ４８クロックかけて１７バイト、１８バイトリードしている事がわかる。このように、ＳＰＩモードやコマンドに依存して、データの読み出しパフォーマンスが大きく変わる事がわかる。
【００２８】
ここで、先に少し触れた４バイトアドレスについて説明する。
【００２９】
１６ＭＢ以上の容量のＳＲＯＭでは、３バイトのアドレスではＳＲＯＭ容量に対してアドレスが不足するため、そのようなＳＲＯＭは、４バイトアドレスモードに対応している。対応方法はＳＲＯＭに依存するが、たとえば、それぞれの読み出しコマンドに３バイト、４バイト用のコマンドが使用されるものもある（図３符号３０４、３０５）。例えば先にあげたＲｅａｄコマンドであれば、３バイトアドレスを使用する場合には、コマンド値０ｘ０３を使用し、４バイトアドレスを使用する場合には、０ｘ１３を使用する。当然ながら、４バイトアドレスモードの場合には、コマンドの後に続くアドレスは、３２クロックかけて４バイトのアドレスを送出する。同様にＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏ  コマンドであれば、３バイトアドレスを使用する場合には、０ｘＥＢ、４バイトアドレスを使用する場合には０ｘＥＣを使用する。
【００３０】
４バイトアドレスを使用する場合には、アドレスフェーズに必要なクロック数が増加するため、読み出しのためのオーバヘッドが増える事になり、読み出しパフォーマンスとしては不利である。例えば図２（ａ）のＲｅａｄコマンドを使用した場合には、さらに８クロックがアドレスフェーズに必要になるため、４８クロックかけて１バイトの読み出ししかできず、（ｂ）、（ｃ）ではそれぞれ２クロックのアドレスフェーズの増加があるため、それぞれ１６、１７バイトのリードとなる。
【００３１】
次に図３の読み出しモード一覧において、ＳＲＯＭの状態（ＣＳがデアサートされている間の待機状態）を、状態Ａ〜Ｇで分類する（符号３０２）。それぞれの状態の説明は以下の通りである。
状態Ａ：１ビット８クロックのコマンドを待機している状態
どのようなＳＲＯＭでもこの状態を有している（初期状態）
状態Ｂ：２ビット１２クロックまたは１６クロックのアドレスと、
それに続いて２ビット４クロックのＩｎｄｉｃａｔｏｒを待機している状態
（ｅｎｈａｎｃｅｄ）
状態Ｃ：４ビット６クロックまたは８クロックのアドレスと、
それに続いて４ビット２クロックのＩｎｄｉｃａｔｏｒを待機している状態
（ｅｎｈａｎｃｅｄ）
状態Ｄ：２ビット４クロックのコマンドを待機している状態、
Ｄｕａｌ  ＳＰＩモード
状態Ｅ：２ビット１２クロックまたは１６クロックのアドレスと、
それに続いて２ビット４クロックのＩｎｄｉｃａｔｏｒを待機している状態
（ｅｎｈａｎｃｅｄ）、  Ｄｕａｌ  ＳＰＩモード
状態Ｆ：４ビット２クロックのコマンドを待機している状態、
Ｑｕａｄ  ＳＰＩモード
状態Ｇ：４ビット６クロックまたは８クロックのアドレスと、
それに続いて４ビット２クロックのＩｎｄｉｃａｔｏｒを待機している状態
（ｅｎｈａｎｃｅｄ）、    Ｑｕａｄ  ＳＰＩモード
ここで、何らかの理由により制御装置がリセットされた場合には、リセット回路１０５が各ブロックにリセット信号を供給する。従来例の課題に述べたように、ＳＲＯＭ１０３はリセット端子を持たないため、状態はＡ〜Ｇのいずれかの状態を保持している。ＳＲＯＭコントローラ１０２がＳＲＯＭのデータをリードするためには、ＳＲＯＭが状態Ａ〜Ｇのいずれであるかを判別し、それに応じた読み出しを行う必要があるが、その状態の判別をする手段がない。
【００３２】
そこで、本発明の制御装置におけるＣＰＵ１０１は、リセット解除後のブート処理（図６）において、次のようなシーケンスでコマンドを発行する事で（初期コマンドシーケンス、符号Ｓ６０２）、ＳＲＯＭが状態Ａ〜Ｇのいずれの状態であっても、状態Ａにまで遷移させ、この状態から、最も単純なＲｅａｄコマンドを使用して、データの読み出しを行う。初期コマンドシーケンスを実行するためのプログラムは、先にも述べた通り、内蔵ＲＯＭ１０６に格納されている。
【００３３】
以下、初期コマンドシーケンス（図４（ａ））と、状態遷移の様子（図４（ｂ））について詳細を説明する。
【００３４】
リセットが解除されると、ＣＰＵ１０１は、内蔵ＲＯＭ１０６に格納されたプログラムにより、初期コマンドシーケンスを開始する（符号Ｓ４０１）。これは即ち、ＣＰＵのリセットベクタが、内蔵ＲＯＭに配置されている事を意味する。初期コマンドシーケンスでは、ＳＲＯＭに対し、（１）４ｂｉｔ幅で  ００００  を１０ｃｌｋ分送出する。この時、図３の表において、ＳＲＯＭが状態Ａだった場合には、１ｂｉｔ幅でコマンドを受信するが、８ｃｌｋ分の０を受信するため、コマンドとしては、０ｘ００＝ＮＯＰコマンドと解釈し、何も処理せず、状態Ａのままとなる（符号４１１）。ＳＲＯＭが状態Ｄ、状態Ｆだった場合には、それぞれ２ｂｉｔ幅、４ｂｉｔ幅でコマンドを受信するが、同様に０ｘ００＝ＮＯＰコマンドとして解釈するため、状態Ｄ、状態Ｆのままとなる（符号４１４、４１６）。ＳＲＯＭが状態Ｂ、Ｅだった場合には、２ｂｉｔ幅でアドレスを受信するが、１０ｃｌｋ  ２０ｂｉｔの受信となるため、アドレスとしては不足する。（アドレス３バイトモードでは２４ｂｉｔ、４バイトモードでは３２ｂｉｔ必要）そのため、ＮＯＰ扱いとなり、状態Ｂ、Ｅにとどまる（符号４１２、符号４１５）。ＳＲＯＭが状態Ｃ、Ｇだった場合には、４ｂｉｔ幅でアドレスを受信する。３バイトアドレスモード、４バイトアドレスモードだった場合、それぞれ、アドレス０ｘ００００００、０ｘ００００００００と認識される。続いてダミークロックフェーズに入るが、状態Ｃ、Ｇであるため、最初の１バイト分はＩｎｄｉｃａｔｏｒとして認識されるが、Ｉｎｄｉｃａｔｏｒは０ｘ００であるため、本トランザクション完了後には、Ｅｎｈａｎｃｅモードから通常モードに遷移する。すなわち、状態Ｃは状態Ａに遷移し（符号４１３）、状態Ｇは状態Ｆに遷移する事となる（符号４１７）。以上より、（１）実施後のＳＲＯＭの状態としては、状態Ａ、Ｂ、Ｄ、Ｅ、Ｆが存在する事になる。
【００３５】
次にＳＲＯＭコントローラから、（２）４ｂｉｔ幅でＲｅｓｅｔ  Ｅｎａｂｌｅコマンド（０ｘ６６）、次にＲｅｓｅｔコマンド（０ｘ９９）を、それぞれ２ｃｌｋずつで送出する（符号Ｓ４０２）。ＳＲＯＭが状態Ｆの場合には、４ｂｉｔでコマンドを受けられる状態のため、Ｒｅｓｅｔ  Ｅｎａｂｌｅ、Ｒｅｓｅｔコマンドをそれぞれ認識し、初期状態である状態Ａに遷移する（符号４１６）。その他の状態Ａ、Ｂ、Ｄ、Ｅでは、２ｃｌｋずつの受信では、コマンド、アドレスとしては認識できないため、ＮＯＰ扱いとなり、そのままの状態にとどまる（符号４１１、４１２、４１４、４１５）。以上より、（２）実施後のＳＲＯＭの状態としては、状態Ａ、Ｂ、Ｄ、Ｅが存在する事になる。
【００３６】
続いてＳＲＯＭコントローラから、（３）２ｂｉｔ幅で  ００  を２０ｃｌｋ分送出する（符号Ｓ４０３）。ＳＲＯＭが状態Ｂ、Ｅの場合には、Ｅｎｈａｎｃｅ状態のため、２ｂｉｔ幅で受信したデータを、アドレスおよびＩｎｄｉｃａｔｏｒとして認識する。Ｉｎｄｉｃａｔｏｒが０ｘ００であるため、本トランザクション完了後には、Ｅｎｈａｎｃｅモードから通常モードに遷移する。すなわち、状態Ｂは状態Ａに遷移し（符号４１２）、状態Ｅは状態Ｄに遷移する（符号４１４）。その他の状態Ａ、Ｄでは、受信データをＮＯＰコマンドと認識するため、状態は遷移しない（符号４１１、４１４）。以上より、（３）実施後のＳＲＯＭの状態としては、状態Ａ、Ｄが存在する事になる。
【００３７】
次にＳＲＯＭコントローラから、（４）２ｂｉｔ幅でＲｅｓｅｔ  Ｅｎａｂｌｅコマンド（０ｘ６６）、次にＲｅｓｅｔコマンド（０ｘ９９）を、それぞれ４ｃｌｋずつで送出する（符号Ｓ４０４）。ＳＲＯＭが状態Ｆの場合には、２ｂｉｔでコマンドを受けられる状態のため、Ｒｅｓｅｔ  Ｅｎａｂｌｅ、Ｒｅｓｅｔコマンドをそれぞれ認識し、初期状態である状態Ａに遷移する（符号４１４）。状態Ａでは、４ｃｌｋずつの受信では、コマンドとしては認識できないため（８ｃｌｋずつ必要）、ＮＯＰ扱いとなり状態Ａにとどまる。以上より、（４）実施後のＳＲＯＭの状態としては、状態Ａのみが存在する事になる。
【００３８】
初期コマンドシーケンスを完了したＣＰＵ１０１は、リセットリカバリ時間として２００ｍｓのウェイト後（符号Ｓ６０２）、ブートのためにＳＲＯＭのＲｅａｄを開始する（ブートプログラムの読み出し）。ＣＰＵ１０１からＲｅａｄトランザクションを受けたＳＲＯＭコントローラは、Ｓｉｎｇｌｅ  ＳＰＩモードで、Ｒｅａｄコマンドを発行する事で、ＳＲＯＭからプログラムやデータを読み出す事ができ、ＳＲＯＭに格納された起動処理を実行することでブート処理を継続する（符号Ｓ６０３以降）。
【００３９】
以上、説明したように、本実施形態のメモリ制御装置では、起動時にＣＰＵが内蔵ＲＯＭに格納されたプログラムによる初期コマンドシーケンスを実行する事で、どんな状態のＳＲＯＭであっても、通常モードに遷移させる事で、プログラムやデータの読み出しを行う事ができる。
【００４０】
（実施例２）
実施例１では図４（ａ）のような初期コマンドシーケンスを使用したが、初期コマンドシーケンスとしては、図５のようなシーケンスを用いても良い。実施例１と異なる部分は、（１）、（３）で送出する値が、ａｌｌ  ０から  ａｌｌ  １に変わっている。このように変更しても、コマンドとしては０ｘＦＦは未定義のコマンドであるため、０ｘ００と同様にＮＯＰとして解釈される。また、Ｉｎｄｉｃａｔｏｒとしても０ｘＦＦの場合、次のトランザクションではＥｎｈａｎｃｅｄモードから解除されるため、図４と同等の効果がある。
【００４１】
（実施例３）
実施例１、２においては、制御装置の起動時に必ず初期コマンドシーケンスを実行し、それに伴いリセットリカバリのためのウェイト時間が発生し、制御装置の起動が遅くなってしまう。これを回避するために、本実施例の制御装置では、以下のような起動処理を行う（図７）。
【００４２】
ブートを開始すると、ＣＰＵ１０１はリセットベクタの配置された内蔵ＲＯＭのプログラムにより、すぐにＳｉｎｇｌｅ  ＳＰＩモードでＳＲＯＭの読み出しを開始する（符号Ｓ７０２）。ＳＲＯＭの読み出しが正常に行えた場合には、ＳＲＯＭに格納されている起動処理が実行される（符号Ｓ７０３）。万が一、ＳＲＯＭのモードがＳｉｎｇｌｅ  ＳＰＩモードと一致しておらず、ＳＲＯＭに格納されたプログラムやデータが正しく読み出せなかった場合には、プログラムがデコードできないために発生する未定義命令例外や、無効なアドレスを参照したために発生するデータアボート例外等のエラー例外が発生する。この時、本実施例ではリセットベクタと同様にエラー例外ベクタについても内蔵ＲＯＭに配置されているため、内蔵ＲＯＭに格納されたエラー例外処理が実行される（符号Ｓ７０６）。
【００４３】
エラー例外処理では、実施例１、２で説明した初期コマンドシーケンスが実行され、ＳＲＯＭとＳＲＯＭコントローラのモードを初期状態で一致させ、読み出しが可能な状態に修正される。その後、リセットリカバリのためにウェイトが行われ（符号Ｓ７０８）、符号Ｓ７０２の処理に戻る。この時、ＳＲＯＭの読み出しはＳｉｎｇｌｅ  ＳＰＩモードで可能な状態になっているため、ふたたびエラー例外が発生する事はなく、符号Ｓ７０３以降の処理が実行される。
【００４４】
正常に起動処理が進んだ場合には、符号Ｓ７０４で、例外ベクタ領域をＲＯＭからＳＲＯＭへ移動させる処理が行われる（符号Ｓ７０４）。これにより、これ以降にエラー例外が発生した場合には、符号Ｓ７０６のエラー例外処理ではなく、符号Ｓ７０９のエラー例外処理が実行される。この時点では、ＳＲＯＭの読み出しは問題ないはずのため、例えばバスのエラー復帰処理等のエラー例外処理を実行する事になる（符号Ｓ７１０）。
【００４５】
このように本実施例においては、実施例１、２とは異なり、通常の起動処理においては初期コマンドおよび、それに伴うリセットリカバリのためのウェイトが発生しないため、起動が遅くなるという問題が発生しない。
【符号の説明】
【００４６】
１０１  ＣＰＵ、
１０２  シリアルフラッシュロムコントローラ（ＳＲＯＭコントローラ）、
１０３  シリアルフラッシュロム（ＳＲＯＭ）、
１０４  バス
【図１】
2019074820.tif 000003
【図２】
2019074820.tif 000004
【図３】
2019074820.tif 000005
【図４】
2019074820.tif 000006
【図５】
2019074820.tif 000007
【図６】
2019074820.tif 000008
【図７】
2019074820.tif 000009