JP2022108624A - 情報処理装置、その制御方法、及びプログラム - Google Patents

情報処理装置、その制御方法、及びプログラム Download PDF

Info

Publication number
JP2022108624A
JP2022108624A JP2021003727A JP2021003727A JP2022108624A JP 2022108624 A JP2022108624 A JP 2022108624A JP 2021003727 A JP2021003727 A JP 2021003727A JP 2021003727 A JP2021003727 A JP 2021003727A JP 2022108624 A JP2022108624 A JP 2022108624A
Authority
JP
Japan
Prior art keywords
data
area
information processing
code area
updating
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
Application number
JP2021003727A
Other languages
English (en)
Inventor
英史 佐々木
Hidefumi Sasaki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2021003727A priority Critical patent/JP2022108624A/ja
Priority to US17/573,766 priority patent/US11907049B2/en
Publication of JP2022108624A publication Critical patent/JP2022108624A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0733Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a data processing system embedded in an image processing device, e.g. printer, facsimile, scanner
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Figure 2022108624000001
【課題】本発明は、1つの不揮発メモリ上にコード領域と設定データ領域との両方を設ける不揮発メモリにおいて、不揮発メモリの更新処理中における強制中断に対する対故障性を高める仕組みを提供する。
【解決手段】本情報処理装置は、プログラムを保持するコード領域とデータを保持するデータ領域とを含む第1の部分を有する不揮発メモリを備える。また、本情報処理装置は、第1の部分の更新データを取得し、取得した更新データによって第1の部分を更新する。当該更新処理では、データ領域の内容を更新する前にコード領域に保持されているプログラムの少なくとも一部を消去し、データ領域の内容を更新した後に、コード領域への更新を完了させる。
【選択図】 図5

Description

