(57)【要約】【課題】スレーブデバイスのアドレスビット長に依存せずにブートアップ処理を行うことができる情報処理装置を提供する。【解決手段】情報処理装置は、アドレスの各ビットをシリアルに送信し、データの各ビットをシリアルに受信するシリアルインターフェースと、起動プログラムを格納するブートメモリと、起動時に起動プログラムを実行して起動時処理を行なう制御回路とを含み、制御回路は、起動時処理において、第１のタイミングを開始タイミングとしてシリアルインターフェースがシリアルに受信するデータが所定のデータに一致するか否かを判断し、データ不一致の場合には、第２のタイミングを開始タイミングとしてシリアルインターフェースがシリアルに受信するデータが所定のデータに一致するか否かを判断することを特徴とする。【選択図】図７
2010044638.tif 000002
【特許請求の範囲】
【請求項１】
アドレスの各ビットをシリアルに送信し、データの各ビットをシリアルに受信するシリアルインターフェースと、
起動プログラムを格納するブートメモリと、
起動時に前記起動プログラムを実行して起動時処理を行なう制御回路と、
を含み、前記制御回路は、前記起動時処理において、第１のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが所定のデータに一致するか否かを判断し、データ不一致の場合には、第２のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致するか否かを判断することを特徴とする情報処理装置。
【請求項２】
前記制御回路は、前記起動時処理において、前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致するか否かの判断を、順次異なる開始タイミングで受信する受信データに対して繰り返すことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御回路は、前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致したタイミングから以降のデータを必要なデータとして順次読み込むことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記制御回路は、前記起動時処理において、前記シリアルインターフェースから固定のビット値をアドレスとして送信し続けることを特徴とする請求項１乃至３のいずれか一項記載の情報処理装置。
【請求項５】
前記アドレスの取り得るビット長として第１のビット長と第２のビット長との少なくとも２つがあり、前記第１のタイミングは前記シリアルインターフェースが前記第１のビット長のアドレスを送信した場合に該アドレスに応じたデータを受信するタイミングであり、前記第２のタイミングは前記シリアルインターフェースが前記第２のビット長のアドレスを送信した場合に該アドレスに応じたデータを受信するタイミングであることを特徴とする請求項１乃至４いずれか一項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に情報処理システムに関し、詳しくはファームウェアを受信し実行することにより動作する情報処理装置を含む情報処理システムに関する。
【背景技術】
【０００２】
情報処理装置においては、情報処理を行うためのファームウェアを外部ＲＯＭに格納しておく場合が多い。ブート時に情報処理装置が外部ＲＯＭからファームウェアをダウンロードし、ダウンロード後のファームウェアを実行することにより、所定の情報処理を実行する。このような構成とすることにより、外部ＲＯＭのファームウェアを書き替えるだけで情報処理の内容を変更することが可能となり、柔軟性の高い情報処理システムを構築することができる。
【０００３】
より詳細には、情報処理装置の内部にあるブートＲＯＭにはブートローダプログラムが格納されおり、ブート時には、このブートＲＯＭに格納されているブートローダプログラムにより情報処理装置が起動する。ブートローダプログラムに従って情報処理装置が外部シリアルＲＯＭに記録されたファームウェアを読み込み、符号化・復号化等の情報処理を開始する。
【０００４】
シリアルＲＯＭのアドレス０から始まるメモリ位置に格納されるファームウェアの先頭部分には、所定のキーワードが配置されている。情報処理装置の制御ＣＰＵは、ファームウェアのダウンロードを行いながら、ダウンロードされるデータ中のキーワードのチェックを行う。情報処理装置は、所定のキーワードの読み込みに成功した場合には外部ＲＯＭが存在するものと判断し、キーワードに後続する位置に格納されているプログラムを外部ＲＯＭからダウンロードする。また所定のキーワードの読み込みに失敗した場合にはエラー発生と判断し、情報処理装置はブートアップ処理を中断する。
【０００５】
図１は、ＳＰＩプロトコルのインターフェースの概略構成を示す図である。ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）は、マイクロプロセッサをメモリ、センサ、変換装置、コントロール装置等の各種周辺デバイスに接続するためのシリアル・プロトコルである。図１に示す構成では、ＳＰＩマスタ１０とＳＰＩスレーブ１５との間の通信を行なう。通信には、２本のデータ線、１本のコントロール線、及び１つの同期クロックを使用する。ＭＯＳＩ（Ｍａｓｔｅｒ  Ｏｕｔ  Ｓｌａｖｅ  Ｉｎ）は、ＳＰＩマスタ１０の出力からＳＰＩスレーブ１５の入力へのデータ線である。ＭＩＳＯ（Ｍａｓｔｅｒ  Ｉｎ  Ｓｌａｖｅ  Ｏｕｔ）は、ＳＰＩスレーブ１５の出力からＳＰＩマスタ１０の入力へのデータ線である。ＳＣＫ（Ｓｅｒｉａｌ  Ｃｌｏｃｋ）は、ＳＰＩマスタ１０からＳＰＩスレーブ１５に供給するクロック信号であり、データビットの同期を取るために使用される。／ＳＳ（Ｓｌａｖｅ  Ｓｅｌｅｃｔ）は、ＳＰＩスレーブ１５により個々のスレーブを選択するセレクト信号であり、セレクト信号がＬＯＷになることにより選択状態となる。図１の構成例では、１つのＳＰＩスレーブしか設けられていないので、ＳＰＩスレーブ１５は選択状態に固定となっている。
【０００６】
ＳＰＩマスタ１０は、シフトレジスタ１１とボーレート生成器１２を含む。ＳＰＩスレーブ１５は、シフトレジスタ１６を含む。シフトレジスタ１１は、受信シフトレジスタと送信シフトレジスタとを含む。例えば制御ＣＰＵにより、ライトデータがシフトレジスタ１１の送信シフトレジスタに書き込まれる。シフトレジスタ１１の送信シフトレジスタの格納データは、最下位ビット又は最上位ビットから１ビットずつ順次ＭＯＳＩに出力される。またＭＩＳＯから入力されるデータは、シフトレジスタ１１の受信シフトレジスタに１ビットずつ順次格納される。格納された受信データは、例えば制御ＣＰＵにより、リードデータとして読み出される。ボーレート生成器１２は、例えば制御ＣＰＵによる設定値に応じてクロック信号を分周し、シリアルクロックＳＣＫを生成する。シリアルクロックＳＣＫは、ＳＰＩマスタ１０からＳＰＩスレーブ１５に供給される。
【０００７】
シリアルクロックＳＣＫに同期して、ＳＰＩマスタ１０からＳＰＩスレーブ１５にデータを転送すると共に、ＳＰＩスレーブ１５からＳＰＩマスタ１０にデータを転送する。ＳＰＩスレーブ１５は、／ＳＳがＬＯＷ（イネーブル）になった後に、ＳＰＩマスタ１０から最初に送られてくる８ビットのデータをインストラクションとして認識する。例えばリード動作の場合、ＳＰＩマスタ１０はリード動作を示すインストラクションデータをまず最初に送信し、その後アドレスデータを送信する。このとき送信するアドレスのビット長は、ＳＰＩスレーブ１５のメモリ容量によって異なり、例えば８ビット、１６ビット、２４ビット等の何れか１つのビット長である。アドレスデータの送信後、該当アドレスのリードデータがＳＰＩスレーブ１５から出力される。その後は、ＳＰＩマスタ１０からクロックＳＣＫを出し続けることにより、ＳＰＩスレーブ１５がアドレスをオートインクリメントし、次々とリードデータを出力する。
【０００８】
図２は、アドレスビット長が８ビットの場合のデータ読出し動作の一例を示す図である。ＳＰＩスレーブ１５は、／ＳＳがＬＯＷ（イネーブル）になった後に、ＳＰＩマスタ１０がＭＯＳＩに出力した８ビットのデータをインストラクションとして取り込み、リード動作であることを認識する。ＳＰＩマスタ１０は、リード動作を示すインストラクションデータに続き、８ビットのアドレスデータＡ０乃至Ａ７をＭＯＳＩに出力する。ＳＰＩスレーブ１５は、受信したアドレスデータが示すメモリ位置を始点として、クロックＳＣＫに同期してリードデータをＭＩＳＯに順次出力する。
【０００９】
図３は、アドレスビット長が２４ビットの場合のデータ読出し動作の一例を示す図である。ＳＰＩマスタ１０は、リード動作を示す８ビットのインストラクションデータに続き、２４ビットのアドレスデータＡ０乃至Ａ２３をＭＯＳＩに出力する。ＳＰＩスレーブ１５は、受信したアドレスデータが示すメモリ位置を始点として、クロックＳＣＫに同期してリードデータをＭＩＳＯに順次出力する。
【００１０】
図４は、アドレスのビット長が固定の場合のブートアップ処理の流れの一例を示すフローチャートである。ステップＳ１でＳＰＩマスタ（例えばＳＰＩマスタ１０）の各種設定を行なう。ステップＳ２で、ＳＰＩマスタからリードコマンドを送信する。この送信動作には８サイクルを要する。ステップＳ３で、ＳＰＩマスタからアドレス“０”を送信する。アドレスのビット長がｎビットであれば、この送信動作にはｎサイクルを要する。ステップＳ４で、ＳＰＩマスタがＳＰＩスレーブからリードデータを受信する。この受信動作には８サイクルを要する。ステップＳ５で、例えばＳＰＩマスタ側のＣＰＵにより、リードデータが１６進数“４Ｄ”であるか否かを判定する。ここで“４Ｄ”は第１番目のキーワードであるとする。リードデータがキーワードに等しい場合は、ステップＳ６で、例えばＳＰＩマスタ側のＣＰＵにより、リードデータが１６進数“４２”であるか否かを判定する。ここで“４２”は第２番目のキーワードであるとする。リードデータがキーワードに等しい場合は、更に次のステップに進む。同様にして、第３番目以降のキーワードについても確認し、全てのキーワードが正しく読み出された場合には、キーワードに後続するファームウェアのプログラムをダウンロードする。１つでもキーワードが正しく読み出されなかった場合には、ブートアップ処理を中断してエラー処理を実行する。
【００１１】
前述のように、ＳＰＩプロトコルを介してマスタデバイスからスレーブデバイスへアクセスする際のアドレスのビット幅は、スレーブデバイスの種類（メモリ容量）に応じて異なる。図４に示すブートアップ処理のフローチャートの場合には、ステップＳ３に要するサイクル数が、スレーブデバイスの種類に応じて異なることになる。従って、シリアルＲＯＭからファームウェアをダウンロードしてブートアップを行う情報処理装置においては、シリアルＲＯＭのアドレスビット幅に応じて、異なるプログラムを内蔵したブートローダーＲＯＭを設ける必要がある。ブートローダーＲＯＭの内容を変更することは困難であるので、ある種類のスレーブデバイスからダウンロードするように情報処理装置を一旦構成してしまうと、外部ＲＯＭのメモリ容量を変更したくとも変更できないことになってしまう。
【００１２】
ブートローダーＲＯＭに、例えば８ビットアドレス用のブートプログラム、１６ビットアドレス用のブートプログラム、２４ビットアドレス用のブートプログラムをそれぞれ格納しておき、ブート時に１つのプログラムを選択して実行することが考えられる。より効率的には、ブートプログラム中のアドレス出力動作の処理部分（図４のステップＳ３の処理部分）を、８ビットアドレス出力、１６ビットアドレス出力、及び２４ビットアドレス出力で切り替えられるように構成すればよい。この際の切り替えの選択信号は、情報処理装置の外部端子に印加する信号に応じて生成すればよい。しかしながら、このような構成とした場合、ピン数増加によるコストアップが問題となってしまう。
【００１３】
シリアルＲＯＭよりデータをリードする際のアドレス決定方法が、例えば、特許文献１及び特許文献２に開示されている。特許文献１に開示の技術は、シリアルＥＥＰＲＯＭのアクセス形態を自動的に判別する発明であり、１バイトアドレスか２バイトアドレスかの判別にシリアルＥＥＰＲＯＭから出力されるアクノリッジ信号を利用している。しかしながらＳＰＩプロトコルにはアクノリッジ信号に相当する信号がないため、この技術をＳＰＩプロトコルで接続されたシステムに使用することはできない。
【００１４】
特許文献２に開示の技術は、ＥＥＰＲＯＭの記憶容量を自動的に判別する発明であり、有効アドレス入力後のＥＥＰＲＯＭからのローレベル出力を利用してアドレスビット数を計数している。しかしながらＳＰＩにはローレベル出力に相当するプロトコルがないために、この技術をＳＰＩプロトコルで接続されたシステムに使用することはできない。
【００１５】
また仮に、何らかのアドレス決定方法によりアドレスビット幅が特定できたとしても、アドレスモード検出、アドレスモード判定、及び各アドレスモードに対するアドレス送信等の処理をブートプログラムに組み込む必要がある。即ち、図４のブートアップ処理に対して新たな処理を追加することが必要になり、処理が複雑になるとともにコストアップに繋がる。
【特許文献１】特開２００４−２１４２１号公報
【特許文献２】特開２００２−７３４１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
以上を鑑みると、ＳＰＩプロトコルでスレーブデバイスからファームウェアをダウンロードする際に、スレーブデバイスのアドレスビット長に依存せずにブートアップ処理を行うことができる情報処理装置が望まれる。
【課題を解決するための手段】
【００１７】
情報処理装置は、アドレスの各ビットをシリアルに送信し、データの各ビットをシリアルに受信するシリアルインターフェースと、起動プログラムを格納するブートメモリと、起動時に前記起動プログラムを実行して起動時処理を行なう制御回路とを含み、前記制御回路は、前記起動時処理において、第１のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが所定のデータに一致するか否かを判断し、データ不一致の場合には、第２のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致するか否かを判断することを特徴とする。
【発明の効果】
【００１８】
少なくとも１つの実施例によれば、ＳＰＩプロトコルで接続されたシステムにおいて、異なるアドレスビット幅のスレーブデバイスに対応した制御を実現すると共に、余分なＲＯＭや外部端子の追加が必要なく、コストダウンを図ることができる。また従来技術の構成と比較して余分なサイクル数が増えることがない。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００２０】
図５は、シリアルＲＯＭからファームウェアをダウンロードする情報処理装置の構成の一例を示す図である。情報処理装置２０は、ＳＰＩインターフェース（Ｉ／Ｆ）２１、ブートＲＯＭ２２、制御ＣＰＵ２３、及びＲＡＭインターフェース（Ｉ／Ｆ）２４を含む。ＳＰＩインターフェース２１、ブートＲＯＭ２２、制御ＣＰＵ２３、及びＲＡＭインターフェース２４は、内部バス２５を介して互いに接続されている。情報処理装置２０のＲＡＭインターフェース２４はＲＡＭ２６に接続されており、制御ＣＰＵ２３が実行するプログラムや処理に関わるデータ等がＲＡＭ２６に格納される。情報処理装置２０のＳＰＩインターフェース２１はシリアルＲＯＭ３０に接続されており、ＭＩＳＯ、ＭＯＳＩ、ＳＣＫ、及び／ＳＳを介してＳＰＩマスタ（ＳＰＩインターフェース２１）とＳＰＩスレーブ（シリアルＲＯＭ３０）との間のデータ転送を行なう。ＳＰＩプロトコルのインターフェースの構成は、図１に示したとおりである。ＳＰＩインターフェース２１は、アドレスの各ビットをシリアルにＭＯＳＩに送信し、データの各ビットをシリアルにＭＩＳＯから受信する。
【００２１】
ブートＲＯＭ２２は、起動プログラム（ブートローダプログラム）を格納するブートメモリである。制御ＣＰＵ２３は、情報処理装置２０の起動時に、ブートＲＯＭ２２の起動プログラムを実行して起動時処理を実行する。ブートローダプログラムに従って情報処理装置２０がシリアルＲＯＭ３０に記録されたファームウェアを読み込み、符号化・復号化等の情報処理を開始する。
【００２２】
図６は、シリアルＲＯＭ３０の格納データの一例を示す図である。図６に示されるように、シリアルＲＯＭ３０のアドレス０から始まるメモリ位置に格納されるファームウェアの先頭部分には、所定のキーワードが配置されている。図６に示す例では、第１のアドレス位置（番地０）には第１のキーワードである１６進データ“４Ｄ”（アスキー符号で“Ｍ”）が格納され、第２のアドレス位置（番地１）には第２のキーワードである１６進データ“４２”（アスキー符号で“Ｂ”）が格納されている。また第３のアドレス位置（番地２）には第３のキーワードである１６進データ“３８”（アスキー符号で“８”）が格納され、第４のアドレス位置（番地３）には第４のキーワードである１６進データ“３６”（アスキー符号で“６”）が格納されている。
【００２３】
情報処理装置２０の制御ＣＰＵ２３は、シリアルＲＯＭ３０からファームウェアのダウンロードを行いながら、ダウンロードされるデータ中のキーワード（図６の例では“Ｍ”、“Ｂ”、“８”、“６”）のチェックを行う。制御ＣＰＵ２３は、所定のキーワードの読み込みに成功した場合には外部ＲＯＭが存在するものと判断し、キーワードに後続する位置に格納されているプログラムをシリアルＲＯＭ３０からダウンロードする。また所定のキーワードの読み込みに失敗した場合にはエラー発生と判断し、情報処理装置はブートアップ処理を中断する。
【００２４】
図５の情報処理装置２０では、制御ＣＰＵ２３は、起動時処理において、第１のタイミングを開始タイミングとしてＳＰＩインターフェース２１がシリアルに受信するデータが所定のデータ（第１のキーワード）に一致するか否かを判断する。判断結果がデータ不一致の場合、制御ＣＰＵ２３は、第２のタイミングを開始タイミングとしてＳＰＩインターフェース２１がシリアルに受信するデータが所定のデータ（第１のキーワード）に一致するか否かを判断する。このようにＳＰＩインターフェース２１がシリアルに受信するデータが所定のデータ（第１のキーワード）に一致するか否かの判断を、順次異なる開始タイミングで受信する受信データに対して繰り返す。そして制御ＣＰＵ２３は、ＳＰＩインターフェース２１がシリアルに受信するデータが所定のデータ（第１のキーワード）に一致したタイミングから以降のデータを必要なデータとして順次読み込む。これらの処理についてより詳細に以下に説明する。
【００２５】
図７は、情報処理装置２０のブートアップ処理の流れを示すフローチャートである。このフローチャートの各ステップの処理は、制御ＣＰＵ２３が実行するか、又は、制御ＣＰＵ２３の制御下で動作するＳＰＩインターフェース２１が実行する。
【００２６】
ステップＳ１において、ＳＰＩインターフェース２１の各種設定を行なう。ステップＳ２で、ＳＰＩインターフェース２１からリードコマンドを送信する。この送信動作には例えば８サイクルを要する。ステップＳ３で、ＳＰＩインターフェース２１からアドレス“０”を送信する。この際、制御ＣＰＵ２３は、固定のビット値“０”をアドレスとしてＭＯＳＩに送信し続けるように、ＳＰＩインターフェース２１を制御する。固定のビット値“０”を送信し続ける期間は、少なくともアドレスビット長の最大値に等しいサイクル数である。即ち例えば、アドレスビット長として８ビット、１６ビット、及び２４ビットのアドレスモードが有り得る場合には、最大値である２４ビットに等しいサイクル数、即ち少なくとも２４サイクルの間は固定のビット値“０”を送信し続ける。
【００２７】
ステップＳ４で、ＳＰＩインターフェース２１がシリアルＲＯＭ３０からリードデータを受信する。この受信動作には例えば８サイクルを要する。ステップＳ５で、制御ＣＰＵ２３により、リードデータが１６進数“４Ｄ”であるか否かを判定する。ここで“４Ｄ”は第１のキーワードである。
【００２８】
図８は、データ読出し動作の一例を示す図である。シリアルＲＯＭ３０は、／ＳＳがＬＯＷ（イネーブル）になった後に、ＳＰＩインターフェース２１がＭＯＳＩに出力した８ビットのデータ“００００００１１”をインストラクションとして取り込み、リード動作であることを認識する。ＳＰＩインターフェース２１は、リード動作を示すインストラクションデータに続き、ビット値“０”の固定値をＭＯＳＩに出力し続ける。シリアルＲＯＭ３０は、受信したアドレスデータが示すメモリ位置を始点として、クロックＳＣＫに同期してリードデータをＭＩＳＯに順次出力する。図８の例においては、シリアルＲＯＭ３０がアドレスビット長８ビットのメモリの場合の動作が示されている。ＳＣＫの８番乃至１５番のパルスに同期してアドレスビット“０”がＭＯＳＩに８個供給されると、シリアルＲＯＭ３０は、アドレス０番地のデータ出力を開始する。この出力データがＭＩＳＯに現れる“０１００１１０１”、即ち第１のキーワードである１６進数“４Ｄ”である。ＳＰＩインターフェース２１は、第１のタイミング（ＳＣＫの１６番のパルス）を開始タイミングとしてＭＩＳＯのデータをシリアルに受信する。この第１のタイミングはＳＰＩインターフェース２１が所定のビット長（８ビット）のアドレスを送信した場合に当該アドレスに応じたデータを受信する筈のタイミングである。このようにして受信したリードデータが第１のキーワード“４Ｄ”に一致する場合には、図７においてブートアップ処理はステップＳ８に進む。
【００２９】
リードデータが第１のキーワードに一致しない場合（ステップＳ５でＮＯの場合）には、ブートアップ処理はステップＳ６に進む。ステップＳ６で、チェック回数をカウントするチェックカウント値ＣＨＫ＿ＣＮＴを１増加させる。なおチェックカウント値ＣＨＫ＿ＣＮＴは、初期値０に初期設定されている。ステップＳ７で、チェックカウント値ＣＨＫ＿ＣＮＴが３以下か否かを判定する。なおここで３以下か否かを判定しているのは、アドレスビット長として３通りのビット長が有り得る構成の場合を例示しているからである。アドレスビット長としてｎ通りのビット長が有り得るのであれば、チェックカウント値ＣＨＫ＿ＣＮＴがｎ以下か否かを判定することになる。
【００３０】
チェックカウント値ＣＨＫ＿ＣＮＴが３以下の場合、ステップＳ４に戻り、ＳＰＩインターフェース２１がシリアルＲＯＭ３０からリードデータを再度受信する。最初（ＣＨＫ＿ＣＮＴ＝０の時）のリードデータの受信は、第１のタイミング（ＳＣＫの１６番のパルス）を開始タイミングとしたデータ受信であった。それに対して今回（ＣＨＫ＿ＣＮＴ＝１の時）のリードデータの受信は、第２のタイミング（ＳＣＫの２４番のパルス）を開始タイミングとしたデータ受信である。
【００３１】
この第２のタイミングから受信したリードデータが第１のキーワードに一致しない場合（ステップＳ５でＮＯの場合）には、ブートアップ処理は再度ステップＳ６に進む。ステップＳ６で、チェック回数をカウントするチェックカウント値ＣＨＫ＿ＣＮＴを１増加させる。ステップＳ７で、チェックカウント値ＣＨＫ＿ＣＮＴが３以下か否かを判定する。チェックカウント値ＣＨＫ＿ＣＮＴが３以下の場合、ステップＳ４に戻り、ＳＰＩインターフェース２１がシリアルＲＯＭ３０からリードデータを再度受信する。今回（ＣＨＫ＿ＣＮＴ＝２の時）のリードデータの受信は、第３のタイミング（ＳＣＫの３２番のパルス）を開始タイミングとしたデータ受信である。
【００３２】
図９は、データ読出し動作の一例を示す図である。図９に示すのは、シリアルＲＯＭ３０がアドレスビット長２４ビットのメモリの場合である。ＳＣＫの８番乃至１５番のパルスに同期してアドレスビット“０”がＭＯＳＩに８個供給されても、シリアルＲＯＭ３０は、アドレス０番地のデータ出力を開始しない。ＳＣＫの８番乃至２３番のパルスに同期してアドレスビット“０”がＭＯＳＩに１６個供給されても、シリアルＲＯＭ３０は、アドレス０番地のデータ出力を開始しない。それに対して、ＳＣＫの８番乃至３１番のパルスに同期してアドレスビット“０”がＭＯＳＩに２４個供給されると、シリアルＲＯＭ３０は、アドレス０番地のデータ出力を開始する。この出力データがＭＩＳＯに現れる“０１００１１０１”、即ち第１のキーワードである１６進数“４Ｄ”である。ＳＰＩインターフェース２１は、第３のタイミング（ＳＣＫの３２番のパルス）を開始タイミングとしてＭＩＳＯのデータをシリアルに受信する。このようにして受信したリードデータが第１のキーワード“４Ｄ”に一致する場合には、図７においてブートアップ処理はステップＳ８に進む。
【００３３】
ステップＳ８で、ＳＰＩインターフェース２１がシリアルＲＯＭ３０からリードデータを受信する。ここで受信するデータは、ＳＰＩインターフェース２１がシリアルに受信するデータが第１のキーワード“４Ｄ”に一致したタイミング（図９の例であればＳＣＫの３２番のパルス）の次のタイミング（ＳＣＫの４０番のパルス）で受信するデータである。次にステップＳ９で、リードデータが１６進数“４２”（第２のキーワード）に一致するか否かを判定する。リードデータが第２のキーワードに等しい場合は、次のステップＳ１０に進む。ステップＳ１０で、ＳＰＩインターフェース２１がシリアルＲＯＭ３０から後続のリードデータを受信する。ステップＳ１１で、リードデータが１６進数“３８”（第３のキーワード）に一致するか否かを判定する。リードデータが第３のキーワードに等しい場合は、次のステップＳ１２に進む。ステップＳ１２で、ＳＰＩインターフェース２１がシリアルＲＯＭ３０から後続のリードデータを受信する。ステップＳ１３で、リードデータが１６進数“３６”（第４のキーワード）に一致するか否かを判定する。リードデータが第４のキーワードに等しい場合は、次のステップＳ１４に進む。
【００３４】
ステップＳ１４で、ＳＰＩインターフェース２１がシリアルＲＯＭ３０から後続のデータを取り込み、必要なブートアップ処理を実行する。即ち、シリアルＲＯＭ３０において先頭のキーワードに続いて格納されているファームウェアのプログラムを、ＳＰＩインターフェース２１が順次読み込んで、ＲＡＭインターフェース２４を介してＲＡＭ２６に格納する。ファームウェアのＲＡＭ２６へのダウンロードが終了すると、ブートプログラムからファームウェアへの制御移管が行われる。具体的には、制御ＣＰＵ２３は、ＲＡＭ２６中のファームウェアの実行開始アドレスにプログラムカウンタを設定して、ファームウェアの実行を開始する。このファームウェアの実行により、符号化・復号化等の所望の情報処理を行なう。
【００３５】
１つでもキーワードが正しく読み出されなかった場合（即ちステップＳ７、Ｓ９、Ｓ１１、又はＳ１３でＮＯの場合）には、ステップＳ１５に進む。ステップＳ１５では、図５に示す情報処理装置２０のエラー端子を介して外部にエラー発生を通知する。具体的には、エラー端子の信号レベルを所定のアサート状態に設定することにより、エラー発生を通知する。その後、ブートアップ処理を中断して処理を終了する。
【００３６】
図７に示すフローチャートと図４に示す従来の処理のフローチャートとを比較すれば分かるように、図７に示す動作では、ステップＳ５のＮＯ判定の場合にステップＳ４に戻るループが設けられたのみである。即ち、図７に示す動作では、あるアドレスモード（例えばアドレスビット長が１６）の場合においてブートアップ処理に要する処理サイクル数は、１６ビットのアドレス長に専用の固定的な構成におけるブートアップ処理に要する処理サイクル数と同一である。なお図７に示す制御フローは、ブートＲＯＭ２２に格納されたブートアップ用プログラムで制御することが可能であり、またハードウェア制御回路によって実現することも可能である。
【００３７】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００３８】
なお本願開示は以下の内容を含むものである。
（付記１）
アドレスの各ビットをシリアルに送信し、データの各ビットをシリアルに受信するシリアルインターフェースと、
起動プログラムを格納するブートメモリと、
起動時に前記起動プログラムを実行して起動時処理を行なう制御回路と、
を含み、前記制御回路は、前記起動時処理において、第１のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが所定のデータに一致するか否かを判断し、データ不一致の場合には、第２のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致するか否かを判断することを特徴とする情報処理装置。
（付記２）
前記制御回路は、前記起動時処理において、前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致するか否かの判断を、順次異なる開始タイミングで受信する受信データに対して繰り返すことを特徴とする付記１記載の情報処理装置。
（付記３）
前記制御回路は、前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致したタイミングから以降のデータを必要なデータとして順次読み込むことを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記制御回路は、前記起動時処理において、前記シリアルインターフェースから固定のビット値をアドレスとして送信し続けることを特徴とする付記１乃至３のいずれか一項記載の情報処理装置。
（付記５）
前記アドレスの取り得るビット長として第１のビット長と第２のビット長との少なくとも２つがあり、前記第１のタイミングは前記シリアルインターフェースが前記第１のビット長のアドレスを送信した場合に該アドレスに応じたデータを受信するタイミングであり、前記第２のタイミングは前記シリアルインターフェースが前記第２のビット長のアドレスを送信した場合に該アドレスに応じたデータを受信するタイミングであることを特徴とする付記１乃至４いずれか一項記載の情報処理装置。
（付記６）
アドレスの各ビットをシリアルに送信し、データの各ビットをシリアルに受信するシリアルインターフェースと、起動プログラムを格納するブートメモリと、起動時に前記起動プログラムを実行して起動時処理を行なう制御回路とを含む情報処理装置において、
第１のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが所定のデータに一致するか否かを判断し、
前記判断の結果がデータ不一致の場合には、第２のタイミングを開始タイミングとして前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致するか否かを判断し、
前記シリアルインターフェースがシリアルに受信するデータが前記所定のデータに一致したタイミングから以降のデータを必要なデータとして順次読み込む
各段階を含むことを特徴とするダウンロード制御方法。
（付記７）
前記シリアルインターフェースから固定のビット値をアドレスとして送信し続けることを特徴とする付記６記載のダウンロード制御方法。
【図面の簡単な説明】
【００３９】
【図１】ＳＰＩプロトコルのインターフェースの概略構成を示す図である。
【図２】アドレスビット長が８ビットの場合のデータ読出し動作の一例を示す図である。
【図３】アドレスビット長が２４ビットの場合のデータ読出し動作の一例を示す図である。
【図４】アドレスのビット長が固定の場合のブートアップ処理の流れの一例を示すフローチャートである。
【図５】シリアルＲＯＭからファームウェアをダウンロードする情報処理装置の構成の一例を示す図である。
【図６】シリアルＲＯＭの格納データの一例を示す図である。
【図７】情報処理装置のブートアップ処理の流れを示すフローチャートである。
【図８】データ読出し動作の一例を示す図である。
【図９】データ読出し動作の一例を示す図である。
【符号の説明】
【００４０】
２０  情報処理装置
２１  ＳＰＩインターフェース
２２  ブートＲＯＭ
２３  制御ＣＰＵ
２４  ＲＡＭインターフェース
２５  内部バス
２６  ＲＡＭ
３０  シリアルＲＯＭ
【図１】
2010044638.tif 000003
【図２】
2010044638.tif 000004
【図３】
2010044638.tif 000005
【図４】
2010044638.tif 000006
【図５】
2010044638.tif 000007
【図６】
2010044638.tif 000008
【図７】
2010044638.tif 000009
【図８】
2010044638.tif 000010
【図９】
2010044638.tif 000011