(57)【要約】【課題】  装置を起動したときにメインプログラムを記憶するＲＯＭへの最初のアクセスから当該ＲＯＭの種類に対応したアクセスコマンド、パラメータでアクセスを行うことができるようにすることを目的とする。【解決手段】  本発明は、プログラムを記憶する第１の記憶手段と、レジスタに設定された値に基づいて、前記第１の記憶手段に記憶された前記プログラムを読み出す読み出し制御手段と、を有し、前記読み出し制御手段が読み出したプログラムを実行する情報処理装置において、前記情報処理装置の起動処理において前記レジスタに設定される値を記憶する第２の記憶手段と、前記読み出し制御手段が前記第１の記憶手段へのアクセスを開始する前に、前記第２の記憶手段に記憶された前記値を前記レジスタに設定する設定手段を有することを特徴とする。【選択図】  図４
2020086517.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを記憶する第１の記憶手段と、
レジスタに設定された値に基づいて、前記第１の記憶手段に記憶された前記プログラムを読み出す読み出し制御手段と、を有し、前記読み出し制御手段が読み出したプログラムを実行する情報処理装置において、
前記情報処理装置の起動処理において前記レジスタに設定される値を記憶する第２の記憶手段と、
前記読み出し制御手段が前記第１の記憶手段へのアクセスを開始する前に、前記第２の記憶手段に記憶された前記値を前記レジスタに設定する設定手段を有することを特徴とする情報処理装置。
【請求項２】
前記第２の記憶手段は、前記読み出し制御手段が前記第１の記憶手段からのデータの読み出しに使用することのできるコマンドのうち、前記データの読み出し開始までにかかる時間が最も短くなるコマンドを実行するための値が記憶されていることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２の記憶手段は、一度だけデータを書き込むことのできる記憶手段であることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記設定手段は、前記情報処理装置への電力供給が開始された後にリセット信号が入力され、前記リセット信号の解除に従って、前記第２の記憶手段から前記値を読み出し、前記読み出し制御手段の前記レジスタに設定することを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記設定手段は、前記リセット信号が解除された後、前記読み出し制御手段が初めて前記第１の記憶手段にアクセスする前に前記第２の記憶手段に記憶された値の設定を行うことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記第２の記憶手段には、前記第１の記憶手段で使用することのできるデータの読み出しコマンドのうち、データの読み出し速度が最も速いコマンドを使用するための前記値が記憶されていることを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記設定手段は、前記第２の記憶手段から読み出した前記値を前記レジスタに設定した後に、前記読み出し制御手段による前記第１の記憶手段へのアクセスを有効に設定することを特徴とする請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記第１の記憶手段は不揮発性の記憶手段であることを特徴とする請求項１乃至７のいずれか一項に記載の情報処理装置。
【請求項９】
前記読み出し制御手段は、ＳＰＩの規格に則って前記第１の記憶手段から前記プログラムを読み出すことを特徴とする請求項１乃至８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記第２の記憶手段は、前記情報処理装置の工場出荷前に前記値が記憶されることを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１１】
前記設定手段による前記読み出し制御手段のレジスタへの前記値の設定を制御するプログラムを記憶する第３の記憶手段をさらに有し、
前記設定手段は、前記第３の記憶手段から前記プログラムを読み出し実行することを特徴とする請求項１乃至１０のいずれか一項に記載の情報処理装置。
【請求項１２】
前記第１の記憶手段と前記読み出し制御手段は、第１のバスで接続され、
前記読み出し制御手段と前記設定手段は前記第１のバスと異なる第２のバスで接続されていることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記第２の記憶手段と前記第３の記憶手段は前記第２のバスに接続されていることを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記情報処理装置は、シートに画像を形成する画像形成手段を有することを特徴とする請求項１乃至１３のいずれか一項に記載の情報処理装置。
【請求項１５】
前記読み出し制御手段は、前記レジスタを含むことを特徴とする請求項１乃至１４のいずれか一項に記載の情報処理装置。
【請求項１６】
前記読み出し制御手段は、前記レジスタに設定された前記値に基づいて、前記第１の記憶手段に記憶された前記プログラムの読み出しに使われるコマンドと、前記プログラムの記憶されたアドレスを前記第１の記憶手段に出力することを特徴とする請求項１乃至１５のいずれか一項に記載の情報処理装置。
【請求項１７】
前記読み出し制御手段は、前記コマンドと前記アドレスを出力した後、前記レジスタに設定された前記値に基づく時間をあけた後、前記第１の記憶手段から前記プログラムを取得することを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記レジスタに設定される値は、前記読み出し制御手段が前記第１の記憶手段と何本の信号線で通信をするかを示す値を含むことを特徴とする請求項１乃至１７のいずれか一項に記載の情報処理装置。
【請求項１９】
プログラムを記憶する第１の記憶手段と、
レジスタに格納された値に基づいて、前記第１の記憶手段に記憶された前記プログラムを読み出す読み出し制御手段と、を有し、前記読み出し制御手段が読み出したプログラムを実行する情報処理装置の制御方法において、
前記情報処理装置への電力供給が開始された後、前記読み出し制御手段の前記レジスタに設定される値を記憶する第２の記憶手段から前記値を取得する取得工程と、
前記取得工程において取得された前記値を前記読み出し制御手段のレジスタに設定する設定工程と、
前記設定工程において設定された前記レジスタの値に従って、前記読み出し制御手段が前記第１の記憶手段に記憶された前記プログラムを読み出す読み出し工程と、を有することを特徴とする情報処理装置の制御方法。
【請求項２０】
請求項１９に記載の情報処理装置の制御方法をコンピュータが実行するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びその制御方法とプログラムに関するものである。
【背景技術】
【０００２】
情報処理装置では、起動時にブートプログラムを実行し、起動後に使用するメインプログラムをＲＡＭに展開する構成が知られている。メインプログラムが格納されるＲＯＭは、バスと接続するためにＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）等のインタフェースを備える。ＣＰＵは、ＳＰＩに対応したメモリコントローラを介してＲＯＭにアクセスし、ＲＯＭからメインプログラムを読み出してＲＡＭ等のメモリに展開する。ＲＯＭからメインプログラムを読み出す際、ＣＰＵはアクセスコマンド、パラメータに対応する値を設定されたメモリコントローラに対して動作開始を指示する。ＣＰＵから動作開始を指示されたメモリコントローラは、ＣＰＵにより設定された値に従ってＲＯＭからメインプログラムを読み出す。そして、メモリコントローラは読み出したプログラムを、ＲＡＭに展開する。
【０００３】
ＲＯＭからプログラムを読み出す際に使用することのできるアクセスコマンドやＲＯＭへのアクセスに使用するパラメータは複数あり、接続されるＲＯＭの種類によって使用することできるアクセスコマンド、パラメータが異なる。ＲＯＭからデータ読み出す際には、接続されているＲＯＭで使用することのできるリードコマンドのなかでも、読み出し速度の速いコマンドを使うことでデータの読み出しに係る時間を短くすることができる。しかし、情報処理装置の起動時はいずれのアクセスコマンド、パラメータに対応するＲＯＭが接続されているかがわからない。そのため、情報処理装置はＲＯＭからメインプログラムを読み出す際に、接続されているＲＯＭに最適なアクセスコマンドやパラメータを使用することができず、汎用的なアクセスコマンド、パラメータを使用する。結果、接続されているＲＯＭが汎用的なアクセスコマンドよりも速いデータ転送速度でデータを転送することができたとしても、汎用的なアクセスコマンドに合わせた転送速度でしかメインプログラムの読み出しを行うことができない。
【０００４】
特許文献１に記載の装置はＲＯＭにアクセスコマンドの設定を行うプログラムとブートプログラムの両方を記憶している。そして、装置は、ブートプログラムの読み出しを開始する前にアクセスコマンドの設定を行うプログラムを読み出し、アクセスコマンドの設定を行うプログラムを実行する。そして、装置は当該プログラムにより設定されたアクセスコマンドを使ってブートプログラムの読み出しを行う。このようにすることで、ブートプログラムの読み出しを、ブートプログラムを記憶するＲＯＭの種類に合わせたコマンドで行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開番号ＷＯ２０１７／０２２３００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１においてブートプログラムの読み出しに使用されるアクセスコマンドを設定するプログラムはメモリコントローラを介してアクセスされるメモリに記憶されている。引用文献１に記載の装置は、メモリコントローラに上記のプログラムの読み出しに使うアクセスコマンド、パラメータの設定をし、メモリコントローラを動作させてプログラムを読み出す。
【０００７】
さらに、引用文献１において、アクセスコマンドの設定を行うプログラムは接続されているＲＯＭの種類に関わらず使用することのできる、データ転送速度の遅い汎用的なアクセスコマンドとパラメータを使って読み出される。そのため、接続されているＲＯＭの対応できるデータ転送速度のうち最も早いデータ転送速度よりも遅いデータ転送速度で、メモリコントローラが上記のプログラムの読み出しを行う可能性がある。
【０００８】
本願発明は上記の課題を鑑み、メモリコントローラを介したメモリへのアクセスを開始する前に、メモリコントローラに対して、接続されるメモリの種類に適したアクセスコマンド、パラメータの設定を行うことを目的とする。
【課題を解決するための手段】
【０００９】
本願請求項１に記載の情報処理装置は、プログラムを記憶する第１の記憶手段と、レジスタに設定された値に基づいて、前記第１の記憶手段に記憶された前記プログラムを読み出す読み出し制御手段と、を有し、前記読み出し制御手段が読み出したプログラムを実行する情報処理装置において、前記情報処理装置の起動処理において、前記レジスタに設定される値を記憶する第２の記憶手段と、前記読み出し制御手段が前記第１の記憶手段へのアクセスを開始する前に、前記第２の記憶手段に記憶された前記値を前記レジスタに設定する設定手段を有することを特徴とする。
【発明の効果】
【００１０】
本願請求項１に記載の情報処理装置は、メモリコントローラを介したメモリへのアクセスを開始する前に、メモリコントローラに対して、接続されるメモリの種類に適したアクセスコマンド、パラメータの設定を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本実施例における情報処理装置の一例である画像形成装置の構成を示す図である。
【図２】本実施例のＳＰＩ  ＲＯＭにアクセスする際のタイミングチャートである。
【図３】本実施例のＯＴＰ  ＲＯＭに格納されるアクセスコマンド、パラメータとＳＰＩコントローラのレジスタ設定の処理を示す模式図である。
【図４】本実施例における画像形成装置のブートシーケンスを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。以下の実施例では、情報処理装置として画像形成装置（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら適用範囲は画像形成装置に限定はせず、コンピュータやタブレット端末等の情報処理装置であってもよい。
【００１３】
＜画像形成装置＞
図１は、本実施例における半導体集積回路を備える画像形成装置１００の構成を示すブロック図である。画像形成装置１００は、画像の入出力と送受信および各種の画像処理を行う。画像形成装置１００は、各種機能モジュールを内蔵した半導体集積回路３００、ＳＰＩ  ＲＯＭ４１０、ＤＲＡＭ４１１、操作部１０２、スキャナ１０３、およびプリンタ１０４を備える。ユーザインタフェースである操作部１０２、画像入力デバイスであるスキャナ１０３、およびシートに画像を形成する画像形成デバイスであるプリンタ１０４は、それぞれ半導体集積回路３００に接続され、後述するＣＰＵ３０１からの指示によって制御される。さらに、画像形成装置１００は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０６に接続される。ＰＣ１０５は、一般的なコンピュータであり、ＬＡＮ１０６を介して画像形成装置１００と通信する。ユーザがＰＣ１０５上で動作するアプリケーションから印刷の指示を行うことにより、ＰＣ１０５から画像形成装置１００に対して印刷ジョブが送信される。画像形成装置１００は、ＬＡＮ１０６を介して、外部機器との間で画像情報やデバイス情報、およびファイルなどの入出力を行う。
【００１４】
続いて、半導体集積回路３００内部のデジタル論理回路によって構成される各種機能モジュール、および半導体集積回路３００に接続されるデバイスについて詳細に説明する。半導体集積回路３００は、主制御部であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１を備える。ＣＰＵ３０１は、システムバス３０６を介して、システムバス３０６上に接続される各種機能モジュールと接続される。
【００１５】
マスクＲＯＭ３１５は、半導体集積回路３００を製造するマスクデータの一部の回路として実装される変更不可のブートプログラムを記憶するＲＯＭである。画像形成装置１００が起動すると、ＣＰＵ３０１はマスクＲＯＭ３１５からシステムブートプログラムを読み出し、起動処理を開始する。
【００１６】
ＯＴＰ  ＲＯＭ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）３１６は、一度だけデータが書き込み可能なＲＯＭである。本実施例において、ＯＴＰ  ＲＯＭ３１６には、後述するＳＰＩコントローラ３０３に設定されるＳＰＩ  ＲＯＭ４１０に対応した最適なアクセスコマンド、パラメータが書き込まれる。なお、ＳＰＩ  ＲＯＭ４１０に対応したアクセスコマンド、パラメータの書き込みは、画像形成装置１００の工場出荷前に行われる。
【００１７】
ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３１７は、揮発性のメモリであり、一時的な小容量のワークメモリとして使用される。ＳＰＩ  ＲＯＭ４１０は、Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅの規格に対応し、システム動作のためのメインプログラムなどが格納される不揮発性のフラッシュメモリである。ＳＰＩ  ＲＯＭ４１０は、ＳＰＩコントローラ３０３を介して、半導体集積回路３００と接続される。
【００１８】
ＳＰＩコントローラ３０３はＳｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅの規格に則って動作するメモリコントローラである。ＳＰＩコントローラ３０３は、コマンドやアドレス、リードアクセス時のダミーサイクル数などＳＰＩ  ＲＯＭ４１０へのアクセスに使用する値を記憶するレジスタを有する。ＣＰＵ３０１はＳＰＩ  ＲＯＭ４１０にアクセスに使用するコマンド、アドレスやダミーサイクル数等パラメータを上述のレジスタに設定する。ＳＰＩコントローラ３０３は、レジスタに設定された値を参照し、ＳＰＩバスプロトコルに則って、ＳＰＩ  ＲＯＭ４１０に対するデータの読み出し、書き込みを行う。ＳＰＩ  ＲＯＭ４１０とＣＰＵ３０１は異なるプロトコルのバスに接続されており、ＣＰＵ３０１はＳＰＩコントローラ３０３に対して、ＳＰＩ  ＲＯＭ４１０へのアクセス指示を出力する。ＳＰＩコントローラ３０３はＣＰＵ３０１からＳＰＩ  ＲＯＭ４１０へのアクセス指示を受付け、設定されたレジスタの値に従って、当該アクセス指示をＳＰＩバス形式に変換してＳＰＩ  ＲＯＭ４１０に対して出力する。
【００１９】
ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４１１は、ＣＰＵ３０１のワークメモリとしての作業領域を提供するための随時読み書き可能な記憶領域である。また、ＤＲＡＭ４１１は、画像形成装置１００の一時的な設定値や実行するジョブの情報などを記憶するためなどに使用される。ＤＲＡＭ  Ｉ／Ｆ３０４は、ＤＲＡＭ４１１と接続するインタフェースであり、ＤＲＡＭ４１１を制御するためのメモリコントローラを備え、ＤＲＡＭ４１１に対するデータの読み書きを行う。
【００２０】
ＬＡＮ  Ｉ／Ｆ３０５は、ＬＡＮ１０６と接続するためのインタフェースであり、ＬＡＮ１０６に対して情報の入出力を行う。操作部Ｉ／Ｆ３０２は、操作部１０２との間で入出力を行うためのインタフェースである。操作部Ｉ／Ｆ３０２は、操作部１０２に対して表示すべき画像データを出力し、また、ユーザが操作部１０２を介して入力した情報を、ＣＰＵ３０１に伝送するために使用される。イメージバスＩ／Ｆ３０７は、システムバス３０６と画像データを高速に転送するための画像バス３０８とを接続するインタフェースであり、データ構造を変換するバスブリッジとして動作する。画像バス３０８には、プリンタ画像処理部３０９、プリンタＩ／Ｆ３１３、ＲＩＰ３１０、スキャナ画像処理部３１１、スキャナＩ／Ｆ３１４、および画像編集部３１２が接続される。プリンタ画像処理部３０９は、プリンタ１０４に出力するプリント出力画像データに対して、色変換、フィルタ処理、解像度変換などの処理を行う。プリンタＩ／Ｆ３１３は、プリンタ１０４と半導体集積回路３００とを接続するインタフェースであり、画像データの同期系／非同期系の変換を行う。ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）３１０は、例えばＰＣ１０５が印刷ジョブとして送信したＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データをビットマップイメージに展開するモジュールである。スキャナＩ／Ｆ３１４は、スキャナ１０３と半導体集積回路３００とを接続するインタフェースであり、スキャンした画像データ形式の変換などを行う。スキャナ画像処理部３１１は、スキャナ１０３から読み出した入力画像データに対して、補正、加工、編集などの処理を行う。画像編集部３１２は、画像データの回転など画像データに対する編集処理を行う。
【００２１】
＜ＳＰＩのＲＯＭアクセス＞
ＳＰＩのバスプロトコルには複数のアクセスコマンドがあり、半導体集積回路３００に接続されるＳＰＩ  ＲＯＭ４１０の種類によってＳＰＩ  ＲＯＭ４１０が対応できるアクセスコマンドが異なる。そのため、半導体集積回路３００に接続されているＳＰＩ  ＲＯＭ４１０がサポートするアクセスコマンドでＳＰＩ  ＲＯＭ４１０にアクセスする必要がある。本実施例では、図２（Ａ）〜（Ｃ）を用い、一例としてＳＰＩ  ＲＯＭ４１０に記憶されてデータを読み出す際に用いられるリードコマンドとして、３種類の異なるコマンドを説明する。図２（Ａ）〜（Ｃ）では、データリード時のアクセス方法をＳＰＩの１本のクロック端子（ＣＬＫ）と４本のデータ端子（ＩＯ０、ＩＯ１、ＩＯ２、ＩＯ３）が示す波形のタイミングチャートを用いて説明する。
【００２２】
図２（Ａ）は、Ｆａｓｔ  Ｒｅａｄコマンドによるデータリード時のタイミングチャートである。Ｆａｓｔ  ＲｅａｄコマンドはＳＰＩ  ＲＯＭ４１０からデータを読み出すときの基本的なコマンドであり、安価なＲＯＭデバイスでもサポートされる汎用的なＲｅａｄコマンドである。Ｆａｓｔ  ＲｅａｄコマンドはＳＰＩコントローラ３０３によるコマンドやアドレスの出力、ＳＰＩ  ＲＯＭ４１０によるリードデータの転送が１本の信号線で行われるシリアル転送である。Ｆａｓｔ  Ｒｅａｄコマンドは汎用的なコマンドである一方、複数本の信号線を用いる他のＲｅａｄコマンドと比較してリードデータの転送速度が遅い。
【００２３】
半導体集積回路３００のＳＰＩコントローラ３０３は、８クロックサイクルかけて、リードコマンドとしてＦａｓｔ  Ｒｅａｄコマンドを示す０Ｂ（ｈｅｘ）をＳＰＩ  ＲＯＭ４１０に送出する。次に、ＳＰＩコントローラ３０３は、２４クロックサイクルかけて、ＳＰＩ  ＲＯＭ４１０のアクセス先のアドレスを示す２４ｂｉｔのＡｄｄｒｅｓｓをＳＰＩ  ＲＯＭ４１０に送出する。そして、ＳＰＩコントローラ３０３は、８クロックサイクルかけて、ＳＰＩ  ＲＯＭ４１０が必要とするＤｕｍｍｙサイクルを挿入する。Ｄａｍｍｙサイクルは、ＳＰＩ  ＲＯＭ４１０が指定されたアドレスからデータを読み出すまでに必要な時間である。
【００２４】
ＳＰＩ  ＲＯＭ４１０は、ＳＰＩコントローラ３０３からＤａｍｍｙサイクルまでの受信を完了すると、リードデータを半導体集積回路３００のＳＰＩコントローラ３０３へ送出する。
【００２５】
続いて、図２（Ｂ）は、Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドによるデータリード時のタイミングチャートである。Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯは１本の信号線でコマンドを送信し、４本の信号線を用いてアドレスとデータを送受信するコマンドである。半導体集積回路３００のＳＰＩコントローラ３０３は、８クロックサイクルかけて、リードコマンドとしてＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドを示すＥＢ（ｈｅｘ）をＳＰＩ  ＲＯＭ４１０に送出する。Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドにおいては、コマンドは１本の信号線で送出される。コマンドの送出の後、ＳＰＩコントローラ３０３は、６クロックサイクルかけて、ＳＰＩ  ＲＯＭ４１０のアクセス先のアドレスを示す２４ｂｉｔのＡｄｄｒｅｓｓをＳＰＩ  ＲＯＭ４１０に送出する。アドレスはＩＯ０〜ＩＯ３の４本の信号線で送出される。
【００２６】
Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドでは、次のデータリードにおいて、Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドの発行を省略し、そのコマンド発行のオーバーヘッドを削減することができるＣｏｎｔｉｎｕａｓ  Ｒｅａｄ  Ｍｏｄｅが設定できる。そこで、２クロックサイクルかけて、Ｃｏｎｔｉｎｕａｓ  Ｒｅａｄ  Ｍｏｄｅの設定をＳＰＩ  ＲＯＭ４１０に送出する。図２（Ｂ）では１４クロック目と１５クロック目に送出されているデータがＣｏｎｔｉｎｕｏｕｓ  Ｒｅａｄ  Ｍｏｄｅの設定を行うためのデータである。
【００２７】
最後に、ＳＰＩコントローラ３０３は、４クロックサイクルかけて、ＳＰＩ  ＲＯＭ４１０が必要なＤｕｍｍｙサイクルを送出する。ＳＰＩ  ＲＯＭ４１０は、Ｄａｍｍｙサイクルまでコマンドを受信すると、ＳＰＩコントローラ３０３へのリードデータの送出を開始する。
【００２８】
図２（Ｃ）は、ＱＰＩモードのＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドによるデータリード時のタイミングチャートである。ＱＰＩモードのＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドでは、コマンド、アドレス、データの全てを４本の信号線で送受信する。図２（Ｂ）のＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドとの違いは４端子を用い、Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドを示すＥＢ（ｈｅｘ）を２サイクルでＳＰＩ  ＲＯＭ４１０に送出する点である。それ以降のシーケンス、タイミングチャートは図２（Ｂ）と同じであるため説明は割愛する。
【００２９】
ＱＰＩモードのＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  ＩＯコマンドをサポートするＳＰＩ  ＲＯＭ４１０を用いる場合、当該コマンドを使用することでより短い時間でＳＰＩ  ＲＯＭ４１０に格納されたデータを読みだすことができる。
【００３０】
図２（Ａ）〜（Ｃ）に示すように、コマンド毎に、ＳＰＩ  ＲＯＭ４１０へのアクセスに必要なクロックサイクル、すなわち、ＳＰＩ  ＲＯＭ４１０からのデータの読み出しに必要な時間が変わる。３種類のコマンドのうちいずれのコマンドを使用することができるかはＳＰＩ  ＲＯＭ４１０の種類によって異なる。半導体集積回路３００に接続されるＳＰＩ  ＲＯＭ４１０の種類に応じて、最適なＲｅａｄコマンドを選択し、選択されたＲｅａｄコマンドでＳＰＩ  ＲＯＭ４１０に格納されたデータの読み出しを行う。このようにすることで、画像形成装置１００に取り付けられているＳＰＩ  ＲＯＭ４１０に適したアクセススピードでＳＰＩ  ＲＯＭ４１０に記憶されたメインプログラムの読み出しを行うことができる。
【００３１】
次に図３を用いてＯＴＰ  ＲＯＭ３１６に格納されているデータと、ＳＰＩコントローラ３０３のレジスタに設定される値の対応を説明する。
【００３２】
本実施例においてＯＴＰ  ＲＯＭ３１６には、ＳＰＩコントローラ３０３が半導体集積回路３００に接続されているＳＰＩ  ＲＯＭ４１０から初めてメインプログラムを読み出すときに使用するアクセスコマンド、パラメータが記憶されている。なお、ＯＴＰ  ＲＯＭ３１６へのアクセスコマンド、パラメータの書き込みは画像形成装置１００の工場出荷前に行われる。
【００３３】
ＯＴＰ  ＲＯＭ３１６はＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１〜＃８の８つの記憶領域を有し、それぞれの領域に異なるアドレスが割り振られている。ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１〜＃８のそれぞれにはＳＰＩコントローラ３０３に設定するアクセスコマンドや、ＳＰＩ  ＲＯＭ４１０へのアクセスに必要なパラメータが格納されている。ＣＰＵ３０１はそれぞれのＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥに対応するアドレスにアクセスし、各ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥに格納されているコマンドやアドレス、リード時のダミーサイクル等のパラメータに対応する値を取得する。そして、ＣＰＵ３０１は、ＯＴＰ  ＲＯＭ３１６から取得した値をＳＰＩコントローラ３０３のレジスタに設定する。
【００３４】
まず、図３（Ａ）を用いて半導体集積回路３００に接続されるＳＰＩ  ＲＯＭ４１０が図２に記載の３つのリードコマンドのうち、Ｆａｓｔ  Ｒｅａｄにのみ対応している場合を例に説明する。図３（Ａ）では、ＣＰＵ３０１がＯＴＰ  ＲＯＭ３１６のそれぞれのＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥにアクセスしたときにどのような値がＳＰＩコントローラ３０３のレジスタに設定されるかの対応を示した図である。図３（Ａ）の左側のＯＴＰ  ＲＯＭには、ＯＴＰ  ＲＯＭ３１６のそれぞれのＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥにどのようなパラメータが記憶されているかを示している。パラメータとは、たとえば、コマンドの種類、何本の信号線で信号を送信するかを示す値、ＳＰＩ  ＲＯＭ４１０のアクセス先に対応するアドレス、データリード時のダミーサイクル数、処理の完了を示すエンドコマンドに対応する値等である。図３（Ａ）の右側のＳＰＩコントローラは、ＣＰＵ３０１がＯＴＰ  ＲＯＭ３１６の各ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥに記憶された値を読み出したときに、どのような値がＳＰＩコントローラ３０３のレジスタに書き込まれるかを示している。
【００３５】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１には、Ｆａｓｔ  Ｒｅａｄのコマンドに対応する値、および、当該コマンドを１本の信号線でシリアル転送することを示す値が記憶されている。ＣＰＵ３０１はＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１からＦａｓｒ  Ｒｅａｄコマンドに対応する値と、シリアル転送を示す値を読み出し、ＳＰＩコントローラ３０３のコマンドを設定するレジスタに読み出した値を設定する。
【００３６】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃２〜＃４には、ＳＰＩコントローラ３０３がＳＰＩ  ＲＯＭ４１０にアクセスするときに使用するアドレスに対応する値と当該アドレスをシリアル転送することを示す値が記憶されている。ＣＰＵ３０１はコマンドの設定後、ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃２〜＃４に順次アクセスし、ＳＰＩコントローラ３０３のレジスタに、ＯＴＰ  ＲＯＭ３１６から読み出したアドレスに対応する値とシリアル転送をすることを示す値を設定する。
【００３７】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃５には、ＳＰＩコントローラ３０３がＳＰＩ  ＲＯＭ４１０に対するアドレスコマンドの出力から、実際にリードデータを受け取るまでのダミーサイクルの数が記憶されている。ＣＰＵ３０１はアドレスの設定を完了した後、ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃５にアクセスし、ＳＰＩコントローラ３０３のダミーサイクルの数を設定するレジスタに読み出したダミーサイクルの数を設定する。
【００３８】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃６には、ＳＰＩコントローラ３０３の処理が完了したことを示すＥＮＤコマンドに対応する値が記憶されている。ＣＰＵ３０１はＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃６にアクセスし、ＳＰＩコントローラ３０３の処理が完了したことを示すＥＮＤコマンドに対応する値をＳＰＩコントローラ３０３のレジスタに設定する。
【００３９】
ＳＰＩ  ＲＯＭ４１０へのリードアクセスに使用するコマンドがＦａｓｔ  Ｒｅａｄコマンドである場合、ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃７、＃８には値は記憶されていない。ブートプログラムの実行時、ＣＰＵ３０１はＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃７、＃８にアクセスし、ＮＵＬＬを取得し、ＳＰＩコントローラ３０３のレジスタに取得したＮＵＬＬを設定する。ＳＰＩコントローラ３０３はレジスタに設定された値に従って動作する。ＳＰＩコントローラ３０３は、ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃６から読み出した値が設定されたレジスタに対応する処理をすることでＳＰＩ  ＲＯＭ４１０へリードアクセスのために必要な処理が完了したと判定する。そのため、ＳＰＩコントローラ３０３は、処理の完了を示す情報が設定されているＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ以降のレジスタの読み出しを行わずにＳＰＩ  ＲＯＭ４１０へのアクセス処理を終了する。
【００４０】
ＣＰＵ３０１はＳＰＩコントローラ３０３のレジスタの設定を終えたのち、ＳＰＩコントローラ３０３に対して、ＳＰＩ  ＲＯＭ４１０へのアクセス開始指示を行う。ＳＰＩコントローラ３０３は図３（Ａ）の右側に記載のレジスタに設定された値を上から読み出しながら、読み出した値に従って動作し、ＳＰＩ  ＲＯＭ４１０からメインプログラムを読み出す。
【００４１】
図３（Ｂ）は、半導体集積回路３００に接続されるＳＰＩ  ＲＯＭ４１０が図２に記載の３つのリードコマンドのうち、Ｆａｓｔ  ＲｅａｄとＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏに対応している場合の例である。半導体集積回路３００に接続されるＳＰＩ  ＲＯＭ４１０が複数のリードコマンドに対応している場合、ＯＴＰ  ＲＯＭ３１６には、データの読み出しまでに必要な時間が最も短いアクセスコマンドと当該コマンドに必要なパラメータが記憶される。データの読み出しまでに必要な時間が最も短いコマンドとは、すなわち、データの読み出しまでに必要なクロック数が少ないコマンドである。
【００４２】
ＯＴＰ  ＲＯＭ３１６にＦａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏコマンドの情報を格納する場合、それぞれのＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥには以下の内容が格納される。
【００４３】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１には、Ｆａｓｔ  Ｒｅａｄ  Ｑｕａｄ  Ｉ／Ｏを示すコマンドに対応する値と、当該コマンドがシリアル転送されることを示す値が記憶される。
【００４４】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃２〜＃４にはＦａｓｔ  Ｒｅａｄと同様アドレスに対応する値と、当該アドレスを４本の信号線で転送するＱｕａｄ  Ａｃｃｅｓｓを示す値が記憶される。
【００４５】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃５には、バーストアクセスすることを示すＣｏｎｔｉｎｕｏｕｓ  Ｒｅａｄの実行を示す値が格納されている。
【００４６】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃６、＃７には、ダミーサイクルが何サイクルあるかを示す値、とＱｕａｄ  Ａｃｃｅｓｓを示す値が記憶されている。
【００４７】
ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃８には、ＳＰＩコントローラ３０３への設定完了を示すコマンドに対応する値が格納されている。
【００４８】
上記のように、ＯＴＰ  ＲＯＭ３１６には、画像形成装置１００の起動後、ＳＰＩコントローラ３０３が初めてＳＰＩ  ＲＯＭ４１０にアクセスし、メインプログラムを読み出すときに使用するコマンドや必要なパラメータが格納される。ＣＰＵ３０１がマスクＲＯＭ３１５に格納されているブートプログラムを実行し、ＯＴＰ  ＲＯＭ３１６にアクセスし、ＯＴＰ  ＲＯＭ３１６に格納されたデータをＳＰＩコントローラ３０３に設定する。これにより、半導体集積回路３００に接続されているＳＰＩ  ＲＯＭ４１０に対応するリードコマンド、アドレス、ダミーサイクル数等のパラメータがＳＰＩコントローラ３０３の各レジスタに設定される。
【００４９】
＜フローチャート＞
図４は、本実施例における半導体集積回路３００上のＣＰＵ３０１によって、画像形成装置１００のシステムがブートするブートシーケンスを示すフローチャートの一例である。図４（Ａ）はＣＰＵ３０１が実行する処理を示すフローチャートである。一方で、図４（Ｂ）はＳＰＩコントローラ３０３がＣＰＵ３０１からの指示で実行する処理を示すフローチャートである。
【００５０】
先に、図４（Ａ）を用いてＣＰＵ３０１の実行する処理を説明する。
【００５１】
ＣＰＵ３０１は図示しない電源部からの電源とともに入力されるリセット信号が解除されたことを検知する（Ｓ５０１）。画像形成装置１００の半導体集積回路３００には、電源供給が開始されるとともにリセット信号が入力される。リセット信号は電源供給が開始された後、所定のタイミングで解除される。リセット信号が解除されると半導体集積回路３００上のＣＰＵ３０１が動作を開始する。
【００５２】
ＣＰＵ３０１は、ブートプログラムが格納されるマスクＲＯＭ３１５を指すアドレスにアクセスしてブートプログラムの読み出しを開始する（Ｓ５０２）。以降、ＣＰＵ３０１は、マスクＲＯＭ３１５から読み出したブートプログラムに従って動作する。本実施例においてブートプログラムは、以下のＳ５０３〜Ｓ５０９に記載の処理を示すプログラムである。
【００５３】
ＣＰＵ３０１は、ブートプログラムで指定されるＯＴＰ  ＲＯＭ３１６のＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１のアドレスにアクセスし、ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１に記憶されている値を読み出す（Ｓ５０３）。
【００５４】
ＣＰＵ３０１は、ＯＴＰ  ＲＯＭ３１６から読み出された値をＳＰＩコントローラ３０３の該当するレジスタに設定する（Ｓ５０４）。
【００５５】
ＣＰＵ３０１は、ＯＴＰ  ＲＯＭ３１６に未処理のＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥがあるか否かを判定する（Ｓ５０５）。ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１〜＃８の全てのＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥへのアクセスが完了している場合、ＣＰＵ３０１はＳ５０６へ処理を進める。ＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１〜＃８のうち、アクセスしていないＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥがある場合、ＣＰＵ３０１はＳ５０３に処理を戻し、アクセスしていないＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥへアクセスする。本実施例において、ＣＰＵ３０１はＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥ＃１〜＃８に順番にアクセスし、読み出した値を対応するＳＰＩコントローラ３０３のレジスタに設定する。
【００５６】
全てのＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥにアクセスして値を読み出し、ＳＰＩコントローラ３０３のレジスタへの設定が完了した後、ＣＰＵ３０１はＳＰＩコントローラ３０３に動作の有効化を指示する（Ｓ５０６）。ＳＰＩコントローラ３０３は、動作が有効化されると、レジスタに設定された値に基づいてＳＰＩ  ＲＯＭ４１０へのアクセスを行うことができるようになる。
【００５７】
ＣＰＵ３０１はＳＰＩコントローラ３０３を有効化した後、ＳＰＩ  ＲＯＭ４１０に格納されるメインプログラムを読み出すために、ＣＰＵ３０１はＳＰＩコントローラ３０３にアクセス開始指示をする（Ｓ５０７）。
【００５８】
ＣＰＵ３０１は、ＳＰＩコントローラ３０３を介して読み出されたメインプログラムを取得する（Ｓ５０８）。ＣＰＵ３０１はＳＰＩコントローラ３０３からメインプログラムを取得し、当該メインプログラムをＳＲＡＭ３１７等他のメモリに展開する。
【００５９】
ＣＰＵ３０１はＳＰＩコントローラ３０３を介したデータの読み出しが完了したか否かを判定する（Ｓ５０９）。メインプログラムの読み出しが終わると、ＣＰＵ３０１はブートプログラムの最後で読み出したメインプログラムに動作開始を指示し、ブートシーケンスを終了する。メインプログラムへの移行後、ＣＰＵ３０１は読み出したメインプログラムに従って、画像形成装置１００の制御を行う。
【００６０】
図４（Ｂ）は、ＳＰＩコントローラ３０３がＣＰＵ３０１からの指示に基づいて実行する処理を示すフローチャートである。
【００６１】
ＳＰＩコントローラ３０３はリセット信号の解除を検知する（Ｓ６０１）。半導体集積回路３００に対して図示しない電源部から電源が供給され、ＳＰＩコントローラ３０３へ電力が供給される。ＳＰＩコントローラ３０３への電力供給の開始に伴い、ＳＰＩコントローラ３０３にはリセット信号が入力される。ここでは、ＳＰＩコントローラ３０３は未設定の状態であり、所定の設定がされるまでは動作しない。
【００６２】
ＳＰＩコントローラ３０３は、ＣＰＵ３０１からの指示に基づいてＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥから読み出された値を指示されたレジスタに設定する（Ｓ６０２）。ＣＰＵ３０１がＳ５０４で出力した指示に基づいて、ＳＰＩコントローラ３０３はＣＯＭＭＡＮＤ  ＳＥＱＵＥＮＣＥから読み出されたアクセスコマンドやアドレス、ダミーサイクル数等に対応する値をレジスタに設定する。
【００６３】
ＳＰＩコントローラはＣＰＵ３０１からの指示に基づいて、ＳＰＩコントローラ３０３の動作を有効に設定する（Ｓ６０３）。ＣＰＵ３０１がＳ５０６において出力した指示に基づいて、ＳＰＩコントローラ３０３は動作の有効、無効を設定するレジスタの値を、無効を示す値から有効を示す値へ変更する。ＳＰＩコントローラ３０３が無効に設定されている間は、ＣＰＵ３０１からＳＰＩ  ＲＯＭ４１０へのアクセスが指示されても、ＳＰＩコントローラ３０３はＳＰＩ  ＲＯＭ４１０へのアクセスを行わない。
【００６４】
ＳＰＩコントローラ３０３は、ＣＰＵ３０１からのＳＰＩ  ＲＯＭ４１０へのアクセス開始指示に基づいて、ＳＰＩ  ＲＯＭ４１０へのアクセスを開始する（Ｓ６０４）。ＣＰＵ３０１はＳ５０７において、ＳＰＩコントローラ３０３にＳＰＩ  ＲＯＭ４１０へのアクセス開始を指示する。ＳＰＩコントローラ３０３は、ＣＰＵ３０１からのアクセス開始指示に従って、ＳＰＩコントローラ３０３のレジスタに設定された値に基づき、アクセスコマンドやアドレスをＳＰＩ  ＲＯＭ４１０へ出力する。ここで、ＳＰＩバスプロトコルに則ったデータリードアクセスとは、図２で説明したＦａｓｔ  ＲｅａｄやＦａｓｔ  Ｒｅａｄ  ＱｕａｌＩ／Ｏ、Ｆａｓｔ  Ｒｅｅａｄ  ＱｕａｄＩ／Ｏ（ＱＰＩ）などのアクセスである。
【００６５】
ＳＰＩコントローラ３０３は、Ｓ６０４で発行したリードアクセスによってＳＰＩ  ＲＯＭ４１０から取得されたメインプログラムをＣＰＵ３０１に転送する（Ｓ６０５）。ＳＰＩコントローラ３０３はＳＰＩ  ＲＯＭ４１０からのメインプログラムの読み出しが完了したか否かを判定する（Ｓ６０６）。ＳＰＩコントローラ３０３は、ＳＰＩ  ＲＯＭ４１０から取得されたメインプログラムの読み出しが完了したと判定された場合に、図４（Ｂ）に記載の処理を終了する。ＳＰＩコントローラ３０３はＳＰＩ  ＲＯＭ４１０からのメインプログラムの読み出しが完了していないと判定された場合に、処理をＳ６０５に戻し、ＳＰＩ  ＲＯＭ４１０からのメインプログラムの読み出しを継続して実行する。Ｓ６０６の処理を完了した後、ＳＰＩコントローラ３０３は図４（Ｂ）に記載の処理を完了する。
【００６６】
図４に記載の処理が完了した後、ＣＰＵ３０１がＳＰＩ  ＲＯＭ４１０にアクセスする際には以下の手順でＳＰＩ  ＲＯＭ４１０へアクセスする。ＣＰＵ３０１は、メインプログラムに従って、ＳＰＩコントローラ３０３の各レジスタにアクセスコマンドと必要なパラメータを設定する。そして、ＣＰＵ３０１はメインプログラムに従って、ＳＰＩコントローラ３０３にＳＰＩ  ＲＯＭ４１０のアクセス開始を指示する。ＳＰＩコントローラ３０３はＣＰＵ３０１からのアクセス開始指示に従って、設定されたレジスタに基づくＳＰＩ  ＲＯＭ４１０へのアクセスを開始する。
【００６７】
本実施例では上記のように、予め半導体集積回路３００に接続されたＳＰＩ  ＲＯＭ４１０の種類に適したアクセスコマンド、アクセスに必要なパラメータをＯＴＰ  ＲＯＭに格納する。ＣＰＵ３０１が起動後はじめてＳＰＩ  ＲＯＭ４１０にアクセスする際に、ＯＴＰ  ＲＯＭに記憶されたアクセスコマンド、アクセスに必要なパラメータを使用する。これにより、情報処理装置の起動後、はじめてＳＰＩ  ＲＯＭ４１０にアクセスするときにも接続されているＳＰＩ  ＲＯＭに適したアクセスコマンド、パラメータでアクセスを行うことができる。
【００６８】
（その他の実施形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのコンピュータプログラム、及び該コンピュータプログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2020086517.tif 000003
【図２】
2020086517.tif 000004
【図３】
2020086517.tif 000005
【図４】
2020086517.tif 000006