本発明は、情報処理装置、その制御方法、及びプログラムに関するものである。
情報処理装置において電源が投入されると、情報処理装置に備えられたCPUが不揮発メモリに記憶されたブートプログラムをRAM等の作業領域に読み出して実行することで、システムが起動される。特許文献1には、情報処理装置において、1つの不揮発メモリ上にプログラムを保持するコード領域だけではなく、データも保持するデータ領域を設けることが提案されている。具体的には、当該コード領域には、ブートプログラムを実行する際のCPUが実行するべき命令列が記憶されている。また、当該データ領域には、ブートプログラムを実行する際にCPUが参照する各種設定情報が記憶されている。
一方で、近年では個人情報や機密情報を取り扱う情報処理装置に対し、セキュリティの強化が強く求められている。セキュリティ強化の1つとして、意図せぬデータ破損や意図的なデータ改ざんから、情報処理装置を保護するために、自動復旧機能が求められている。自動復旧機能では以下のようにしてブートプログラムを保護する。まず、ブートプログラムが格納されている不揮発メモリ領域において、起動するためのブート部に加えて、バックアップデータを格納するためのバックアップ部が設けられる。そしてブートプログラムを実行する前に、当該ブートプログラムがデータ破損やデータ改ざんされていないかが検証される。データ破損又はデータ改ざんが検知された場合には、情報処理装置はブート部の一部データが破損している場合であっても、ブート部の内容をバックアップ部を用いて上書きすることで、継続利用な状況を維持することができる。
セキュリティ強化としては更に、市場へ製品リリースした後も、コンピュータ技術の発展によって危殆化対策も求められている。危殆化対策をするためには、ファームウェア更新機能が必要となる。ファームウェア更新機能とは、機器外からネットワーク等を介してブートプログラムを取得し、不揮発メモリ上のブートプログラムの内容を更新する処理である。これにより、ブートプログラムは最新のセキュリティ技術やバグ修正パッチを取り込むことができ、情報処理装置をよりセキュアな状態に保つことができる。
ここで、1つの不揮発メモリ上にコード領域と設定データ領域との両方を保持する情報処理装置における、ブートプログラムのデータ破損及びデータ改ざん検知について詳述する。コード領域は、ブートプログラムを実行する際にCPUが実行するべき命令列であり、製品個体に非依存な静的情報である。ブートプログラムをコンパイル・リンクした時点でコード領域の内容は一意に定まる。デジタル署名技術を用いてコード領域に対して生成する署名データもまた製品個体に非依存である。そして、署名データを用いることでコード領域に対するデータ破損及びデータ改ざんを検知することができる。
一方、設定データ領域は、ブートプログラムを実行する際にCPUが参照する各種設定情報を記憶したデータであり、製品個体に依存する情報である。情報処理装置の組み立て段階のみならず、利用中にも設定情報の一部が書き換わることも想定している。つまり、設定データ領域の内容は可変であり、事前に署名データを生成することは難しい。設定データ領域の検証の代替手法として、誤り検出符号技術を用いることができる。誤り検出符号技術の一例はチェックサムである。チェックサムは、各種設定情報に対して一意に定まる数値を算出するアルゴリズムである。設定情報が変更されるたびに再度計算を行い、設定データ領域へ格納する。これにより、設定情報の一部が意図的或いは意図せずに書き換わってもチェックサムが同時に更新されなければ、データ破損が発生したものとみなすことができる。
特開2008-225576号公報
しかしながら、上記従来技術には以下に記載する課題がある。1つの不揮発メモリ上にコード領域と設定データ領域との両方を保持する情報処理装置における不揮発メモリの更新処理は、自動復旧処理の一部又はファームウェア更新処理の一部として実行される。不揮発メモリの更新処理では、正常系のユースケースとして、不揮発メモリ上のコード領域と設定データ領域とはともに完全に新しい内容へ更新されることを想定している。つまり、ファームウェア更新処理を実行すると、情報処理装置は、次回の電源投入の際に、更新済みコード領域と更新済み設定データ領域とに基づいてブートプログラムを起動する。
しかし、現実的な課題として、ファームウェア更新処理は必ずしも成功するわけではない。例えば、不揮発メモリの更新処理の途中に停電などの理由から情報処理装置の電源が切断される等の、例外ユースケースも発生し得る。情報処理装置の電源切断が発生すると、不揮発メモリ上の情報が不完全な状態となる。特に、設定データ領域については、設定情報が不正であっても(偶然又は意図的に)チェックサムが通るデータ破損となる可能性がある。その結果、不揮発メモリの更新処理に失敗した最悪のユースケースでは、自動復旧機能を有しているにもかかわらず、情報処理装置が正常起動できなくなる場合がある。つまり、コード領域はデジタル署名検証によって、データ破損や改変が発生したことを検出して自動復旧することも可能である。しかし、デジタル署名検証を利用できずチェックサムによる検証のみの設定データ領域では、データ破損や改変が発生するとその発生を見過ごすこともあり、装置に重大な影響を与えてしまう。例えば、当該情報処理装置をメーカへ送付するか、或いは、サービスマンが利用者先を訪問し情報処理装置の部品を交換する必要が生じてしまう。これらは、利用者に対して情報処理装置を一時的に利用できない不便を強いることになる。
上記従来技術では、例えば主電源ON時や省エネモードに移行するタイミングでコード領域の保持内容を他の領域へ移動することにより、各種データの書き換え回数を増やし、ウェアレベリングによって不揮発メモリの寿命を延ばす技術であった。しかし、本課題のように、更新処理中の電源切断によって、コード領域と設定データ領域との更新状態に不整合が起きる可能性への対応については言及されていない。
本発明は、上述の課題の少なくとも一つに鑑みて成されたものであり、1つの不揮発メモリ上にコード領域と設定データ領域との両方を設ける不揮発メモリにおいて、不揮発メモリの更新処理中における強制中断に対する対故障性を高める仕組みを提供する。
本発明は、情報処理装置であって、プログラムを保持するコード領域とデータを保持するデータ領域とを含む第1の部分を有する不揮発メモリと、前記第1の部分の更新データを取得する取得手段と、前記取得した更新データによって前記第1の部分を更新する更新手段とを備え、前記更新手段は、前記データ領域の内容を更新する前に前記コード領域に保持されているプログラムの少なくとも一部を消去し、前記データ領域の内容を更新した後に、前記コード領域への更新を完了させることを特徴とする。
本発明によれば、1つの不揮発メモリ上にコード領域と設定データ領域との両方を設ける不揮発メモリにおいて、不揮発メモリの更新処理中における強制中断に対する対故障性を高めることができる。
一実施形態に係る画像形成装置の構成を示すブロック図。 一実施形態に係るROM122上に格納するデータの構成を示す図。 一実施形態に係る自動復旧処理全体の概要を示す図。 一実施形態に係る自動復旧処理のフローチャート。 一実施形態に係る不揮発メモリ更新処理のフローチャート。 一実施形態に係るファームウェア更新処理のフローチャート。
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
<第1の実施形態>
以下では、本発明の第1の実施形態について説明する。本実施形態では、情報処理装置の一実施形態として画像形成装置を例にして、その自動復旧処理について主に説明する。なお、本発明を複合機やプリンタ等の画像形成装置のみに限定する意図はなく、その他の情報処理装置に対しても適用は可能である。他の情報処理装置としては、例えばプロジェクタやスキャナ、カメラ又は自動販売機や冷蔵庫、スマートフォンなどを適用することができる。また、以下では、ブートプログラムを、「Bootrom」とも称して説明を行う。
まず図1を参照して、本実施形態に係る画像形成装置の構成例を説明する。以下で説明する構成は一例であり、本発明を限定する意図はなく、追加の構成や代替の構成が設けられてもよい。
画像形成装置102は、NIC(network interface card)を介してネットワークハブ103と接続され、当該ネットワークハブ103を介してデータ処理装置101やDHCPサーバ104と接続されている。ネットワークハブ103は、データ処理装置101、画像形成装置102、及びDHCPサーバ104間のネットワーク通信を行うためのハブである。本実施形態では、単一のネットワークハブに関連するデバイスをローカルネットワーク接続する形態で説明する。しかしながら、その他のネットワーク構成を除外する意図はなく、本発明を適用することができる。
データ処理装置101(例えば、PC)は、PDL(Page Description Language)データを生成し、当該PDLデータを画像形成装置102に送信する。また、後述するファームウェア更新処理では、データ処理装置101はファームウェアデータを画像形成装置102に送信する。DHCPサーバ104は、DHCP(Dynamic Host Configuration Protocol)に基づいてネットワーク設定情報の取得要求を受け取り、ネットワーク設定情報を応答するためのサーバである。
画像形成装置102(例えばレーザープリンタ)は、データ処理装置101からPDLデータを受信し、当該画像データに基づいてシートに画像形成を行う装置である。なお、画像形成装置102は、スキャナ機能やFAX機能等を有する複合機であってもよい。画像形成装置102は、コントローラ110、UIパネル111、プリントエンジン112、電源ユニット113、及び電源スイッチ114を備える。
コントローラ110は、データ処理装置101から送信されたPDLデータに基づき、印刷用のビットマップデータを生成し、当該ビットマップデータをプリントエンジン112に送信するコントローラボードである。なお、画像形成装置102に関する設定や状態をレポートとして印字するために、コントローラ110自身がPDLデータを生成し、印刷指示することもできる。
UIパネル111は、ユーザインタフェースであり、利用者に様々な情報を伝える表示部や、利用者から様々な操作を受け付ける操作部を有する。UIパネル111は、例えば、物理的なボタンの他にタッチパネル等を備えてもいてもよい。また、UIパネル111は、LEDによって、画像形成装置102内で発生したエラーや警告を、光の点灯・点滅によって利用者へ報知する機能を備えてもよい。或いは、画像形成装置102は、ブザー等によって、画像形成装置102内で発生したエラーや警告を、音によって利用者へ報知する機能を備えてもよい。
プリントエンジン112は、コントローラ110から受信したビットマップデータに基づいて、電子写真方式でトナーを用いてシートに画像形成を行うプリントエンジンである。画像形成の方式は、トナーを記録材として用いる電子写真方式以外に、例えばインクを記録材として用いるインクジェット方式等でもよい。また、プリントエンジン112は複数色の記録材を備え、PDLデータに従ってカラー印刷を行うことができる。さらに、プリントエンジン112は複数の給紙段を備え、PDLデータで指定された給紙段からシートを給紙することもできる。
電源ユニット113は、画像形成装置102を構成する各構成要素へ電力を供給するための電力ユニットである。各パーツを動作させるのに必要な電圧を生成し、供給する役割を担う。電源スイッチ114は、利用者からの電源投入・切断指示を受け付けるためのスイッチである。画像形成装置102がOFF状態において、利用者が電源スイッチ114を押下すると、当該電源スイッチ押下イベントが電源ユニット113へ通知される。その後、電源ユニット113は画像形成装置102を構成する各パーツに電力供給を開始する。
コントローラ110は、CPU121、ROM122、RAM123、NIC124、パネルI/F125、エンジンI/F126、RIP部128、内蔵ストレージ部130、リアルタイムクロック134、及び自動復旧マイコン135を備える。各構成要素は、バス131を介して相互に信号を送受することができる。CPU121は、種々のプログラムを実行するための中央処理演算装置である。種々のプログラムは、データ処理装置101から送信されたPDLデータを解析し、中間データへ変換するPDLインタプリタ処理を備えてもよい。ROM122は、CPU121がリセット解除されたことをトリガに実行するBootromを保持する不揮発メモリである。この詳細については図2を用いて後述する。RAM123は、CPU121が各種プログラムを動作する際に一時的な情報を格納するための揮発メモリである。
NIC124は、画像形成装置102外のデバイスとネットワークによって相互接続し、双方間のデータ通信すなわちデータの送信や受信を中継するネットワークインタフェースコントローラである。なお、本発明を適用する上で、有線接続をする通信形態のほかに、無線接続をする通信形態を用いてもよい。パネルI/F125は、UIパネル111とコントローラ110とを相互に接続し、双方間のデータ通信、即ちデータの送信や受信を中継するためのインタフェースである。エンジンI/F126は、プリントエンジン112とコントローラ110とを相互に接続し、双方間のデータ通信、即ちデータの送信や受信を中継するためのインタフェースである。
RIP部128は、中間データをビットマップデータに変換し、RAM123に展開する。なお、本発明では、CPU121とは独立した専用のRIP部128が中間データをビットマップに変換する形態で説明を行っている。本発明はこれに限定されず、例えばRIP部128を設けずに、CPU121が、データ処理装置101から受信したPDLデータをビットマップデータへ直接変換するようにしてもよい。
内蔵ストレージ部130は、Bootromから起動するOS(Operating System)を保持する不揮発性記憶領域である。例えば、eMMC(embedded MMC)やハードディスクドライブ、ソリッドステートドライブ等によっても実現できる。内蔵ストレージ部130は、大容量の記憶領域を比較的安価に確保できる。そこで、内蔵ストレージ部130に、OSのプログラムとOSが使うデータとを格納してもよい。
リアルタイムクロック134は、画像形成装置102内の時刻情報を不揮発に管理するためのハードチップである。電源ユニット113から独立した電源として、電池駆動することで、画像形成装置102の電源切断後であっても時刻情報を定期的に更新するなどの機能を有する。
自動復旧マイコン135は、CPU121がROM122に含まれるプログラムを実行する前に、ROM122の内容の正当性を検証して復旧する自動復旧処理のためのマイコンである。自動復旧マイコン135は、CPU121のリセット状態を解除し、CPU121がBootromを開始するトリガとなる役割も担う。自動復旧処理の詳細については、図3を用いて後述する。
<ROMのデータ構成>
次に、図2を参照して、本実施形態に係るROM122上に格納するデータの構成例を説明する。ROM122は、ブート部201とバックアップ領域であるバックアップ部202とを含んで構成される。本実施形態では、64Mbit/8MBのNAND FLASHを採用する前提でストレージ割当を例示する。なお、容量の異なる不揮発メモリを採用しても、本発明を適用できる。また、ブート部201とバックアップ部202とがそれぞれ異なる不揮発メモリに設けられてもよく、また様々な容量の物理不揮発メモリとしても、本発明を適用できる。或いは、バックアップ部202をそれ以外の不揮発メモリによって実現しても、本発明を適用できる。また、ROM122は、全体をいくつかのセクタに分け、それぞれのセクタの中にはいくつかのページが含まれる構成とする。ROM122上にデータを書き込む場合には、セクタ単位で古いデータの消去を行った後に、ページ単位で新たなデータの書き込みを行うものとする。
ブート部201は、画像形成装置102が起動する際に利用するためのBootromが格納されているデータ部分である。ブート部201は、例えば0x0000_0000~0x003F_EFFFに割り当てられた領域であり、コード領域211と設定データ領域212とを含んで構成される。
バックアップ部202は、画像形成装置102が起動する際に、自動復旧マイコン135が検証・復旧処理を実行する際に用いるデータである。当該バックアップ部202の内容はブート部201の内容と同一である。例えば、ブート部201の設定データ領域212が更新された場合には、バックアップ部202内で相当する部分領域についても同じ内容で更新される。
ここで、ブート部201を構成するコード領域211について詳細に説明する。コード領域211には、電源投入直後にCPU121が実行を開始するプログラムを構成する命令群が含まれる。コード領域211は0x0000_0000~0x003F_EFFFに割り当てられた領域である。CPU121は、CPUリセット状態が解除されるとROM122上の先頭領域に書かれたプログラムを実行する。また、コード領域211には、自動復旧マイコン135がコード領域211のデータ破損・改ざんを検知する際に参照する、製品個体共通の署名データ213も含まれる。
署名データ213は、コード領域211内において署名データ213以外のデータから算出されたダイジェストに対して、鍵生成アルゴリズムで生成した秘密鍵を用いて、公開鍵暗号アルゴリズムによって暗号化したデータである。ダイジェストの生成については、例えば、SHA1アルゴリズムなどを採用することができる。ここで、ダイジェスト生成において署名データ213を除外する理由は、当該署名データ213を生成する時点では、署名データ213は確定していないためである。そこで、署名データ213を生成する時点ではゼロ又は全FFといった予測可能なデータをダミーとして埋め込んで、ダイジェストが算出される。事前に種々の公開鍵暗号技術の鍵生成アルゴリズムによって生成した秘密鍵を用いて、当該ダイジェストから公開鍵暗号技術の暗号化アルゴリズムを適用して生成した署名データが、署名データ213として記憶される。なお、署名データ213がコード領域211上で保持されるデータのアドレスは、自動復旧マイコン135が記憶・取得でき、かつ、当該内容が予測可能なアドレスであればどこでもよい。例えば、コード領域211の先頭部であってもよいし、コード領域211の末端部であってもよい。署名データ213の位置については、上記条件を満たせば、コード領域211上のどこに配置しても、本発明は適用可能である。
設定データ領域212には、CPU121のリセット解除状態が解除されるとCPU121がプログラムの実行を開始する際に参照する設定情報が含まれる。設定データ領域212は0x003F_F000~0x003F_FFFFに割り当てられた領域である。設定データ領域212は、マジックナンバー221、チェックサム情報222、223、ボード種別情報224、パネル種別情報225、MACアドレス情報226、227、及び、パディング228を含む。
マジックナンバー221は、当該設定データ領域212が保持されていることを示すための識別情報である。チェックサム情報222、223は、当該設定データ領域212に含まれるデータから特定のアルゴリズムによって一意に設定される値であり、製品固体依存の値となる。なお、チェックサムは誤り検出符号アルゴリズムの1つであり、その他の任意の誤り検出符号アルゴリズムを適用してもよい。ボード種別情報224は、当該画像形成装置102を構成するハードウェア構成を表現するための情報である。本実施形態においては、レーザープリンタを例示している。これに対して、スキャナ機能などを備えた複合機を構成する場合に、ハードウェア構成毎にBootromを用意するのは、開発・生産の両観点から煩雑である。そこで、設定データ領域212上にハードウェア構成を示すボード種別情報224を備え、工場での製品組み立て工程の中でボード種別情報224を書き込む工程を前提とする。これにより、同一のBootromを異なるボードを備えた多機種間で使い回すことが可能となる。
パネル種別情報225は、UIパネル111の種別を表現するための情報である。製品への要求仕様として、同じコントローラ110であっても画面サイズの異なるUIパネル111へ換装できる構成もサポートしている。そこで、設定データ領域212には、どのサイズのUIパネル111が装着されているかを示すための設定情報として、パネル種別情報225が含まれる。
MACアドレス情報226、227は、当該画像形成装置102に割り当てた、NIC124の識別情報である。なお、製品に割り当てられるMACアドレスは6桁であるため、未使用の領域については0が保持されているものとする。MACアドレスは、工場での生産工程において、それぞれの画像形成装置102に対して重複が無いように個別に割り当てられる。パディング228は、設定データ領域212に割り当てられた残りの領域であって、ダミーの値として0xFFFF_FFFFで埋められる。
<自動復旧処理の概要>
次に、図3を参照して、自動復旧処理全体の概要を説明する。300は、画像形成装置102の利用者を示す。
S310で、利用者300による電源スイッチ114の押下が検出される。続いて、S311で、電源スイッチ114は、利用者300によって押下されたことを検出すると、電源ユニット113へ電源スイッチ押下イベントを通知する。なお、電源スイッチ114では、スイッチ押下時のチャタリングを無くすべく、信号制御を行う構成をとってもよい。当該チャタリング対策は、FPGAを用いて実装してもよいし、小型のマイコンによって実装してもよい。
次に、S321で、電源ユニット113は、電源スイッチ114から電源スイッチ押下イベントを通知されると、CPU121へ電力供給を行う。本実施形態では、電源投入時のCPU121のデフォルト状態は、リセット状態とする。また、S322で、電源ユニット113は、電源スイッチ114から電源スイッチ押下イベントを通知されると、自動復旧マイコン135へ電力供給を行う。本実施形態では、電源投入時の自動復旧マイコン135のデフォルト状態は、リセット解除状態とする。これらのCPUのリセット制御は、当該CPUに備わっているリセット信号線に対して、HIGH又はLOWの信号を伝達することで行う。
自動復旧マイコン135は、リセット解除を受け付けると、ROM122からコード領域211に対して経年劣化によるデータ破損やデータ改ざんが発生したか否かについて検証する。つまり、自動復旧マイコン135は、ROM122のコード領域211の内容の正当性を検証する。データ破損又はデータ改ざんを検知した場合、即ち正当性の検証に失敗した場合には、S323で、自動復旧マイコン135は、バックアップ部202の内容に基づき、コード領域211と設定データ領域212とを復旧する。自動復旧処理の詳細については、図4を用いて後述する。
次に、S324で、自動復旧マイコン135は、CPU121のリセット解除を行う。また、S325で、自動復旧マイコン135は、自動復旧マイコン135の動作が停止するようにリセット状態へ移行する。なお、リセット状態への移行については、自動復旧マイコン135が自らのリセット状態を制御することで実現してもよいし、自動復旧マイコン135がWFI(Wake up from Interrupt)状態で待機することで実現してもよい。
次に、S331で、CPU121は自動復旧マイコン135からリセット解除されると、ROM122に含まれるコード領域211と設定データ領域212を利用して、Bootromを実行する。なお、CPU121が自動復旧マイコン135からリセット解除を受けた段階で、CPU121が自動復旧マイコン135をリセット状態にする構成としてもよい。
CPU121はBootromを介して、内蔵ストレージ部130に含まれるKernel/Initrd361に対してデータ破損やデータ改ざんが発生したか否かについて検証する。Kernel/Initrd361は、OSの1つであるLinux(登録商標)を起動するためのプログラムやデータである。Kernel/Initrd361においてデータ破損又はデータ改ざんを検知した場合には、S332で、CPU121はBootromを介して、Kernel/Initrdバックアップ362を基に、Kernel/Initrd361を復旧する。その後、S333で、CPU121はBootromを介して、Kernel/Initrdを利用してLinuxを起動する。
次に、CPU121は起動したLinuxを介して、各種アプリケーション371がデータ破損又はデータ改ざんが発生したか否かについて検証する。データ破損又はデータ改ざんを検知した場合には、S341で、CPU121は起動したLinuxを介して、データ破損を利用者300へ報知する。その後、S342で、CPU121は起動したLinuxを介して、各種アプリケーション371を起動する。各種アプリケーション371の中には、ファームウェア更新プログラム372が含まれてもよい。
なお、本実施形態では説明を簡略化するために省略しているが、各種アプリケーション371についてもバックアップを用意し、データ破損又はデータ改ざんを検知した場合に復旧する構成としてもよい。
<自動復旧処理の詳細手順>
次に、図4を参照して、本実施形態に係る自動復旧処理の処理手順について説明する。以下で説明する処理は、上記S323で行われる処理の詳細であり、自動復旧マイコン135によって実行される。
S401で、自動復旧マイコン135は、ROM122のブート部201におけるコード領域211に格納されている署名データ213を公開鍵によって復号し、第1のダイジェストを算出する。公開鍵情報は、事前に自動復旧マイコン135内に保持してもよい。或いは、別の実施形態として、コード領域211内に保持する形態でもあってもよい。公開鍵による復号処理について本発明を限定する意図はなく、例えば楕円暗号やRSA暗号など、種々の公開鍵暗号技術の復号アルゴリズムを適用できる。続いて、S402で、自動復旧マイコン135は、署名データ213以外のコード領域211に対する、第2のダイジェストをハッシュ関数を用いて算出する。第2のダイジェストを生成するために用いられるアルゴリズムは、署名データ213を生成するときに用いたものと同じものを適用する。
次に、S410で、自動復旧マイコン135は、第1のダイジェストと第2のダイジェストが一致するか否かを判断する。ダイジェストが一致する場合は、自動復旧マイコン135は、署名データ213によって、コード領域211の内容はデータ破損もデータ改ざんもされていないと判断する。よって、自動復旧マイコン135は、ダイジェストが一致する場合、自動復旧処理を終了する。一方、ダイジェストが一致しない場合は、自動復旧マイコン135は、署名データ213を含むコード領域211の内容の少なくとも一部がデータ破損又はデータ改ざんがされていると判断し、処理をS421へ進める。
S421で、自動復旧マイコン135は、バックアップ部202の内容を、ブート部201に上書きコピーする。S421の処理詳細は、図5を用いて後述する。続いて、S422及びS423で、自動復旧マイコン135は、S401及びS402と同じ処理を実行する。これにより、バックアップ部202から上書きしたブート部201内のコード領域211に対して、自動復旧マイコン135は、署名検証処理を行う。
その後、S430で、自動復旧マイコン135は、第1のダイジェストと第2のダイジェストが一致するか否かを判断する。ダイジェストが一致する場合は、リカバリ後のコード領域211の内容はデータ破損もデータ改ざんもされていないと判断する。よって、自動復旧マイコン135は、ダイジェストが一致する場合、自動復旧処理を終了する。一方、ダイジェストが一致しない場合は、自動復旧マイコン135は、署名データ213を含むコード領域211の内容の少なくとも一部がデータ破損又はデータ改ざんがされていると判断し、S431へ処理を進める。この場合、ブート部201の内容も、バックアップ部202の内容も、異常状態であり、正常起動できない状態である。S431で、自動復旧マイコン135は、利用者に対してエラーを報知して、起動処理を中断する。具体的には、自動復旧マイコン135は、エラー報知処理として、UIパネル111を介して、音や光などで起動処理が失敗したことを利用者へ報知する。
<不揮発メモリの更新処理>
次に、図5を参照して、本実施形態に係る不揮発メモリであるROM122の更新処理の処理手順について説明する。以下で説明する処理は、上記S421で行われる処理の詳細であり、自動復旧マイコン135によって実行される。本実施形態においては、不揮発メモリの書き換え処理は4つのステップから構成される。また、不揮発メモリ上のデータ書き換えについては、セクタ単位で行われる消去と、ページ単位で行われる書き込みの2段階で行う場合を想定している。
S501で、自動復旧マイコン135は、コード領域211の各セクタに対応するセクタ変数iを0に初期化する。続いて、S502で、自動復旧マイコン135は、セクタ変数iとコード領域211のセクタ数とを比較して、コード領域211の全セクタに対して処理を終了したかを判断する。終了していない場合はS503に処理を進める。S503で、自動復旧マイコン135は、セクタ変数iが示す対象セクタの消去を行うコマンドを不揮発メモリ122に通知する。ここで、不揮発メモリ122は対象セクタの内容を消去し、新たなデータを書き換えることのできる状態にする。当該処理の開始によって、コード領域211はデータ破損状態となる。その後、S504で、自動復旧マイコン135は、セクタ変数iをインクリメントし、処理をS502に戻す。一方、S502でコード領域211の全セクタに対して処理を終了したと判断すると、自動復旧マイコン135はS505に処理を進める。ここで、コード領域211内のデータ消去が完了する。
S505で、自動復旧マイコン135は、再度、セクタ変数iを0に初期化する。続いて、S506で、自動復旧マイコン135は、セクタ変数iと設定データ領域212のセクタ数とを比較して、設定データ領域212の全セクタに対して処理を終了したかを判断する。終了していない場合はS507に処理を進める。S507で、自動復旧マイコン135は、セクタ変数iが示す対象セクタの消去を行うコマンドを不揮発メモリ122に通知する。ここで、不揮発メモリ122は対象セクタの内容を消去し、新たなデータを書き換えることのできる状態にする。当該処理の開始によって、設定データ領域212はデータ破損状態となる。その後、S508で、自動復旧マイコン135は、セクタ変数iをインクリメントし、処理をS506に戻す。一方、S506で設定データ領域212の全セクタに対して処理を終了したと判断すると、自動復旧マイコン135は、処理をS509に進める。ここで、設定データ領域212内のデータ消去が完了する。
次に、S509で、自動復旧マイコン135は、設定データ領域212の各ページに対応するページ変数jを0で初期化する。続いて、S510で、自動復旧マイコン135は、ページ変数jと設定データ領域212のページ数とを比較して、設定データ領域212の全ページに対して処理を終了したかを判断する。終了していない場合はS511に処理を進める。S511で、自動復旧マイコン135は、ページ変数jが示す対象ページのデータを読み込む。ここでは、自動復旧マイコン135はバックアップ部202のうち該当するページの内容を読み込むコマンドを不揮発メモリ122へ通知し、その応答を受信することにより、データを取得する。続いて、S512で、自動復旧マイコン135は、データを取得したページの書き込みを行うコマンドを当該データとともに不揮発メモリ122に通知する。不揮発メモリ122は対象ページの内容を当該データの内容で上書きする。その後、S513で、自動復旧マイコン135は、ページ変数jをインクリメントし、処理をS510に戻す。一方、S510で設定データ領域212の全ページに対して処理を終了したと判断すると、自動復旧マイコン135は、処理をS514に進める。ここで、設定データ領域212内のデータ書き込みが完了し、設定データ領域212のデータ破損状態が解除される。
S514で、自動復旧マイコン135は、コード領域211の各ページに対応するページ変数jを0で初期化する。続いて、S515で、自動復旧マイコン135は、ページ変数jとコード領域211のページ数とを比較して、コード領域211の全ページに対して処理を終了したかを判断する。終了していない場合はS516に処理を進める。S516で、自動復旧マイコン135は、ページ変数jが示す対象ページのデータを読み込む。ここでは、自動復旧マイコン135はバックアップ部202のうち該当するページの内容を読み込むコマンドを不揮発メモリ122へ通知し、その応答を受信することにより、データを取得する。続いて、S517で、自動復旧マイコン135は、データを取得したページの書き込みを行うコマンドを当該データとともに不揮発メモリ122に通知する。ここで、不揮発メモリ122は対象ページの内容を取得した当該データの内容で上書きする。その後、S518で、自動復旧マイコン135は、ページ変数jをインクリメントし、処理をS515に戻す。一方、S515でコード領域211の全ページに対して処理を終了したと判断すると、自動復旧マイコン135は、処理を終了する。ここで、コード領域211内のデータ書き込みが完了し、コード領域211のデータ破損状態が解除される。
以上説明したように、本実施形態に係る情報処理装置(画像形成装置)は、プログラムを保持するコード領域とデータを保持するデータ領域とを含む第1の部分を有する不揮発メモリを備える。また、本情報処理装置は、第1の部分の更新データを取得し、取得した更新データによって第1の部分を更新する。当該更新処理では、データ領域の内容を更新する前にコード領域に保持されているプログラムの少なくとも一部を消去し、データ領域の内容を更新した後に、コード領域への更新を完了させる。このように、本実施形態によれば、設定データ領域212の内容の少なくとも一部分を消去する前に、コード領域211の内容の少なくとも一部分を消去している。また、設定データ領域212の内容の全てを書き込み終わった後に、コード領域211の内容の全てを書き込み終えている。より具体的には、本実施形態によれば、設定データ領域212に対する消去処理と書き込み処理(S505~S513)を、コード領域211が破損状態中に行う。これにより、1つの不揮発メモリ上にコード領域と設定データ領域との両方を設ける不揮発メモリにおいて、不揮発メモリの更新処理中における強制中断に対する対故障性を高めることができる。
ここで、コード領域211内の全ページへの書き込みが完了するまでの間、任意のタイミングで電源切断が発生したとしても、コード領域211の内容は破損しており署名検証処理(S401~S410)は失敗する。署名検証処理が失敗すれば、設定データ領域212の内容もコード領域211と一緒にバックアップ部202から復旧される。これにより、設定データ領域212だけが更新されていないまま、再起動によって更新されたCPU121がコード領域211内の命令列を実行するのを未然に防ぐことができる。つまり、本実施形態によれば、設定データ領域の内容を消去しデータ破損状態である状態では、コード領域の内容もまた必ずデータ破損状態となる。設定データ領域の内容も更新が完了した状態で、コード領域の内容を全て書き込み終わることとなる。従って、本情報処理装置は、コード領域と設定データ領域が共に更新前である状態、少なくともコード領域は破損している状態、或いは、共に更新が完了した状態しかとらない。そしてコード領域が破損している状態であれば、情報処理装置は自動復旧機能によってコード領域と設定データ領域を共にバックアップ部から復旧する。よって、本情報処理装置は、コード領域は更新されているが、設定データ領域が更新されていない、或いは、データ破損している状態での起動を回避できる。
なお、本実施形態における不揮発メモリの更新処理のシーケンスは、本発明を適用した一例であり、種々の変形が可能である。例えば、本実施形態では、自動復旧マイコン135はコード領域211に対して一括で全てを消去処理した後に、一括で全てを書き込む処理を実行する形態で説明した。しかし、本発明はこれに限定されず、例えば、コード領域内の一部を保留領域と定義し、コード領域211内の保留領域とは異なる領域の消去と書き込み、設定データ領域212の消去と書き込み、そして、保留領域の消去と書き込み、とする形態でもよい。或いは、コード領域の全てを消去して、設定データ領域の全てを消去してコード領域の保留領域とは異なる領域に更新データを書き込み、その後に設定データ領域212に書き込んでコード領域の異なる領域に更新データを書き込むようにしてもよい。これらの場合であっても、本実施形態と同等の効果を得ることができる。
また、他の変形例として、設定データ領域212がブート部201の末端にあるならば、各セクタの消去は昇順で、各ページの書き込みを降順に行うことでも、本発明を適用することができる。この場合、ブート領域の先頭のページは、最初のセクタ消去によって消去され、最後のページ書き込みによって更新される。
さらに、以下の2つの条件を満たすのであれば本発明を適用することができる。1つ目の条件は、設定データ領域212の内容の少なくとも一部分を消去する前に、コード領域211の内容の少なくとも一部分を消去することである。2つ目の条件は、設定データ領域212の内容の全てを書き込み終わった後に、コード領域211の内容の全ての書き込みを終えていることである。つまり、設定データ領域212の内容の消去から書き込みを終えるまでの間、コード領域211がデータ破損状態であることが条件となる。これにより、設定データ領域212へのデータ処理中において電源断が発生した場合には、コード領域211の内容もデータ破損状態となるため、次回起動時において自動復旧処理を行うことができる。
<第2の実施形態>
以下では、本発明の第2の実施形態について説明する。本実施形態では、画像形成装置におけるファームウェアの更新処理を中心に説明する。なお、上記第1の実施形態と同様の構成及び制御についてはその説明を省略する。
図6を参照して、本実施形態に係るファームウェア更新処理の処理手順について説明する。以下で説明する処理は、上記S342で起動したアプリケーション371の1つである、ファームウェア更新プログラム372をCPU121が実行することにより実現される。なお、本発明を限定する意図はなく、例えばS331で実行したbootable(即ち、コード領域211に含まれるプログラム)の1機能として備えてもよい。ファームウェアの更新処理を開始するトリガも、種々のトリガを用いてもよい。利用者300がUIパネル111から明示的に画像形成装置102へ指示を出してもよい。また、画像形成装置102が一定時間が経過する毎に、NIC124経由で不図示の外部サーバに問い合わせてもよい。或いは、不図示の外部サーバからNIC124経由で、画像形成装置102に対してアップデート指示を出す形態であってもよい。ここでは、利用者300がUIパネル111から明示的に画像形成装置102へ指示を出す場合を例に説明する。当該指示は、ファームウェア更新プログラム372を実行するCPU121が受け、以下の処理を実行する。
まず、S601で、CPU121は、DHCPサーバ104に対してMACアドレス情報を通知し、当該MACアドレスに対応するネットワーク設定を取得する。MACアドレス情報は、設定データ領域212に含まれるMACアドレス情報226、227を用いる。DHCPによるネットワーク設定の取得に関しては、一般的な技術手法であるため、詳細を割愛する。
次に、S602で、CPU121は、FTPデーモンを起動する。FTPデーモンとは、File Transfer Protocolに対応したサーバプログラムであり、FTPクライアントソフトからの要求に基づき、ファイルのアップロードやダウンロードを行う。CPU121は、外部からのFTP接続要求を待つ。続いて、S603で、CPU121は、データ処理装置101からFTP経由でファームウェアデータを受信し、受信したファームウェアデータをRAM123に記憶する。その後、S604で、CPU121は、受信したファームウェアデータをRAM123に展開する。ファームウェアデータは、ファームウェアをネットワーク上で流通しやすい形態としたファイルである。例えば、事前にファームウェアデータを圧縮しておき、RAM123に展開するタイミングで圧縮した内容を展開してもよい。或いは、事前にファームウェアデータを暗号化しておき、RAM123に展開するタイミングで復号してもよい。これらについて、本発明を適用する上では種々の手法を適用することができる。
次に、S610で、CPU121は、ファームウェアデータからファームウェアが正常に展開できたかを判断する。ファームウェを正常に展開できた場合はS611に進み、CPU121は、RAM123上に展開済みのファームウェアに含まれる、設定データ領域212に相当する領域を更新する。RAM123へ展開した後は、当該領域には、製品個体に依存する情報は記録されていない。当該ステップでは、設定データ領域212の内容を、RAM123上の展開済ファームウェアの該当領域へコピーする。これにより、ファームウェアを更新した後も、設定データ領域212の内容について更新前からのデータを引き継ぐことができる。
続いて、S612で、CPU121は、更新済ファームウェアの内容に基づいて、ブート部201を上書きコピーする。当該処理については、図5に示した不揮発メモリの更新処理のフローチャートを、ファームウェア更新プログラム372(CPU121)が行うことで実現する。その後、S613で、CPU121は、ブート部201の内容に基づいて、バックアップ部202の内容を更新する。なお、ブート部201の内容と、更新済ファームウェアの内容は同一であるため、更新済みファームウェアの内容を用いてバックアップ部202の内容を更新してもよい。そしてファームウェアの更新処理を終了する。
一方、S610でファームウェアを正常に展開できなかった場合、S621に進み、CPU121は、利用者に対して、エラーを報知して、ファームウェア更新処理を中断する。エラー報知は具体的には、UIパネル111を介して、音や光などで起動処理が失敗したことを報知する。ここでは、S621でエラーを報知しファームウェア更新処理を中断する例について説明したが、本発明をこのようなエラー制御に限定する意図はない。例えば、再度、更新用のファームウェアを受信した際には当該ファームウェアを用いて更新処理を継続するようにしてもよい。
以上説明したように、本実施形態によれば、不揮発メモリの更新処理は、ファームウェアの自動復旧時のみならず、ファームウェアの更新処理時にも適用することができる。なお、本実施形態で用いたファームウェアデータを受信するネットワークプロトコルは一例に過ぎない。これ以外のネットワークプロトコルを用いて、本発明を適用することができる。例えば、DHCPの代わりにBOOTP(Bootstrap Protocol)を用いてネットワーク設定を取得してもよい。或いは、ファームウェア更新プログラム372がネットワーク設定を外部サーバから取得する代わりに、固定値を記憶しておいて、ファームウェアの更新を行う度に設定を行う構成としてもよい。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
101:データ処理装置、102:画像形成装置、103:ネットワークハブ、104:DHCPサーバ、110:コントローラ、111:UIパネル、112:プリントエンジン、113:電源ユニット、114:電源スイッチ、121:CPU、122:ROM、123:RAM、124:NIC、125:パネルI/F

