(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】画像形成装置
(51)【国際特許分類】
G06F 21/57 20130101AFI20241203BHJP
B41J 5/30 20060101ALI20241203BHJP
G03G 21/00 20060101ALI20241203BHJP
G06F 9/4401 20180101ALI20241203BHJP
G06F 21/60 20130101ALI20241203BHJP
G06F 21/64 20130101ALI20241203BHJP
H04N 1/00 20060101ALI20241203BHJP
【FI】
G06F21/57 350
B41J5/30 Z
G03G21/00 510
G06F9/4401
G06F21/60 320
G06F21/64
H04N1/00 838
(21)【出願番号】P 2021063025
(22)【出願日】2021-04-01
【審査請求日】2024-02-16
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000992
【氏名又は名称】弁理士法人ネクスト
(72)【発明者】
【氏名】藤井 政圭
(72)【発明者】
【氏名】大口 智也
【審査官】▲柳▼谷 侑
(56)【参考文献】
【文献】特表2017-511941(JP,A)
【文献】特開2019-080229(JP,A)
【文献】特開2014-096127(JP,A)
【文献】特開2011-076354(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/10
G06F 21/60 - 21/88
G03G 21/00
B41J 5/30
H04N 1/00
G06F 9/4401
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
第1プロセッサおよび第1メモリが備えられた画像形成装置であって、
前記第1プロセッサは、
n(nは自然数)ビットプロセッサとして機能する第1動作モードおよびm(mは2以上の自然数)×nビットプロセッサとして機能する第2動作モードのいずれか一方から他方に切り替わることが可能であり、
前記第1メモリには、
前記第1動作モード向けのプログラムである書き換え可能な第1メインプログラムと、
前記第2動作モード向けのプログラムであって前記第1メインプログラムを起動するための第1ブートローダプログラムと、が記憶されており、
前記第1メインプログラムは、
前記第1動作モードにて動作する前記第1プロセッサを当該画像形成装置として機能させるためのプログラムであり、
前記第1プロセッサは、
前記第2動作モードにて起動されて前記第1ブートローダプログラムを実行し、
さらに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの少なくとも1つを、前記第1ブートローダプログラムに従って実行し、
さらに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの少なくとも1つを実行した後に前記第1動作モードに切り替わり、
さらに、復号および改ざんチェックの少なくとも1つが実行された前記第1メインプログラムを、前記第1動作モードに切り替わった後に実行することを特徴とする画像形成装置。
【請求項2】
前記第1ブートローダプログラムは、
暗号化された状態で書き換え可能に前記第1メモリに記憶されており、
前記第1プロセッサは、
前記第2動作モードにて起動されて、復号および改ざんチェックの少なくとも1つが実行された前記第1ブートローダプログラムを実行し、
さらに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの少なくとも1つを、復号および改ざんチェックの少なくとも1つが実行された前記第1ブートローダプログラムに従って実行し、
さらに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの少なくとも1つを実行した後に前記第1動作モードに切り替わり、
さらに、復号および改ざんチェックの少なくとも1つが実行された前記第1メインプログラムを、前記第1動作モードに切り替わった後に実行することを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記第1メインプログラムに従った処理は、
前記第1プロセッサが前記第1動作モードにて実行するRIP処理、暗号化処理および復号処理の少なくとも1つを含んでおり、
前記RIP処理は、ページ記述言語で記述された画像データをラスターイメージデータに変換する処理であり、
前記暗号化処理は、当該画像形成装置に記憶された画像データを暗号化する処理であり、
前記復号処理は、当該画像形成装置に記憶された暗号化された画像データを復号する処理であることを特徴とする請求項1または請求項2に記載の画像形成装置。
【請求項4】
n(nは自然数)ビットプロセッサとして機能する第2プロセッサと、
第2メモリと、が備えられており、
前記第2メモリには、
前記第1ブートローダプログラム
の復号および前記第1ブートローダプログラムの改ざんチェックの少なくとも1つを実行するための第2ブートローダプログラムが記憶されており、
前記第2プロセッサは、
暗号化された前記第2ブートローダプログラムの復号および前記第2ブートローダプログラムの改ざんチェックの少なくとも1つを実行し、
さらに、復号および改ざんチェックの少なくとも1つが実行された前記第2ブートローダプログラムを実行し、
さらに、復号および改ざんチェックの少なくとも1つが実行された前記第2ブートローダプログラムに従って
、前記第1ブートローダプログラムの復号および前記第1ブートローダプログラムの改ざんチェックの少なくとも1つを実行し、
前記第1プロセッサは、
前記第2動作モードにて起動されて、前記第2プロセッサにより復号および改ざんチェックの少なくとも1つが実行された前記第1ブートローダプログラムを実行し、
さらに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの少なくとも1つを、復号および改ざんチェックの少なくとも1つが実行された前記第1ブートローダプログラムに従って実行し、
さらに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの少なくとも1つを実行した後に前記第1動作モードに切り替わり、
さらに、復号および改ざんチェックの少なくとも1つが実行された前記第1メインプログラムを、前記第1動作モードに切り替わった後に実行することを特徴とする請求項1ないし請求項3のいずれか1項に記載の画像形成装置。
【請求項5】
前記第1プロセッサは、
前記第2動作モードにて起動されているときに、暗号化された前記第1メインプログラムの復号および前記第1メインプログラムの改ざんチェックの両方を実行した後に前記第1動作モードに切り替わり、
さらに、復号および改ざんチェックの両方が実行された前記第1メインプログラムを、前記第1動作モードに切り替わった後に実行することを特徴とする請求項1ないし請求項4のいずれか1項に記載の画像形成装置。
【請求項6】
前記第1プロセッサには、
第1コアおよび第2コアが備えられており、
前記第1コアおよび第2コアの少なくとも一方は、前記第1動作モードおよび前記第2動作モードのいずれか一方から他方に切り替わることが可能であり、
前記第1メモリには、
前記第2動作モード向けの第2メインプログラムが書き換え可能に記憶されており、
前記第2メインプログラムは、
前記第1コアおよび第2コアの少なくとも一方が前記第2動作モードにて動作するときに、その少なくとも一方のコアを当該画像形成装置として機能させるためのプログラムであり、
前記第1コアおよび第2コアのうち前記第2動作モードに切り替わった方が、
復号および改ざんチェックの少なくとも1つが実行された第1ブートローダプログラムを実行し、
さらに、前記第1コアおよび第2コアのうち前記第2動作モードに切り替わった方は、前記第1ブートローダプログラムに従って前記第1動作モードに切り替わり、
前記第1メインプログラムは、
前記第1コアおよび第2コアのうち前記第1動作モードに切り替わった方によって実行され、
前記第2メインプログラムは、
前記第1コアおよび第2コアのうち前記第2動作モードに切り替わった方によって実行されることを特徴とする請求項1ないし請求項5のいずれか1項に記載の画像形成装置。
【請求項7】
前記第1メインプログラムの復号および改ざんチェックの少なくとも1つは、
前記第1コアおよび第2コアのうち、前記第2動作モードに切り替わった方により、前記第1ブートローダプログラムに従って実行されることを特徴とする請求項6に記載の画像形成装置。
【請求項8】
前記第2メインプログラムの復号および改ざんチェックの少なくとも1つは、
前記第1コアおよび第2コアのうち、前記第2動作モードに切り替わった方により、前記第1ブートローダプログラムに従って実行されることを特徴とする請求項6または請求項7に記載の画像形成装置。
【請求項9】
前記第2メインプログラムに従った処理は、
前記第1コアおよび前記第2コアのいずれか一方が、前記第2動作モードにて実行するRIP処理、暗号化処理および復号処理の少なくとも1つを含んでおり、
前記RIP処理は、ページ記述言語で記述された画像データをラスターイメージデータに変換する処理であり、
前記暗号化処理は、当該画像形成装置に記憶されたデータを暗号化する処理であり、
前記復号処理は、当該画像形成装置に記憶された暗号化された画像データを復号する処理であることを特徴とする請求項6ないし請求項8のいずれか1項に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置に関する。
【背景技術】
【0002】
画像形成装置には、プロセッサおよびメモリが備えられており、そのメモリには、上記のプロセッサを画像形成装置として機能させるためのメインプログラムと、このメインプログラムを起動するためのブートローダプログラムとが記憶されている。また、メインプログラムおよびブートローダプログラムは、画像形成装置の機能を更新するために書き換え可能にメモリに記憶されている。
しかし、メインプログラムやブートローダプログラムが解析され、悪意のあるプログラムを上記のメモリに書き込まれると、画像形成装置のセキュリティ低下につながるおそれがある。
そこで、メインプログラムおよびブートローダプログラムは、それぞれ暗号化される場合があり、また、改ざんチェックが行われる場合がある。これにより、メインプログラムやブートローダプログラムが解析されるリスクを低減することができ、悪意のあるプログラムが書き込まれたとしてもセキュリティ上のリスクを低減することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、暗号化されたプログラムを復号する処理や改ざんチェックする処理は、プロセッサの処理負荷が大きいため、画像形成装置の起動時間が長くなるという問題がある。ここで、起動時間とは、画像形成装置の電源が投入されてから、プロセッサを画像形成装置として機能させるためのメインプログラムの起動が完了するまでに要する時間である。
なお、特許文献1には、画像形成装置を起動するために必要なハードウェア/ソフトウェア情報を、ハードウェア/ソフトウェアのコールバックよりも前に取得することにより、機器のハードウェア/ソフトウェア初期化が完了する前に起動処理を行うことが記載されている。
【0005】
そこで、本発明は、上記の課題を解決するために創出されたものであって、画像形成装置の起動時間を短縮する技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上述した目的を達成するため、本発明は、第1プロセッサおよび第1メモリが備えられた画像形成装置であって、第1プロセッサは、n(nは自然数)ビットプロセッサとして機能する第1動作モードおよびm(mは2以上の自然数)×nビットプロセッサとして機能する第2動作モードのいずれか一方から他方に切り替わることが可能であり、第1メモリには、第1動作モード向けのプログラムである書き換え可能な第1メインプログラムと、第2動作モード向けのプログラムであって第1メインプログラムを起動するための第1ブートローダプログラムと、が記憶されており、第1メインプログラムは、第1動作モードにて動作する第1プロセッサを当該画像形成装置として機能させるためのプログラムであり、第1プロセッサは、第2動作モードにて起動されて第1ブートローダプログラムを実行し、さらに、暗号化された第1メインプログラムの復号および第1メインプログラムの改ざんチェックの少なくとも1つを、第1ブートローダプログラムに従って実行し、さらに、暗号化された第1メインプログラムの復号および第1メインプログラムの改ざんチェックの少なくとも1つを実行した後に第1動作モードに切り替わり、さらに、復号および改ざんチェックの少なくとも1つが実行された第1メインプログラムを、第1動作モードに切り替わった後に実行するという技術を提供する。
【0007】
第1プロセッサは、第2動作モード向けのプログラムの第1ブートローダプログラムの実行と、暗号化された第1メインプログラムの復号および第1メインプログラムの改ざんチェックの少なくとも1つと、を第2動作モードにて実行する。また、第1プロセッサは、復号および改ざんチェックの少なくとも1つが実行された第1メインプログラムを、第1動作モードに切り替わった後に実行する。
つまり、第1プロセッサは、相対的に処理負荷の大きい第1メインプログラムの復号および第1メインプログラムの改ざんチェックの少なくとも1つを、第1動作モードよりも演算速度の速い第2動作モードにて実行する。
【0008】
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、たとえば、プログラムの他、プログラムを記録した記録媒体、画像形成システムなどの形態で実現することができる。
【発明の効果】
【0009】
本発明によれば、画像形成装置の起動時間を短縮する技術を提供することができる。
【図面の簡単な説明】
【0010】
【
図1】本発明の第1実施形態に係る画像形成装置の主な電気的構成を示す説明図である。
【
図2】サブCPUおよびメインCPUの処理シーケンスを示す説明図である。
【
図3】サブCPUの起動シーケンスの流れを示すフローチャートである。
【
図4】メインCPUの起動シーケンスの流れを示すフローチャートである。
【
図5】本発明の第2実施形態におけるサブCPUおよびメインCPUの処理シーケンスを示す説明図である。
【
図6】サブCPUの起動シーケンスの流れを示すフローチャートである。
【
図7】メインCPUのコアC0の起動シーケンスの流れを示すフローチャートである。
【
図8】メインCPUのコアC1の起動シーケンスの流れを示すフローチャートである。
【発明を実施するための形態】
【0011】
〈第1実施形態〉
本発明の第1実施形態に係る画像形成装置の主な電気的構成について、それを示す
図1を参照しつつ説明する。画像形成装置10は、画像処理回路11と、印刷エンジン12と、ユーザIF(インターフェースの略)13と、通信IF14と、USBIF15と、NVRAM16と、フラッシュROM17と、RAM18と、ROM19と、バス20と、制御部30と、を備えている。
【0012】
印刷エンジン12は、シートなどの記録媒体に画像を印刷するためのエンジンであり、電子写真方式、インクジェット方式、サーマル方式等の印刷方式が採用される。画像処理回路11は、RIP(Raster Image Processerの略)処理された画像データをシートなどの記録媒体に印刷する画素に対応した描画データに変換する。その変換された描画データは、印刷エンジン12へ出力される。RIP処理は、PCL(Printer Command Languageの略)やPS(Post Scriptの略)などのページ記述言語で記述された画像データをラスターイメージデータに変換する処理である。NVRAM16は、印刷設定情報等を記憶する不揮発性メモリである。
ユーザIF13は、例えば、タッチパネル式の操作パネルであり、メッセージの表示機能とユーザによる操作を受け付ける機能とを備えている。通信IF14は、LAN回線L1により、情報処理装置40とそれぞれ相互に通信可能に接続されている。画像形成装置10と情報処理装置40との通信方法としては、Bluetooth(登録商標)などの通信プロトコルを用いることもできる。情報処理装置40は、例えば、PCやスマートフォンなどである。USBIF15は、USB規格に基づいて接続された装置と通信を行うためのハードウェアである。画像処理回路11、印刷エンジン12、ユーザIF13、通信IF14、USBIF15、NVRAM16、フラッシュROM17、RAM18、ROM19及び制御部30は、バス20により相互に接続されている。
【0013】
制御部30は、メインCPU31と、サブCPU32とを備えている。サブCPU32は、32ビットCPUである。サブCPU32は、NVRAM16に記憶されている印刷設定情報に従って印刷エンジン12を制御する処理を実行する。また、サブCPU32は、画像形成装置10がスリープモードになっているときの低消費電力制御の処理などを実行する。
メインCPU31は、32ビットCPUとして機能する32ビット動作モード、または、64ビットCPUとして機能する64ビット動作モードにて動作可能である。メインCPU31は、32ビット動作モードおよび64ビット動作モードのいずれか一方から他方に切り替わることが可能となっている。ここで、32ビットおよび64ビットとは、CPUが演算を行うときに一度に扱うことができるデータの大きさである。つまり、64ビットCPUは、32ビットCPUよりも一度に扱うことができるデータが大きいため、演算速度が速い。また、32ビットCPUとは、32ビットサイズのレジスタ、アドレスバスおよびデータバスを持つCPUであり、64ビットCPUとは、64ビットサイズのレジスタ、アドレスバスおよびデータバスを持つCPUである。レジスタとは、CPUの演算対象や演算結果を記憶するものである。
32ビットCPUとして機能するとは、32ビットCPU向けの命令セットに従って機能するという意味であり、64ビットCPUとして機能するとは、64ビットCPU向けの命令セットに従って機能するという意味である。
32ビット動作モードにて動作するときのメインCPU31は、本発明のn(nは自然数)ビットプロセッサの一例であり、64ビット動作モードにて動作するときのメインCPU31は、本発明のm(mは2以上の自然数)×nビットプロセッサの一例である。
【0014】
フラッシュROM17には、32ビットメインプログラムMが暗号化された状態で、かつ、書き換え可能に記憶されている(
図2)。32ビットメインプログラムMは、32ビット動作向けの書き換え可能なプログラムであり、32ビット動作モードにて動作するメインCPU31を画像形成装置10として機能させるためのプログラムである。32ビットメインプログラムMは、複数のプログラムから構成されており、各プログラムがそれぞれ単独で、あるいは、各プログラムが連携して各処理を実行する。
32ビットメインプログラムMに従った処理は、メインCPU31が32ビット動作モードにて実行するRIP処理、暗号化処理および復号処理の少なくとも1つを含んでいる。暗号化処理は、画像形成装置10に記憶された画像データを暗号化する処理である。例えば、通信IF14を通じて送信するためにフラッシュROM17に記憶された画像データを暗号化する処理である。復号処理は、画像形成装置10に記憶された暗号化された画像データを復号する処理である。例えば、USBIF15を通じて取得され、フラッシュROM17に記憶された暗号化された画像データを復号する処理である。
また、32ビット動作モードのメインCPU31は、RIP処理後のラスターデータの色補正処理、印刷設定情報の設定および利用に関する処理、ユーザIF13へ画面を表示する処理、ユーザIF13から操作を受け付ける処理、受け付けた操作に伴う各種処理、通信IF14およびUSBIF15を用いて画像データなどの各種データを通信する処理などを実行する。
【0015】
また、フラッシュROM17には、64ビット動作向けの書き換え可能なプログラムであって、32ビットメインプログラムMを起動するための64ビットブートローダプログラムBが暗号化された状態で記憶されている(
図2)。ROM19には、64ビットブートローダプログラムBの復号および改ざんチェックを実行するための32ビットブートローダプログラム0が記憶されている(
図2)。RAM18は、フラッシュROM17から読み出された32ビットブートローダプログラムA、64ビットブートローダプログラムBおよび32ビットメインプログラムMをそれぞれ展開するワーク領域を有する。
【0016】
32ビットブートローダプログラムA、64ビットブートローダプログラムBおよび32ビットメインプログラムMの少なくとも1つは、コンピュータが読み取り可能なストレージ媒体に記憶しておき、そのストレージ媒体から画像形成装置10に提供され、制御部30によって実行されてもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、CD-ROM、DVD-ROM、USBメモリなどの記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバ等からダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、コンピュータが読み取り可能なnon-transitoryなストレージ媒体には含まれない。
【0017】
なお、以下の説明における「判断」、「展開」、「出力」、「送信」、「取得」、「制御」、「設定」などの処理は、メインCPU31またはサブCPU32による処理を表している。メインCPU31による処理は、OSを介したハードウェア制御も含む。なお、「取得」は、要求を必須とはしない概念で用いる。つまり、CPUが要求することなくデータを受信するという処理も、「CPUがデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。
【0018】
メインCPU31は、本発明の第1プロセッサの一例であり、サブCPU32は、本発明の第2プロセッサの一例である。フラッシュROM17は、本発明の第1メモリの一例であり、ROM19は、本発明の第2メモリの一例である。32ビット動作モードは、本発明の第1動作モードの一例であり、64ビット動作モードは、本発明の第2動作モードの一例である。32ビットメインプログラムMは、本発明の第1メインプログラムの一例である。64ビットブートローダプログラムBは、本発明の第1ブートローダプログラムの一例であり、32ビットブートローダプログラムAは、本発明の第2ブートローダプログラムの一例である。
【0019】
次に、サブCPU32の起動シーケンスについて
図2および
図3を参照しつつ説明する。なお、以下の説明では、サブCPU32またはメインCPU31が実行する処理のステップをSと略す。画像形成装置10の電源スイッチがオンすると、サブCPU32(
図1,
図2)が起動する(
図3のS1、
図2の(1))。続いて、サブCPU32は、ROM19に記憶されている32ビットブートローダプログラム0を実行することにより(S2)、フラッシュROM17に記憶されている32ビットブートローダプログラムAの復号および改ざんチェックを実行する(S3)。改ざんチェックとは、プログラムが改ざんされているか否かを検査することである。このように、サブCPU32が32ビットブートローダプログラムAの改ざんチェックを実行するため、画像形成装置10のセキュリティを高めることができる。続いて、サブCPU32は、32ビットブートローダプログラムAの改ざんが発見されず、かつ、32ビットブートローダプログラムAの復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S4)。ここで、サブCPU32は、改ざん無し、かつ、復号成功と判断したときは(S4:Yes)、フラッシュROM17に記憶されている32ビットブートローダプログラムAをRAM18に展開し、その展開した32ビットブートローダプログラムAを実行する(S5、
図2の(2))。
【0020】
続いて、サブCPU32は、フラッシュROM17に記憶されている64ビットブートローダプログラムBの復号および改ざんチェックを実行する(S6)。このように、サブCPU32が64ビットブートローダプログラムBの改ざんチェックを実行するため、画像形成装置10のセキュリティを高めることができる。続いて、サブCPU32は、64ビットブートローダプログラムBの改ざんが発見されず、かつ、64ビットブートローダプログラムBの復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S7)。ここで、サブCPU32は、改ざん無し、かつ、復号成功と判断したときは(S7:Yes)、フラッシュROM17に記憶されている64ビットブートローダプログラムBをRAM18に展開する(S8、
図2の(3))。続いて、メインCPU31が64ビットモードで起動する(S9、
図2の(4))。また、サブCPU32は、32ビットブートローダプログラムAの改ざん無し、かつ、復号成功ではないと判断した場合は(S4:No)、あるいは、64ビットブートローダプログラムBの改ざん無し、かつ、復号成功ではないと判断した場合は(S7:No)、画像形成装置10の起動を停止する(S10)。サブCPU32は、S10を実行して画像形成装置10の起動を停止したときに、画像形成装置10の起動を停止したことを報知することができる。例えば、サブCPU32は、画像形成装置10に備えられた操作パネルに、「プログラムが壊れています。ファームウェアを更新してください。」などのメッセージを表示することができる。つまり、ブートローダプログラムが改ざんされているおそれがあるため、ブートローダプログラムを含むファームウェアの更新が必要であることを報知する。
【0021】
次に、メインCPU31の起動シーケンスについて
図2および
図4を参照しつつ説明する。64ビット動作モードで起動したメインCPU31は、RAM18に展開されている64ビットブートローダプログラムBを実行することにより(
図4のS11、
図2の(5))、フラッシュROM17に記憶されている32ビットメインプログラムMの復号および改ざんチェックを実行する(S12)。このように、メインCPU31は、32ビット動作モードよりも演算速度の速い64ビット動作モードにて32ビットメインプログラムMの復号および改ざんチェックを実行するため、32ビット動作モードにて32ビットメインプログラムMの復号および改ざんチェックを実行する場合よりも、画像形成装置10の起動時間を短縮することができる。本願発明者らの実験によれば、画像形成装置10の起動時間を14秒から2秒に短縮することができた。つまり、画像形成装置10の起動時間を10秒も短縮することができた。さらに、メインCPU31が32ビットメインプログラムMの改ざんチェックを実行するため、画像形成装置10のセキュリティを高めることもできる。
なお、メインCPU31が暗号拡張機能を有する場合に、その暗号拡張機能を利用して32ビットメインプログラムMの復号および改ざんチェックを実行することも考えられるが、この場合も、メインCPU31が64ビット動作モードで暗号拡張機能を実行した方が、32ビット動作モードで実行した場合よりも、復号および改ざんチェックの処理時間を短縮することができる。
【0022】
続いて、メインCPU31は、64ビットブートローダプログラムBの改ざんが発見されず、かつ、64ビットブートローダプログラムBの復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S13)。ここで、メインCPU31は、改ざん無し、かつ、復号成功したと判断したときは(S13:Yes)、フラッシュROM17に記憶されている32ビットメインプログラムMをRAM18に展開する(S14、
図2の(6))。続いて、メインCPU31が64ビット動作モードから32ビット動作モードに切り替わり(S15、
図2の(7))、RAM18に展開されている32ビットメインプログラムMを実行する(S16、
図2の(8))。このように、64ビット動作モードから32ビット動作モードに切り替わったメインCPU31が32ビットメインプログラムMを実行する。32ビットメインプログラムMは64ビットメインプログラムよりもプログラムのサイズが小さいため、フラッシュROM17の記憶容量が圧迫され難い。また、過去に32ビット動作モード向けとして作製されたメインプログラムをプログラム資産として活用することができ、画像形成装置10の製造コストを低減することができる。
また、メインCPU31は、64ビットブートローダプログラムBの改ざん無し、かつ、復号成功ではないと判断した場合は(S13:No)、画像形成装置10の起動を停止する(S17)。例えば、メインCPU31は、画像形成装置10に備えられた表示装置に、「プログラムが壊れています。ファームウェアを更新してください。」などのメッセージを表示することができる。つまり、32ビットメインプログラムMが改ざんされているおそれがあるため、32ビットメインプログラムMを含むファームウェアを更新する必要があることを報知する。
【0023】
32ビットメインプログラムM、32ビットブートローダプログラムAおよび64ビットブートローダプログラムBを暗号化するための暗号アルゴリズムとしては、共通鍵または公開鍵を使った暗号アルゴリズムを用いることができる。共通鍵を使った暗号アルゴリズムとしては、例えば、AES-CMAC(Advanced Encryption Standard-Cipher-based Message Authentication Code)、HMAC(Hash-based Message Authentication Code)などを用いることができる。また、公開鍵を使った暗号アルゴリズムとしては、例えば、RSA暗号などを用いることができる。また、復号は、暗号アルゴリズムに使われているアルゴリズムと、そのアルゴリズムに使った共通鍵または公開鍵とを用いて復号することができる。また、改ざんのチェックは、復号が成功したか否かの判断に基づいて行い、復号が成功したときに改ざん無しと判断し、成功しなかったときに改ざん有りと判断することができる。また、32ビットメインプログラムM、32ビットブートローダプログラムAおよび64ビットブートローダプログラムBの少なくとも1つにデジタル署名が付されている場合は、そのデジタル署名が正しいか否かを判断することにより、改ざんの有無を判断することができる。
また、S4、S7およびS13の少なくとも1つのステップでは、プログラムの改ざんの有無の判断および復号成功か否かの判断の片方のみを実行してもよい。また、プログラムの改ざんチェックは、暗号化された状態のプログラムを改ざんチェックしてもよいし、プログラムを復号し、復号された状態のプログラムを改ざんチェックしてもよい。
【0024】
〈第2実施形態〉
次に、本発明の第2実施形態に係る画像形成装置について
図5ないし
図8を参照しつつ説明する。なお、前述した第1実施形態に係る画像形成装置10と同じ構成については同じ符号を用い、説明を省略する。
図5に示すように、メインCPU31は、コアC0およびコアC1を有するデュアルコアの構成である。コアとは、CPUの内部で独立して機能する演算・制御装置(回路)である。コアC0およびコアC1は、それぞれ32ビット動作モードまたは64ビット動作モードにて動作可能であり、32ビット動作モードおよび64ビット動作モードのいずれか一方から他方に切り替わることが可能である。32ビット動作モードのコアC0は、印刷設定情報の設定および利用に関する処理、ユーザIF13へ画面を表示する処理、ユーザIF13から操作を受け付ける処理、受け付けた操作に伴う各種処理、通信IF14およびUSBIF15を用いて画像データなどの各種データを通信する処理、RIP処理後のラスターデータの色補正処理などを実行する。また、64ビット動作モードのコアC1は、RIP処理の他、画像形成装置10に記憶された画像データの暗号化処理および復号処理など、相対的に時間のかかる処理を実行する。また、サブCPU32は、印刷エンジン12(
図1)の制御、画像形成装置10がスリープ状態になっているときの低消費電力制御などを実行する。コアC0は本発明の第1コアの一例であり、コアC1は本発明の第2コアの一例である。
【0025】
フラッシュROM17には、32ビットメインプログラムM0および64ビットメインプログラムM1が記憶されている。32ビットメインプログラムM0には、32ビット動作モードのコアC0が前述した各処理を実行するためのプログラムと、サブCPU32が前述した各処理を実行するためのプログラムとが含まれている。32ビットメインプログラムM0は、複数のプログラムから構成されており、各プログラムがそれぞれ単独で、あるいは、各プログラムが連携して各処理を実行する。つまり、32ビットメインプログラムM0は、32ビット動作モードのコアC0が、上記の各処理を実行することにより画像形成装置10として機能させるためのプログラムである。
また、64ビットメインプログラムM1には、64ビット動作モードのコアC1が前述した各処理を実行するためのプログラムが含まれている。64ビットメインプログラムM1も、複数のプログラムから構成されており、各プログラムがそれぞれ単独で、あるいは、各プログラムが連携して各処理を実行する。つまり、64ビットメインプログラムM1は、64ビット動作モードのコアC1が、上記の各処理を実行することにより画像形成装置10として機能させるためのプログラムである。
また、フラッシュROM17には、32ビットメインプログラムM0および64ビットメインプログラムM1を起動するための64ビットブートローダプログラムBが記憶されている。64ビットメインプログラムM1は、本発明の第2メインプログラムの一例である。
【0026】
次に、サブCPU32の起動シーケンスについて
図5および
図6を参照しつつ説明する。画像形成装置10の電源スイッチがオンすると、サブCPU32(
図1,
図5)が起動する(
図6のS20、
図5の(1))。続いて、サブCPU32は、ROM19に記憶されている32ビットブートローダプログラム0を実行することにより(S21)、フラッシュROM17に記憶されている32ビットブートローダプログラムAの復号および改ざんチェックを実行する(S22)。続いて、サブCPU32は、32ビットブートローダプログラムAの改ざんが発見されず、かつ、32ビットブートローダプログラムAの復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S23)。ここで、サブCPU32は、改ざん無し、かつ、復号成功と判断したときは(S23:Yes)、フラッシュROM17に記憶されている32ビットブートローダプログラムAをRAM18に展開し、その展開した32ビットブートローダプログラムAを実行する(S24、
図5の(2))。
【0027】
続いて、サブCPU32は、フラッシュROM17に記憶されている64ビットブートローダプログラムBの復号および改ざんチェックを実行する(S25)。続いて、サブCPU32は、64ビットブートローダプログラムBの改ざんが発見されず、かつ、64ビットブートローダプログラムBの復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S26)。ここで、サブCPU32は、改ざん無し、かつ、復号成功と判断したときは(S26:Yes)、フラッシュROM17に記憶されている64ビットブートローダプログラムBをRAM18に展開する(S27、
図5の(3))。続いて、メインCPU31のコアC0が64ビットモードで起動する(S28、
図5の(4))。また、サブCPU32は、32ビットブートローダプログラムAの改ざん無し、かつ、復号成功ではないと判断した場合は(S23:No)、あるいは、64ビットブートローダプログラムBの改ざん無し、かつ、復号成功ではないと判断した場合は(S26:No)、画像形成装置10の起動を停止する(S29)。サブCPU32は、S29を実行して画像形成装置10の起動を停止したときに、画像形成装置10の起動を停止したことを報知することができる。例えば、サブCPU32は、画像形成装置10に備えられた表示装置に、「プログラムが壊れています。ファームウェアを更新してください。」などのメッセージを表示することができる。つまり、ブートローダプログラムが改ざんされているおそれがあるため、ブートローダプログラムを含むファームウェアの更新が必要であることを報知する。
【0028】
次に、メインCPU31の起動シーケンスについて
図5および
図7を参照しつつ説明する。64ビット動作モードで起動したコアC0は、RAM18に展開されている64ビットブートローダプログラムBを実行することにより(
図7のS30、
図5の(5))、フラッシュROM17に記憶されている32ビットメインプログラムM0の復号および改ざんチェックを実行する(S31)。このように、メインCPU31のコアC0は、32ビット動作モードよりも演算速度の速い64ビット動作モードにて32ビットメインプログラムM0の復号および改ざんチェックを実行するため、32ビット動作モードにて32ビットメインプログラムM0の復号および改ざんチェックを実行する場合よりも、画像形成装置10の起動時間を短縮することができる。
続いて、メインCPU31のコアC0は、32ビットメインプログラムM0の改ざんが発見されず、かつ、32ビットメインプログラムM0の復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S32)。ここで、メインCPU31のコアC0は、改ざん無し、かつ、復号成功したと判断したときは(S32:Yes)、フラッシュROM17に記憶されている32ビットメインプログラムM0をRAM18に展開する(S33、
図5の(6))。続いて、メインCPU31のコアC0は、フラッシュROM17に記憶されている64ビットメインプログラムM1の復号および改ざんチェックを、64ビットブートローダプログラムBに従って実行する(S34)。このように、メインCPU31のコアC0は、32ビット動作モードよりも演算速度の速い64ビット動作モードにて64ビットメインプログラムM1の復号および改ざんチェックを実行するため、32ビット動作モードにて64ビットメインプログラムM1の復号および改ざんチェックを実行する場合よりも、画像形成装置10の起動時間を短縮することができる。
【0029】
続いて、メインCPU31のコアC0は、64ビットメインプログラムM1の改ざんが発見されず、かつ、64ビットメインプログラムM1の復号が成功したか否か、つまり、改ざん無し、かつ、復号成功か否かを判断する(S35)。ここで、メインCPU31のコアC0は、改ざん無し、かつ、復号成功したと判断したときは(S35:Yes)、フラッシュROM17に記憶されている64ビットメインプログラムM1をRAM18に展開する(S36、
図5の(7))。続いて、コアC1が64ビット動作モードで起動し(S37、
図5の(8))、コアC0が64ビット動作モードから32ビット動作モードに切り替わる(S38、
図5の(9))。続いて、メインCPU31のコアC0が32ビットメインプログラムM0を実行する(S39、
図5の(10-1))。このように、64ビット動作モードから32ビット動作モードに切り替わったコアC0が32ビットメインプログラムM0を実行するため、過去に32ビット動作モード向けとして作製されたメインプログラムをプログラム資産として活用することができ、画像形成装置10の製造コストを低減することができる。
続いて、64ビット動作モードで起動したメインCPU31のコアC1は、64ビットメインプログラムM1を実行する(
図8のS50、
図5の(10-2))。
また、S23、S26、S32およびS35の少なくとも1つのステップでは、プログラムの改ざんの有無の判断および復号成功か否かの判断の片方のみを実行してもよい。また、プログラムの改ざんチェックは、暗号化された状態のプログラムを改ざんチェックしてもよいし、プログラムを復号し、復号された状態のプログラムを改ざんチェックしてもよい。
【0030】
〈他の実施形態〉
(1)
図7のS37,S38の順序を逆にしてもよい。つまり、メインCPU31のコアC1が64ビット動作モードで起動する前に、メインCPU31のコアC0が64ビット動作モードから32ビット動作モードに切り替わってもよい。
(2)前述した第2実施形態において32ビット動作モードにて実行する処理、または、64ビット動作モードにて実行する処理は、コアC0およびコアC1のどちらが実行してもよい。例えば、コアC1が64ビットブートローダプログラムBを実行し、32ビット動作モードにて32ビットメインプログラムM0を実行してもよいし、コアC0が64ビット動作モードにて64ビットメインプログラムM1を実行してもよい。
(3)32ビットブートローダプログラムA、64ビットブートローダプログラムB、32ビットメインプログラムM0および64ビットメインプログラムM1の少なくとも1つのプログラムは、ウェブ上から取得する他、USBメモリ、CD-ROMなどの記憶媒体から取得することもできる。さらに、上記の少なくとも1つのプログラムが記憶されている他の画像形成装置または情報処理装置と通信することにより取得することもできる。
(4)メインCPU31は、n(nは自然数)ビットCPUまたはm(mは2以上の自然数)×nビットCPUとして動作するCPUであればよく、nビットCPUとして機能する第1動作モードおよびm×nビットCPUとして機能する第2動作モードのいずれか一方から他方に切り替わるように構成すればよい。例えば、メインCPU31が、64ビットCPUまたは128ビットCPUとして動作し、64ビット動作モードおよび128ビット動作モードのいずれか一方から他方に切り替わるように構成することができる。
コア0およびコア1についても、n(nは自然数)ビットCPUまたはm(mは2以上の自然数)×nビットCPUとして動作するCPUであればよく、nビットCPUとして機能する第1動作モードおよびm×nビットCPUとして機能する第2動作モードのいずれか一方から他方に切り替わるように構成すればよい。例えば、コアC0およびコアC1が、それぞれ64ビットコアまたは128ビットコアとして動作し、64ビット動作モードおよび128ビット動作モードのいずれか一方から他方に切り替わるように構成することができる。サブCPU32についてもメインCPU31と同様に構成することができる。
(5)メインCPU31を構成するコアの数は4個、6個、8個、または、10個以上でもよく、それらのいずれか2つ以上がコアC0およびコアC1の役割をするように構成してもよい。
【符号の説明】
【0031】
10・・画像形成装置、17・・フラッシュROM、18・・RAM、19・・ROM、30・・制御部、31・・メインCPU、32・・サブCPU、0,A・・32ビットブートローダプログラム、B・・64ビットブートローダプログラム、C0,C1・・コア、M,M0・・32ビットメインプログラム、M1・・64ビットメインプログラム。