(57)【要約】      （修正有）【課題】コスト高及び起動時のオーバーヘッドを抑制した情報処理装置を提供する。【解決手段】他の演算処理装置に対し起動処理を行う第１の演算処理装置と、第１の演算処理装置により起動処理が行われる１つ以上の第２の演算処理装置と、前記第２の演算処理装置が実行するか又は前記第２の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、当該情報処理装置の起動時又はリセット時、前記第１の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、先頭アドレスと前記サイズで指定される各ソフトウェアを前記第２の演算処理装置にそれぞれ実行開始させるか又は前記第２の演算処理装置に設定する、情報処理装置を提供する。【選択図】図１
2014235590.tif 000002
【特許請求の範囲】
【請求項１】
他の演算処理装置に対し起動処理を行う第１の演算処理装置と、
前記第１の演算処理装置により起動処理が行われる１つ以上の第２の演算処理装置と、
前記第２の演算処理装置が実行するか又は前記第２の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、
当該情報処理装置の起動時又はリセット時、前記第１の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、前記先頭アドレスと前記サイズで指定される各ソフトウェアを前記第２の演算処理装置にそれぞれ実行開始させるか又は前記第２の演算処理装置に設定する、
ことを特徴とする情報処理装置。
【請求項２】
前記実行開始情報には、さらに前記ソフトウェア毎に前記第２の演算処理装置の起動方法が記述されており、
前記第１の演算処理装置は、前記実行開始情報から読み出した前記起動方法に従い、
前記先頭アドレスを前記第２の演算処理装置が前記ソフトウェアの実行を開始する実行開始アドレスに設定する処理、
前記先頭アドレスに前記起動方法に指定されたアドレスを加えたアドレスを、前記第２の演算処理装置が前記ソフトウェアの実行を開始する実行開始アドレスに設定する処理、
前記起動方法に指定されたアドレスに、前記起動方法に指定されたアドレスに記憶された値を書き込むことで、前記ソフトウェアを前記第２の演算処理装置に設定する処理、又は、
前記起動方法に指定されたアドレスから読み出したデータに、前記起動方法に指定された値で演算を行い該アドレスに書き込むことで、前記第２の演算処理装置を起動する処理、のいずれかを行うことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記実行開始情報には、前記ソフトウェア毎に、さらに前記ソフトウェアを揮発性メモリに複写する際の複写先アドレス、圧縮情報、及び、暗号化情報が記述されており、
前記第１の演算処理装置は、読み出した前記実行開始情報に従い、
圧縮情報に圧縮ありと記述されている場合は解凍後に前記複写先アドレスに複写し、暗号化ありと記述されている場合は復号後に前記複写先アドレスに複写する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記不揮発メモリには、前記ソフトウェアをバックアップするバックアップデータが記憶され、前記実行開始情報には前記ソフトウェアが書き換わったか否かを検証するための検証情報が記憶されており、
前記第１の演算処理装置は、前記先頭アドレスに記憶されている前記ソフトウェアから検証情報を作成し、前記実行開始情報に含まれる検証情報と一致しない場合、バックアップデータを前記第２の演算処理装置に実行開始させるか又は前記第２の演算処理装置に設定する、
ことを特徴とする請求項１〜３いずれか１項記載の情報処理装置。
【請求項５】
前記第１の演算処理装置により指定された転送元アドレスから転送先アドレスにデータを転送するＤＭＡ（Direct Memory Access）コントローラと、
前記ＤＭＡコントローラから転送の終了通知を取得する割込みコントローラと、を有し、
前記実行開始情報には、さらに前記ソフトウェアを揮発性メモリに複写する際の複写先アドレスが記述されており、
前記第１の演算処理装置は、前記先頭アドレスと前記複写先アドレスを前記ＤＭＡコントローラに設定することで、前記ＤＭＡコントローラにより前記ソフトウェアを揮発性メモリに複写し、
前記ＤＭＡコントローラにより前記ソフトウェアを揮発性メモリに複写している間、前記割込みコントローラから転送の終了が通知された前記ソフトウェアについて、前記第２の演算処理装置にそれぞれ実行開始させるか又は前記第２の演算処理装置に設定する処理を行う、
ことを特徴とする請求項１〜４いずれか１項記載の情報処理装置。
【請求項６】
外部から更新用ソフトウェアと更新対象の前記ソフトウェアの識別情報を取得する外部通信手段と、
前記外部通信手段が取得した前記更新用ソフトウェアを記憶する記憶手段と、
前記識別情報の前記ソフトウェアが記憶されている前記不揮発メモリの前記先頭アドレスと前記サイズを前記実行開始情報から特定し、前記不揮発メモリの前記ソフトウェアを前記記憶手段に記憶されている前記更新用ソフトウェアで上書きするソフトウェア更新手段と、
を有することを特徴とする請求項１〜５いずれか１項記載の情報処理装置。
【請求項７】
請求項１〜６いずれか１項記載の情報処理装置を搭載した画像形成装置。
【請求項８】
請求項１〜６いずれか１項記載の情報処理装置を搭載したカメラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理装置でソフトウェアを実行可能な情報処理装置等に関する。
【背景技術】
【０００２】
多くの装置に組み込み系マイコンが搭載されている。組み込み系マイコンは、少なくとも１つのＣＰＵ、不揮発性メモリ（ＲＯＭ），及び、揮発性メモリ（ＲＡＭ）を備えた電子計算機アーキテクチャをベースにしている。組み込み系マイコンにおいても汎用的なマイコンと同様には、複数のＣＰＵ，ＧＰＵ（General Processing Unit），ＤＳＰ（Digial Signal Processor）などが組み合わせて搭載されるようになっており、高性能化・低電力化が進められている。
【０００３】
ＧＰＵ及びＤＳＰはプログラムを実行するという点ではＣＰＵと同じ演算処理装置である。複数の演算処理装置を有する組み込み系マイコンでは、中央制御装置となる１つのＣＰＵが全体を制御し、他の演算処理装置（他のＣＰＵ，ＧＰＵ, ＤＳＰなど）が実行するプログラムコードを決定し、処理を配分する制御態様が一般的である。不揮発性メモリ上（ROM：例えばFlashROM, EEPROM，SSDなど）には中央制御装置となるＣＰＵのみが実行したり他の演算処理装置に実行させることが可能なソフトウェアが配置されている。
【０００４】
このような制御態様は、中央制御装置となる１つのＣＰＵにより制御が可能なため、制御対象となる演算処理装置（他のＣＰＵ、ＧＰＵ、ＤＳＰなど）の操作を容易にする反面、処理のオーバーヘッドが犠牲となるという不都合があった。例えば、ＤＳＰが起動直後から特定の演算を早い段階から行う場合でも、中央制御装置となるＣＰＵがソフトウェアを実行してＤＳＰを制御するまで待つ時間が必要であった。
【０００５】
また、組み込み系マイコンにＦＰＧＡ(Field Programmable Gate Array)といったプログラマブルなハードウェアデバイスが採用され始めているが、ＦＰＧＡは起動時に中央制御装置となるＣＰＵがコンフィグレーションを行うだけで，以降は中央制御装置のＣＰＵからの操作・制御を必要としない。しかし、ＦＰＧＡのコンフィグレーションデータは、リバースエンジニアリングによる技術情報の漏洩を防ぐため、製品によっては暗号化されている。このため、中央制御装置となるＣＰＵによる復号を含むコンフィグレーションをなくすことはできない。
【０００６】
このように複数の演算処理装置を備えた従来の一般的な組込み系マイコンでは、オーバーヘッドが大きいという問題がある。
【０００７】
オーバーヘッドを低減する１つの方法として、各々のプロセッサにプログラムを格納するROMを設けることが考えられる（例えば、特許文献１参照。）。特許文献１には、プロセッサグループごとにファームウェアが格納されたＦＥＥＲＯＭからのファームウェア読み出しにより、アクセス速度の遅い診断経路からのファームウェア読み出しを極力避け、システム診断時間を短縮するマルチプロセッサが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１では、プロセッサごとにＲＯＭが必要になり、コスト高、システムの巨大化をもたらすという問題がある。
【０００９】
本発明は、上記課題に鑑み、コスト高及び起動時のオーバーヘッドを抑制した情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題に鑑み、本発明は、他の演算処理装置に対し起動処理を行う第１の演算処理装置と、前記第１の演算処理装置により起動処理が行われる１つ以上の第２の演算処理装置と、前記第２の演算処理装置が実行するか又は前記第２の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、当該情報処理装置の起動時又はリセット時、前記第１の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、前記先頭アドレスと前記サイズで指定される各ソフトウェアを前記第２の演算処理装置にそれぞれ実行開始させるか又は前記第２の演算処理装置に設定する、ことを特徴とする情報処理装置を提供する。
【発明の効果】
【００１１】
コスト高及び起動時のオーバーヘッドを抑制した情報処理装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態の情報処理装置の概略的な動作を説明する図の一例である。
【図２】情報処理装置の概略構成図の一例である。
【図３】比較のために示した、従来のＲＯＭに記憶されているファームウェアの配置構成例を模式的に示す図である。
【図４】中央制御装置となるＣＰＵが他の演算処理装置にファームウェアを実行させる処理手順の一例を示すフローチャート図である。
【図５】本実施形態のＲＯＭに記憶されているファームウェアの配置構成例を模式的に示す図である。
【図６】全ファームウェア情報領域、個別ファームウェア情報領域の構成を模式的に示す図の一例である。
【図７】起動タイプと起動引数の具体例を説明する図の一例である。
【図８】個別ファームウェア起動情報のフォーマット例を示す図の一例である。
【図９】ＲＯＭに記憶されているファームウェアの配置構成例を模式的に示す図である。
【図１０】情報処理装置の起動手順を示すフローチャート図の一例である。
【図１１】ステップＳ４０の個別ファームウェア起動処理手順を示すフローチャート図の一例である。
【図１２】情報処理装置の概略構成図の一例である（実施例２）。
【図１３】ステップＳ４０の個別ファームウェア起動処理手順を示すフローチャート図の一例である。
【図１４】ＲＯＭに記憶されているファームウェアの配置構成例、個別ファームウェア情報領域の構成例を模式的に示す図である。
【図１５】図１０のステップＳ４０の個別ファームウェア起動処理手順を示すフローチャート図の一例である。
【図１６】画像形成装置のハードウェア構成図の一例である。
【図１７】車載カメラのハードウェア構成図の一例である。
【発明を実施するための形態】
【実施例１】
【００１３】
図１は、本実施形態の情報処理装置の概略的な動作を説明する図の一例である。
起動した情報処理装置のＣＰＵはまずブートローダーを実行する。ブートローダーは個別ファームウェア情報領域１の先頭アドレスを保持しており、個別ファームウェア情報領域１の先頭アドレス、個別ファームウェア情報領域２の先頭アドレス、個別ファームウェア情報領域３の先頭アドレス、を順番に読み取る。
【００１４】
次に、個別ファームウェア情報領域１の先頭アドレスを起点にして個別ファームウェア情報領域１の個別ファームウェア情報を読み出す。個別ファームウェア情報にはそれぞれのファームウェア１の先頭アドレス、サイズなどが記憶されている。したがって、ファームウェア１の格納場所からファームウェア１を読み出しファームウェア１を実行する演算処理装置を起動できる。ブートローダーは、ファームウェア２、ファームウェア３についても同様の処理を行う。
【００１５】
このように、ＲＯＭ内に、全てのファームウェアの個別ファームウェア情報（各演算処理装置用のファームウェアの正確な配置場所）が記憶されているので、ブートローダーは個別ファームウェア情報を走査することで、各演算処理装置に適切なファームウェアを提供ができる。１つのＲＯＭを走査するだけでよいため、起動時間を短くすることができる。また、演算処理装置毎に複数のＲＯＭを必要とすることもないので、部品数を増やすこともない。開発者は個別ファームウェア情報を最小限の手間でかつ柔軟に設定できる。
【００１６】
また、従来は、情報処理装置が各演算処理装置のファームウェアの設定をそれぞれファイルとして保持していたが、個別ファームウェア情報はファイルでなく所定のアドレスに記憶されているので、ファイルシステムを立ち上げる必要がない。
【００１７】
したがって、本実施形態の情報処理装置は、コスト増を抑制して起動時のオーバーヘッドを抑制することができる。
【００１８】
〔構成例〕
図２は、本実施形態の情報処理装置の概略構成図の一例である。この情報処理装置１００は、組み込みマイコン、組み込みシステムなどと呼ばれ、例えば、画像形成装置、プロジェクタ、テレビ会議端末、車載カメラなどに搭載されうる。また、装置に予め組み込まれる場合の他、一般的なＰＣ（Personal Computer）にも適用可能である。
【００１９】
情報処理装置１００は、一般的な構成としてバスに接続されたＣＰＵ１１（以下、ＣＰＵ_０という）、ＲＯＭ１６、ＲＡＭ１４、外部通信Ｉ／Ｆ１７、入出力Ｉ／Ｆ１８、及び、ハードウェアブロック電力供給部１５を有する。ＣＰＵ_０は中央処理装置としてのＣＰＵである。さらに、ＣＰＵ_０以外の演算処理装置として、ＣＰＵ１２（以下、ＣＰＵ_１という）、ＦＰＧＡ１３を有している。演算処理装置としては、ＧＰＵ（General Processing Unit），ＤＳＰ（Digial Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、及び、ＳｏＣ（System-on-a-Chip）なども含まれ、ファームウェアを実行するハードウェアブロック又はファームウェアが設定されるハードウェアブロックであれば演算処理装置となりうる。
【００２０】
なお、複数のＣＰＵ（ＣＰＵ_０、ＣＰＵ_１）を有する場合、全く同じ構造のＣＰＵを複数、搭載するＳＭＰ（Symmetric Multi Processor）という実装態様や、構造が異なるＣＰＵを搭載するＡＭＰ（Asymmertic Multi Processor）という実装態様などがある。また、一部のＣＰＵコアをＡＭＰとして実装し、残りのＣＰＵコアをＳＭＰとして実装するＢＭＰ（Bound Multiprocessing）という実装態様もある。
【００２１】
ＳＭＰ構成では、全てのＣＰＵが全く同じファームウェアを実行することが可能だが、ＡＭＰでは各ＣＰＵに異なるファームウェアを用意する必要がある。ＣＰＵ以外の演算処理装置（図２のＦＰＧＡ１３）も異なる演算処理装置という意味ではＡＭＰ構成の１つの演算処理装置であり、固有のファームウェアを必要とする。すなわち、ＡＭＰでは、ＣＰＵを他の演算処理装置の１つとして扱えばよい。
【００２２】
ＲＯＭ１６ は、ファームウェアを記憶するための不揮発メモリである。例えば、Flash ROM, EEPROM，SSD（Solid State Drive）などで構成されるがこれらに限られるものではない。また、ＲＯＭ１６は基板やチップの外部に外付けされていてもよい。情報処理装置１００の電源投入時又はリセット時、ＣＰＵ＿０はブートローダーを実行することで、ＲＯＭ１６ファームウェアをＲＡＭ１４に展開し、各演算処理装置がファームウェアを実行することを可能にする。ファームウェアとは、厳密な定義はないが、主にハードウェアを制御するために機器に組み込まれたソフトウェアである。ＰＣなどの汎用的なＣＰＵが実行するソフトウェア（プログラム）と対比して使用されるが、区別することなく単にソフトウェアと称してもよい。
【００２３】
外部通信Ｉ／Ｆ１７は、例えばＬＡＮやインターネットなどのネットワークに接続するネットワークカードである。情報処理装置１００は外部通信Ｉ／Ｆ１７を介してネットワークに接続されているサーバなどとデータを送受信する。また、外部通信Ｉ／Ｆ１７は、３Ｇ、ＬＴＥ（Long Term Evolution）などと呼ばれる長距離無線通信網に接続するものでもよい。
【００２４】
入出力Ｉ／Ｆ１８は、マウス、キーボード、タッチパッドなどユーザ操作を受け付ける装置のインタフェースである。タッチパネルと共に又は単独のディスプレイと接続するためのインタフェースを備えていてもよい。
【００２５】
ハードウェアブロック電力供給部１５は、ハードウェアブロックへの電力供給を制御する。起動時は全てのハードウェアブロックに電力を供給し、操作や外部通信などのイベントが検出されないと、予め決められたハードウェアブロックへの電力供給を停止して、低電力状態へ移行する。また、イベントが検出されると、復帰のために電力供給を再開する。
【００２６】
〔ＲＯＭに記憶されているファームウェアについて〕
図３は、比較のために示した、従来のＲＯＭに記憶されているファームウェアの配置構成例を模式的に示す図である。ブートローダー２１は、情報処理装置１００の起動時又はリセット時に、最初に実行されるソフトウェアであり、ハードウェアを初期化したり、ＯＳ２２をＲＡＭ１４に展開しＣＰＵがＯＳ２２を実行できるようにプログラムカウンタ（特許請求の範囲の実行開始アドレスの一例である）にアドレスを設定するなどの処理を行う。
【００２７】
ＲＯＭ１６には、ファイルシステム２０により管理されるＯＳ２２，ＣＰＵ_１用ＦＷ２３、ＦＰＧＡ用ＦＷ２４、及び、起動に関する設定記述２５が記憶されている。ＣＰＵ_１用ＦＷ２３はＣＰＵ_１が実行するファームウェアであり、ＦＰＧＡ用ＦＷ２４はＦＰＧＡ１３に設定されるコンフィグレーションデータである。起動に関する設定記述２５について詳しくは後述するが、各ファームウェアの配置場所、サイズやＲＡＭ１４上の転送先などが記述されている。
【００２８】
このように、従来のＲＯＭ１６には、ファイルシステム２０が搭載されることが多い。ファイルシステムは、ＲＯＭ１６に記憶されているデータのひとまとまりをファイルとして扱い、ファイル名、ファイルの保存場所、更新時刻などを管理する。また、ファイルを格納するためのフォルダ（ディレクトリ）を作成し、フォルダ間の繋がり（例えば、ツリー構造）を管理する。ユーザからはファイル名でファイルを認識できるので、ファイルの格納アドレスなどを意識する必要が無く、ファイル名を指定すればファイルシステムがファイルを提供してくれる。
【００２９】
ファイルシステムは、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、Windows（登録商標）、MacOS(登録商標)、iOS（登録商用）などの汎用のオペレーティングシステムで長年、培われてきたため、非常に高機能なファイル管理を可能とする。しかし、高機能であるがゆえに複雑な処理・実装が必要であり、システムの規模（ソフトウェアサイズ）が大きく、情報処理装置１００に対しても一定以上の処理能力が要求される。このため、組込み向け系マイコンでは、ソフトウェアサイズの増大によるＲＯＭ容量の圧迫、実行時の処理負荷の増大といったデメリットが無視できない。
【００３０】
また、情報処理装置１００の起動時には、ファイルシステムの処理負荷が、中央制御装置となるＣＰＵが他の演算処理装置にファームウェアを実行させる際のオーバーヘッドをもたらす。また、ファイルシステムは、情報処理装置１００の開発時のコストや開発工程の増大といったデメリットをもたらす。
【００３１】
具体的には、図４の起動処理に示すように、従来のＲＯＭ１６では起動に時間がかかってしまうという不都合がある（オーバーヘッドが大きくなる）。図４は、中央制御装置となるＣＰＵが他の演算処理装置にファームウェアを実行させる処理手順の一例を示すフローチャート図である。
【００３２】
情報処理装置１００が起動又はリセットされると、中央制御装置となるＣＰＵがリセットベクタアドレスにあるブートローダー２１を起動する（Ｓ１）。リセットベクタアドレスは、起動又はリセット時にＣＰＵが最初に実行するアドレスであり、このアドレスにブートローダー２１が配置されたアドレスへのＧｏＴｏ命令が記述されている。
【００３３】
ブートローダー２１は、ハードウェアの初期化を実行する（Ｓ２）。具体的には、他の演算処理装置を含むハードウェアのレジスタに初期値を設定したり、ハードウェア内のキャッシュメモリやＲＡＭ１４の内容をゼロにクリアする。
【００３４】
次に、ブートローダー２１は、ファイルシステムを解釈し、起動に関する設定記述２５を読み出し、設定に従いＯＳを起動する（Ｓ３）。ファイルシステムを解釈するとは、ファイルシステムが管理するフォルダの構造（ツリー構造）を把握し、各ファイルが格納されているフォルダを特定することである。ＯＳ，ＣＰＵ_１用ＦＷ２３、ＦＰＧＡ用ＦＷ２４、及び、起動に関する設定記述２５はファイルとしてＲＯＭ１６に記憶されているので、ファイルシステムを解釈することでこれらのファイルを読み出すことができる。
【００３５】
ブートローダー２１は、設定記述が指定するＯＳのファイルを読み出してＲＡＭ１４に転送し、ＣＰＵ_０のプログラムカウンタにＯＳの先頭アドレスを設定することで、ＯＳを起動する。これにより、ＣＰＵ＿０はブートローダー２１の処理からＯＳの処理に移行するが、ＯＳの起動順序によっては引き続きブートローダー２１が処理を継続する。以下の処理はブートローダー２１又はＯＳのどちらが行ってもよい。
【００３６】
ブートローダー２１又はＯＳは、ファイルシステムを解釈し、起動に関する設定記述２５を読み出し、設定に従いＣＰＵ_１を起動する（Ｓ４）。ブートローダー２１又はＯＳは、設定記述が指定するＣＰＵ_１用ＦＷ２３のファイルを読み出してＲＡＭ１４に転送し、ＣＰＵ_１のプログラムカウンタにＣＰＵ_１用ＦＷ２３の先頭アドレスを設定し、レジスタに起動開始のための値を設定することでＣＰＵ_１を起動する。
【００３７】
次に、ブートローダー２１又はＯＳは、ファイルシステムを解釈し、起動に関する設定記述２５を読み出し、設定に従いＦＰＧＡ１３を起動する（Ｓ５）。ブートローダー２１又はＯＳは、設定記述が指定するＦＰＧＡ用ＦＷ（コンフィグレーションデータ）２４のファイルを読み出してＦＰＧＡ１３に設定し（コンフィグレーション）、レジスタに起動開始のための値を設定することでＦＰＧＡ１３を起動する。
【００３８】
このように、従来のＲＯＭ構造では、ファイルシステムを解釈してファイルを読み出したり、起動に関する設定記述２５も解釈するなどの処理が必要でそれがオーバーヘッドの一因となっていた。
【００３９】
図５は、本実施形態のＲＯＭ１６に記憶されているファームウェアの配置構成例を模式的に示す図である。まず、本実施形態ではＲＯＭ１６にファイルシステムが格納されない。また、全ファームウェア情報領域２６、及び、個別ファームウェア情報領域２７（区別する場合、個別ファームウェア情報領域１〜３という）が記憶されている。更新プログラム１０については後述する。
【００４０】
図６（ａ）は全ファームウェア情報領域２６の構成を模式的に示す図の一例である。全ファームウェア情報領域２６には全ての演算処理装置の個別ファーム情報領域の先頭アドレスが記述されている。すなわち、ＣＰＵ_０、ＣＰＵ_１、及び、ＦＰＧＡ１３のファームウェアの先頭アドレスが記憶されている。各先頭アドレスを記憶するためのバイト数は共通である。個別ファーム情報領域１〜３の先頭アドレスにより、ブートローダー２１は個別ファーム情報領域を特定できる（アクセスできる）。なお、後に個別ファーム情報領域１〜３の個数が必要になるが、個別ファーム情報領域１〜３の個数は、例えば、全ファームウェア情報領域２６の先頭に登録されている。または、全ファームウェア情報領域２６の終端に配置されたＥｏＦ（End Of File）までの先頭アドレスの数（又はバイト数）から個別ファーム情報領域の個数が分かるようになっている。
【００４１】
図６（ｂ）は個別ファームウェア情報領域の構成を模式的に示す図の一例である。個別ファームウェア情報領域１〜３の構成は共通でよいが、異なっていてもよい。１つの個別ファームウェア情報領域には、「個別ファームウェアの配置領域先頭アドレス」「個別ファームウェアの配置領域サイズ」「個別ファームウェアの展開先ＲＡＭアドレス」「個別ファームウェアの起動方法」が記憶されている。「個別ファームウェアの配置領域先頭アドレス」は、ＲＯＭ１６における個別ファームウェアの配置領域の先頭アドレスである。「個別ファームウェアの配置領域サイズ」は、個別ファームウェアのサイズである。「個別ファームウェアの展開先ＲＡＭアドレス」は、ＲＡＭ１４における転送先アドレスである。「個別ファームウェアの起動方法」については後述する。
【００４２】
図６（ｃ）は、「個別ファームウェアの起動方法」について説明する図の一例である。個別ファームウェアの起動方法は、圧縮情報（圧縮済みフラグ、圧縮アルゴリズム）、暗号化情報（暗号化済みフラグ、復号アルゴリズム）、及び、起動情報（起動タイプ、起動引数）を有している。圧縮済みフラグはファームウェアが圧縮されている場合に"１"となるフラグであり、圧縮アルゴリズムはＺＩＰ、ＣＡＢ、ＬＺＨなどの圧縮方法の識別情報が格納される。
【００４３】
暗号化済みフラグはファームウェアが暗号化されている場合に"１"となるフラグであり、復号アルゴリズムはＡＥＳ、ＲＣ５、Triple DESなどの圧縮方法の識別情報が格納される。なお、復号キー（暗号キーと同じでも異なっていてもよい）は暗号化モジュール（不図示）の不揮発メモリに記憶されており、暗号化モジュール以外は読み出せないようになっている。
【００４４】
起動タイプは、ファームウェア（演算処理装置）がどのような起動引数を必要とし、起動するためにどのような処理が必要かを示す情報で、起動タイプに応じて起動引数の数や起動引数の設定方法が変わる。したがって、起動引数は複数の場合がある。また、ない場合もある。
【００４５】
図７は、起動タイプと起動引数の具体例を説明する図の一例である。５つの起動タイプとその起動タイプに対応した起動引数が定められている。起動タイプが定まれば、ブートローダーは具体的な起動手順で動作することができる。
・起動タイプ00000000は起動引数が不要な演算処理装置であることを示す。具体的には、転送先のＲＡＭ１４の先頭アドレスから実行開始する、ことを意味する。
・起動タイプ00000001は起動引数がアドレスであることを示す。具体的には、転送先のＲＡＭ１４の先頭アドレスに起動引数で指定されたアドレスを加えたアドレスから実行開始する、ことを意味する。
・起動タイプ00000100は起動引数が「アドレス＋値」であることを示す。すなわち、起動引数は２つである。「アドレス＋値」のセットを複数指定することもできる。具体的には、起動引数で指定されたアドレスに対し、起動引数で指定された値を書き込む、ことを意味する。起動引数で指定されたアドレスは例えばレジスタであり、このレジスタに指定された値を設定することで演算処理装置が起動する。また、起動引数を「アドレス＋アドレス」としてもよい。前半のアドレスの役割は同じであり、値が設定されるレジスタなどのアドレスである。後半のアドレスは、転送先ＲＡＭアドレス（復号される場合は復号の後）のファームウェアを指定するアドレスとする。例えば、ＦＰＧＡでは、任意のレジスタにファームウェア（コンフィグレーションデータ）を設定する（コンフィグレーションする）ことが可能である。
・起動タイプ00000200は起動引数が「アドレス＋ビットパターン」であることを示す。すなわち、起動引数は２つである。具体的には、起動引数で指定されたアドレスからデータを読み、起動引数で指定されたビットパターンとＯＲ演算して、起動引数で指定されたアドレスに書き込む、ことを意味する。情報処理装置１００の起動時に所定の初期値になるレジスタに対しビットパターンをＯＲ演算して設定することで、演算処理装置が起動する。
・起動タイプ00000400は起動引数が「アドレス＋ビットパターン」であることを示す。ＯＲ演算がＡＮＤ演算になる以外は起動タイプ00000200と同じである。
【００４６】
起動タイプ00000000では起動引数が不要であり、圧縮情報と暗号化情報も圧縮又は暗号化していなければ不要である。また、個別ファームウェア情報の展開先ＲＡＭアドレスも、演算処理装置がＲＡＭ１４に展開せずにＲＯＭ１６からファームウェアを実行する場合は不要である。したがって、個別ファームウェア情報では、配置領域先頭アドレスと配置領域サイズ以外の情報は必ずしも必須でない。
【００４７】
図６，７に示した全ファームウェア情報領域２６と個別ファームウェア情報領域とにより、情報処理装置１００の起動時のオーバーヘッドを抑制できる。ブートローダー２１は以下のような手順で演算処理装置を起動する。なお、ブートローダー２１には全ファームウェア情報領域２６の先頭アドレスが登録されている。
(i)  ブートローダー２１は、起動時には全ファームウェア情報領域２６を読み込み、各個別ファームウェア情報領域１〜３が配置された場所（アドレス）を特定する
(ii) 次に、各個別ファームウェア情報領域１〜３を順に読み込み、個別ファームウェアが実際に記憶されているＲＯＭ１６の先頭アドレスとサイズを特定する。
(iii) 個別ファームウェアをＲＡＭ１４の指定された展開先ＲＡＭアドレスに展開する。
(iv)  個別ファームウェア情報領域の起動方法に記述された処理を実行することで、各ＣＰＵまたは他の演算処理装置を起動処理する。
【００４８】
このように、個別ファームウェア情報には、起動に関する最小限のパラメータのみを記述することで、起動時のオーバーヘッドを抑制できる。すなわち、ブートローダー２１は起動に関する最小限のパラメータを走査すればよいので、起動時間を短くすることができる。また、ファイルシステムが不要なので、ファイルシステムの解釈や起動に関する設定記述２５の読み出し・解釈も不要であるため、起動時間を短くすることができる。また、ＲＯＭ１６の圧迫や開発コスト等の増大を抑制できる。
【００４９】
〔個別ファームウェア起動情報のフォーマット例〕
個別ファームウェア起動情報のフォーマット例について補足する。個別ファームウェア情報領域において、圧縮情報、暗号化情報、及び、起動情報の順に配置されていたとしても、どこからどこまでがどの情報かをブートローダー２１が判別できないおそれがある（判別するには圧縮情報、暗号化情報、及び、起動情報のサイズが固定である必要がある）。
【００５０】
そこで、好ましくは、図８（ａ）（ｂ）に示すようなフォーマットで個別ファームウェア起動情報を格納する。
【００５１】
図８（ａ）は、冗長領域を利用した個別ファームウェア起動情報のフォーマット例を示す。
・個別ファームウェア起動情報の全体としてのサイズは固定とする（予め決まっている）。加えて、そのサイズは充分余裕のある大きいサイズである。
・圧縮情報、暗号化情報及び起動情報も全て，そのサイズは固定である。加えて，そのサイズは充分余裕のある大きいサイズである。
・固定のサイズに対して圧縮情報，暗号化情報及び起動情報の具体的なサイズでは使用されなかった領域はPadding領域（冗長領域）として，専用のデータ（例えば，0x00等）で埋めておく。
【００５２】
このフォーマット例では、事前にブートローダー２１に圧縮情報、暗号化情報、及び、起動情報の配置順さえ登録されていれば、Padding領域が検出されるまでは圧縮情報、暗号化情報、及び、起動情報なので、どこからどこまでがどの情報かを特定できる。
【００５３】
図８（ｂ）は終端情報を利用した個別ファームウェア起動情報のフォーマット例を示す。
・個別ファームウェア起動情報の全体のサイズは不定である。個別ファームウェア起動情報の最後に終端情報があることで、圧縮情報、暗号化情報、及び、起動情報を読込んだあと、終端情報により全ての情報を読み込み終わったことを確認することができる。
・圧縮情報、暗号化情報、及び、起動情報も全て、最後に終端情報があるので、各情報について各々読込み終わったことを終端情報に到達することで確認可能である．
・圧縮情報，暗号化情報及び起動情報は、先頭の情報タイプ領域にて圧縮情報であること，暗号化情報であること、及び、起動情報であることが判別できるようになっている。
【００５４】
このフォーマットでは、ブートローダー２１は個別ファームウェア起動情報の構成（圧縮情報，暗号化情報及び起動情報の配置順）を知っておく必要はなく、最初に情報タイプの領域があるかを判断し、情報タイプがあればその情報領域（圧縮情報，暗号化情報，起動情報）から終端情報までを読む、という手順での起動処理が可能となる。
【００５５】
〔ＲＯＭの構成の変形例〕
図５では、ＲＯＭ１６に全ファームウェア情報領域２６を配置し、ブートローダー２１に全ファームウェア情報領域２６の先頭アドレスが配置されているとしたが、全ファームウェア情報領域２６を用いないことも可能である。
【００５６】
図９は、ＲＯＭ１６に記憶されているファームウェアの配置構成例を模式的に示す図である。全ファームウェア情報領域２６がなく、個別のファームウェアと個別ファームウェア情報領域１〜３が記憶されている。ブートローダー２１には予め個別ファームウェア情報領域１の先頭アドレスが少なくとも登録されている。どこからどこまでが個別ファームウェア情報領域かは、図８（ａ）（ｂ）の仕組みを利用してもよいし、ブートローダー２１には予め個別ファームウェア情報領域１〜３の先頭アドレスが登録されていてもよい。
【００５７】
したがって、ブートローダー２１は個別ファームウェア情報領域１〜３を順番に読み出して、各ファームウェアに対応する演算処理装置を起動させることができる。
【００５８】
〔起動手順〕
図１０は、情報処理装置の起動手順を示すフローチャート図の一例である。
情報処理装置１００が起動又はリセットされると、中央制御装置となるＣＰＵがリセットベクタアドレスにあるブートローダー２１を起動する（Ｓ１０）。
【００５９】
ブートローダー２１は、ハードウェアの初期化を実行する（Ｓ２０）。
【００６０】
次に、ブートローダー２１は、全ファームウェア情報領域２６の先頭アドレスを読み込み、個別ファームウェア情報の個数を特定する（Ｓ３０）。個別ファームウェア情報の個数は、全ファームウェア情報領域２６の先頭アドレスの数である。
【００６１】
ブートローダー２１は、個別ファームウェア起動処理手順を、個別ファームウェア情報の数だけ繰り返す（Ｓ４０）。
【００６２】
図１１（ａ）は、ステップＳ４０の個別ファームウェア起動処理手順を示すフローチャート図の一例である。
【００６３】
ブートローダー２１は、個別ファームウェア情報領域の先頭アドレスに配置された個別ファームウェア情報領域を読み込む（Ｓ４０１）。これにより、図６（ｂ）の各情報が得られる。
【００６４】
ブートローダー２１は、個別ファームウェア情報領域に記載された配置領域先頭アドレスから配置領域サイズ分の領域を展開先ＲＡＭアドレスへコピー（転送）する（Ｓ４０２）。
【００６５】
次に、ブートローダー２１は、個別ファームウェア情報領域に記載された起動方法に従い、各演算処理装置を起動する（Ｓ４０３）。
【００６６】
図１１（ｂ）はステップＳ４０３の個別ファームウェア情報領域に記載された起動方法に従った起動手順を説明するフローチャート図の一例である。
【００６７】
ブートローダー２１は、圧縮情報の圧縮済みフラグが立っているか（"１"か）否かを判定する（Ｓ４０３１）。
【００６８】
圧縮済みフラグが立っていない場合（Ｓ４０３１のＮｏ）、ファームウェアは圧縮されていないので何もしない。
【００６９】
圧縮済みフラグが立っている場合（Ｓ４０３１のＹｅｓ）、ブートローダー２１はファームウェアを、圧縮情報の圧縮アルゴリズムに従って解凍する（Ｓ４０３２）。
【００７０】
次に、ブートローダー２１は、暗号化情報の暗号化済みフラグが立っているか（"１"か）否かを判定する（Ｓ４０３３）。
【００７１】
暗号化済みフラグが立っていない場合（Ｓ４０３３のＮｏ）、ファームウェアは暗号化されていないので何もしない。
【００７２】
暗号化済みフラグが立っている場合（Ｓ４０３３のＹｅｓ）、ブートローダー２１はファームウェアを、暗号化情報の復号アルゴリズムに従って復号する（Ｓ４０３４）。
【００７３】
ブートローダー２１は起動情報の起動タイプ及び起動引数に従って、ファームウェアを使用する各演算処理装置を起動する（Ｓ４０３５）。
【００７４】
図１０のステップＳ４０が個別ファームウェアの個数だけ実行されると、ブートローダー２１はＯＳを起動して、以降はＯＳの処理に移行する。
【００７５】
〔ファームウェアの更新について〕
本実施形態のＲＯＭ１６のようにファームウェアが配置されることで、ファームウェアの更新が容易になる。情報処理装置１００のＲＯＭのファームウェアの更新時、例えばユーザが特定の操作を行うか特定の方法で電源をＯＮとすることで、ＣＰＵ_０は更新プログラム１０を実行する。更新プログラム１０は外部通信Ｉ／Ｆ１７を介してサーバと通信して更新用のファームウェアを受信する。または、不図示のメモリカードからファームウェアを検出してもよい。更新プログラム１０は、更新用のファームウェアをＲＡＭなどに記憶しておき、ＲＯＭ１６のファームウェアに上書きする。
【００７６】
例えば「ＦＰＧＡ用ＦＷのみを更新したい」という場合においても、従来の更新プログラム１０はＲＯＭ１６の全体を書き換えていた。これは、ＦＰＧＡ用ＦＷがファイル単位でＲＯＭ１６に記憶されていたため、ＦＰＧＡ用ＦＷの記憶場所を特定して更新することが困難なためである。
【００７７】
本実施形態ではファイルシステムがなくても、ＲＯＭ１６におけるＦＰＧＡ用ＦＷの配置領域が明らかなので、以下のようにＦＰＧＡ用ＦＷのみを更新できる。ＦＰＧＡ用ＦＷの更新要求は、例えば、全ファームウェア情報領域の何番目などという情報で受け付けることができる。または、個別ファームウェア情報領域２７にどの演算処理装置のファームウェアであるかを示す識別情報を登録しておいてもよい。
１．更新プログラム１０は、全体ファームウェア情報領域からＦＰＧＡ用ＦＷの情報が格納された個別ファームウェア情報領域３の位置を特定する。
２．個別ファームウェア情報領域３によりＦＰＧＡ用ＦＷが配置された位置を特定し，そこを先頭として、ＲＡＭに記憶してある更新用のファームウェアで上書きする。
【００７８】
したがって、個別のファームウェアの更新は最低限の領域の書き換えで完了させることができる。
【００７９】
以上説明したように、本実施形態の情報処理装置１００は、ＲＯＭ１６に各ファームウェアの個別ファームウェア情報領域が配置されていることで、複数の演算処理装置を有する情報処理装置の起動時間を短縮できる。また、ファームウェアの更新もＲＯＭ全体でなく個別のファームウェア単位で行うことができる。
【実施例２】
【００８０】
本実施例では、実施例１のＲＯＭ１６を搭載する情報処理装置１００の好適例としてＤＭＡコントローラを有する情報処理装置１００について説明する。
【００８１】
図１２は、本実施例の情報処理装置１００の概略構成図の一例である。本実施例では、図２において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【００８２】
図１２の情報処理装置１００は新たに割込みコントローラ３２とＤＭＡコントローラ３１を有する。一般的にＤＭＡコントローラ３１は、あるアドレスから別のアドレスへデータのコピーを実行する。ＤＭＡコントローラ３１がない場合、ＣＰＵが転送単位毎にあるアドレスから別のアドレスへデータを転送する処理を繰り返す必要があるが、ＤＭＡコントローラ３１によりＣＰＵは転送元と転送先のアドレスを指定するだけでよい。これによりＣＰＵがデータコピーを行う必要がなくなり、ＣＰＵ負荷の軽減及びデータコピーされている間はＣＰＵが別の処理を実行することが可能となる。したがって、情報処理装置全体として処理時間の短縮が可能となる。また、ＤＭＡコントローラ３１のほうがデータコピーについて最適化されているため，コピー時間の短縮が可能となる。
【００８３】
さらに、ＤＭＡコントローラ３１によっては複数Ch（チャンネル）を備えるものがあり、同時に複数のデータコピー処理が可能である。
【００８４】
割込みコントローラ３２は外部通信Ｉ／Ｆ１７などのハードウェアブロックがデータの受信などをＣＰＵに通知する際、調停したりマスクするなどの割込み通知制御を行う。ＤＭＡコントローラ３１によるデータコピーの完了通知は、割込みコントローラ３２経由でＣＰＵ（ＣＰＵ_０又はＣＰＵ_１のどちらでもよい）へ割込みを通知することで行われる。
【００８５】
すなわちＣＰＵは、ＤＭＡコントローラ３１にデータコピー処理を依頼すれば，割込みによる完了通知があるまで，別作業ができるようになる。情報処理装置１００の起動時にはＲＯＭ１６のファームウェアをＲＡＭ１４に転送する処理が行われるので、この転送処理をＤＭＡコントローラ３１が行うことで起動処理に必要な時間をより短縮できる。
【００８６】
図１３（ａ）は、図８のステップＳ４０の個別ファームウェア起動処理手順を示すフローチャート図の一例である。すなわち、図１３（ａ）は、図１１（ａ）を代替する手順である。
【００８７】
ブートローダー２１は、個別ファームウェア情報領域の先頭アドレスに配置された個別ファームウェア情報領域を読込む（Ｓ４０１）。これにより、図６（ｂ）の各情報が得られる。
【００８８】
ブートローダー２１は、個別ファームウェア情報領域に記載された配置領域先頭アドレスから配置領域サイズ分の領域を展開先ＲＡＭアドレスへコピー（転送）する（Ｓ４０２）。
【００８９】
Ｓ４０２において、ブートローダー２１は起動方法を保持しておくため、ＤＭＡコントローラ３１のＣｈ番号と、個別ファームウェア情報領域の番号を紐づけて記憶しておく（Ｓ４０２１）。これにより、転送後、ファームウェアに対応した起動方法で演算処理装置を起動できる。
【００９０】
ブートローダー２１は、データコピー処理をＤＭＡコントローラ３１に依頼する（Ｓ４０２２）。データコピー処理において、ブートローダー２１は、データコピー処理をＤＭＡコントローラ３１に依頼した後、データコピーについては完了待ち状態になる。ただし、ＣＰＵは別処理が実行可能となるため、この間に次の個別ファームウェアのデータコピー処理をＤＭＡコントローラ３１の別Chに依頼することが可能となる。
【００９１】
図１３（ｂ）は、ＤＭＡコントローラ３１が転送終了した際のブートローダー２１の処理手順を示すフローチャート図の一例である。
【００９２】
依頼したDMAコントローラのCh Nによるデータコピー完了は割込みコントローラ３２経由でＣＰＵに通知される（Ｓ５０１）。
【００９３】
ＣＰＵは割込みに応じた処理として、割込みハンドラが個別ファームウェア起動処理手順をＣＰＵに実行させる（Ｓ５０２）。これでブートローダー２１は個別ファームウェア起動処理手順を開始する。
【００９４】
ブートローダー２１は、通知された後，ＤＭＡコントローラ３１のChに紐付けて記憶しておいた起動方法を実行する（Ｓ５０３）。
【００９５】
こうすることで、ＤＭＡコントローラ３１・割込みコントローラ３２がない場合と同様に、個別ファームウェアの起動が実現可能となる。
【００９６】
この方式では、ブートローダー２１が中央処理装置となるＣＰＵ（ＣＰＵ_0）上でのみ実行されるのは実施例１と同じだが、時間がかかるデータコピー処理は並列して同時に実行することが可能となり、起動時間を大きく短縮することが可能となる。
【実施例３】
【００９７】
本実施例では、ファームウェアの破損に対応した情報処理装置１００について説明する。ファームウェアの破損とは、人為的に又は電気的なノイズなどでファームウェアが書き換わることを言う。
【００９８】
図１４（ａ）は、本実施例のＲＯＭ１６に記憶されているファームウェアの配置構成例を模式的に示す図である。図５の配置構成例と比較すると、各ファームウェアのミラー領域２８として、ＯＳ（ミラー）、ＣＰＵ_１用ＦＷ（ミラー）、及び、ＦＰＧＡ用ＦＷ（ミラー）が配置されている。ミラー領域とは、ファームウェアのバックアップ用のコピーが記憶された領域であり、同じファームウェアが２つ搭載されている。なお、全てのファームウェアのミラー領域を設けなくてもよい。どのファームウェアのミラー領域を設けるかは、用意すべきＲＯＭ１６のサイズとファームウェア破損時のデメリットとを比較考量して決定すればよい。
【００９９】
ミラー領域２８は各ファームウェアの配置領域に連続しているため、個別ファームウェア情報領域により個別ファームウェアの配置領域先頭アドレスが特定できれば、ミラー領域も特定できる。
【０１００】
図１４（ｂ）は個別ファームウェア情報領域の構成を模式的に示す図の一例である。本実施例では個別ファームウェア情報領域にチェックＳＵＭが記憶されている。チェックＳＵＭは各ファームウェアのチェックＳＵＭである。したがって、ブートローダー２１はファームウェアのチェックＳＵＭを算出し、個別ファームウェア情報領域のチェックＳＵＭと比較することでファームウェアが破損しているか否かを判定できる。そして、破損している場合には、ミラー領域のファームウェアをＲＡＭ１４に転送できる。なお、チェックＳＵＭはハッシュ値など破損を検出する情報であればよい。
【０１０１】
図１５は、図１０のステップＳ４０の個別ファームウェア起動処理手順を示すフローチャート図の一例である。すなわち、図１５は、図１１（ａ）を代替する手順である。
【０１０２】
ブートローダー２１は、個別ファームウェア情報領域の先頭アドレスに配置された個別ファームウェア情報領域を読込む（Ｓ４０１）。これにより、図６（ｂ）の各情報が得られる。
【０１０３】
次に、ブートローダー２１は、チェックＳＵＭを算出し個別ファームウェア情報領域のチェックＳＵＭと比較することで、ファームウェアが破損しているか否かを判定する（Ｓ４０１１）。
【０１０４】
ファームウェアが破損していない場合（Ｓ４０１１のＮｏ）、ブートローダー２１は、個別ファームウェア情報領域に記載された配置領域先頭アドレスから配置領域サイズ分の領域を，展開先ＲＡＭアドレス へコピー（転送）する（Ｓ４０２）。
【０１０５】
ファームウェアが破損している場合（Ｓ４０１１のＹｅｓ）、ブートローダー２１は、個別ファームウェア情報領域に記載された配置領域先頭アドレスに連続したミラー領域から配置領域サイズ分の領域を，展開先ＲＡＭアドレスへコピー（転送）する（Ｓ４０１２）。なお、ミラー領域からファームウェアをコピーする前にミラー領域のファームウェアについても破損の有無を判定することが好ましい。
【０１０６】
次に、ブートローダー２１は、個別ファームウェア情報領域に記載された起動方法に従い、配置した各演算処理装置を起動する（Ｓ４０３）。
【０１０７】
したがって、本実施例によれば、ミラー領域を設けることで情報処理装置１００が動作できなくなる頻度を少なくできる。
【実施例４】
【０１０８】
本実施例では、実施例１〜３の情報処理装置１００を適用した装置について説明する。
【０１０９】
図１６は、画像形成装置のハードウェア構成図の一例を示す。画像形成装置３００は、コントローラ１３０と、オペレーションパネル１２５と、ファクシミリコントロールユニット（ＦＣＵ）１２６と、撮像部１２７及び印刷部１２８を有する。
【０１１０】
コントローラ１３０は、ＣＰＵ１１４と、ＡＳＩＣ１１６と、ＮＢ（ノースブリッジ）１１５と、ＳＢ（サウスブリッジ）１１７と、ＭＥＭ−Ｐ（システムメモリ）１１１と、ＭＥＭ−Ｃ（ローカルメモリ）１１２と、ＨＤＤ（ハードディスクドライブ）１１３と、メモリカードスロット１２３と、ＮＩＣ（ネットワークインタフェースコントローラ）１１８と、ＵＳＢデバイス１１９と、ＩＥＥＥ１３９４デバイス１２１と、セントロニクスデバイス１２２とを有する。
【０１１１】
ＣＰＵ１１４は、種々の情報処理を実行するためのＩＣであり、アプリやプラットフォーム、オプションパッケージをＵＮＩＸ（登録商標）等のＯＳによりプロセス単位で並列的に実行する。ＡＳＩＣ１１６は、画像処理用のＩＣである。ＮＢ１１５は、ＣＰＵ１１４とＡＳＩＣ１１６を接続するためのブリッジである。ＳＢ１１７は、ＮＢ１１５と周辺機器等を接続するためのブリッジである。ＡＳＩＣ１１６とＮＢ１１５は、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ）を介して接続されている。
【０１１２】
ＭＥＭ−Ｐ１１１は、ＮＢ１１５に接続されたメモリである。ＭＥＭ−Ｃ１１２は、ＡＳＩＣ１１６に接続されたメモリである。ＨＤＤ１１３は、ＡＳＩＣ１１６に接続されたストレージであり、画像データ蓄積・文書データ蓄積・プログラム蓄積・フォントデータ蓄積・フォームデータ蓄積等を行うために使用される。ＨＤＤ１１３には上記の種々のアプリ、及び、プログラム１３１が記憶されている。
【０１１３】
メモリカードスロット１２３は、ＳＢ１１７に接続され、メモリカード１２４をセット（挿入）するために使用される。メモリカード１２４は、ＵＳＢメモリ、ＳＤメモリ等のフラッシュメモリであり、プログラム１３１を配布するために使用される。また、プログラム１３１は所定のサーバから画像形成装置３００にダウンロードして配布することもできる。
【０１１４】
ＮＩＣ１１８は、ネットワーク４００等を介してＭＡＣアドレス等を使用したデータ通信を行うためのコントローラである。ＵＳＢデバイス１１９は、ＵＳＢ規格に準拠したシリアルポートを提供するためのデバイスである。ＩＥＥＥ１３９４デバイス１２１は、ＩＥＥＥ１３９４規格に準拠したシリアルポートを提供するためのデバイスである。セントロニクスデバイス１２２は、セントロニクス仕様に準拠したパラレルポートを提供するためのデバイスである。ＮＩＣ１１８と、ＵＳＢデバイス１１９と、ＩＥＥＥ１３９４デバイス１２１と、セントロニクスデバイス１２２と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＮＢ１１５とＳＢ１１７に接続されている。
【０１１５】
オペレーションパネル１２５は、ユーザが画像形成装置３００に入力を行うためのハードウェア（操作部）であると共に、画像形成装置３００がメニュー画面を表示するハードウェア（表示部）である。オペレーションパネル１２５は、ＡＳＩＣ１１６に接続されている。ＦＣＵ１２６と、撮像部１２７と、印刷部１２８は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＡＳＩＣ１１６に接続されている。
【０１１６】
このような画像形成装置３００では、ＣＰＵ１１４が中央処理装置としてのＣＰＵであり、ＡＳＩＣ１１６が他の演算処理装置となる。また、ＭＥＭ−Ｃ１１２又はＨＤＤ１１３には全ファームウェア情報領域２６と個別ファームウェア領域とが配置されている。ＨＤＤ１１３に記憶する場合、ファイルシステムを使用しないので、トラック番号とセクタ番号でファームウェアの配置領域を指定する。
【０１１７】
図１７は、車載カメラ２００のハードウェア構成図の一例を示す。車載カメラ２００は、撮像センサ２０１、画像処理ＩＣ２０２、ＲＯＭ２０３、及び、ＳＤＲＡＭ２０４等を有している。レンズや操作部などは省略した。なお、車載カメラ２００は、車両の周囲を撮影するカメラであり、ルームミラー、ドアミラー、車体ボディなどの任意の場所に配置される。そして、配置された場所に応じて障害物の認識や歩行者の認識などを行う。なお、車載カメラ２００はステレオカメラでもよい。
【０１１８】
ＳＤＲＡＭ２０４は、画像データを一時的に記憶する高速な揮発性のメモリである。各種のフォーマット（ＲＡＷ−ＲＧＢ、ＹＵＶ、ＪＰＥＧ）の画像データが記憶される。最終的な画像データは、ＮＶＲＡＭ２１７に記憶される。
【０１１９】
撮像センサ２０１は、ＣＣＤやＣＭＯＳなどの受光センサ、ＴＧ（タイミングジェネレータ）、及び、Ａ／Ｄ変換器等を有する。ＴＧは、クロック信号から垂直同期信号ＶＤ、水平同期信号ＨＤを生成し、撮像センサはこれらの信号で同期検出して、ＲＧＢ又はYCrCbを色空間とする画像信号を作成する。
【０１２０】
画像処理ＩＣ２０２は、センサＩ／Ｆ２１１、メモリコントローラ２１２、ＹＵＶ変換部２１５、圧縮伸張部２１４、ＣＰＵ２１６、ＮＶＲＡＭ２１７、及び、表示出力制御部２１３、を有する。センサＩ／Ｆ２１１は撮像センサからＡ／Ｄ変換されたデジタルの画像データを取得する。また、センサＩ／Ｆは、ブロック内に取り込まれた画像データよりＡＷＢ（オートホワイトバランス）評価値、画面の合焦度合いを示すＡＦ（オートフォーカス）評価値、及び、被写体輝度を検出したＡＥ（Automatic Exposure：自動露光）評価値、を算出する。
【０１２１】
ＡＦ完了後に撮像センサから出力されセンサＩ／Ｆが取り込んだ画像信号は、メモリコントローラ２１２によりＳＤＲＡＭ２０４に格納される。
【０１２２】
メモリコントローラ２１２は、画像データをＳＤＲＡＭ２０４から読み出し、ＹＵＶ変換部２１５に送出する。ＹＵＶ変換部２１５は、ＲＧＢ信号をＹＵＶ信号に変換しメモリコントローラに送出するので、メモリコントローラは、ＹＵＶ信号をＳＤＲＡＭに記憶する。ＹＵＶ信号に変換するのは、ＲＧＢ信号よりも容量を小さくできるためと、ディスプレイのビデオ信号への変換が容易になるためである。メモリコントローラ２１２は、ＹＵＶ信号を読み出して表示出力制御部に出力する。表示出力制御部２１３はＹＵＶの画像データをＮＴＳＣ信号やＰＡＬ信号などのビデオ信号に変換し、ディスプレイ（不図示）に出力する。画像処理ＩＣ２０２は、画像信号からビデオ信号への変換までの処理を１／３０秒間隔で繰り返す。
【０１２３】
圧縮伸張部２１４は、ユーザが動画撮像を選択した場合、一連のＹＵＶの画像データに圧縮処理を施して、ＡＶＩ（Open DML Motion JPEG フォーマット準拠）やＪＰＥＧ ベースライン方式に準拠したフォーマットに変換する（圧縮する）。また、静止画の画像データを記録する際、圧縮伸張部はＪＰＥＧの画像データを作成する。
【０１２４】
ＲＯＭ２０３にはＣＰＵ２１６が画像処理ＩＣ２０２を制御するためのファームウェアが記憶されている。このような車載カメラでは、ＣＰＵ２１６が中央処理装置としてのＣＰＵであり、センサＩ／Ｆ２１１、ＹＵＶ変換部２１５、及び、圧縮伸張部２１４が他の演算処理装置となる。ＹＵＶ変換部、及び、圧縮伸張部は、例えば、ＤＳＰを実体とする。ＲＯＭ１６には、全ファームウェア情報領域と個別ファームウェア領域とが配置されている。
【０１２５】
このように、本実施形態の情報処理装置１００は画像形成装置３００や車載カメラ２００などに好適に適用可能である。
【符号の説明】
【０１２６】
１１、１２    ＣＰＵ
１３    ＦＰＧＡ
１４    ＲＡＭ
１５    ハードウェアブロック電力供給部
１６    ＲＯＭ
１７    外部通信Ｉ／Ｆ
１８    入出力Ｉ／Ｆ
２１    ブートローダー
２６    全ファームウェア情報領域
２７    個別ファームウェア情報領域
１００  情報処理装置
【先行技術文献】
【特許文献】
【０１２７】
【特許文献１】特開2001-306307号公報
【図１】
2014235590.tif 000003
【図２】
2014235590.tif 000004
【図３】
2014235590.tif 000005
【図４】
2014235590.tif 000006
【図５】
2014235590.tif 000007
【図６】
2014235590.tif 000008
【図７】
2014235590.tif 000009
【図８】
2014235590.tif 000010
【図９】
2014235590.tif 000011
【図１０】
2014235590.tif 000012
【図１１】
2014235590.tif 000013
【図１２】
2014235590.tif 000014
【図１３】
2014235590.tif 000015
【図１４】
2014235590.tif 000016
【図１５】
2014235590.tif 000017
【図１６】
2014235590.tif 000018
【図１７】
2014235590.tif 000019