Claims (16)

  1. 情報処理装置であって、
    プログラムを保持するコード領域とデータを保持するデータ領域とを含む第1の部分を有する不揮発メモリと、
    前記第1の部分の更新データを取得する取得手段と、
    前記取得した更新データによって前記第1の部分を更新する更新手段と
    を備え、
    前記更新手段は、
    前記データ領域の内容を更新する前に前記コード領域に保持されているプログラムの少なくとも一部を消去し、前記データ領域の内容を更新した後に、前記コード領域への更新を完了させることを特徴とする情報処理装置。
  2. 前記更新手段は、
    前記コード領域に保持されているプログラムを全て消去し、その後に前記データ領域に保持されているデータを消去して該データ領域に更新データを書き込み、その後に前記コード領域に更新データを書き込むことを特徴とする請求項1に記載の情報処理装置。
  3. 前記コード領域は保留領域を含み、
    前記更新手段は、
    前記コード領域に保持されているプログラムを全て消去し、その後に前記データ領域に保持されているデータを消去し、前記コード領域の前記保留領域とは異なる領域に更新データを書き込んで前記データ領域に更新データを書き込み、その後に前記コード領域の前記保留領域に更新データを書き込むことを特徴とする請求項1に記載の情報処理装置。
  4. 前記コード領域は保留領域を含み、
    前記更新手段は、
    前記コード領域の保留領域とは異なる領域に保持されているプログラムを消去して更新データを書き込み、その後に前記データ領域に保持されているデータを消去して更新データを書き込み、その後に前記コード領域の前記保留領域に保持されているプログラムを消去して更新データを書き込むことを特徴とする請求項1に記載の情報処理装置。
  5. 前記不揮発メモリは、前記第1の部分に保持されているデータのバックアップ領域である第2の部分をさらに含み、
    前記取得手段は、前記不揮発メモリの前記第2の部分から前記第1の部分の更新データを取得することを特徴とする請求項1に記載の情報処理装置。
  6. 前記第1の部分に保持されているデータのバックアップ領域である第2の部分を有する他の不揮発メモリをさらに備え、
    前記取得手段は、前記他の不揮発メモリの前記第2の部分から前記第1の部分の更新データを取得することを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。
  7. 前記取得手段は、外部装置から更新データとしてファームウェアを取得することを特徴とする請求項5又は6に記載の情報処理装置。
  8. 前記更新手段は、前記ファームウェアを前記第1の部分に書き込んだ後に、前記ファームウェアを前記第2の部分へ書き込むことを特徴とする請求項7に記載の情報処理装置。
  9. 前記第1の部分に保持されている内容の正当性を検証する検証手段をさらに備え、
    前記更新手段は、前記検証手段による検証が失敗した場合に、前記第1の部分を更新することを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
  10. 前記コード領域には、前記検証手段による検証を実行するための署名データが保持されていることを特徴とする請求項9に記載の情報処理装置。
  11. 前記検証手段は、前記署名データを公開鍵で復号して第1のダイジェストを取得し、前記コード領域における前記署名データとは異なる他のデータに対してハッシュ関数を用いて第2のダイジェストを取得し、前記第1のダイジェスト及び前記第2のダイジェストを比較することにより、前記第1の部分に保持されている内容の正当性を検証することを特徴とする請求項10に記載の情報処理装置。
  12. 前記検証手段は、
    前記コード領域の内容の正当性を前記署名データを用いて検証し、
    前記データ領域の内容の正当性を誤り検出符号を用いて検証することを特徴とする請求項10又は11に記載の情報処理装置。
  13. 前記検証手段によって前記コード領域及びデータ領域の少なくとも一方の検証が失敗した場合に利用者に対してエラーを報知する報知手段をさらに備えることを特徴とする請求項9乃至12の何れか1項に記載の情報処理装置。
  14. 前記コード領域には製品個体共通となるプログラムが格納され、前記データ領域には少なくとも1つ以上の製品固体依存の設定データが格納されることを特徴とする請求項1乃至13の何れか1項に記載の情報処理装置。
  15. プログラムを保持するコード領域とデータを保持するデータ領域とを含む第1の部分を有する不揮発メモリを備える情報処理装置の制御方法であって、
    取得手段が、前記第1の部分の更新データを取得する取得工程と、
    更新手段が、前記取得した更新データによって前記第1の部分を更新する更新工程と
    を含み、
    前記更新工程では、
    前記データ領域の内容を更新する前に前記コード領域に保持されているプログラムの少なくとも一部を消去し、前記データ領域の内容を更新した後に、前記コード領域への更新を完了させることを特徴とする情報処理装置の制御方法。
  16. プログラムを保持するコード領域とデータを保持するデータ領域とを含む第1の部分を有する不揮発メモリを備える情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記制御方法は、
    取得手段が、前記第1の部分の更新データを取得する取得工程と、
    更新手段が、前記取得した更新データによって前記第1の部分を更新する更新工程と
    を含み、
    前記更新工程では、
    前記データ領域の内容を更新する前に前記コード領域に保持されているプログラムの少なくとも一部を消去し、前記データ領域の内容を更新した後に、前記コード領域への更新を完了させることを特徴とするプログラム。
