JP2014235590A - 情報処理装置、画像形成装置、カメラ - Google Patents
情報処理装置、画像形成装置、カメラ Download PDFInfo
- Publication number
- JP2014235590A JP2014235590A JP2013117011A JP2013117011A JP2014235590A JP 2014235590 A JP2014235590 A JP 2014235590A JP 2013117011 A JP2013117011 A JP 2013117011A JP 2013117011 A JP2013117011 A JP 2013117011A JP 2014235590 A JP2014235590 A JP 2014235590A
- Authority
- JP
- Japan
- Prior art keywords
- information
- software
- arithmetic processing
- address
- firmware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】コスト高及び起動時のオーバーヘッドを抑制した情報処理装置を提供する。
【解決手段】他の演算処理装置に対し起動処理を行う第1の演算処理装置と、第1の演算処理装置により起動処理が行われる1つ以上の第2の演算処理装置と、前記第2の演算処理装置が実行するか又は前記第2の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、当該情報処理装置の起動時又はリセット時、前記第1の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、先頭アドレスと前記サイズで指定される各ソフトウェアを前記第2の演算処理装置にそれぞれ実行開始させるか又は前記第2の演算処理装置に設定する、情報処理装置を提供する。
【選択図】図1
【解決手段】他の演算処理装置に対し起動処理を行う第1の演算処理装置と、第1の演算処理装置により起動処理が行われる1つ以上の第2の演算処理装置と、前記第2の演算処理装置が実行するか又は前記第2の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、当該情報処理装置の起動時又はリセット時、前記第1の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、先頭アドレスと前記サイズで指定される各ソフトウェアを前記第2の演算処理装置にそれぞれ実行開始させるか又は前記第2の演算処理装置に設定する、情報処理装置を提供する。
【選択図】図1
Description
本発明は、複数の演算処理装置でソフトウェアを実行可能な情報処理装置等に関する。
多くの装置に組み込み系マイコンが搭載されている。組み込み系マイコンは、少なくとも1つのCPU、不揮発性メモリ(ROM),及び、揮発性メモリ(RAM)を備えた電子計算機アーキテクチャをベースにしている。組み込み系マイコンにおいても汎用的なマイコンと同様には、複数のCPU,GPU(General Processing Unit),DSP(Digial Signal Processor)などが組み合わせて搭載されるようになっており、高性能化・低電力化が進められている。
GPU及びDSPはプログラムを実行するという点ではCPUと同じ演算処理装置である。複数の演算処理装置を有する組み込み系マイコンでは、中央制御装置となる1つのCPUが全体を制御し、他の演算処理装置(他のCPU,GPU, DSPなど)が実行するプログラムコードを決定し、処理を配分する制御態様が一般的である。不揮発性メモリ上(ROM:例えばFlashROM, EEPROM,SSDなど)には中央制御装置となるCPUのみが実行したり他の演算処理装置に実行させることが可能なソフトウェアが配置されている。
このような制御態様は、中央制御装置となる1つのCPUにより制御が可能なため、制御対象となる演算処理装置(他のCPU、GPU、DSPなど)の操作を容易にする反面、処理のオーバーヘッドが犠牲となるという不都合があった。例えば、DSPが起動直後から特定の演算を早い段階から行う場合でも、中央制御装置となるCPUがソフトウェアを実行してDSPを制御するまで待つ時間が必要であった。
また、組み込み系マイコンにFPGA(Field Programmable Gate Array)といったプログラマブルなハードウェアデバイスが採用され始めているが、FPGAは起動時に中央制御装置となるCPUがコンフィグレーションを行うだけで,以降は中央制御装置のCPUからの操作・制御を必要としない。しかし、FPGAのコンフィグレーションデータは、リバースエンジニアリングによる技術情報の漏洩を防ぐため、製品によっては暗号化されている。このため、中央制御装置となるCPUによる復号を含むコンフィグレーションをなくすことはできない。
このように複数の演算処理装置を備えた従来の一般的な組込み系マイコンでは、オーバーヘッドが大きいという問題がある。
オーバーヘッドを低減する1つの方法として、各々のプロセッサにプログラムを格納するROMを設けることが考えられる(例えば、特許文献1参照。)。特許文献1には、プロセッサグループごとにファームウェアが格納されたFEEROMからのファームウェア読み出しにより、アクセス速度の遅い診断経路からのファームウェア読み出しを極力避け、システム診断時間を短縮するマルチプロセッサが開示されている。
しかしながら、特許文献1では、プロセッサごとにROMが必要になり、コスト高、システムの巨大化をもたらすという問題がある。
本発明は、上記課題に鑑み、コスト高及び起動時のオーバーヘッドを抑制した情報処理装置を提供することを目的とする。
上記課題に鑑み、本発明は、他の演算処理装置に対し起動処理を行う第1の演算処理装置と、前記第1の演算処理装置により起動処理が行われる1つ以上の第2の演算処理装置と、前記第2の演算処理装置が実行するか又は前記第2の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、当該情報処理装置の起動時又はリセット時、前記第1の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、前記先頭アドレスと前記サイズで指定される各ソフトウェアを前記第2の演算処理装置にそれぞれ実行開始させるか又は前記第2の演算処理装置に設定する、ことを特徴とする情報処理装置を提供する。
コスト高及び起動時のオーバーヘッドを抑制した情報処理装置を提供することができる。
図1は、本実施形態の情報処理装置の概略的な動作を説明する図の一例である。
起動した情報処理装置のCPUはまずブートローダーを実行する。ブートローダーは個別ファームウェア情報領域1の先頭アドレスを保持しており、個別ファームウェア情報領域1の先頭アドレス、個別ファームウェア情報領域2の先頭アドレス、個別ファームウェア情報領域3の先頭アドレス、を順番に読み取る。
起動した情報処理装置のCPUはまずブートローダーを実行する。ブートローダーは個別ファームウェア情報領域1の先頭アドレスを保持しており、個別ファームウェア情報領域1の先頭アドレス、個別ファームウェア情報領域2の先頭アドレス、個別ファームウェア情報領域3の先頭アドレス、を順番に読み取る。
次に、個別ファームウェア情報領域1の先頭アドレスを起点にして個別ファームウェア情報領域1の個別ファームウェア情報を読み出す。個別ファームウェア情報にはそれぞれのファームウェア1の先頭アドレス、サイズなどが記憶されている。したがって、ファームウェア1の格納場所からファームウェア1を読み出しファームウェア1を実行する演算処理装置を起動できる。ブートローダーは、ファームウェア2、ファームウェア3についても同様の処理を行う。
このように、ROM内に、全てのファームウェアの個別ファームウェア情報(各演算処理装置用のファームウェアの正確な配置場所)が記憶されているので、ブートローダーは個別ファームウェア情報を走査することで、各演算処理装置に適切なファームウェアを提供ができる。1つのROMを走査するだけでよいため、起動時間を短くすることができる。また、演算処理装置毎に複数のROMを必要とすることもないので、部品数を増やすこともない。開発者は個別ファームウェア情報を最小限の手間でかつ柔軟に設定できる。
また、従来は、情報処理装置が各演算処理装置のファームウェアの設定をそれぞれファイルとして保持していたが、個別ファームウェア情報はファイルでなく所定のアドレスに記憶されているので、ファイルシステムを立ち上げる必要がない。
したがって、本実施形態の情報処理装置は、コスト増を抑制して起動時のオーバーヘッドを抑制することができる。
〔構成例〕
図2は、本実施形態の情報処理装置の概略構成図の一例である。この情報処理装置100は、組み込みマイコン、組み込みシステムなどと呼ばれ、例えば、画像形成装置、プロジェクタ、テレビ会議端末、車載カメラなどに搭載されうる。また、装置に予め組み込まれる場合の他、一般的なPC(Personal Computer)にも適用可能である。
図2は、本実施形態の情報処理装置の概略構成図の一例である。この情報処理装置100は、組み込みマイコン、組み込みシステムなどと呼ばれ、例えば、画像形成装置、プロジェクタ、テレビ会議端末、車載カメラなどに搭載されうる。また、装置に予め組み込まれる場合の他、一般的なPC(Personal Computer)にも適用可能である。
情報処理装置100は、一般的な構成としてバスに接続されたCPU11(以下、CPU_0という)、ROM16、RAM14、外部通信I/F17、入出力I/F18、及び、ハードウェアブロック電力供給部15を有する。CPU_0は中央処理装置としてのCPUである。さらに、CPU_0以外の演算処理装置として、CPU12(以下、CPU_1という)、FPGA13を有している。演算処理装置としては、GPU(General Processing Unit),DSP(Digial Signal Processor)、ASIC(Application Specific Integrated Circuit)、及び、SoC(System-on-a-Chip)なども含まれ、ファームウェアを実行するハードウェアブロック又はファームウェアが設定されるハードウェアブロックであれば演算処理装置となりうる。
なお、複数のCPU(CPU_0、CPU_1)を有する場合、全く同じ構造のCPUを複数、搭載するSMP(Symmetric Multi Processor)という実装態様や、構造が異なるCPUを搭載するAMP(Asymmertic Multi Processor)という実装態様などがある。また、一部のCPUコアをAMPとして実装し、残りのCPUコアをSMPとして実装するBMP(Bound Multiprocessing)という実装態様もある。
SMP構成では、全てのCPUが全く同じファームウェアを実行することが可能だが、AMPでは各CPUに異なるファームウェアを用意する必要がある。CPU以外の演算処理装置(図2のFPGA13)も異なる演算処理装置という意味ではAMP構成の1つの演算処理装置であり、固有のファームウェアを必要とする。すなわち、AMPでは、CPUを他の演算処理装置の1つとして扱えばよい。
ROM16 は、ファームウェアを記憶するための不揮発メモリである。例えば、Flash ROM, EEPROM,SSD(Solid State Drive)などで構成されるがこれらに限られるものではない。また、ROM16は基板やチップの外部に外付けされていてもよい。情報処理装置100の電源投入時又はリセット時、CPU_0はブートローダーを実行することで、ROM16ファームウェアをRAM14に展開し、各演算処理装置がファームウェアを実行することを可能にする。ファームウェアとは、厳密な定義はないが、主にハードウェアを制御するために機器に組み込まれたソフトウェアである。PCなどの汎用的なCPUが実行するソフトウェア(プログラム)と対比して使用されるが、区別することなく単にソフトウェアと称してもよい。
外部通信I/F17は、例えばLANやインターネットなどのネットワークに接続するネットワークカードである。情報処理装置100は外部通信I/F17を介してネットワークに接続されているサーバなどとデータを送受信する。また、外部通信I/F17は、3G、LTE(Long Term Evolution)などと呼ばれる長距離無線通信網に接続するものでもよい。
入出力I/F18は、マウス、キーボード、タッチパッドなどユーザ操作を受け付ける装置のインタフェースである。タッチパネルと共に又は単独のディスプレイと接続するためのインタフェースを備えていてもよい。
ハードウェアブロック電力供給部15は、ハードウェアブロックへの電力供給を制御する。起動時は全てのハードウェアブロックに電力を供給し、操作や外部通信などのイベントが検出されないと、予め決められたハードウェアブロックへの電力供給を停止して、低電力状態へ移行する。また、イベントが検出されると、復帰のために電力供給を再開する。
〔ROMに記憶されているファームウェアについて〕
図3は、比較のために示した、従来のROMに記憶されているファームウェアの配置構成例を模式的に示す図である。ブートローダー21は、情報処理装置100の起動時又はリセット時に、最初に実行されるソフトウェアであり、ハードウェアを初期化したり、OS22をRAM14に展開しCPUがOS22を実行できるようにプログラムカウンタ(特許請求の範囲の実行開始アドレスの一例である)にアドレスを設定するなどの処理を行う。
図3は、比較のために示した、従来のROMに記憶されているファームウェアの配置構成例を模式的に示す図である。ブートローダー21は、情報処理装置100の起動時又はリセット時に、最初に実行されるソフトウェアであり、ハードウェアを初期化したり、OS22をRAM14に展開しCPUがOS22を実行できるようにプログラムカウンタ(特許請求の範囲の実行開始アドレスの一例である)にアドレスを設定するなどの処理を行う。
ROM16には、ファイルシステム20により管理されるOS22,CPU_1用FW23、FPGA用FW24、及び、起動に関する設定記述25が記憶されている。CPU_1用FW23はCPU_1が実行するファームウェアであり、FPGA用FW24はFPGA13に設定されるコンフィグレーションデータである。起動に関する設定記述25について詳しくは後述するが、各ファームウェアの配置場所、サイズやRAM14上の転送先などが記述されている。
このように、従来のROM16には、ファイルシステム20が搭載されることが多い。ファイルシステムは、ROM16に記憶されているデータのひとまとまりをファイルとして扱い、ファイル名、ファイルの保存場所、更新時刻などを管理する。また、ファイルを格納するためのフォルダ(ディレクトリ)を作成し、フォルダ間の繋がり(例えば、ツリー構造)を管理する。ユーザからはファイル名でファイルを認識できるので、ファイルの格納アドレスなどを意識する必要が無く、ファイル名を指定すればファイルシステムがファイルを提供してくれる。
ファイルシステムは、UNIX(登録商標)、Linux(登録商標)、Windows(登録商標)、MacOS(登録商標)、iOS(登録商用)などの汎用のオペレーティングシステムで長年、培われてきたため、非常に高機能なファイル管理を可能とする。しかし、高機能であるがゆえに複雑な処理・実装が必要であり、システムの規模(ソフトウェアサイズ)が大きく、情報処理装置100に対しても一定以上の処理能力が要求される。このため、組込み向け系マイコンでは、ソフトウェアサイズの増大によるROM容量の圧迫、実行時の処理負荷の増大といったデメリットが無視できない。
また、情報処理装置100の起動時には、ファイルシステムの処理負荷が、中央制御装置となるCPUが他の演算処理装置にファームウェアを実行させる際のオーバーヘッドをもたらす。また、ファイルシステムは、情報処理装置100の開発時のコストや開発工程の増大といったデメリットをもたらす。
具体的には、図4の起動処理に示すように、従来のROM16では起動に時間がかかってしまうという不都合がある(オーバーヘッドが大きくなる)。図4は、中央制御装置となるCPUが他の演算処理装置にファームウェアを実行させる処理手順の一例を示すフローチャート図である。
情報処理装置100が起動又はリセットされると、中央制御装置となるCPUがリセットベクタアドレスにあるブートローダー21を起動する(S1)。リセットベクタアドレスは、起動又はリセット時にCPUが最初に実行するアドレスであり、このアドレスにブートローダー21が配置されたアドレスへのGoTo命令が記述されている。
ブートローダー21は、ハードウェアの初期化を実行する(S2)。具体的には、他の演算処理装置を含むハードウェアのレジスタに初期値を設定したり、ハードウェア内のキャッシュメモリやRAM14の内容をゼロにクリアする。
次に、ブートローダー21は、ファイルシステムを解釈し、起動に関する設定記述25を読み出し、設定に従いOSを起動する(S3)。ファイルシステムを解釈するとは、ファイルシステムが管理するフォルダの構造(ツリー構造)を把握し、各ファイルが格納されているフォルダを特定することである。OS,CPU_1用FW23、FPGA用FW24、及び、起動に関する設定記述25はファイルとしてROM16に記憶されているので、ファイルシステムを解釈することでこれらのファイルを読み出すことができる。
ブートローダー21は、設定記述が指定するOSのファイルを読み出してRAM14に転送し、CPU_0のプログラムカウンタにOSの先頭アドレスを設定することで、OSを起動する。これにより、CPU_0はブートローダー21の処理からOSの処理に移行するが、OSの起動順序によっては引き続きブートローダー21が処理を継続する。以下の処理はブートローダー21又はOSのどちらが行ってもよい。
ブートローダー21又はOSは、ファイルシステムを解釈し、起動に関する設定記述25を読み出し、設定に従いCPU_1を起動する(S4)。ブートローダー21又はOSは、設定記述が指定するCPU_1用FW23のファイルを読み出してRAM14に転送し、CPU_1のプログラムカウンタにCPU_1用FW23の先頭アドレスを設定し、レジスタに起動開始のための値を設定することでCPU_1を起動する。
次に、ブートローダー21又はOSは、ファイルシステムを解釈し、起動に関する設定記述25を読み出し、設定に従いFPGA13を起動する(S5)。ブートローダー21又はOSは、設定記述が指定するFPGA用FW(コンフィグレーションデータ)24のファイルを読み出してFPGA13に設定し(コンフィグレーション)、レジスタに起動開始のための値を設定することでFPGA13を起動する。
このように、従来のROM構造では、ファイルシステムを解釈してファイルを読み出したり、起動に関する設定記述25も解釈するなどの処理が必要でそれがオーバーヘッドの一因となっていた。
図5は、本実施形態のROM16に記憶されているファームウェアの配置構成例を模式的に示す図である。まず、本実施形態ではROM16にファイルシステムが格納されない。また、全ファームウェア情報領域26、及び、個別ファームウェア情報領域27(区別する場合、個別ファームウェア情報領域1〜3という)が記憶されている。更新プログラム10については後述する。
図6(a)は全ファームウェア情報領域26の構成を模式的に示す図の一例である。全ファームウェア情報領域26には全ての演算処理装置の個別ファーム情報領域の先頭アドレスが記述されている。すなわち、CPU_0、CPU_1、及び、FPGA13のファームウェアの先頭アドレスが記憶されている。各先頭アドレスを記憶するためのバイト数は共通である。個別ファーム情報領域1〜3の先頭アドレスにより、ブートローダー21は個別ファーム情報領域を特定できる(アクセスできる)。なお、後に個別ファーム情報領域1〜3の個数が必要になるが、個別ファーム情報領域1〜3の個数は、例えば、全ファームウェア情報領域26の先頭に登録されている。または、全ファームウェア情報領域26の終端に配置されたEoF(End Of File)までの先頭アドレスの数(又はバイト数)から個別ファーム情報領域の個数が分かるようになっている。
図6(b)は個別ファームウェア情報領域の構成を模式的に示す図の一例である。個別ファームウェア情報領域1〜3の構成は共通でよいが、異なっていてもよい。1つの個別ファームウェア情報領域には、「個別ファームウェアの配置領域先頭アドレス」「個別ファームウェアの配置領域サイズ」「個別ファームウェアの展開先RAMアドレス」「個別ファームウェアの起動方法」が記憶されている。「個別ファームウェアの配置領域先頭アドレス」は、ROM16における個別ファームウェアの配置領域の先頭アドレスである。「個別ファームウェアの配置領域サイズ」は、個別ファームウェアのサイズである。「個別ファームウェアの展開先RAMアドレス」は、RAM14における転送先アドレスである。「個別ファームウェアの起動方法」については後述する。
図6(c)は、「個別ファームウェアの起動方法」について説明する図の一例である。個別ファームウェアの起動方法は、圧縮情報(圧縮済みフラグ、圧縮アルゴリズム)、暗号化情報(暗号化済みフラグ、復号アルゴリズム)、及び、起動情報(起動タイプ、起動引数)を有している。圧縮済みフラグはファームウェアが圧縮されている場合に"1"となるフラグであり、圧縮アルゴリズムはZIP、CAB、LZHなどの圧縮方法の識別情報が格納される。
暗号化済みフラグはファームウェアが暗号化されている場合に"1"となるフラグであり、復号アルゴリズムはAES、RC5、Triple DESなどの圧縮方法の識別情報が格納される。なお、復号キー(暗号キーと同じでも異なっていてもよい)は暗号化モジュール(不図示)の不揮発メモリに記憶されており、暗号化モジュール以外は読み出せないようになっている。
起動タイプは、ファームウェア(演算処理装置)がどのような起動引数を必要とし、起動するためにどのような処理が必要かを示す情報で、起動タイプに応じて起動引数の数や起動引数の設定方法が変わる。したがって、起動引数は複数の場合がある。また、ない場合もある。
図7は、起動タイプと起動引数の具体例を説明する図の一例である。5つの起動タイプとその起動タイプに対応した起動引数が定められている。起動タイプが定まれば、ブートローダーは具体的な起動手順で動作することができる。
・起動タイプ00000000は起動引数が不要な演算処理装置であることを示す。具体的には、転送先のRAM14の先頭アドレスから実行開始する、ことを意味する。
・起動タイプ00000001は起動引数がアドレスであることを示す。具体的には、転送先のRAM14の先頭アドレスに起動引数で指定されたアドレスを加えたアドレスから実行開始する、ことを意味する。
・起動タイプ00000100は起動引数が「アドレス+値」であることを示す。すなわち、起動引数は2つである。「アドレス+値」のセットを複数指定することもできる。具体的には、起動引数で指定されたアドレスに対し、起動引数で指定された値を書き込む、ことを意味する。起動引数で指定されたアドレスは例えばレジスタであり、このレジスタに指定された値を設定することで演算処理装置が起動する。また、起動引数を「アドレス+アドレス」としてもよい。前半のアドレスの役割は同じであり、値が設定されるレジスタなどのアドレスである。後半のアドレスは、転送先RAMアドレス(復号される場合は復号の後)のファームウェアを指定するアドレスとする。例えば、FPGAでは、任意のレジスタにファームウェア(コンフィグレーションデータ)を設定する(コンフィグレーションする)ことが可能である。
・起動タイプ00000200は起動引数が「アドレス+ビットパターン」であることを示す。すなわち、起動引数は2つである。具体的には、起動引数で指定されたアドレスからデータを読み、起動引数で指定されたビットパターンとOR演算して、起動引数で指定されたアドレスに書き込む、ことを意味する。情報処理装置100の起動時に所定の初期値になるレジスタに対しビットパターンをOR演算して設定することで、演算処理装置が起動する。
・起動タイプ00000400は起動引数が「アドレス+ビットパターン」であることを示す。OR演算がAND演算になる以外は起動タイプ00000200と同じである。
・起動タイプ00000000は起動引数が不要な演算処理装置であることを示す。具体的には、転送先のRAM14の先頭アドレスから実行開始する、ことを意味する。
・起動タイプ00000001は起動引数がアドレスであることを示す。具体的には、転送先のRAM14の先頭アドレスに起動引数で指定されたアドレスを加えたアドレスから実行開始する、ことを意味する。
・起動タイプ00000100は起動引数が「アドレス+値」であることを示す。すなわち、起動引数は2つである。「アドレス+値」のセットを複数指定することもできる。具体的には、起動引数で指定されたアドレスに対し、起動引数で指定された値を書き込む、ことを意味する。起動引数で指定されたアドレスは例えばレジスタであり、このレジスタに指定された値を設定することで演算処理装置が起動する。また、起動引数を「アドレス+アドレス」としてもよい。前半のアドレスの役割は同じであり、値が設定されるレジスタなどのアドレスである。後半のアドレスは、転送先RAMアドレス(復号される場合は復号の後)のファームウェアを指定するアドレスとする。例えば、FPGAでは、任意のレジスタにファームウェア(コンフィグレーションデータ)を設定する(コンフィグレーションする)ことが可能である。
・起動タイプ00000200は起動引数が「アドレス+ビットパターン」であることを示す。すなわち、起動引数は2つである。具体的には、起動引数で指定されたアドレスからデータを読み、起動引数で指定されたビットパターンとOR演算して、起動引数で指定されたアドレスに書き込む、ことを意味する。情報処理装置100の起動時に所定の初期値になるレジスタに対しビットパターンをOR演算して設定することで、演算処理装置が起動する。
・起動タイプ00000400は起動引数が「アドレス+ビットパターン」であることを示す。OR演算がAND演算になる以外は起動タイプ00000200と同じである。
起動タイプ00000000では起動引数が不要であり、圧縮情報と暗号化情報も圧縮又は暗号化していなければ不要である。また、個別ファームウェア情報の展開先RAMアドレスも、演算処理装置がRAM14に展開せずにROM16からファームウェアを実行する場合は不要である。したがって、個別ファームウェア情報では、配置領域先頭アドレスと配置領域サイズ以外の情報は必ずしも必須でない。
図6,7に示した全ファームウェア情報領域26と個別ファームウェア情報領域とにより、情報処理装置100の起動時のオーバーヘッドを抑制できる。ブートローダー21は以下のような手順で演算処理装置を起動する。なお、ブートローダー21には全ファームウェア情報領域26の先頭アドレスが登録されている。
(i) ブートローダー21は、起動時には全ファームウェア情報領域26を読み込み、各個別ファームウェア情報領域1〜3が配置された場所(アドレス)を特定する
(ii) 次に、各個別ファームウェア情報領域1〜3を順に読み込み、個別ファームウェアが実際に記憶されているROM16の先頭アドレスとサイズを特定する。
(iii) 個別ファームウェアをRAM14の指定された展開先RAMアドレスに展開する。
(iv) 個別ファームウェア情報領域の起動方法に記述された処理を実行することで、各CPUまたは他の演算処理装置を起動処理する。
(i) ブートローダー21は、起動時には全ファームウェア情報領域26を読み込み、各個別ファームウェア情報領域1〜3が配置された場所(アドレス)を特定する
(ii) 次に、各個別ファームウェア情報領域1〜3を順に読み込み、個別ファームウェアが実際に記憶されているROM16の先頭アドレスとサイズを特定する。
(iii) 個別ファームウェアをRAM14の指定された展開先RAMアドレスに展開する。
(iv) 個別ファームウェア情報領域の起動方法に記述された処理を実行することで、各CPUまたは他の演算処理装置を起動処理する。
このように、個別ファームウェア情報には、起動に関する最小限のパラメータのみを記述することで、起動時のオーバーヘッドを抑制できる。すなわち、ブートローダー21は起動に関する最小限のパラメータを走査すればよいので、起動時間を短くすることができる。また、ファイルシステムが不要なので、ファイルシステムの解釈や起動に関する設定記述25の読み出し・解釈も不要であるため、起動時間を短くすることができる。また、ROM16の圧迫や開発コスト等の増大を抑制できる。
〔個別ファームウェア起動情報のフォーマット例〕
個別ファームウェア起動情報のフォーマット例について補足する。個別ファームウェア情報領域において、圧縮情報、暗号化情報、及び、起動情報の順に配置されていたとしても、どこからどこまでがどの情報かをブートローダー21が判別できないおそれがある(判別するには圧縮情報、暗号化情報、及び、起動情報のサイズが固定である必要がある)。
個別ファームウェア起動情報のフォーマット例について補足する。個別ファームウェア情報領域において、圧縮情報、暗号化情報、及び、起動情報の順に配置されていたとしても、どこからどこまでがどの情報かをブートローダー21が判別できないおそれがある(判別するには圧縮情報、暗号化情報、及び、起動情報のサイズが固定である必要がある)。
そこで、好ましくは、図8(a)(b)に示すようなフォーマットで個別ファームウェア起動情報を格納する。
図8(a)は、冗長領域を利用した個別ファームウェア起動情報のフォーマット例を示す。
・個別ファームウェア起動情報の全体としてのサイズは固定とする(予め決まっている)。加えて、そのサイズは充分余裕のある大きいサイズである。
・圧縮情報、暗号化情報及び起動情報も全て,そのサイズは固定である。加えて,そのサイズは充分余裕のある大きいサイズである。
・固定のサイズに対して圧縮情報,暗号化情報及び起動情報の具体的なサイズでは使用されなかった領域はPadding領域(冗長領域)として,専用のデータ(例えば,0x00等)で埋めておく。
・個別ファームウェア起動情報の全体としてのサイズは固定とする(予め決まっている)。加えて、そのサイズは充分余裕のある大きいサイズである。
・圧縮情報、暗号化情報及び起動情報も全て,そのサイズは固定である。加えて,そのサイズは充分余裕のある大きいサイズである。
・固定のサイズに対して圧縮情報,暗号化情報及び起動情報の具体的なサイズでは使用されなかった領域はPadding領域(冗長領域)として,専用のデータ(例えば,0x00等)で埋めておく。
このフォーマット例では、事前にブートローダー21に圧縮情報、暗号化情報、及び、起動情報の配置順さえ登録されていれば、Padding領域が検出されるまでは圧縮情報、暗号化情報、及び、起動情報なので、どこからどこまでがどの情報かを特定できる。
図8(b)は終端情報を利用した個別ファームウェア起動情報のフォーマット例を示す。
・個別ファームウェア起動情報の全体のサイズは不定である。個別ファームウェア起動情報の最後に終端情報があることで、圧縮情報、暗号化情報、及び、起動情報を読込んだあと、終端情報により全ての情報を読み込み終わったことを確認することができる。
・圧縮情報、暗号化情報、及び、起動情報も全て、最後に終端情報があるので、各情報について各々読込み終わったことを終端情報に到達することで確認可能である.
・圧縮情報,暗号化情報及び起動情報は、先頭の情報タイプ領域にて圧縮情報であること,暗号化情報であること、及び、起動情報であることが判別できるようになっている。
・個別ファームウェア起動情報の全体のサイズは不定である。個別ファームウェア起動情報の最後に終端情報があることで、圧縮情報、暗号化情報、及び、起動情報を読込んだあと、終端情報により全ての情報を読み込み終わったことを確認することができる。
・圧縮情報、暗号化情報、及び、起動情報も全て、最後に終端情報があるので、各情報について各々読込み終わったことを終端情報に到達することで確認可能である.
・圧縮情報,暗号化情報及び起動情報は、先頭の情報タイプ領域にて圧縮情報であること,暗号化情報であること、及び、起動情報であることが判別できるようになっている。
このフォーマットでは、ブートローダー21は個別ファームウェア起動情報の構成(圧縮情報,暗号化情報及び起動情報の配置順)を知っておく必要はなく、最初に情報タイプの領域があるかを判断し、情報タイプがあればその情報領域(圧縮情報,暗号化情報,起動情報)から終端情報までを読む、という手順での起動処理が可能となる。
〔ROMの構成の変形例〕
図5では、ROM16に全ファームウェア情報領域26を配置し、ブートローダー21に全ファームウェア情報領域26の先頭アドレスが配置されているとしたが、全ファームウェア情報領域26を用いないことも可能である。
図5では、ROM16に全ファームウェア情報領域26を配置し、ブートローダー21に全ファームウェア情報領域26の先頭アドレスが配置されているとしたが、全ファームウェア情報領域26を用いないことも可能である。
図9は、ROM16に記憶されているファームウェアの配置構成例を模式的に示す図である。全ファームウェア情報領域26がなく、個別のファームウェアと個別ファームウェア情報領域1〜3が記憶されている。ブートローダー21には予め個別ファームウェア情報領域1の先頭アドレスが少なくとも登録されている。どこからどこまでが個別ファームウェア情報領域かは、図8(a)(b)の仕組みを利用してもよいし、ブートローダー21には予め個別ファームウェア情報領域1〜3の先頭アドレスが登録されていてもよい。
したがって、ブートローダー21は個別ファームウェア情報領域1〜3を順番に読み出して、各ファームウェアに対応する演算処理装置を起動させることができる。
〔起動手順〕
図10は、情報処理装置の起動手順を示すフローチャート図の一例である。
情報処理装置100が起動又はリセットされると、中央制御装置となるCPUがリセットベクタアドレスにあるブートローダー21を起動する(S10)。
図10は、情報処理装置の起動手順を示すフローチャート図の一例である。
情報処理装置100が起動又はリセットされると、中央制御装置となるCPUがリセットベクタアドレスにあるブートローダー21を起動する(S10)。
ブートローダー21は、ハードウェアの初期化を実行する(S20)。
次に、ブートローダー21は、全ファームウェア情報領域26の先頭アドレスを読み込み、個別ファームウェア情報の個数を特定する(S30)。個別ファームウェア情報の個数は、全ファームウェア情報領域26の先頭アドレスの数である。
ブートローダー21は、個別ファームウェア起動処理手順を、個別ファームウェア情報の数だけ繰り返す(S40)。
図11(a)は、ステップS40の個別ファームウェア起動処理手順を示すフローチャート図の一例である。
ブートローダー21は、個別ファームウェア情報領域の先頭アドレスに配置された個別ファームウェア情報領域を読み込む(S401)。これにより、図6(b)の各情報が得られる。
ブートローダー21は、個別ファームウェア情報領域に記載された配置領域先頭アドレスから配置領域サイズ分の領域を展開先RAMアドレスへコピー(転送)する(S402)。
次に、ブートローダー21は、個別ファームウェア情報領域に記載された起動方法に従い、各演算処理装置を起動する(S403)。
図11(b)はステップS403の個別ファームウェア情報領域に記載された起動方法に従った起動手順を説明するフローチャート図の一例である。
ブートローダー21は、圧縮情報の圧縮済みフラグが立っているか("1"か)否かを判定する(S4031)。
圧縮済みフラグが立っていない場合(S4031のNo)、ファームウェアは圧縮されていないので何もしない。
圧縮済みフラグが立っている場合(S4031のYes)、ブートローダー21はファームウェアを、圧縮情報の圧縮アルゴリズムに従って解凍する(S4032)。
次に、ブートローダー21は、暗号化情報の暗号化済みフラグが立っているか("1"か)否かを判定する(S4033)。
暗号化済みフラグが立っていない場合(S4033のNo)、ファームウェアは暗号化されていないので何もしない。
暗号化済みフラグが立っている場合(S4033のYes)、ブートローダー21はファームウェアを、暗号化情報の復号アルゴリズムに従って復号する(S4034)。
ブートローダー21は起動情報の起動タイプ及び起動引数に従って、ファームウェアを使用する各演算処理装置を起動する(S4035)。
図10のステップS40が個別ファームウェアの個数だけ実行されると、ブートローダー21はOSを起動して、以降はOSの処理に移行する。
〔ファームウェアの更新について〕
本実施形態のROM16のようにファームウェアが配置されることで、ファームウェアの更新が容易になる。情報処理装置100のROMのファームウェアの更新時、例えばユーザが特定の操作を行うか特定の方法で電源をONとすることで、CPU_0は更新プログラム10を実行する。更新プログラム10は外部通信I/F17を介してサーバと通信して更新用のファームウェアを受信する。または、不図示のメモリカードからファームウェアを検出してもよい。更新プログラム10は、更新用のファームウェアをRAMなどに記憶しておき、ROM16のファームウェアに上書きする。
本実施形態のROM16のようにファームウェアが配置されることで、ファームウェアの更新が容易になる。情報処理装置100のROMのファームウェアの更新時、例えばユーザが特定の操作を行うか特定の方法で電源をONとすることで、CPU_0は更新プログラム10を実行する。更新プログラム10は外部通信I/F17を介してサーバと通信して更新用のファームウェアを受信する。または、不図示のメモリカードからファームウェアを検出してもよい。更新プログラム10は、更新用のファームウェアをRAMなどに記憶しておき、ROM16のファームウェアに上書きする。
例えば「FPGA用FWのみを更新したい」という場合においても、従来の更新プログラム10はROM16の全体を書き換えていた。これは、FPGA用FWがファイル単位でROM16に記憶されていたため、FPGA用FWの記憶場所を特定して更新することが困難なためである。
本実施形態ではファイルシステムがなくても、ROM16におけるFPGA用FWの配置領域が明らかなので、以下のようにFPGA用FWのみを更新できる。FPGA用FWの更新要求は、例えば、全ファームウェア情報領域の何番目などという情報で受け付けることができる。または、個別ファームウェア情報領域27にどの演算処理装置のファームウェアであるかを示す識別情報を登録しておいてもよい。
1.更新プログラム10は、全体ファームウェア情報領域からFPGA用FWの情報が格納された個別ファームウェア情報領域3の位置を特定する。
2.個別ファームウェア情報領域3によりFPGA用FWが配置された位置を特定し,そこを先頭として、RAMに記憶してある更新用のファームウェアで上書きする。
1.更新プログラム10は、全体ファームウェア情報領域からFPGA用FWの情報が格納された個別ファームウェア情報領域3の位置を特定する。
2.個別ファームウェア情報領域3によりFPGA用FWが配置された位置を特定し,そこを先頭として、RAMに記憶してある更新用のファームウェアで上書きする。
したがって、個別のファームウェアの更新は最低限の領域の書き換えで完了させることができる。
以上説明したように、本実施形態の情報処理装置100は、ROM16に各ファームウェアの個別ファームウェア情報領域が配置されていることで、複数の演算処理装置を有する情報処理装置の起動時間を短縮できる。また、ファームウェアの更新もROM全体でなく個別のファームウェア単位で行うことができる。
本実施例では、実施例1のROM16を搭載する情報処理装置100の好適例としてDMAコントローラを有する情報処理装置100について説明する。
図12は、本実施例の情報処理装置100の概略構成図の一例である。本実施例では、図2において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
図12の情報処理装置100は新たに割込みコントローラ32とDMAコントローラ31を有する。一般的にDMAコントローラ31は、あるアドレスから別のアドレスへデータのコピーを実行する。DMAコントローラ31がない場合、CPUが転送単位毎にあるアドレスから別のアドレスへデータを転送する処理を繰り返す必要があるが、DMAコントローラ31によりCPUは転送元と転送先のアドレスを指定するだけでよい。これによりCPUがデータコピーを行う必要がなくなり、CPU負荷の軽減及びデータコピーされている間はCPUが別の処理を実行することが可能となる。したがって、情報処理装置全体として処理時間の短縮が可能となる。また、DMAコントローラ31のほうがデータコピーについて最適化されているため,コピー時間の短縮が可能となる。
さらに、DMAコントローラ31によっては複数Ch(チャンネル)を備えるものがあり、同時に複数のデータコピー処理が可能である。
割込みコントローラ32は外部通信I/F17などのハードウェアブロックがデータの受信などをCPUに通知する際、調停したりマスクするなどの割込み通知制御を行う。DMAコントローラ31によるデータコピーの完了通知は、割込みコントローラ32経由でCPU(CPU_0又はCPU_1のどちらでもよい)へ割込みを通知することで行われる。
すなわちCPUは、DMAコントローラ31にデータコピー処理を依頼すれば,割込みによる完了通知があるまで,別作業ができるようになる。情報処理装置100の起動時にはROM16のファームウェアをRAM14に転送する処理が行われるので、この転送処理をDMAコントローラ31が行うことで起動処理に必要な時間をより短縮できる。
図13(a)は、図8のステップS40の個別ファームウェア起動処理手順を示すフローチャート図の一例である。すなわち、図13(a)は、図11(a)を代替する手順である。
ブートローダー21は、個別ファームウェア情報領域の先頭アドレスに配置された個別ファームウェア情報領域を読込む(S401)。これにより、図6(b)の各情報が得られる。
ブートローダー21は、個別ファームウェア情報領域に記載された配置領域先頭アドレスから配置領域サイズ分の領域を展開先RAMアドレスへコピー(転送)する(S402)。
S402において、ブートローダー21は起動方法を保持しておくため、DMAコントローラ31のCh番号と、個別ファームウェア情報領域の番号を紐づけて記憶しておく(S4021)。これにより、転送後、ファームウェアに対応した起動方法で演算処理装置を起動できる。
ブートローダー21は、データコピー処理をDMAコントローラ31に依頼する(S4022)。データコピー処理において、ブートローダー21は、データコピー処理をDMAコントローラ31に依頼した後、データコピーについては完了待ち状態になる。ただし、CPUは別処理が実行可能となるため、この間に次の個別ファームウェアのデータコピー処理をDMAコントローラ31の別Chに依頼することが可能となる。
図13(b)は、DMAコントローラ31が転送終了した際のブートローダー21の処理手順を示すフローチャート図の一例である。
依頼したDMAコントローラのCh Nによるデータコピー完了は割込みコントローラ32経由でCPUに通知される(S501)。
CPUは割込みに応じた処理として、割込みハンドラが個別ファームウェア起動処理手順をCPUに実行させる(S502)。これでブートローダー21は個別ファームウェア起動処理手順を開始する。
ブートローダー21は、通知された後,DMAコントローラ31のChに紐付けて記憶しておいた起動方法を実行する(S503)。
こうすることで、DMAコントローラ31・割込みコントローラ32がない場合と同様に、個別ファームウェアの起動が実現可能となる。
この方式では、ブートローダー21が中央処理装置となるCPU(CPU_0)上でのみ実行されるのは実施例1と同じだが、時間がかかるデータコピー処理は並列して同時に実行することが可能となり、起動時間を大きく短縮することが可能となる。
本実施例では、ファームウェアの破損に対応した情報処理装置100について説明する。ファームウェアの破損とは、人為的に又は電気的なノイズなどでファームウェアが書き換わることを言う。
図14(a)は、本実施例のROM16に記憶されているファームウェアの配置構成例を模式的に示す図である。図5の配置構成例と比較すると、各ファームウェアのミラー領域28として、OS(ミラー)、CPU_1用FW(ミラー)、及び、FPGA用FW(ミラー)が配置されている。ミラー領域とは、ファームウェアのバックアップ用のコピーが記憶された領域であり、同じファームウェアが2つ搭載されている。なお、全てのファームウェアのミラー領域を設けなくてもよい。どのファームウェアのミラー領域を設けるかは、用意すべきROM16のサイズとファームウェア破損時のデメリットとを比較考量して決定すればよい。
ミラー領域28は各ファームウェアの配置領域に連続しているため、個別ファームウェア情報領域により個別ファームウェアの配置領域先頭アドレスが特定できれば、ミラー領域も特定できる。
図14(b)は個別ファームウェア情報領域の構成を模式的に示す図の一例である。本実施例では個別ファームウェア情報領域にチェックSUMが記憶されている。チェックSUMは各ファームウェアのチェックSUMである。したがって、ブートローダー21はファームウェアのチェックSUMを算出し、個別ファームウェア情報領域のチェックSUMと比較することでファームウェアが破損しているか否かを判定できる。そして、破損している場合には、ミラー領域のファームウェアをRAM14に転送できる。なお、チェックSUMはハッシュ値など破損を検出する情報であればよい。
図15は、図10のステップS40の個別ファームウェア起動処理手順を示すフローチャート図の一例である。すなわち、図15は、図11(a)を代替する手順である。
ブートローダー21は、個別ファームウェア情報領域の先頭アドレスに配置された個別ファームウェア情報領域を読込む(S401)。これにより、図6(b)の各情報が得られる。
次に、ブートローダー21は、チェックSUMを算出し個別ファームウェア情報領域のチェックSUMと比較することで、ファームウェアが破損しているか否かを判定する(S4011)。
ファームウェアが破損していない場合(S4011のNo)、ブートローダー21は、個別ファームウェア情報領域に記載された配置領域先頭アドレスから配置領域サイズ分の領域を,展開先RAMアドレス へコピー(転送)する(S402)。
ファームウェアが破損している場合(S4011のYes)、ブートローダー21は、個別ファームウェア情報領域に記載された配置領域先頭アドレスに連続したミラー領域から配置領域サイズ分の領域を,展開先RAMアドレスへコピー(転送)する(S4012)。なお、ミラー領域からファームウェアをコピーする前にミラー領域のファームウェアについても破損の有無を判定することが好ましい。
次に、ブートローダー21は、個別ファームウェア情報領域に記載された起動方法に従い、配置した各演算処理装置を起動する(S403)。
したがって、本実施例によれば、ミラー領域を設けることで情報処理装置100が動作できなくなる頻度を少なくできる。
本実施例では、実施例1〜3の情報処理装置100を適用した装置について説明する。
図16は、画像形成装置のハードウェア構成図の一例を示す。画像形成装置300は、コントローラ130と、オペレーションパネル125と、ファクシミリコントロールユニット(FCU)126と、撮像部127及び印刷部128を有する。
コントローラ130は、CPU114と、ASIC116と、NB(ノースブリッジ)115と、SB(サウスブリッジ)117と、MEM−P(システムメモリ)111と、MEM−C(ローカルメモリ)112と、HDD(ハードディスクドライブ)113と、メモリカードスロット123と、NIC(ネットワークインタフェースコントローラ)118と、USBデバイス119と、IEEE1394デバイス121と、セントロニクスデバイス122とを有する。
CPU114は、種々の情報処理を実行するためのICであり、アプリやプラットフォーム、オプションパッケージをUNIX(登録商標)等のOSによりプロセス単位で並列的に実行する。ASIC116は、画像処理用のICである。NB115は、CPU114とASIC116を接続するためのブリッジである。SB117は、NB115と周辺機器等を接続するためのブリッジである。ASIC116とNB115は、AGP(Accelerated Graphics Port)を介して接続されている。
MEM−P111は、NB115に接続されたメモリである。MEM−C112は、ASIC116に接続されたメモリである。HDD113は、ASIC116に接続されたストレージであり、画像データ蓄積・文書データ蓄積・プログラム蓄積・フォントデータ蓄積・フォームデータ蓄積等を行うために使用される。HDD113には上記の種々のアプリ、及び、プログラム131が記憶されている。
メモリカードスロット123は、SB117に接続され、メモリカード124をセット(挿入)するために使用される。メモリカード124は、USBメモリ、SDメモリ等のフラッシュメモリであり、プログラム131を配布するために使用される。また、プログラム131は所定のサーバから画像形成装置300にダウンロードして配布することもできる。
NIC118は、ネットワーク400等を介してMACアドレス等を使用したデータ通信を行うためのコントローラである。USBデバイス119は、USB規格に準拠したシリアルポートを提供するためのデバイスである。IEEE1394デバイス121は、IEEE1394規格に準拠したシリアルポートを提供するためのデバイスである。セントロニクスデバイス122は、セントロニクス仕様に準拠したパラレルポートを提供するためのデバイスである。NIC118と、USBデバイス119と、IEEE1394デバイス121と、セントロニクスデバイス122と、PCI(Peripheral Component Interconect)バスを介してNB115とSB117に接続されている。
オペレーションパネル125は、ユーザが画像形成装置300に入力を行うためのハードウェア(操作部)であると共に、画像形成装置300がメニュー画面を表示するハードウェア(表示部)である。オペレーションパネル125は、ASIC116に接続されている。FCU126と、撮像部127と、印刷部128は、PCI(Peripheral Component Interconect)バスを介してASIC116に接続されている。
このような画像形成装置300では、CPU114が中央処理装置としてのCPUであり、ASIC116が他の演算処理装置となる。また、MEM−C112又はHDD113には全ファームウェア情報領域26と個別ファームウェア領域とが配置されている。HDD113に記憶する場合、ファイルシステムを使用しないので、トラック番号とセクタ番号でファームウェアの配置領域を指定する。
図17は、車載カメラ200のハードウェア構成図の一例を示す。車載カメラ200は、撮像センサ201、画像処理IC202、ROM203、及び、SDRAM204等を有している。レンズや操作部などは省略した。なお、車載カメラ200は、車両の周囲を撮影するカメラであり、ルームミラー、ドアミラー、車体ボディなどの任意の場所に配置される。そして、配置された場所に応じて障害物の認識や歩行者の認識などを行う。なお、車載カメラ200はステレオカメラでもよい。
SDRAM204は、画像データを一時的に記憶する高速な揮発性のメモリである。各種のフォーマット(RAW−RGB、YUV、JPEG)の画像データが記憶される。最終的な画像データは、NVRAM217に記憶される。
撮像センサ201は、CCDやCMOSなどの受光センサ、TG(タイミングジェネレータ)、及び、A/D変換器等を有する。TGは、クロック信号から垂直同期信号VD、水平同期信号HDを生成し、撮像センサはこれらの信号で同期検出して、RGB又はYCrCbを色空間とする画像信号を作成する。
画像処理IC202は、センサI/F211、メモリコントローラ212、YUV変換部215、圧縮伸張部214、CPU216、NVRAM217、及び、表示出力制御部213、を有する。センサI/F211は撮像センサからA/D変換されたデジタルの画像データを取得する。また、センサI/Fは、ブロック内に取り込まれた画像データよりAWB(オートホワイトバランス)評価値、画面の合焦度合いを示すAF(オートフォーカス)評価値、及び、被写体輝度を検出したAE(Automatic Exposure:自動露光)評価値、を算出する。
AF完了後に撮像センサから出力されセンサI/Fが取り込んだ画像信号は、メモリコントローラ212によりSDRAM204に格納される。
メモリコントローラ212は、画像データをSDRAM204から読み出し、YUV変換部215に送出する。YUV変換部215は、RGB信号をYUV信号に変換しメモリコントローラに送出するので、メモリコントローラは、YUV信号をSDRAMに記憶する。YUV信号に変換するのは、RGB信号よりも容量を小さくできるためと、ディスプレイのビデオ信号への変換が容易になるためである。メモリコントローラ212は、YUV信号を読み出して表示出力制御部に出力する。表示出力制御部213はYUVの画像データをNTSC信号やPAL信号などのビデオ信号に変換し、ディスプレイ(不図示)に出力する。画像処理IC202は、画像信号からビデオ信号への変換までの処理を1/30秒間隔で繰り返す。
圧縮伸張部214は、ユーザが動画撮像を選択した場合、一連のYUVの画像データに圧縮処理を施して、AVI(Open DML Motion JPEG フォーマット準拠)やJPEG ベースライン方式に準拠したフォーマットに変換する(圧縮する)。また、静止画の画像データを記録する際、圧縮伸張部はJPEGの画像データを作成する。
ROM203にはCPU216が画像処理IC202を制御するためのファームウェアが記憶されている。このような車載カメラでは、CPU216が中央処理装置としてのCPUであり、センサI/F211、YUV変換部215、及び、圧縮伸張部214が他の演算処理装置となる。YUV変換部、及び、圧縮伸張部は、例えば、DSPを実体とする。ROM16には、全ファームウェア情報領域と個別ファームウェア領域とが配置されている。
このように、本実施形態の情報処理装置100は画像形成装置300や車載カメラ200などに好適に適用可能である。
11、12 CPU
13 FPGA
14 RAM
15 ハードウェアブロック電力供給部
16 ROM
17 外部通信I/F
18 入出力I/F
21 ブートローダー
26 全ファームウェア情報領域
27 個別ファームウェア情報領域
100 情報処理装置
13 FPGA
14 RAM
15 ハードウェアブロック電力供給部
16 ROM
17 外部通信I/F
18 入出力I/F
21 ブートローダー
26 全ファームウェア情報領域
27 個別ファームウェア情報領域
100 情報処理装置
Claims (8)
- 他の演算処理装置に対し起動処理を行う第1の演算処理装置と、
前記第1の演算処理装置により起動処理が行われる1つ以上の第2の演算処理装置と、
前記第2の演算処理装置が実行するか又は前記第2の演算処理装置に設定されるソフトウェア、及び、前記ソフトウェア毎にソフトウェアが記憶されている先頭アドレスとサイズを含む実行開始情報が記憶されている不揮発メモリと、を有し、
当該情報処理装置の起動時又はリセット時、前記第1の演算処理装置は、予め登録されている前記不揮発メモリのアドレスを起点にして前記ソフトウェアの個数だけ前記実行開始情報を読み出し、前記先頭アドレスと前記サイズで指定される各ソフトウェアを前記第2の演算処理装置にそれぞれ実行開始させるか又は前記第2の演算処理装置に設定する、
ことを特徴とする情報処理装置。 - 前記実行開始情報には、さらに前記ソフトウェア毎に前記第2の演算処理装置の起動方法が記述されており、
前記第1の演算処理装置は、前記実行開始情報から読み出した前記起動方法に従い、
前記先頭アドレスを前記第2の演算処理装置が前記ソフトウェアの実行を開始する実行開始アドレスに設定する処理、
前記先頭アドレスに前記起動方法に指定されたアドレスを加えたアドレスを、前記第2の演算処理装置が前記ソフトウェアの実行を開始する実行開始アドレスに設定する処理、
前記起動方法に指定されたアドレスに、前記起動方法に指定されたアドレスに記憶された値を書き込むことで、前記ソフトウェアを前記第2の演算処理装置に設定する処理、又は、
前記起動方法に指定されたアドレスから読み出したデータに、前記起動方法に指定された値で演算を行い該アドレスに書き込むことで、前記第2の演算処理装置を起動する処理、のいずれかを行うことを特徴とする請求項1記載の情報処理装置。 - 前記実行開始情報には、前記ソフトウェア毎に、さらに前記ソフトウェアを揮発性メモリに複写する際の複写先アドレス、圧縮情報、及び、暗号化情報が記述されており、
前記第1の演算処理装置は、読み出した前記実行開始情報に従い、
圧縮情報に圧縮ありと記述されている場合は解凍後に前記複写先アドレスに複写し、暗号化ありと記述されている場合は復号後に前記複写先アドレスに複写する、
ことを特徴とする請求項1又は2記載の情報処理装置。 - 前記不揮発メモリには、前記ソフトウェアをバックアップするバックアップデータが記憶され、前記実行開始情報には前記ソフトウェアが書き換わったか否かを検証するための検証情報が記憶されており、
前記第1の演算処理装置は、前記先頭アドレスに記憶されている前記ソフトウェアから検証情報を作成し、前記実行開始情報に含まれる検証情報と一致しない場合、バックアップデータを前記第2の演算処理装置に実行開始させるか又は前記第2の演算処理装置に設定する、
ことを特徴とする請求項1〜3いずれか1項記載の情報処理装置。 - 前記第1の演算処理装置により指定された転送元アドレスから転送先アドレスにデータを転送するDMA(Direct Memory Access)コントローラと、
前記DMAコントローラから転送の終了通知を取得する割込みコントローラと、を有し、
前記実行開始情報には、さらに前記ソフトウェアを揮発性メモリに複写する際の複写先アドレスが記述されており、
前記第1の演算処理装置は、前記先頭アドレスと前記複写先アドレスを前記DMAコントローラに設定することで、前記DMAコントローラにより前記ソフトウェアを揮発性メモリに複写し、
前記DMAコントローラにより前記ソフトウェアを揮発性メモリに複写している間、前記割込みコントローラから転送の終了が通知された前記ソフトウェアについて、前記第2の演算処理装置にそれぞれ実行開始させるか又は前記第2の演算処理装置に設定する処理を行う、
ことを特徴とする請求項1〜4いずれか1項記載の情報処理装置。 - 外部から更新用ソフトウェアと更新対象の前記ソフトウェアの識別情報を取得する外部通信手段と、
前記外部通信手段が取得した前記更新用ソフトウェアを記憶する記憶手段と、
前記識別情報の前記ソフトウェアが記憶されている前記不揮発メモリの前記先頭アドレスと前記サイズを前記実行開始情報から特定し、前記不揮発メモリの前記ソフトウェアを前記記憶手段に記憶されている前記更新用ソフトウェアで上書きするソフトウェア更新手段と、
を有することを特徴とする請求項1〜5いずれか1項記載の情報処理装置。 - 請求項1〜6いずれか1項記載の情報処理装置を搭載した画像形成装置。
- 請求項1〜6いずれか1項記載の情報処理装置を搭載したカメラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013117011A JP2014235590A (ja) | 2013-06-03 | 2013-06-03 | 情報処理装置、画像形成装置、カメラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013117011A JP2014235590A (ja) | 2013-06-03 | 2013-06-03 | 情報処理装置、画像形成装置、カメラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014235590A true JP2014235590A (ja) | 2014-12-15 |
Family
ID=52138242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013117011A Pending JP2014235590A (ja) | 2013-06-03 | 2013-06-03 | 情報処理装置、画像形成装置、カメラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014235590A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155670A (zh) * | 2015-04-22 | 2016-11-23 | 宇龙计算机通信科技(深圳)有限公司 | 一种移动终端及其刷机方法和装置 |
JP2017506791A (ja) * | 2015-01-29 | 2017-03-09 | 小米科技有限責任公司Xiaomi Inc. | ファームウェア圧縮方法、ファームウェア圧縮解除方法、装置、プログラム及び記録媒体 |
-
2013
- 2013-06-03 JP JP2013117011A patent/JP2014235590A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017506791A (ja) * | 2015-01-29 | 2017-03-09 | 小米科技有限責任公司Xiaomi Inc. | ファームウェア圧縮方法、ファームウェア圧縮解除方法、装置、プログラム及び記録媒体 |
CN106155670A (zh) * | 2015-04-22 | 2016-11-23 | 宇龙计算机通信科技(深圳)有限公司 | 一种移动终端及其刷机方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4361073B2 (ja) | 画像処理装置とその制御方法 | |
JP6331504B2 (ja) | 電子機器、及び情報処理システム | |
US11140291B2 (en) | Information processing apparatus, control method thereof, and storage medium | |
US11570350B2 (en) | Device, control method, and storage medium | |
US10303388B1 (en) | Storage filtering using container images | |
US11825194B2 (en) | Image capturing apparatus and method for controlling the same, and non-transitory computer-readable storage medium | |
JP2009086955A (ja) | カメラ装置およびその制御方法 | |
US20170094090A1 (en) | Information processing apparatus, method for controllingthe same, and storage medium | |
US9547487B2 (en) | Image forming apparatus, control method therefor, and control program therefor | |
JP2014235590A (ja) | 情報処理装置、画像形成装置、カメラ | |
US20150178094A1 (en) | Multisystem and method of booting the same | |
KR102216656B1 (ko) | 이미지 처리 방법 및 그 전자 장치 | |
US20210350027A1 (en) | Information processing apparatus, information processing method and non-transitory recording medium | |
JP2015176532A (ja) | プログラム、情報処理装置および情報処理システム | |
US20230177163A1 (en) | Information processing system, information processing apparatus, and information processing method | |
JP2020154601A (ja) | 情報処理装置とその制御方法、及びプログラム | |
JP2020086516A (ja) | 情報処理装置、情報処理装置の制御方法、及び、プログラム | |
JP7283108B2 (ja) | 情報処理装置、制御方法、およびプログラム | |
US11843856B2 (en) | Image capturing control apparatus capable of determining malfunction of an auxiliary processing apparatus, image capturing system, image capturing control method, and non-transitory computer-readable storage medium | |
JP6627910B2 (ja) | 電子機器、及び情報処理システム | |
JP6350761B2 (ja) | ドライバーインストールシステム | |
JP2021136663A (ja) | デバイス、通信装置、方法、およびプログラム | |
JP6465998B2 (ja) | 映像記録再生装置及び起動方法 | |
JP6395380B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2016075978A (ja) | データ記録装置、撮像装置、セキュリティリスク軽減方法、コンピュータプログラム |