JP2021003727A 2021-01-13 2021-01-13 情報処理装置、その制御方法、及びプログラム Pending JP2022108624A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021003727A JP2022108624A (ja) 2021-01-13 2021-01-13 情報処理装置、その制御方法、及びプログラム
US17/573,766 US11907049B2 (en) 2021-01-13 2022-01-12 Information processing apparatus, method of controlling the same, and storage medium with features for updating code and data areas of non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021003727A JP2022108624A (ja) 2021-01-13 2021-01-13 情報処理装置、その制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2022108624A true JP2022108624A (ja) 2022-07-26

Family

ID=82321860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021003727A Pending JP2022108624A (ja) 2021-01-13 2021-01-13 情報処理装置、その制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US11907049B2 (ja)
JP (1) JP2022108624A (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594723B1 (en) * 1999-09-07 2003-07-15 Microsoft Corporation Method and apparatus for updating data in nonvolatile memory
US6757838B1 (en) * 2000-10-13 2004-06-29 Hewlett-Packard Development Company, L.P. Hardware independent implementation of computer system BIOS recovery
US7299463B2 (en) * 2001-09-28 2007-11-20 Intel Corporation Method for atomically updating a plurality of files
JP2008225576A (ja) 2007-03-08 2008-09-25 Ricoh Co Ltd Nand型フラッシュメモリの制御装置
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
US20100082955A1 (en) * 2008-09-30 2010-04-01 Jasmeet Chhabra Verification of chipset firmware updates
US9792439B2 (en) * 2012-09-19 2017-10-17 Nxp B.V. Method and system for securely updating firmware in a computing device
JP7010049B2 (ja) * 2018-02-16 2022-01-26 トヨタ自動車株式会社 車両制御装置、プログラムの更新確認方法および更新確認プログラム
KR20200089490A (ko) * 2019-01-17 2020-07-27 삼성전자주식회사 펌웨어 업데이트 방법 및 이를 수행하는 장치
US20230169172A1 (en) * 2021-11-29 2023-06-01 Infinera Corp. Resilient software update architecture for embedded systems

Also Published As

Publication number Publication date
US11907049B2 (en) 2024-02-20
US20220222133A1 (en) 2022-07-14

Similar Documents

Publication Publication Date Title
US10394549B2 (en) Information processing apparatus, updating method, and recording medium
JP2008200943A (ja) 画像形成装置
JP7206106B2 (ja) 情報処理装置及びプログラム
JP4505004B2 (ja) 画像形成装置
JP2017027244A (ja) 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム
US10216595B2 (en) Information processing apparatus, control method for the information processing apparatus, and recording medium
US20190265964A1 (en) Electronic apparatus, updating method, and recording medium
JP2022135443A (ja) 情報処理装置、情報処理方法及びプログラム
JP2022108624A (ja) 情報処理装置、その制御方法、及びプログラム
US11947948B2 (en) Information processing apparatus, information processing method, and storage medium
JP6212972B2 (ja) 情報処理システム、ソフトウェア更新方法およびプログラム
JP5961059B2 (ja) 情報処理装置およびその起動方法
JP2022170433A (ja) 情報処理装置、その制御方法、及びプログラム
JP6000655B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2020053002A (ja) 情報処理装置とその制御方法、及びプログラム
JP2021089607A (ja) 情報処理装置
JP2023031511A (ja) 情報処理装置及び情報処理装置の制御方法
JP7500400B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP7292328B2 (ja) 情報処理装置及びその制御方法
US20230273798A1 (en) Information processing apparatus and method for controlling information processing apparatus
JP7263067B2 (ja) 情報処理装置および情報処理装置の制御方法
JP7320415B2 (ja) 処理装置及び起動方法
JP2012113382A (ja) 画像形成装置
JP6953828B2 (ja) 情報処理装置及びプログラム
JP2010122717A (ja) サーバ管理システム