JP7522547B2 - Information processing device and reset control method - Google Patents

Information processing device and reset control method Download PDF

Info

Publication number
JP7522547B2
JP7522547B2 JP2019221449A JP2019221449A JP7522547B2 JP 7522547 B2 JP7522547 B2 JP 7522547B2 JP 2019221449 A JP2019221449 A JP 2019221449A JP 2019221449 A JP2019221449 A JP 2019221449A JP 7522547 B2 JP7522547 B2 JP 7522547B2
Authority
JP
Japan
Prior art keywords
program
verification
reset control
cpu
reset
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.)
Active
Application number
JP2019221449A
Other languages
Japanese (ja)
Other versions
JP2021051713A (en
Inventor
学 小澤
貴弘 山下
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 US17/021,451 priority Critical patent/US11657125B2/en
Publication of JP2021051713A publication Critical patent/JP2021051713A/en
Application granted granted Critical
Publication of JP7522547B2 publication Critical patent/JP7522547B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本開示は、情報処理装置及びリセット制御方法に関する。 This disclosure relates to an information processing device and a reset control method.

ソフトウェアのハングアップ等に起因してシステムが正常に動作しなくなったことを検知して、システムの再起動といった復旧のための対策をとるために、ウォッチドッグタイマ(WDT)と呼ばれる技術が活用されている(例えば、特許文献1参照)。WDTは、典型的には、システムの動作中にタイマで経過時間をカウントし、カウンタ値が閾値に達するとシステムに異常が発生したと見なして、強制的にシステムをリセットする。システムが正常に動作している間、システムを統括するプロセッサは、周期的にWDTへ制御信号を出力してWDTを初期化する(例えば、カウンタ値をゼロへクリアする)。それにより、正常動作中にはWDTのカウンタ値は閾値に達することがなく、システムはリセットされない。 A technology called a watchdog timer (WDT) is used to detect when the system is no longer operating normally due to a software hang-up or the like, and to take measures to recover, such as restarting the system (see, for example, Patent Document 1). A WDT typically uses a timer to count the elapsed time while the system is operating, and when the counter value reaches a threshold, it assumes that an abnormality has occurred in the system and forcibly resets the system. While the system is operating normally, the processor that manages the system periodically outputs a control signal to the WDT to initialize the WDT (for example, clearing the counter value to zero). As a result, the counter value of the WDT will never reach the threshold during normal operation, and the system will not be reset.

また、システム起動用のプログラムが正当である(例えば、改竄されていない)ことを検証した後にプログラムを実行してシステムを起動する、いわゆるセキュアブート技術が知られている。セキュアブート技術は、汎用コンピュータのみならず、複合機(Multi-Function Peripheral(MFP))及びプリンタといった特定の用途に特化した装置においても採用されつつある。システムの起動時にBIOS(Basic Input/Output System)に代表される主要なプログラムの正当性を検証することで、システムの安全な動作を担保することができる。万が一プログラムが正当ではないと判定されると、システムの起動は強制的に停止される。正当ではないと判定されたプログラムは、正当なプログラムで上書きするなどの手法で復旧され、その後システムは再起動され得る。こうしたプログラムの正当性の検証は、通常、当該プログラムの実行主体であるプロセッサではなく、補助的なプロセッサにより行われ得る。 Also, a so-called secure boot technology is known in which a program for starting the system is verified to be legitimate (e.g., not tampered with) before the program is executed to start the system. Secure boot technology is being adopted not only in general-purpose computers but also in devices specialized for specific purposes such as multi-function peripherals (MFPs) and printers. By verifying the legitimacy of major programs such as the Basic Input/Output System (BIOS) at the time of system startup, the safe operation of the system can be guaranteed. If the program is determined to be invalid, the system startup is forcibly stopped. The program determined to be invalid can be restored by a method such as overwriting it with a valid program, and the system can then be restarted. Such verification of the legitimacy of the program is usually performed by an auxiliary processor, not by the processor that executes the program.

特開2009-053952号公報JP 2009-053952 A

WDTを有するシステムにセキュアブート技術を適用する場合、プログラムの検証が成功裏に完了するまで主たるプロセッサが動作を開始しないため、システムリセットを抑制するための制御がタイムアウトに間に合わなくなる可能性がある。例えば、検証又は検証失敗時の自動的な復旧に長時間を要した場合、最終的にシステムが正常に起動できる状況にも関わらず、WDTのタイムアウトに起因してシステムが強制的にリセットされ得る。そうした強制的なリセットは、システムの起動を阻害する。 When applying secure boot technology to a system with a WDT, the main processor does not start operating until program verification is successfully completed, so there is a possibility that the control to suppress a system reset will not be able to time out in time. For example, if verification or automatic recovery in the event of a verification failure takes a long time, the system may be forcibly reset due to a WDT timeout, even if the system is ultimately able to start up normally. Such a forced reset will prevent the system from starting up.

そこで、本開示は、WDTとセキュアブート技術とを組合せるケースで、システムの正常な起動を担保する仕組みを提供することを目的とする。 Therefore, the purpose of this disclosure is to provide a mechanism for ensuring normal system startup when WDT and secure boot technology are combined.

ある観点によれば、プログラムの正当性を検証する検証手段と、タイマに基づく所定の期間にわたって外部からのアクセスが無い場合に、システムリセット信号を発行するリセット制御手段と、前記検証手段により正当であると判定された前記プログラムを実行する実行手段であって、前記プログラムの起動後に前記リセット制御手段へアクセス可能となる当該実行手段と、を備え、前記検証手段は、前記実行手段が前記リセット制御手段へアクセス可能となる前に、前記リセット制御手段へ、前記タイマの値をクリアするためのクリア信号を出力する、情報処理装置が提供される。 According to one aspect, there is provided an information processing device comprising: a verification means for verifying the validity of a program; a reset control means for issuing a system reset signal when there is no external access for a predetermined period based on a timer ; and an execution means for executing the program determined to be valid by the verification means, the execution means becoming accessible to the reset control means after the program is started, wherein the verification means outputs a clear signal to the reset control means for clearing the value of the timer before the execution means becomes accessible to the reset control means.

本開示によれば、WDTとセキュアブート技術とを組合せるケースで、システムの正常な起動を担保することができる。 According to this disclosure, when WDT and secure boot technology are combined, it is possible to ensure that the system boots normally.

一実施形態に係る複合機の概略的な構成の一例を示すブロック図。FIG. 1 is a block diagram showing an example of a schematic configuration of a multifunction peripheral according to an embodiment. 一実施形態に係るメインCPUの具体的な構成の一例を示すブロック図。FIG. 2 is a block diagram showing an example of a specific configuration of a main CPU according to an embodiment. 一実施形態に係るサブCPUの具体的な構成の一例を示すブロック図。FIG. 2 is a block diagram showing an example of a specific configuration of a sub-CPU according to an embodiment. 一実施形態に係るフラッシュROMのメモリマップの一例を示す説明図。FIG. 4 is an explanatory diagram showing an example of a memory map of a flash ROM according to an embodiment; 一実施形態に係るリセット制御部の具体的な構成の一例を示すブロック図。FIG. 4 is a block diagram showing an example of a specific configuration of a reset control unit according to an embodiment. 一実施形態に係るシステム起動時の処理の概略的な流れの一例を示すシーケンス図。FIG. 11 is a sequence diagram showing an example of a schematic flow of a process at the time of starting up a system according to an embodiment. 一実施形態に係るサブCPUにより実行される処理の流れの一例を示すフローチャート。10 is a flowchart showing an example of a flow of a process executed by a sub CPU according to an embodiment. 一実施形態に係るメインCPUにより実行される処理の流れの一例を示すフローチャート。6 is a flowchart showing an example of a flow of processing executed by a main CPU according to an embodiment. 一実施形態に係るWDTにより実行される処理の流れの一例を示すフローチャート。11 is a flowchart showing an example of a process flow executed by a WDT according to an embodiment. 一実施形態に係るリセット回路により実行される処理の流れの一例を示すフローチャート。1 is a flowchart showing an example of a flow of a process executed by a reset circuit according to an embodiment. 一変形例に係るWDTにより実行される処理の流れの一例を示すフローチャート。10 is a flowchart showing an example of a flow of a process executed by a WDT according to one modified example.

以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一の又は同様の構成に同一の参照番号を付し、重複した説明は省略される。 The following embodiments are described in detail with reference to the attached drawings. Note that the following embodiments do not limit the invention according to the claims. Although the embodiments describe multiple features, not all of these multiple features are necessarily essential to the invention, and multiple features may be combined in any manner. Furthermore, in the attached drawings, the same reference numbers are used for the same or similar configurations, and duplicate explanations are omitted.

<<1.装置の構成例>>
<1-1.全体的な構成>
本節では、本開示に係る技術がMFPに適用される例を説明する。しかしながら、本開示に係る技術は、MFPに限定されず、例えばプリンタ、スキャナ、ファクシミリ、PC(Personal Computer)、タブレットデバイス及びスマートフォンといった、いかなる種類の情報処理装置に適用されてもよい。特に説明の無い限り、以下に説明する装置、デバイス、モジュール及びチップといった構成要素の各々は、単一のエンティティで構成されてもよく、又は物理的に異なる複数のエンティティから構成されてもよい。
<<1. Example of device configuration>>
<1-1. Overall structure>
In this section, an example in which the technology according to the present disclosure is applied to an MFP will be described. However, the technology according to the present disclosure is not limited to an MFP, and may be applied to any type of information processing device, such as a printer, a scanner, a facsimile, a PC (Personal Computer), a tablet device, and a smartphone. Unless otherwise specified, each of the components such as an apparatus, a device, a module, and a chip described below may be composed of a single entity, or may be composed of multiple physically different entities.

図1は、一実施形態に係る複合機1の概略的な構成の一例を示すブロック図である。図1を参照すると、複合機1は、メインCPU101、DRAM102、操作I/F103、ネットワークI/F104、プリンタ105、スキャナ106、FAX107、HDD108、及び画像処理部109を備える。複合機1のこれら構成要素は、信号バス110を介して相互に接続される。操作I/F103は、操作部111へ接続される。ネットワークI/F104は、ネットワークI/F用フラッシュROM112へ接続される。 FIG. 1 is a block diagram showing an example of a schematic configuration of a multifunction device 1 according to an embodiment. Referring to FIG. 1, the multifunction device 1 includes a main CPU 101, a DRAM 102, an operation I/F 103, a network I/F 104, a printer 105, a scanner 106, a FAX 107, a HDD 108, and an image processing unit 109. These components of the multifunction device 1 are connected to each other via a signal bus 110. The operation I/F 103 is connected to an operation unit 111. The network I/F 104 is connected to a network I/F flash ROM 112.

メインCPU(Central Processing Unit)101は、複合機1の機能の全般を制御するプロセッサである。DRAM(Dynamic Random Access Memory)102は、メインCPU101のための主記憶デバイスであり、メインCPU101により実行されるプログラム及び関連するデータを一時的に記憶する。操作インタフェース(I/F)103は、操作部111を信号バス110へ接続するためのインタフェースである。操作部111は、ユーザによる複合機1の操作のためのユーザインタフェースを提供するユニットである。操作部111は、例えば、ボタンの押下又はタッチパネルへのタッチといったユーザ操作を受け付けると、対応する操作信号を操作I/F103を介してメインCPU101へ送信する。また、操作部111は、例えば、操作のための情報をディスプレイ(図示せず)の画面上に表示させる。ネットワークI/F104は、複合機1による外部の装置との間の通信のためのインタフェースである。ネットワークI/F104は、例えばLAN(Local Area Network)インタフェースであってもよい。ネットワークI/F用フラッシュROM(Read Only Memory)112は、ネットワークI/F104の動作のためのファームウェアを記憶する不揮発性メモリである。プリンタ105は、画像データにより表現される画像をシートへ印刷するユニットである。スキャナ106は、原稿の画像を光学的に読み取り、光信号を電気信号へ変換して、スキャン画像データを生成するユニットである。ファクシミリ(FAX)107は、公衆回線へ接続され、外部のファクシミリ装置との間でファクシミリ通信を行うユニットである。HDD(Hard Disk Drive)108は、いわゆる二次記憶デバイスである。HDD108は、複合機1の様々な機能により利用されるデータと、メインCPU101により実行されるプログラムのうち正当性の検証を要しないプログラムとを記憶する。HDD108は、プリントジョブ及びスキャンジョブをスプールするためのスプール領域、並びにスキャン画像データを再利用に向けて保存するための保存領域として利用されてもよい。画像処理部109は、ネットワークI/F104を介して受信されるプリントジョブの画像データを、プリンタ105による印刷に適した画像データへ変換する処理モジュールである。画像処理部109は、さらに、スキャナ106により読み取られたスキャン画像データについて、ノイズ除去、色空間の変換、回転及びデータ圧縮といった画像処理を実行し得る。さらに、画像処理部109は、HDD108に記憶される画像データについて任意の種類の画像処理を実行してよい。 The main CPU (Central Processing Unit) 101 is a processor that controls the overall functions of the multifunction device 1. The DRAM (Dynamic Random Access Memory) 102 is a main storage device for the main CPU 101, and temporarily stores programs executed by the main CPU 101 and related data. The operation interface (I/F) 103 is an interface for connecting the operation unit 111 to the signal bus 110. The operation unit 111 is a unit that provides a user interface for the user to operate the multifunction device 1. When the operation unit 111 receives a user operation, such as pressing a button or touching a touch panel, it transmits a corresponding operation signal to the main CPU 101 via the operation I/F 103. In addition, the operation unit 111 displays, for example, information for operation on the screen of a display (not shown). The network I/F 104 is an interface for communication between the multifunction device 1 and an external device. The network I/F 104 may be, for example, a LAN (Local Area Network) interface. The network I/F flash ROM (Read Only Memory) 112 is a non-volatile memory that stores firmware for the operation of the network I/F 104. The printer 105 is a unit that prints an image represented by image data onto a sheet. The scanner 106 is a unit that optically reads an image of an original, converts an optical signal into an electrical signal, and generates scanned image data. The facsimile (FAX) 107 is a unit that is connected to a public line and performs facsimile communication with an external facsimile device. The HDD (Hard Disk Drive) 108 is a so-called secondary storage device. The HDD 108 stores data used by various functions of the multifunction device 1 and programs executed by the main CPU 101 that do not require verification of validity. The HDD 108 may be used as a spool area for spooling print jobs and scan jobs, and as a storage area for storing scanned image data for reuse. The image processing unit 109 is a processing module that converts the image data of a print job received via the network I/F 104 into image data suitable for printing by the printer 105. The image processing unit 109 can further perform image processing such as noise removal, color space conversion, rotation, and data compression on the scanned image data read by the scanner 106. Furthermore, the image processing unit 109 may perform any type of image processing on the image data stored in the HDD 108.

図1を参照すると、複合機1は、さらに、フラッシュROM121、サブCPU122及び電源制御部130を含む。メインCPU101、フラッシュROM121及びサブCPU122は、SPI(Serial Peripheral Interface)バス120を介して相互に接続される。 Referring to FIG. 1, the multifunction device 1 further includes a flash ROM 121, a sub-CPU 122, and a power supply control unit 130. The main CPU 101, the flash ROM 121, and the sub-CPU 122 are interconnected via a Serial Peripheral Interface (SPI) bus 120.

フラッシュROM121は、メインCPU101により実行される1つ以上のプログラムと、複合機1の基本的な設定のための既定の設定値とを記憶する記憶デバイスである。フラッシュROM121に記憶されるプログラムは、例えば、メインCPU101の起動時に実行されるBIOSプログラムを含む。メインCPU101により実行されるいくつかのプログラム(例えば、オペレーティングシステム(OS)及び様々なアプリケーションのためのプログラム)は、フラッシュROM121とは異なる記憶デバイス(例えば、上述したHDD108)に記憶され得る。 The flash ROM 121 is a storage device that stores one or more programs executed by the main CPU 101 and default setting values for basic settings of the multifunction device 1. The programs stored in the flash ROM 121 include, for example, a BIOS program that is executed when the main CPU 101 is started. Some of the programs executed by the main CPU 101 (for example, the operating system (OS) and programs for various applications) may be stored in a storage device other than the flash ROM 121 (for example, the HDD 108 described above).

サブCPU122は、フラッシュROM121に記憶されているプログラムの正当性をメインCPU101による実行の前に検証する補助的なプロセッサである。プログラムが正当な開発者の意図に反して変化している場合には、検証の結果として、プログラムは正当ではないと判定され得る。一方で、そうした変化が無い場合には、プログラムは正当であると判定され得る。例えば、MFP1に不正にアクセスした第三者がプログラムを改竄した場合に、プログラムは正当性を失う。また、装置の経年劣化に起因してプログラムデータのビットが書き換わった場合にも、プログラムは正当性を失う。サブCPU122による正当性検証の手法について、後にさらに説明する。サブCPU122は、検証の結果としてプログラムが正当であると判定すると、後述する電源制御部130のリセット制御部131へ、検証の完了を通知する。 The sub-CPU 122 is an auxiliary processor that verifies the validity of the program stored in the flash ROM 121 before it is executed by the main CPU 101. If the program has been changed against the intention of the legitimate developer, the verification may determine that the program is not valid. On the other hand, if there is no such change, the program may be determined to be valid. For example, if a third party who has illegally accessed the MFP 1 tampers with the program, the program loses its validity. The program also loses its validity if bits of the program data are rewritten due to deterioration of the device over time. The method of validity verification by the sub-CPU 122 will be described later. If the sub-CPU 122 determines that the program is valid as a result of the verification, it notifies the reset control unit 131 of the power control unit 130 (described later) of the completion of the verification.

電源制御部130は、MFP1を構成するモジュールへの電力の供給を制御するユニットである。図中では、外部の商用AC電源からの電力の供給が太線の矢印で示されており、MFP1内の各モジュールへの電力の供給が破線の矢印で簡略的に示されている。電源制御部130は、信号バス110にも接続され、メインCPU101で動作するプログラムから電源制御部130の制御レジスタへのアクセスが可能とされる。 The power supply control unit 130 is a unit that controls the supply of power to the modules that make up the MFP1. In the figure, the supply of power from an external commercial AC power source is indicated by a thick arrow, and the supply of power to each module within the MFP1 is simply indicated by dashed arrows. The power supply control unit 130 is also connected to the signal bus 110, allowing access to the control registers of the power supply control unit 130 from a program running on the main CPU 101.

電源制御部130は、さらに、メインCPU101及びサブCPU122のリセットを制御するリセット制御部131を含む。本実施形態において、リセット制御部131は、少なくともリセット回路132及びウォッチドッグタイマ(WDT)133を含み、所定の期間外部からのアクセスが無い場合に、システムリセット信号を発行する。リセット回路132は、リセット信号線134及び1つ以上の追加的な制御信号線135を介してサブCPU122へ接続され、リセット信号線136を介してメインCPU101へ接続される。 The power supply control unit 130 further includes a reset control unit 131 that controls the reset of the main CPU 101 and the sub-CPU 122. In this embodiment, the reset control unit 131 includes at least a reset circuit 132 and a watchdog timer (WDT) 133, and issues a system reset signal when there is no external access for a predetermined period of time. The reset circuit 132 is connected to the sub-CPU 122 via a reset signal line 134 and one or more additional control signal lines 135, and is connected to the main CPU 101 via a reset signal line 136.

リセット信号線134は、リセット回路132からサブCPU122へ出力されるリセット制御信号を搬送する。リセット信号線136は、リセット回路132からメインCPU101へ出力されるリセット制御信号を搬送する。一例として、リセット制御信号は、“Lo”又は“Hi”という2通りの信号レベルを有する(例えば、“Lo”はゼロに相当する電気信号レベル、“Hi”は1に相当する電気信号レベルであり得る)。リセット制御信号の“Lo”レベルは信号の出力先のCPUがリセット(無効化)されるべきことを、“Hi”レベルは当該CPUが通常の動作を行うべきことを意味する。 The reset signal line 134 carries a reset control signal output from the reset circuit 132 to the sub-CPU 122. The reset signal line 136 carries a reset control signal output from the reset circuit 132 to the main CPU 101. As an example, the reset control signal has two signal levels, "Lo" or "Hi" (for example, "Lo" can be an electrical signal level corresponding to zero, and "Hi" can be an electrical signal level corresponding to 1). The "Lo" level of the reset control signal means that the CPU to which the signal is output should be reset (disabled), and the "Hi" level means that the CPU should perform normal operation.

リセット回路132は、例えば、MFP1の電源が投入されると、サブCPU122へ出力されるリセット制御信号の信号レベルを“Lo”から“Hi”へ切替える。サブCPU122は、この切替えをリセット解除の指示であると解釈する。サブCPU122は、リセット解除の指示に応じて動作を開始し、メインCPU101により実行されるべきプログラムの正当性を検証する。この間、リセット回路132は、メインCPU101へ出力されるリセット制御信号の信号レベルを“Lo”に維持する。リセット回路132は、サブCPU122によるプログラムの検証が完了すると、メインCPU101へ出力されるリセット制御信号の信号レベルを“Lo”から“Hi”へ切替える。メインCPU101は、この切替えをリセット解除の指示であると解釈する。メインCPU101は、リセット解除の指示に応じて動作を開始し、サブCPU122により正当であると判定されたプログラムを実行する。 For example, when the power of the MFP1 is turned on, the reset circuit 132 switches the signal level of the reset control signal output to the sub-CPU 122 from "Lo" to "Hi". The sub-CPU 122 interprets this switching as an instruction to release the reset. The sub-CPU 122 starts operating in response to the instruction to release the reset, and verifies the validity of the program to be executed by the main CPU 101. During this time, the reset circuit 132 maintains the signal level of the reset control signal output to the main CPU 101 at "Lo". When the program verification by the sub-CPU 122 is completed, the reset circuit 132 switches the signal level of the reset control signal output to the main CPU 101 from "Lo" to "Hi". The main CPU 101 interprets this switching as an instruction to release the reset. The main CPU 101 starts operating in response to the instruction to release the reset, and executes the program determined to be valid by the sub-CPU 122.

WDT133は、MFP1が稼働している間、継続的に時間をカウントする(即ち、計時を行う)。WDT133は、予め設定されるタイムアウト閾値にカウンタ値が達すると、リセット回路132にシステムリセットを指示する。リセット回路132は、システムリセットの指示に応じて、サブCPU122及びメインCPU101へ、信号レベルを“Lo”へ設定したリセット制御信号を出力する。それにより、サブCPU122及びメインCPU101がリセットされる。サブCPU122及びメインCPU101のリセット状態(無効化状態)は予め設定される期間維持され、その後にサブCPU122のリセット状態が解除される。こうしたシステムリセットをトリガするリセット制御信号を、本明細書では、システムリセット信号ともいう。リセット回路132は、MFP1を構成する他のモジュールにも、それぞれのモジュールをリセットさせるためのリセット制御信号を出力してもよい。 The WDT 133 continuously counts time (i.e., keeps time) while the MFP 1 is operating. When the counter value reaches a preset timeout threshold, the WDT 133 instructs the reset circuit 132 to reset the system. In response to the system reset instruction, the reset circuit 132 outputs a reset control signal with a signal level set to "Lo" to the sub-CPU 122 and the main CPU 101. This resets the sub-CPU 122 and the main CPU 101. The reset state (disabled state) of the sub-CPU 122 and the main CPU 101 is maintained for a preset period, after which the reset state of the sub-CPU 122 is released. In this specification, the reset control signal that triggers such a system reset is also referred to as a system reset signal. The reset circuit 132 may also output reset control signals to other modules that constitute the MFP 1 to reset each module.

メインCPU101は、サブCPU122により検証された正当なプログラムの起動後に、WDT133へアクセス可能となる。例えば、メインCPU101は、正当なプログラムを実行することにより動作している間、周期的にリセット制御部131へクリア信号137を出力して、WDT133のカウンタ値をクリアさせる。クリア信号137の出力周期は、上述したシステムリセットの判定のためのタイムアウト閾値よりも短い。それにより、メインCPU101が正常に動作している間、システムリセットの実行が抑制される。メインCPU101に異常が発生すると、このクリア信号137がリセット制御部131へ出力されなくなる結果、リセット制御部131がタイムアウトに応じてシステムリセットをトリガする。言い換えると、リセット制御部131は、メインCPU101が所定の期間にわたり動作していない場合に、WDT133による計時に基づいて、サブCPU122及びメインCPU101をリセットする。クリア信号137は、例えば、リセット制御部131の所定の制御レジスタへの書込みを行う書込み信号であってもよく、又はパルスによってカウンタ値がクリアされるべきことを示すパルス信号であってもよい。WDT133は、クリア信号137の入力に応じて(例えば、所定の制御レジスタへの書込みを検知することに応じて)、カウンタ値をゼロへクリアして、再度ゼロからの計時を行う。 After the start of a legitimate program verified by the sub-CPU 122, the main CPU 101 can access the WDT 133. For example, while the main CPU 101 is operating by executing a legitimate program, it periodically outputs a clear signal 137 to the reset control unit 131 to clear the counter value of the WDT 133. The output period of the clear signal 137 is shorter than the timeout threshold value for determining the system reset described above. As a result, while the main CPU 101 is operating normally, the execution of the system reset is suppressed. When an abnormality occurs in the main CPU 101, the clear signal 137 is no longer output to the reset control unit 131, and as a result, the reset control unit 131 triggers a system reset in response to a timeout. In other words, when the main CPU 101 has not been operating for a predetermined period of time, the reset control unit 131 resets the sub-CPU 122 and the main CPU 101 based on the time counting by the WDT 133. The clear signal 137 may be, for example, a write signal that writes to a specific control register of the reset control unit 131, or may be a pulse signal that indicates that the counter value should be cleared by a pulse. In response to the input of the clear signal 137 (for example, in response to detecting a write to a specific control register), the WDT 133 clears the counter value to zero and starts counting from zero again.

<1-2.基本的な原理>
上述したように、本実施形態では、サブCPU122がMFP1の主要なプログラムの正当性を検証することで、プログラムの改竄及び劣化といったリスクからMFP1が保護される。加えて、MFP1は、WDT133を有することで、システムに異常が発生した際にシステムリセットを実行して、自動的に正常な状態に復帰し得る。しかしながら、サブCPU122によるプログラムの検証が完了するまで、メインCPU101は、動作を開始せず、クリア信号137をリセット制御部131へ出力しない。そのため、サブCPU122によるプログラムの検証に長時間を要した場合に、最終的にシステムが正常に起動できる状況にも関わらず、WDT133においてカウンタ値がタイムアウト閾値に達し、システムリセットが実行される可能性がある。この場合、プログラムの正当性検証はシステムリセット後に最初からやり直しとなるため、システムの起動が長期化する。そればかりか、再度の検証の途中でさらにシステムリセットが行われて、MFP1がいつまでも起動できない事態に陥りかねない。また、サブCPU122が検証失敗時にプログラムの復旧用バージョンを用いて復旧を行う機能を有する場合、復旧用バージョンのフラッシュROM121への書込みが途中で停止する結果として復旧用バージョンのコピーが破損するリスクもある。
<1-2. Basic principles>
As described above, in this embodiment, the sub-CPU 122 verifies the validity of the main programs of the MFP 1, thereby protecting the MFP 1 from risks such as program tampering and deterioration. In addition, the MFP 1 has the WDT 133, and can automatically return to a normal state by executing a system reset when an abnormality occurs in the system. However, the main CPU 101 does not start operation and does not output the clear signal 137 to the reset control unit 131 until the program verification by the sub-CPU 122 is completed. Therefore, when it takes a long time to verify the program by the sub-CPU 122, even if the system can finally be started normally, the counter value in the WDT 133 may reach a timeout threshold value and a system reset may be executed. In this case, the program validity verification is restarted from the beginning after the system reset, so the system startup is prolonged. Moreover, a system reset may be performed again during the second verification, and the MFP 1 may not be able to start for a long time. In addition, if the sub-CPU 122 has the function of performing recovery using a recovery version of the program when verification fails, there is also a risk that the copy of the recovery version will be corrupted as a result of writing of the recovery version to the flash ROM 121 being stopped midway.

上述した不具合を回避を解消するために、一例として、サブCPU122によるプログラムの正当性の検証が完了するまでWDT133による計時を停止する手法が考えられる。しかし、そうした手法では、何らかの原因でサブCPU122に異常が発生した場合に、システムリセットが実行されず、MFP1の正常な状態への復帰が妨げられる。他の例として、WDT133のタイムアウト閾値を、プログラムの正当性検証(及び検証失敗時のプログラムの復旧)の処理時間を包含する程度に十分に大きい値に設定する手法も考えられる。しかし、画一的にタイムアウト閾値を引き延ばせば、メインCPU101の異常発生時のリセットが遅延してしまう。また、サブCPU122向けとメインCPU101向けとで別々のタイムアウト閾値を保持しようとすると、タイマの回路規模が増大し、発生の稀な事象への備えとしては装置のコストが割高となる。 To avoid or resolve the above-mentioned problem, one possible method is to stop the timekeeping by the WDT 133 until the sub-CPU 122 has completed verifying the validity of the program. However, with this method, if an abnormality occurs in the sub-CPU 122 for some reason, a system reset is not executed, and the MFP 1 is prevented from returning to a normal state. Another possible method is to set the timeout threshold of the WDT 133 to a value large enough to include the processing time for verifying the validity of the program (and for restoring the program when verification fails). However, if the timeout threshold is extended uniformly, the reset when an abnormality occurs in the main CPU 101 will be delayed. Furthermore, if separate timeout thresholds are maintained for the sub-CPU 122 and the main CPU 101, the circuit size of the timer will increase, and the cost of the device will be high in preparation for rare events.

そこで、本実施形態では、サブCPU122が、メインCPU101がWDT133へアクセス可能となる前に、WDT133へアクセスするものとする。より具体的には、サブCPU122は、例えば(メインCPU101により実行されるべき)プログラムの検証が成功裏に完了する前に、リセット制御部131へクリア信号140を出力して、WDT133のカウンタ値をクリアさせる。クリア信号140の出力は周期的に行われてよく、その出力周期は上述したシステムリセットの判定のためのタイムアウト閾値よりも短い。クリア信号140は、例えば、一定の周期を持つパルス信号、所定の制御レジスタへの書込みを行う書込み信号、又は所定の制御コマンドを表すコマンド信号であってもよい。サブCPU122は、内部に有するカウンタ又はタイマを用いて、クリア信号140のパルスの送出を、上記タイムアウト閾値よりも短い出力周期に同期させ得る。こうした構成により、メインCPU101が動作を開始する前の、サブCPU122によるプログラムの正当性検証(及び、復旧)の最中の意図しないシステムリセットの実行を抑制することができる。次節より、ここで説明した原理を実現するための各部の構成について、詳細に説明する。 Therefore, in this embodiment, the sub-CPU 122 accesses the WDT 133 before the main CPU 101 can access the WDT 133. More specifically, the sub-CPU 122 outputs a clear signal 140 to the reset control unit 131 to clear the counter value of the WDT 133, for example, before the verification of the program (to be executed by the main CPU 101) is successfully completed. The clear signal 140 may be output periodically, and the output period is shorter than the timeout threshold for determining the above-mentioned system reset. The clear signal 140 may be, for example, a pulse signal having a constant period, a write signal for writing to a specified control register, or a command signal representing a specified control command. The sub-CPU 122 may use an internal counter or timer to synchronize the transmission of the pulse of the clear signal 140 with an output period shorter than the above-mentioned timeout threshold. This configuration makes it possible to prevent unintended system resets from being performed while the sub-CPU 122 is verifying (and recovering) the validity of a program before the main CPU 101 starts operating. In the next section, we will provide a detailed explanation of the configuration of each part for realizing the principles described here.

<<2.各部の詳細>>
<2-1.メインCPUの構成例>
図2は、本実施形態に係るメインCPU101の具体的な構成の一例を示すブロック図である。メインCPU101は、CPUコア201、SPI I/F202、バスI/F203、リセット端子204、及び信号バス209を含む。
<<2. Details of each part>>
<2-1. Example of main CPU configuration>
2 is a block diagram showing an example of a specific configuration of the main CPU 101 according to this embodiment. The main CPU 101 includes a CPU core 201, an SPI I/F 202, a bus I/F 203, a reset terminal 204, and a signal bus 209.

CPUコア201は、メインCPU101の機能を遂行するための演算を実行するプロセッサコアである。SPI I/F202は、SPIバス120を介するメインCPU101と他のSPIデバイスとの間の通信のためのインタフェース(SPIマスタともいう)である。バスI/F203は、信号バス110を介するメインCPU101と他のモジュールとの間の通信のためのインタフェースである。リセット端子204は、リセット回路132からリセット信号線136を介して入力されるリセット制御信号を受け付ける端子である。信号バス209は、CPUコア201、SPI I/F202、及びバスI/F203を相互に接続する。 The CPU core 201 is a processor core that executes calculations to perform the functions of the main CPU 101. The SPI I/F 202 is an interface (also called an SPI master) for communication between the main CPU 101 and other SPI devices via the SPI bus 120. The bus I/F 203 is an interface for communication between the main CPU 101 and other modules via the signal bus 110. The reset terminal 204 is a terminal that accepts a reset control signal input from the reset circuit 132 via the reset signal line 136. The signal bus 209 interconnects the CPU core 201, the SPI I/F 202, and the bus I/F 203.

本実施形態において、MFP1の電源が投入された直後に、リセット端子204が受け付けるリセット制御信号のレベルは“Lo”であり、メインCPU101はリセット状態(無効化状態)に維持される。その間、サブCPU122によりプログラムの正当性の検証が行われる。サブCPU122によりプログラムが正当であると判定された場合、リセット制御信号のレベルが“Hi”へ切替わり、CPUコア201は動作を開始する。その動作の冒頭において、CPUコア201は、フラッシュROM121の所定のアドレスに記憶されている(サブCPU122により正当であると判定された)プログラムをSPIバス120を介してDRAM102へ読出し、読出したプログラムを実行する。本実施形態において、メインCPU101により実行されるプログラムは、少なくともMFP1のBIOSプログラムを含み得る。例えば、メインCPU101は、BIOSプログラムを実行してメインCPU101の入出力機能を初期化した後、さらにOS、各モジュールのドライバ及びその他のアプリケーションといったプログラムを実行してMFP1の通常の動作を開始する。メインCPU101は、その動作中に、上述したタイムアウト閾値よりも短い出力周期で、信号バス110を介してクリア信号137をリセット制御部131へ出力して、WDT133のカウンタ値をクリアさせる。それにより、MFP1が正常に動作している間のシステムリセットが抑制される。 In this embodiment, immediately after the power supply of the MFP1 is turned on, the level of the reset control signal received by the reset terminal 204 is "Lo", and the main CPU 101 is maintained in a reset state (disabled state). During this time, the sub-CPU 122 verifies the validity of the program. If the sub-CPU 122 determines that the program is valid, the level of the reset control signal switches to "Hi", and the CPU core 201 starts operating. At the beginning of the operation, the CPU core 201 reads the program stored at a specific address in the flash ROM 121 (determined to be valid by the sub-CPU 122) to the DRAM 102 via the SPI bus 120, and executes the read program. In this embodiment, the program executed by the main CPU 101 may include at least the BIOS program of the MFP1. For example, the main CPU 101 executes the BIOS program to initialize the input/output function of the main CPU 101, and then executes programs such as the OS, drivers for each module, and other applications to start normal operation of the MFP1. During operation, the main CPU 101 outputs a clear signal 137 to the reset control unit 131 via the signal bus 110 at an output period shorter than the timeout threshold value described above, clearing the counter value of the WDT 133. This prevents a system reset from occurring while the MFP 1 is operating normally.

<2-2.サブCPUの構成例>
図3は、本実施形態に係るサブCPU122の具体的な構成の一例を示すブロック図である。サブCPU122は、CPUコア301、SPI I/F302、汎用入出力端子303、OTP304、SRAM305、リセット端子306、暗号処理部308、信号バス309、ブートROM310、暗号RAM311及びタイマ回路312を含む。
<2-2. Example of sub-CPU configuration>
3 is a block diagram showing an example of a specific configuration of the sub-CPU 122 according to the present embodiment. The sub-CPU 122 includes a CPU core 301, an SPI I/F 302, a general-purpose input/output terminal 303, an OTP 304, an SRAM 305, a reset terminal 306, a cryptographic processing unit 308, a signal bus 309, a boot ROM 310, a cryptographic RAM 311, and a timer circuit 312.

CPUコア301は、サブCPU122の機能を遂行するための演算を実行するプロセッサコアである。SPI I/F302は、SPIバス120を介するサブCPU122と他のSPIデバイスとの間の通信のためのインタフェース(SPIマスタともいう)である。汎用入出力端子(GPIO)303は、サブCPU122によるリセット制御部131との通信に利用される制御信号線135が接続される端子である。図3の例では、2つの制御信号線135a、136bが示されている。例えば、第1制御信号線135aは、プログラムの検証が成功裏に完了した場合にサブCPU122からリセット制御部131へ出力される検証完了通知信号を搬送する。第2制御信号線135bは、上述したクリア信号140を搬送する。なお、これら信号は、単一の共通的な信号線で搬送されてもよい。OTP(One Time Programmable)304は、製造時に一度だけ書込みが可能であって、書換えが不能なメモリ領域である。本実施形態では、サブCPU122のファームウェアのハッシュ値を公開鍵暗号方式の秘密鍵で暗号化した暗号化済みハッシュ値(即ち、署名)及び後述するTagのアドレスが、予めOTP304に書込まれ得る。SRAM305は、サブCPU122のいわゆるキャッシュメモリであり、CPUコア301により演算用のワークメモリとして使用され得る。リセット端子306は、リセット回路132からリセット信号線134を介して入力されるリセット制御信号を受け付ける端子である。暗号処理部308は、サブCPU122による署名検証を支援する、暗号関連処理に専用のプロセッサである。例えば、暗号処理部308は、サブCPU122のファームウェア及びメインCPU101のプログラムの署名を復号することにより、それぞれの正当なハッシュ値を復元する。暗号処理部308は、プログラムデータからハッシュ値を導出するためのハッシュ計算を行ってもよい。信号バス309は、CPUコア301、SPI I/F302、GPIO303、OTP304、SRAM305、暗号処理部308、ブートROM310、暗号RAM311及びタイマ回路312を相互に接続する。ブートROM310は、サブCPU122のブートプログラム(ブートコードともいう)を予め記憶する記憶デバイスである。暗号RAM311は、暗号処理部308により処理される高い機密性の求められるデータを一時的に記憶する、暗号関連処理に専用のメモリである。タイマ回路312は、サブCPU122が稼働している間に計時を行う回路である。 The CPU core 301 is a processor core that executes calculations to perform the functions of the sub-CPU 122. The SPI I/F 302 is an interface (also called an SPI master) for communication between the sub-CPU 122 and other SPI devices via the SPI bus 120. The general-purpose input/output terminal (GPIO) 303 is a terminal to which the control signal line 135 used for communication between the sub-CPU 122 and the reset control unit 131 is connected. In the example of FIG. 3, two control signal lines 135a and 136b are shown. For example, the first control signal line 135a carries a verification completion notification signal output from the sub-CPU 122 to the reset control unit 131 when the program verification is successfully completed. The second control signal line 135b carries the above-mentioned clear signal 140. These signals may be carried by a single common signal line. The OTP (One Time Programmable) 304 is a memory area that can be written only once at the time of manufacture and cannot be rewritten. In this embodiment, an encrypted hash value (i.e., a signature) obtained by encrypting a hash value of the firmware of the sub-CPU 122 with a private key of a public key cryptosystem and an address of a tag described later can be written in advance to the OTP 304. The SRAM 305 is a so-called cache memory of the sub-CPU 122, and can be used by the CPU core 301 as a work memory for calculations. The reset terminal 306 is a terminal that receives a reset control signal input from the reset circuit 132 via a reset signal line 134. The cryptographic processing unit 308 is a processor dedicated to cryptographic processing that supports signature verification by the sub-CPU 122. For example, the cryptographic processing unit 308 restores the legitimate hash values of the firmware of the sub-CPU 122 and the program of the main CPU 101 by decrypting the signatures. The cryptographic processing unit 308 may perform a hash calculation to derive a hash value from program data. The signal bus 309 interconnects the CPU core 301, SPI I/F 302, GPIO 303, OTP 304, SRAM 305, cryptographic processing unit 308, boot ROM 310, cryptographic RAM 311, and timer circuit 312. The boot ROM 310 is a storage device that prestores a boot program (also called boot code) for the sub-CPU 122. The cryptographic RAM 311 is a memory dedicated to cryptographic processing, temporarily storing data that is processed by the cryptographic processing unit 308 and requires high confidentiality. The timer circuit 312 is a circuit that keeps time while the sub-CPU 122 is operating.

本実施形態において、MFP1の電源が投入されると、リセット端子306が受け付けるリセット制御信号のレベルは“Lo”から“Hi”へ切替わり、CPUコア301は動作を開始する。その動作の冒頭において、CPUコア301は、ブートROM310から自身のブートプログラムをSRAM305へ読出し、読出したブートプログラムを実行する。CPUコア301は、さらに、正当性検証の対象の1つ以上のプログラムをフラッシュROM121から読出し、読出したプログラムの正当性を検証する。本実施形態において、正当性検証の対象のプログラムは、少なくともMFP1のBIOSプログラムを含む。さらに、正当性検証の対象のプログラムは、サブCPU122の動作のためのファームウェアを含んでもよい。 In this embodiment, when the power of the MFP1 is turned on, the level of the reset control signal received by the reset terminal 306 switches from "Lo" to "Hi", and the CPU core 301 starts operating. At the beginning of this operation, the CPU core 301 reads its own boot program from the boot ROM 310 to the SRAM 305, and executes the read boot program. The CPU core 301 further reads one or more programs to be verified for validity from the flash ROM 121, and verifies the validity of the read programs. In this embodiment, the programs to be verified for validity include at least the BIOS program of the MFP1. Furthermore, the programs to be verified for validity may include firmware for the operation of the sub-CPU 122.

図4は、本実施形態に係るフラッシュROM121のメモリマップの一例を示す説明図である。図4に示したように、フラッシュROM121は、メインCPUプログラム401、署名402、Tag403、サブCPUファームウェア404、署名405及びROM-ID406を予め記憶する。メインCPUプログラム401は、例えば、メインCPU101のブートの際に実行されるBIOSプログラムである。署名402は、メインCPUプログラム401の正当性検証用の署名(例えば、RSA署名)である。署名402は、(正当な)メインCPUプログラム401のハッシュ値を暗号化することにより予め導出され、フラッシュROM121に記憶され得る。Tag403は、サブCPUファームウェア404が記憶されている記憶領域の先頭のアドレスを示すデータである。Tag403のアドレスは、上述したようにOTP304に記憶される。サブCPUファームウェア404は、CPUコア301により実行されるプログラムコードを含むファームウェアである。署名405は、サブCPUファームウェア404の正当性検証用の署名(例えば、ECDSA署名)である。署名405は、(正当な)サブCPUファームウェア404の全体又は先頭の特定部分に基づいて予め導出され、フラッシュROM121に記憶され得る。ROM-ID406は、メインCPUプログラム401が記憶されている記憶領域の先頭のアドレス、その記憶領域のサイズ及び署名402のアドレスを含むデータである。 Figure 4 is an explanatory diagram showing an example of a memory map of the flash ROM 121 according to this embodiment. As shown in Figure 4, the flash ROM 121 stores in advance a main CPU program 401, a signature 402, a Tag 403, a sub-CPU firmware 404, a signature 405, and a ROM-ID 406. The main CPU program 401 is, for example, a BIOS program executed when the main CPU 101 is booted. The signature 402 is a signature (for example, an RSA signature) for verifying the validity of the main CPU program 401. The signature 402 may be derived in advance by encrypting the hash value of the (legitimate) main CPU program 401 and stored in the flash ROM 121. The Tag 403 is data indicating the top address of the storage area in which the sub-CPU firmware 404 is stored. The address of the Tag 403 is stored in the OTP 304 as described above. Sub-CPU firmware 404 is firmware that includes program code executed by CPU core 301. Signature 405 is a signature (e.g., an ECDSA signature) for verifying the validity of sub-CPU firmware 404. Signature 405 may be derived in advance based on the entire (legitimate) sub-CPU firmware 404 or a specific portion at the beginning, and stored in flash ROM 121. ROM-ID 406 is data that includes the beginning address of the memory area in which main CPU program 401 is stored, the size of that memory area, and the address of signature 402.

図4には、メインCPUのためのプログラム及び署名のセットが1つだけフラッシュROM121に記憶される例が示されている。しかしながら、フラッシュROM121は、かかる例に限定されず、メインCPUのためのプログラム及び署名の複数のセットを記憶してもよい。同様に、図4には、サブCPUのためのファームウェア及び署名のセットが1つだけフラッシュROM121に記憶される例が示されている。しかしながら、フラッシュROM121は、かかる例に限定されず、サブCPUのためのファームウェア及び署名の複数のセットを記憶してもよい。また、ここでは一例として、署名402がRSA署名、署名405がECDSA署名である例を説明したが、各署名は、RSA署名、DSA署名又はECDSA署名といった、いかなる種類のデジタル署名方式に基づいていてもよい。 FIG. 4 shows an example in which only one set of programs and signatures for the main CPU is stored in the flash ROM 121. However, the flash ROM 121 is not limited to this example, and may store multiple sets of programs and signatures for the main CPU. Similarly, FIG. 4 shows an example in which only one set of firmware and signatures for the sub-CPU is stored in the flash ROM 121. However, the flash ROM 121 is not limited to this example, and may store multiple sets of firmware and signatures for the sub-CPU. Also, as an example, an example in which signature 402 is an RSA signature and signature 405 is an ECDSA signature has been described here, but each signature may be based on any type of digital signature method, such as an RSA signature, a DSA signature, or an ECDSA signature.

本実施形態において、サブCPU122のCPUコア301は、プログラムの正当性を検証している間、上述したタイムアウト閾値よりも短い出力周期で、GPIO303を介してクリア信号140をリセット制御部131へ出力する。クリア信号140の出力周期は、例えばタイマ回路312による計時に従って制御され得る。それにより、システムリセットが抑制される。タイマ回路312は、フリーランタイマのように、停止することなく周期的にゼロから(クリア信号の出力周期に相当する)上限値までをカウントしてもよい。代替的に、タイマ回路312は、カウンタ値が上限値に達するとカウントを停止し、クリア信号140の出力後にカウントを再開してもよい。なお、タイマ回路312の代わりに、CPUコア301上で動作するソフトウェアタイマが利用されてもよい。 In this embodiment, while the CPU core 301 of the sub-CPU 122 is verifying the validity of the program, it outputs the clear signal 140 to the reset control unit 131 via the GPIO 303 at an output period shorter than the above-mentioned timeout threshold. The output period of the clear signal 140 can be controlled, for example, according to the time measurement by the timer circuit 312. This suppresses system reset. The timer circuit 312 may count from zero to an upper limit value (corresponding to the output period of the clear signal) periodically without stopping, like a free-running timer. Alternatively, the timer circuit 312 may stop counting when the counter value reaches the upper limit value and resume counting after the clear signal 140 is output. Note that a software timer operating on the CPU core 301 may be used instead of the timer circuit 312.

図4を用いて説明したようなデジタル署名方式に基づいて、検証対象の全てのプログラムが正当であると判定されると、CPUコア301は、クリア信号140の周期的な出力を停止する。同時に、CPUコア301は、GPIO303を介して検証完了通知信号をリセット制御部131へ出力する。それに応じて、上述したように、メインCPU101のリセットが解除され得る。 When it is determined that all programs to be verified are valid based on the digital signature method as described with reference to FIG. 4, the CPU core 301 stops the periodic output of the clear signal 140. At the same time, the CPU core 301 outputs a verification completion notification signal to the reset control unit 131 via the GPIO 303. In response to this, the reset of the main CPU 101 can be released as described above.

<2-3.リセット制御部の構成例>
図5は、本実施形態に係るリセット制御部131の具体的な構成の一例を示すブロック図である。リセット制御部131は、リセット回路132、タイマ制御部501、タイマ回路502及びバスI/F503を含む。タイマ制御部501及びタイマ回路502は、図1に示したWDT133を構成する。
<2-3. Example of the configuration of the reset control unit>
5 is a block diagram showing an example of a specific configuration of the reset control unit 131 according to the present embodiment. The reset control unit 131 includes a reset circuit 132, a timer control unit 501, a timer circuit 502, and a bus I/F 503. The timer control unit 501 and the timer circuit 502 configure the WDT 133 shown in FIG.

タイマ制御部501は、タイマ回路502による計時に基づくタイムアウトの判定、及びタイマ回路502のカウンタ値のクリアを行うコントローラである。タイマ回路502は、時間の経過に沿ってカウンタ値をインクリメントする回路である。バスI/F503は、信号バス110を介するリセット制御部131と他のモジュールとの間の通信のためのインタフェースである。 The timer control unit 501 is a controller that determines whether a timeout has occurred based on the time measured by the timer circuit 502, and clears the counter value of the timer circuit 502. The timer circuit 502 is a circuit that increments the counter value over time. The bus I/F 503 is an interface for communication between the reset control unit 131 and other modules via the signal bus 110.

タイマ回路502は、リセット制御部131への給電の開始又はリセット解除に応じて、カウンタ値をゼロへ初期化し、計時を開始する。タイマ制御部501は、タイマ回路502のカウンタ値を監視し、カウンタ値が予め設定されるタイムアウト閾値に達した場合に、タイムアウトが発生したと判定する。タイムアウトが発生したと判定すると、タイマ制御部501は、システムリセットを指示するためのタイムアウト信号をリセット回路132へ出力する。タイマ制御部501は、タイムアウト信号を出力した後、タイマ回路502のカウンタ値をゼロへクリアし、タイマ回路502に計時を再開させる。 The timer circuit 502 initializes the counter value to zero and starts timing in response to the start of power supply to the reset control unit 131 or the release of the reset. The timer control unit 501 monitors the counter value of the timer circuit 502, and determines that a timeout has occurred when the counter value reaches a preset timeout threshold. When it determines that a timeout has occurred, the timer control unit 501 outputs a timeout signal to the reset circuit 132 to instruct a system reset. After outputting the timeout signal, the timer control unit 501 clears the counter value of the timer circuit 502 to zero and causes the timer circuit 502 to resume timing.

また、タイマ制御部501は、メインCPU101又はサブCPU122からクリア信号が入力されると、タイマ回路502のカウンタ値をゼロへクリアする。各クリア信号は、上述したように、パルス信号のパルス、又は所定の制御アドレスへの制御値の書込みなど、いかなる手法で実現されてもよい。本実施形態では、サブCPU122によりプログラムの正当性が検証されている間、サブCPU122からタイマ制御部501へクリア信号140が周期的に入力され得る。サブCPU122によりプログラムが正当であると判定されると、リセット回路132が、検証完了通知信号の入力に応じて、メインCPU101のリセットを解除する。その後、サブCPU122からのクリア信号140の入力は停止し、代わりにメインCPU101からタイマ制御部501へクリア信号137が周期的に入力され得る。これらクリア信号が上述したタイムアウト閾値により表される期間にわたって入力されない場合には、カウンタ値は、クリアされることなくタイムアウト閾値に達する。すると、タイマ制御部501は、システムに何らかの異常が生じたものと見なし、タイムアウト信号をリセット回路132へ出力する。タイマ制御部501は、検証完了通知信号の入力をトリガとして、メインCPU101からの第2クリア信号の監視(例えば、所定の制御レジスタが示す値の監視)を開始してもよい。 In addition, when a clear signal is input from the main CPU 101 or the sub CPU 122, the timer control unit 501 clears the counter value of the timer circuit 502 to zero. As described above, each clear signal may be realized by any method, such as a pulse of a pulse signal or writing a control value to a predetermined control address. In this embodiment, while the sub CPU 122 is verifying the validity of the program, the sub CPU 122 may periodically input a clear signal 140 to the timer control unit 501. When the sub CPU 122 determines that the program is valid, the reset circuit 132 releases the reset of the main CPU 101 in response to the input of the verification completion notification signal. Thereafter, the input of the clear signal 140 from the sub CPU 122 is stopped, and instead, the main CPU 101 may periodically input a clear signal 137 to the timer control unit 501. If these clear signals are not input for the period represented by the above-mentioned timeout threshold, the counter value reaches the timeout threshold without being cleared. Then, the timer control unit 501 assumes that some abnormality has occurred in the system, and outputs a timeout signal to the reset circuit 132. The timer control unit 501 may start monitoring the second clear signal from the main CPU 101 (e.g., monitoring the value indicated by a specific control register) when the verification completion notification signal is input.

<<3.処理の流れ>>
<3-1.システム起動時の処理>
図6は、本実施形態に係るMFP1のシステム起動時の処理の概略的な流れの一例を示すシーケンス図である。図6に示した処理には、MFP1を操作するユーザに加えて、MFP1の電源制御部130、WDT133、リセット回路132、サブCPU122及びメインCPU101が関与する。なお、以下の説明では、処理ステップをS(ステップ)と略記する。
<<3. Processing flow>>
<3-1. Processing at system startup>
Fig. 6 is a sequence diagram showing an example of a schematic flow of processing at system startup of the MFP 1 according to this embodiment. In addition to the user who operates the MFP 1, the power supply control unit 130, the WDT 133, the reset circuit 132, the sub-CPU 122, and the main CPU 101 of the MFP 1 are involved in the processing shown in Fig. 6. In the following description, processing steps are abbreviated as S (step).

まず、S601で、電源制御部130は、MFP1を起動するためのユーザ操作を操作部111を介して受け付ける。このユーザ操作に応じて、S602で、電源制御部130は、商用AC電源から供給される電力の各モジュールへの分配を開始する。リセット回路132は、サブCPU122及びメインCPU101へ、“Lo”レベルを示すリセット制御信号を出力する。 First, in S601, the power supply control unit 130 accepts a user operation to start up the MFP1 via the operation unit 111. In response to this user operation, in S602, the power supply control unit 130 starts distributing power supplied from a commercial AC power source to each module. The reset circuit 132 outputs a reset control signal indicating a "Lo" level to the sub-CPU 122 and the main CPU 101.

S603で、WDT133は、給電の開始に応じて、タイマ回路502による計時を開始する。また、S604で、リセット回路132は、サブCPU122へ出力されるリセット制御信号の信号レベルを“Hi”へ切替えて、サブCPU122のリセットを解除する。 In S603, the WDT 133 starts timing using the timer circuit 502 in response to the start of power supply. In S604, the reset circuit 132 switches the signal level of the reset control signal output to the sub-CPU 122 to "Hi" to release the reset of the sub-CPU 122.

S605で、サブCPU122は、リセット解除に応じて、タイマ回路312による計時を開始する。並列的に、S606で、サブCPU122は、サブCPUファームウェア404の正当性を検証する。ここでは、サブCPUファームウェア404は正当であると判定されるものとする。次いで、S610で、サブCPU122は、メインCPUプログラム401(例えば、BIOSプログラム)の正当性を検証する。 In S605, the sub CPU 122 starts timing using the timer circuit 312 in response to reset release. In parallel, in S606, the sub CPU 122 verifies the authenticity of the sub CPU firmware 404. Here, it is assumed that the sub CPU firmware 404 is determined to be authentic. Next, in S610, the sub CPU 122 verifies the authenticity of the main CPU program 401 (e.g., the BIOS program).

サブCPU122がこのようにプログラムの正当性を検証している間、S611で、タイマ回路312のカウンタ値が第1クリア信号の出力周期を表す閾値に到達し得る。すると、S612で、サブCPU122は、第1クリア信号をWDT133へ出力する(タイマ回路312のカウンタ値はここでクリアされ得る)。S613で、WDT133は、第1クリア信号の入力に応じて、タイマ回路502のカウンタ値をクリアした後に、タイマ回路502による計時を再開する。 While the sub-CPU 122 is thus verifying the validity of the program, in S611, the counter value of the timer circuit 312 may reach a threshold value representing the output period of the first clear signal. Then, in S612, the sub-CPU 122 outputs the first clear signal to the WDT 133 (the counter value of the timer circuit 312 may be cleared here). In S613, in response to the input of the first clear signal, the WDT 133 clears the counter value of the timer circuit 502, and then resumes timekeeping by the timer circuit 502.

図6の例では、サブCPU122によるメインCPUプログラム401の正当性の検証は、さらに続く。S621で、タイマ回路312のカウンタ値が第1クリア信号の出力周期を表す閾値に再び到達し得る。すると、S622で、サブCPU122は、第1クリア信号をWDT133へ出力する(タイマ回路312のカウンタ値はやはりここでクリアされ得る)。S623で、WDT133は、第1クリア信号の入力に応じて、タイマ回路502のカウンタ値をクリアした後に、タイマ回路502による計時を再開する。 In the example of FIG. 6, the sub-CPU 122 continues to verify the validity of the main CPU program 401. At S621, the counter value of the timer circuit 312 may again reach the threshold value representing the output period of the first clear signal. Then, at S622, the sub-CPU 122 outputs the first clear signal to the WDT 133 (the counter value of the timer circuit 312 may also be cleared here). At S623, in response to the input of the first clear signal, the WDT 133 clears the counter value of the timer circuit 502, and then resumes timekeeping by the timer circuit 502.

ある時点で、サブCPU122によるメインCPUプログラム401の正当性の検証は終了する。ここでは、メインCPUプログラム401もまた正当であると判定されるものとする。すると、S631で、サブCPU122は、検証完了通知信号をリセット回路132へ出力する。そして、S632で、サブCPU122は、スリープ状態へ移行する。 At a certain point, the sub-CPU 122 finishes verifying the validity of the main CPU program 401. Here, it is assumed that the main CPU program 401 is also determined to be valid. Then, in S631, the sub-CPU 122 outputs a verification completion notification signal to the reset circuit 132. Then, in S632, the sub-CPU 122 transitions to a sleep state.

S633で、リセット回路132は、検証完了通知信号のアサートに応じて、メインCPU101へ出力されるリセット制御信号の信号レベルを“Hi”へ切替えて、メインCPU101のリセットを解除する。 In S633, in response to assertion of the verification completion notification signal, the reset circuit 132 switches the signal level of the reset control signal output to the main CPU 101 to "Hi" to release the reset of the main CPU 101.

S641で、メインCPU101は、リセット解除に応じて、フラッシュROM121から読出されるメインCPUプログラム401(例えば、BIOSプログラム)を実行する。また、S642で、メインCPU101は、計時を開始する。ここでは、メインCPU101は、ソフトウェアタイマを利用するものとする。S643で、メインCPU101は、HDD108から読出されるOSプログラムを実行することにより、OSを起動する。図6には示していないものの、OSの起動に応じて、各モジュールのドライバ及び他のアプリケーションもまた起動され得る。 In S641, the main CPU 101 executes the main CPU program 401 (e.g., a BIOS program) read from the flash ROM 121 in response to reset release. In addition, in S642, the main CPU 101 starts timing. Here, it is assumed that the main CPU 101 uses a software timer. In S643, the main CPU 101 starts the OS by executing the OS program read from the HDD 108. Although not shown in FIG. 6, drivers and other applications for each module may also be started in response to the start of the OS.

メインCPU101がこのようにプログラムを実行している間、S651で、タイマのカウンタ値が第2クリア信号の出力周期を表す閾値に到達し得る。すると、S652で、メインCPU101は、第2クリア信号をWDT133へ出力する。S653で、WDT133は、第2クリア信号の入力に応じて、タイマ回路502のカウンタ値をクリアした後に、タイマ回路502による計時を再開する。 While the main CPU 101 is executing the program in this manner, in S651, the timer counter value may reach a threshold value representing the output period of the second clear signal. Then, in S652, the main CPU 101 outputs the second clear signal to the WDT 133. In S653, in response to the input of the second clear signal, the WDT 133 clears the counter value of the timer circuit 502, and then resumes timekeeping by the timer circuit 502.

こうしたシーケンスにおいて、例えばS631までにサブCPU122に異常が発生し、第1クリア信号の周期的な出力が停止した場合、WDT133のタイマ回路502は、カウンタ値がクリアされないためにタイムアウトし得る。また、S641の後にメインCPU101に異常が発生し、第2クリア信号の周期的な出力が停止した場合、WDT133のタイマ回路502は、やはりカウンタ値がクリアされないためにタイムアウトし得る。一旦WDT133においてタイムアウトが発生すると、WDT133のタイマ制御部501は、リセット回路132へシステムリセットを指示し、リセット回路132は、それに応じてメインCPU101及びサブCPU122をリセットさせる。例えば、メインCPU101及びサブCPU122は、予め設定される期間にわたってリセット状態に維持され、その後、サブCPU122のリセットが解除されて、上述したS604以降の処理ステップが再実行される。 In such a sequence, for example, if an abnormality occurs in the sub-CPU 122 by S631 and the periodic output of the first clear signal stops, the timer circuit 502 of the WDT 133 may time out because the counter value is not cleared. Also, if an abnormality occurs in the main CPU 101 after S641 and the periodic output of the second clear signal stops, the timer circuit 502 of the WDT 133 may time out because the counter value is not cleared. Once a timeout occurs in the WDT 133, the timer control unit 501 of the WDT 133 instructs the reset circuit 132 to perform a system reset, and the reset circuit 132 resets the main CPU 101 and the sub-CPU 122 accordingly. For example, the main CPU 101 and the sub-CPU 122 are maintained in a reset state for a preset period, and then the reset of the sub-CPU 122 is released, and the processing steps from S604 onwards described above are executed again.

<3-2.サブCPUによる処理>
図7は、本実施形態に係るサブCPU122により実行される処理の流れの一例を示すフローチャートである。
<3-2. Processing by sub-CPU>
FIG. 7 is a flowchart showing an example of the flow of processing executed by the sub-CPU 122 according to this embodiment.

まず、S701で、サブCPU122は、起動した直後にブートROM310からブートプログラムを読出し、読出したブートプログラムを実行する。それにより、サブCPUファームウェア404及び署名405が、SPIバス120を介してフラッシュROM121からSRAM305へ読出される。 First, in S701, the sub-CPU 122 reads the boot program from the boot ROM 310 immediately after starting up, and executes the read boot program. As a result, the sub-CPU firmware 404 and the signature 405 are read from the flash ROM 121 to the SRAM 305 via the SPI bus 120.

次いで、S702で、サブCPU122は、サブCPUファームウェア404の正当性を検証する。例えば、暗号処理部308は、署名405をOTP304に予め記憶される公開鍵で復号して、正当なサブCPUファームウェア404のハッシュ値を導出する。また、暗号処理部308は、サブCPUファームウェア404のプログラムデータからハッシュ値を算出する。これらハッシュ値が互いに一致する場合には、サブCPUファームウェア404は正当である(改竄されておらず、経年劣化により変化してもいない)と判定される。一方、ハッシュ値が一致しない場合には、サブCPUファームウェア404は、開発者の意図に反して変化しているために、正当ではないと判定される。 Next, in S702, the sub CPU 122 verifies the authenticity of the sub CPU firmware 404. For example, the cryptographic processing unit 308 decrypts the signature 405 with a public key pre-stored in the OTP 304 to derive a hash value of the authentic sub CPU firmware 404. The cryptographic processing unit 308 also calculates a hash value from the program data of the sub CPU firmware 404. If these hash values match, the sub CPU firmware 404 is determined to be authentic (not tampered with and not changed due to deterioration over time). On the other hand, if the hash values do not match, the sub CPU firmware 404 is determined to be invalid because it has been changed contrary to the developer's intentions.

その後の処理は、S703で、サブCPUファームウェア404の正当性検証の結果に依存して分岐する。サブCPUファームウェア404が正当であると判定された場合、処理はS704へ進む。一方、サブCPUファームウェア404が正当ではないと判定された場合、処理はS709へ進む。 Then, in S703, the process branches depending on the result of the verification of the validity of the sub-CPU firmware 404. If it is determined that the sub-CPU firmware 404 is valid, the process proceeds to S704. On the other hand, if it is determined that the sub-CPU firmware 404 is not valid, the process proceeds to S709.

S704で、サブCPU122は、サブCPUファームウェア404をSRAM305へ読出して実行する。次いで、S705で、サブCPU122は、サブCPUファームウェア404に従って動作し、ROM-ID406から導出されるアドレスに基づいて、BIOSプログラム401及び署名402をフラッシュROM121からSRAM305へ読出す。次いで、S706で、サブCPU122は、BIOSプログラム401の正当性を検証する。例えば、暗号処理部308は、署名402を公開鍵で復号して、正当なBIOSプログラム401のハッシュ値を導出する。また、暗号処理部308は、BIOSプログラム401のプログラムデータからハッシュ値を算出する。これらハッシュ値が互いに一致する場合には、BIOSプログラム401は正当である(改竄されておらず、経年劣化により変化してもいない)と判定される。一方、ハッシュ値が一致しない場合には、BIOSプログラム401は、開発者の意図に反して変化しているために、正当ではないと判定される。 At S704, the sub-CPU 122 reads the sub-CPU firmware 404 into the SRAM 305 and executes it. Next, at S705, the sub-CPU 122 operates according to the sub-CPU firmware 404, and reads the BIOS program 401 and the signature 402 from the flash ROM 121 into the SRAM 305 based on an address derived from the ROM-ID 406. Next, at S706, the sub-CPU 122 verifies the authenticity of the BIOS program 401. For example, the encryption processing unit 308 decrypts the signature 402 with a public key to derive a hash value of the authentic BIOS program 401. The encryption processing unit 308 also calculates a hash value from the program data of the BIOS program 401. If these hash values match, it is determined that the BIOS program 401 is authentic (has not been tampered with and has not changed due to deterioration over time). On the other hand, if the hash values do not match, the BIOS program 401 is determined to be invalid because it has been altered contrary to the developer's intentions.

その後の処理は、S707で、BIOSプログラム401の正当性検証の結果に依存して分岐する。BIOSプログラム401が正当であると判定された場合、処理はS708へ進む。S708で、サブCPU122は、GPIO303を制御して、検証完了通知信号をアサートすることにより、リセット制御部131へ検証の完了を通知する。そして、処理はS709へ進む。一方、BIOSプログラム401が正当ではないと判定された場合、S708が実行されることなく、処理はS709へ進む。 The process thereafter branches depending on the result of the verification of the validity of the BIOS program 401 in S707. If it is determined that the BIOS program 401 is valid, the process proceeds to S708. In S708, the sub-CPU 122 controls the GPIO 303 to assert a verification completion notification signal, thereby notifying the reset control unit 131 of the completion of verification. Then, the process proceeds to S709. On the other hand, if it is determined that the BIOS program 401 is not valid, the process proceeds to S709 without executing S708.

上述したS702~S708を実行している間、サブCPU122は、リセット制御部131への周期的な第1クリア信号の出力を継続する。具体的には、まず、サブCPU122によりタイマ回路312が起動される。GPIO303のポートは初期化され、例えば検証完了通知信号の信号レベルは“Lo”に設定される。そして、タイマ回路312がカウンタ値をインクリメントすることにより、タイマが進行する。 While executing steps S702 to S708 described above, the sub-CPU 122 continues to periodically output a first clear signal to the reset control unit 131. Specifically, first, the sub-CPU 122 starts the timer circuit 312. The port of the GPIO 303 is initialized, and for example, the signal level of the verification completion notification signal is set to "Lo". Then, the timer circuit 312 increments the counter value, causing the timer to proceed.

サブCPU122は、例えば、タイマ回路312からの割込みに応じて、第1クリア信号の出力周期が経過したかを判定する。第1クリア信号の出力周期が経過した場合、サブCPU122は、GPIO303を制御して第1クリア信号をリセット制御部131へ出力し、及び、タイマ回路312のカウンタ値をクリアする。 For example, in response to an interrupt from the timer circuit 312, the sub-CPU 122 determines whether the output period of the first clear signal has elapsed. If the output period of the first clear signal has elapsed, the sub-CPU 122 controls the GPIO 303 to output the first clear signal to the reset control unit 131 and clears the counter value of the timer circuit 312.

S709で、サブCPU122は、電力を節約するために、スリープ状態へ移行する。スリープ状態において、サブCPU122は、第1クリア信号を出力しない(又はアサートしない)。サブCPU122のスリープ状態は、MFP1のシステムリセットが実行されるまで維持されてよい。但し、サブCPU122をプログラムの正当性の検証以外の用途に再利用するために、サブCPU122をスリープ状態へ移行させなくてもよく、又は一旦スリープ状態へ移行したサブCPU122が(例えば、割込み信号に応じて)通常状態へ戻ってもよい。 In S709, the sub-CPU 122 transitions to a sleep state to conserve power. In the sleep state, the sub-CPU 122 does not output (or assert) the first clear signal. The sleep state of the sub-CPU 122 may be maintained until a system reset of the MFP 1 is executed. However, in order to reuse the sub-CPU 122 for purposes other than verifying the validity of the program, the sub-CPU 122 may not be transitioned to the sleep state, or the sub-CPU 122 that has once transitioned to the sleep state may return to the normal state (e.g., in response to an interrupt signal).

図7に示した例では、サブCPU122は、プログラムの正当性の検証に失敗した場合に、即座にS709でスリープ状態へ移行する。結果的に、リセット制御部131へクリア信号が入力されなくなり、WDTのタイムアウトが発生し、サブCPU122及びメインCPU101はリセットされる。こうした構成によれば、サブCPUファームウェア404のプログラムコードを最小にすることができる。S708を経てS709でサブCPU122がスリープ状態へ移行した場合には、メインCPU101がリセット制御部131へ第2クリア信号を出力するため、メインCPU101に異常が発生しない限り、システムリセットは行われない。 In the example shown in FIG. 7, if the sub-CPU 122 fails to verify the validity of the program, it immediately transitions to a sleep state in S709. As a result, the clear signal is no longer input to the reset control unit 131, a WDT timeout occurs, and the sub-CPU 122 and main CPU 101 are reset. With this configuration, the program code of the sub-CPU firmware 404 can be minimized. If the sub-CPU 122 transitions to a sleep state in S709 after S708, the main CPU 101 outputs a second clear signal to the reset control unit 131, so a system reset is not performed unless an abnormality occurs in the main CPU 101.

<3-3.メインCPUによる処理>
図8は、本実施形態に係るメインCPU101により実行される処理の流れの一例を示すフローチャートである。
<3-3. Processing by the main CPU>
FIG. 8 is a flowchart showing an example of the flow of processing executed by the main CPU 101 according to this embodiment.

まず、S801で、メインCPU101は、リセット解除に応じて、BIOSプログラムをフラッシュROM121からDRAM102へ読出す。次いで、S802で、メインCPU101は、読出したBIOSプログラムを実行する。それにより、メインCPU101の基本的な入出力機能が初期化される。 First, in S801, the main CPU 101 reads the BIOS program from the flash ROM 121 to the DRAM 102 in response to reset release. Next, in S802, the main CPU 101 executes the read BIOS program. This initializes the basic input/output functions of the main CPU 101.

次いで、S803で、メインCPU101は、OSを構成するプログラムをHDD108からDRAM102へ読出す。次いで、S804で、メインCPU101は、読出したプログラムを実行することにより、MFP1のOSを起動する。次いで、S805で、メインCPU101は、MFP1のモジュール(例えば、操作I/F103、ネットワークI/F104、プリンタ105、スキャナ106、FAX107及び画像処理部109)の各々を初期化して、MFP1をセットアップする。その結果、S806で、MFP1は、通常の動作を行うことが可能となる。MFP1の動作は、例えばユーザ操作を通じてMFP1の動作終了が指示されるまで継続される(S807)。 Next, in S803, the main CPU 101 reads out the program that constitutes the OS from the HDD 108 to the DRAM 102. Next, in S804, the main CPU 101 executes the read out program to start up the OS of the MFP1. Next, in S805, the main CPU 101 initializes each of the modules of the MFP1 (e.g., the operation I/F 103, the network I/F 104, the printer 105, the scanner 106, the FAX 107, and the image processing unit 109) to set up the MFP1. As a result, in S806, the MFP1 is able to perform normal operation. The operation of the MFP1 continues until, for example, an instruction to end the operation of the MFP1 is given through a user operation (S807).

上述したS802~S806を実行している間、メインCPU101は、リセット制御部131への周期的な第2クリア信号の出力を継続する。具体的には、まず、メインCPU101によりソフトウェアタイマが起動される。ソフトウェアタイマは、内部変数であるカウンタ値をインクリメントすることにより進行する。メインCPU101は、第2クリア信号の出力周期が経過したと判定すると、第2クリア信号をリセット制御部131へ出力して、リセット制御部131の制御レジスタ(例えば、WDTクリアレジスタ)に所定の値(例えば、“1”)を書込む。同時に、メインCPU101は、ソフトウェアタイマのカウンタ値をクリアする。S808でMFP1の動作が終了する場合(又はメインCPU101に何らかの異常が発生した場合)、第2クリア信号の出力は停止する。 While executing the above-mentioned steps S802 to S806, the main CPU 101 continues to periodically output the second clear signal to the reset control unit 131. Specifically, first, the main CPU 101 starts a software timer. The software timer progresses by incrementing a counter value, which is an internal variable. When the main CPU 101 determines that the output period of the second clear signal has elapsed, it outputs a second clear signal to the reset control unit 131 and writes a predetermined value (e.g., "1") to a control register (e.g., a WDT clear register) of the reset control unit 131. At the same time, the main CPU 101 clears the counter value of the software timer. When the operation of the MFP 1 ends in S808 (or when some abnormality occurs in the main CPU 101), the output of the second clear signal stops.

<3-4.WDTによる処理>
図9は、本実施形態に係るWDT133により実行される処理の流れの一例を示すフローチャートである。
<3-4. WDT Processing>
FIG. 9 is a flowchart showing an example of the flow of processing executed by the WDT 133 according to this embodiment.

まず、S901で、WDT133は、給電の開始に応じて、タイマ回路502を起動し、タイマ回路502による計時を開始させる。S902で、タイマは進行し、即ちタイマ回路502がカウンタ値をインクリメントする。WDT133は、S903で、サブCPU122からの検証完了の通知を待ち受ける。 First, in S901, the WDT 133 starts the timer circuit 502 in response to the start of power supply, and causes the timer circuit 502 to start timing. In S902, the timer progresses, that is, the timer circuit 502 increments the counter value. In S903, the WDT 133 waits for a notification of the completion of verification from the sub-CPU 122.

サブCPU122からの検証完了が通知されるまで、WDT133は、S904で、サブCPU122からの第1クリア信号の入力を監視する。サブCPU122から第1クリア信号が入力された場合、WDT133は、S905で、タイマ回路502のカウンタ値をクリアし、計時をゼロから再開させる。その後、処理はS902へ戻る。サブCPU122から第1クリア信号が入力されない場合、WDT133は、S906で、タイマ回路502のカウンタ値がタイムアウト閾値に達したかを判定する。カウンタ値がタイムアウト閾値に達していない場合、処理はS902へ戻る。カウンタ値がタイムアウト閾値に達した場合、処理はS920へ進む。 Until the sub-CPU 122 notifies the WDT 133 that verification is complete, in S904, the WDT 133 monitors the input of a first clear signal from the sub-CPU 122. If the first clear signal is input from the sub-CPU 122, in S905, the WDT 133 clears the counter value of the timer circuit 502 and restarts timing from zero. Processing then returns to S902. If the first clear signal is not input from the sub-CPU 122, in S906, the WDT 133 determines whether the counter value of the timer circuit 502 has reached the timeout threshold. If the counter value has not reached the timeout threshold, processing returns to S902. If the counter value has reached the timeout threshold, processing proceeds to S920.

サブCPU122からの検証完了が通知されると、WDT133は、S911で、メインCPU101によるクリア制御の監視を開始する。S912で、タイマは引き続き進行する。S913で、WDT133は、メインCPU101からの第2クリア信号の入力(例えば、WDTクリアレジスタへの書込み)を監視する。メインCPU101から第2クリア信号が入力された場合、WDT133は、S914で、タイマ回路502のカウンタ値をクリアし、計時をゼロから再開させる。その後、処理はS912へ戻る。メインCPU101から第2クリア信号が入力されない場合、WDT133は、S915で、タイマ回路502のカウンタ値がタイムアウト閾値に達したかを判定する。カウンタ値がタイムアウト閾値に達していない場合、処理はS912へ戻る。カウンタ値がタイムアウト閾値に達した場合、処理はS920へ進む。 When the sub-CPU 122 notifies the WDT 133 of the completion of the verification, the WDT 133 starts monitoring the clear control by the main CPU 101 in S911. In S912, the timer continues to proceed. In S913, the WDT 133 monitors the input of a second clear signal from the main CPU 101 (e.g., writing to the WDT clear register). If the second clear signal is input from the main CPU 101, the WDT 133 clears the counter value of the timer circuit 502 in S914 and restarts the time measurement from zero. Thereafter, the process returns to S912. If the second clear signal is not input from the main CPU 101, the WDT 133 determines in S915 whether the counter value of the timer circuit 502 has reached the timeout threshold. If the counter value has not reached the timeout threshold, the process returns to S912. If the counter value has reached the timeout threshold, the process proceeds to S920.

S920で、WDT133は、MFP1(サブCPU122又はメインCPU101)に異常が発生したものと見なし、システムリセットをリセット回路132へ指示する。 At S920, the WDT 133 determines that an abnormality has occurred in the MFP 1 (sub-CPU 122 or main CPU 101) and instructs the reset circuit 132 to perform a system reset.

<3-5.リセット回路による処理>
図10は、本実施形態に係るリセット回路132により実行される処理の流れの一例を示すフローチャートである。
<3-5. Processing by the reset circuit>
FIG. 10 is a flowchart showing an example of the flow of processing executed by the reset circuit 132 according to the present embodiment.

まず、S1001で、リセット回路132は、給電の開始に応じて、サブCPU122のリセットを解除する。次いで、S1002で、リセット回路132は、サブCPU122からの検証完了の通知を待ち受ける。サブCPU122から検証完了が通知されない場合、S1003で、リセット回路132は、WDT133からシステムリセットが指示されたかを判定する。システムリセットが指示された場合、処理はS1020へ進む。一方、システムリセットが指示されない場合、処理はS1002へ戻る。 First, in S1001, the reset circuit 132 releases the reset of the sub-CPU 122 in response to the start of power supply. Next, in S1002, the reset circuit 132 waits for a notification of the completion of verification from the sub-CPU 122. If the sub-CPU 122 does not notify the completion of verification, in S1003, the reset circuit 132 determines whether a system reset has been instructed by the WDT 133. If a system reset has been instructed, the process proceeds to S1020. On the other hand, if a system reset has not been instructed, the process returns to S1002.

サブCPU122から検証完了が通知された場合、S1011で、リセット回路132は、メインCPU101のリセットを解除する。次いで、S1012で、リセット回路132は、WDT133からのシステムリセットの指示を待ち受ける。システムリセットが指示された場合、処理はS1020へ進む。 When the sub-CPU 122 notifies the main CPU 101 that the verification is complete, in S1011 the reset circuit 132 releases the reset of the main CPU 101. Next, in S1012, the reset circuit 132 waits for a system reset instruction from the WDT 133. When a system reset instruction is received, the process proceeds to S1020.

S1020で、リセット回路132は、WDT133からのシステムリセットが指示された(例えば、タイムアウト信号が入力された)ため、メインCPU101及びサブCPU122をリセットする(システムリセット信号を発行する)。 At S1020, the reset circuit 132 resets the main CPU 101 and the sub-CPU 122 (issues a system reset signal) because a system reset has been instructed from the WDT 133 (for example, a timeout signal has been input).

図9及び図10を用いて説明したようなリセット制御によれば、サブCPU122がプログラムの正当性を検証している間に、WDTのタイムアウトに起因して無用なシステムリセットが実行されることが防止される。また、正当性の検証が完了する前はサブCPU122が、検証完了後はメインCPU101がWDTのカウンタ値を周期的にクリアすることで、WDTにおいてタイムアウト閾値を切替える必要性が無く、WDTの簡易な構成が維持される。 The reset control described using Figures 9 and 10 prevents unnecessary system resets from being performed due to a WDT timeout while the sub-CPU 122 is verifying the validity of the program. In addition, the sub-CPU 122 periodically clears the WDT counter value before the validity verification is completed, and the main CPU 101 periodically clears the WDT counter value after the verification is completed, eliminating the need to switch the timeout threshold in the WDT and maintaining the simple configuration of the WDT.

<<4.変形例>>
本発明は上記実施形態に限定されず、様々な変形が可能である。例えば、上述した実施形態では、サブCPU122が第1クリア信号を周期的に出力し、WDT133が第1クリア信号の入力の都度タイマ回路502のカウンタ値をクリアする例を説明した。これに対し、一変形例において、サブCPU122は第1クリア信号を一度だけ出力し、WDT133が第1クリア信号の入力に応じてタイマ回路502による計時を停止してもよい。タイマ回路502による計時は、例えばプログラムの正当性の検証が成功した後に再開され得る。こうした変形例によれば、サブCPU122による周期的な信号出力を不要とし、サブCPUファームウェア404のサイズを削減することができる。この変形例に係るWDT133により実行される処理の流れの一例を、図11に示している。
<<4. Modifications>>
The present invention is not limited to the above embodiment, and various modifications are possible. For example, in the above embodiment, the sub CPU 122 periodically outputs the first clear signal, and the WDT 133 clears the counter value of the timer circuit 502 each time the first clear signal is input. In contrast, in one modification, the sub CPU 122 may output the first clear signal only once, and the WDT 133 may stop the timer circuit 502 from timing in response to the input of the first clear signal. The timer circuit 502 may resume timing, for example, after the program validity is successfully verified. According to such a modification, the sub CPU 122 does not need to output a periodic signal, and the size of the sub CPU firmware 404 can be reduced. An example of the flow of the process executed by the WDT 133 according to this modification is shown in FIG. 11.

まず、S1101で、WDT133は、給電の開始に応じて、タイマ回路502を起動し、タイマ回路502による計時を開始させる。S1102で、タイマは進行し、即ちタイマ回路502がカウンタ値をインクリメントする。WDT133は、S1103で、サブCPU122からの検証完了の通知を待ち受ける。 First, in S1101, the WDT 133 starts the timer circuit 502 in response to the start of power supply, and causes the timer circuit 502 to start timing. In S1102, the timer progresses, that is, the timer circuit 502 increments the counter value. In S1103, the WDT 133 waits for a notification of the completion of verification from the sub-CPU 122.

サブCPU122からの検証完了が通知されるまで、WDT133は、S1104で、サブCPU122からの第1クリア信号の入力を監視する。サブCPU122から第1クリア信号が入力された場合、WDT133は、S1105で、タイマ回路502のカウンタ値をクリアし、S1106で、計時を停止する。その後、WDT133は、引き続きサブCPU122からの検証完了の通知を待ち受ける。 Until the sub-CPU 122 notifies the WDT 133 that verification is complete, the WDT 133 monitors the input of the first clear signal from the sub-CPU 122 in S1104. When the first clear signal is input from the sub-CPU 122, the WDT 133 clears the counter value of the timer circuit 502 in S1105, and stops timing in S1106. Thereafter, the WDT 133 continues to wait for the sub-CPU 122 to notify the WDT 133 that verification is complete.

サブCPU122から第1クリア信号が入力されない場合、WDT133は、S1108で、タイマ回路502のカウンタ値がタイムアウト閾値に達したかを判定する。カウンタ値がタイムアウト閾値に達していない場合、処理はS1102へ戻る。カウンタ値がタイムアウト閾値に達した場合、処理はS1120へ進む。なお、S1108の判定は、S1106で計時が停止されている場合には行われなくてよい。 If the first clear signal is not input from the sub-CPU 122, the WDT 133 determines in S1108 whether the counter value of the timer circuit 502 has reached the timeout threshold. If the counter value has not reached the timeout threshold, the process returns to S1102. If the counter value has reached the timeout threshold, the process proceeds to S1120. Note that the determination in S1108 does not need to be made if the timing has been stopped in S1106.

サブCPU122からの検証完了が通知されると、WDT133は、S1111で、メインCPU101によるクリア制御の監視を開始する。S1106で計時が停止されている場合には、WDT133は、検証完了の通知に応じて計時を再開する。S1112で、タイマは進行する。S1113で、WDT133は、メインCPU101からの第2クリア信号の入力(例えば、WDTクリアレジスタへの書込み)を監視する。メインCPU101から第2クリア信号が入力された場合、WDT133は、S1114で、タイマ回路502のカウンタ値をクリアし、計時をゼロから再開させる。その後、処理はS1112へ戻る。メインCPU101から第2クリア信号が入力されない場合、WDT133は、S1115で、タイマ回路502のカウンタ値がタイムアウト閾値に達したかを判定する。カウンタ値がタイムアウト閾値に達していない場合、処理はS1112へ戻る。カウンタ値がタイムアウト閾値に達した場合、処理はS1120へ進む。 When the sub-CPU 122 notifies the WDT 133 of the completion of the verification, the WDT 133 starts monitoring the clear control by the main CPU 101 in S1111. If the timekeeping was stopped in S1106, the WDT 133 restarts the timekeeping in response to the notification of the completion of the verification. In S1112, the timer progresses. In S1113, the WDT 133 monitors the input of a second clear signal from the main CPU 101 (e.g., writing to the WDT clear register). If the second clear signal is input from the main CPU 101, the WDT 133 clears the counter value of the timer circuit 502 in S1114 and restarts the timekeeping from zero. The process then returns to S1112. If the second clear signal is not input from the main CPU 101, the WDT 133 determines in S1115 whether the counter value of the timer circuit 502 has reached the timeout threshold value. If the counter value has not reached the timeout threshold, processing returns to S1112. If the counter value has reached the timeout threshold, processing proceeds to S1120.

S1120で、WDT133は、MFP1(サブCPU122又はメインCPU101)に異常が発生したものと見なし、システムリセットをリセット回路132へ指示する。 At S1120, the WDT 133 determines that an abnormality has occurred in the MFP 1 (sub-CPU 122 or main CPU 101), and instructs the reset circuit 132 to perform a system reset.

他の変形例において、サブCPU122は、正当性検証の対象のプログラムが正当ではないと判定した場合に、当該プログラムの復旧用バージョンを用いて、当該プログラムを復旧してもよい。こうしたプログラムの復旧用バージョンを、ゴールデンマスタともいう。ゴールデンマスタは、例えば、サブCPU122によりアクセス可能なROMの保護領域(書換え不能な領域)に予め記憶される。そして、サブCPU122は、プログラムの検証に失敗した場合に、スリープ状態へ移行する代わりに、ゴールデンマスタを検証に失敗したプログラムに上書きする。その後、システムリセットが行われることで、復旧したプログラムを用いてMFP1が正常に起動し得る。本変形例において、サブCPU122は、プログラムを復旧している間にも、周期的にリセット制御部131へ第1クリア信号を出力して、WDTのカウンタ値をクリアさせる。それにより、ゴールデンマスタを用いたプログラムの復旧の途中でシステムリセットが実行されることを回避し、システムリセットの無用な再実行及びプログラムの破損といった不具合を防止することができる。 In another modified example, when the sub-CPU 122 determines that the program to be verified is not valid, the sub-CPU 122 may use a recovery version of the program to recover the program. Such a recovery version of the program is also called a golden master. The golden master is stored in advance, for example, in a protected area (unrewritable area) of a ROM accessible by the sub-CPU 122. When the program verification fails, the sub-CPU 122 overwrites the program that has failed verification with the golden master instead of going into a sleep state. After that, a system reset is performed, so that the MFP 1 can be started normally using the recovered program. In this modified example, even while the sub-CPU 122 is recovering the program, the sub-CPU 122 periodically outputs a first clear signal to the reset control unit 131 to clear the counter value of the WDT. This makes it possible to avoid a system reset being performed during the recovery of the program using the golden master, and to prevent problems such as unnecessary re-execution of the system reset and damage to the program.

他の変形例において、リセット制御部131は、サブCPU122からの第1クリア信号の入力回数を計数し、当該入力回数が閾値を上回る場合に、第1クリア信号の入力に応じてWDTのカウンタ値をクリアしなくてもよい。かかる構成によれば、サブCPU122において処理が無限ループに陥っているなどの原因で、第1クリア信号は出力されるものの検証が終了せずシステムが起動しない不具合が発生した場合に、システムリセットを強制的に実行してその不具合を解消できる。 In another modified example, the reset control unit 131 counts the number of times the first clear signal is input from the sub-CPU 122, and if the number of times exceeds a threshold, it is not necessary to clear the counter value of the WDT in response to the input of the first clear signal. With this configuration, if a malfunction occurs in which the first clear signal is output but verification is not completed and the system does not start due to, for example, the processing in the sub-CPU 122 falling into an infinite loop, a system reset can be forcibly executed to resolve the malfunction.

また別の変形例において、リセット制御部131は、WDTがタイムアウトする前に、第1クリア信号の出力をサブCPU122へ要求してもよい。サブCPU122は、自らに異常が発生していない場合には、リセット制御部131からの当該要求に応じて、第1クリア信号をリセット制御部131へ出力し得る。かかる構成によれば、サブCPU122において何らかの原因で第1クリア信号の出力が遅延しているものの、プログラムの検証は成功裏に終了し得る見込みである場合に、システムリセットを回避してシステムの起動を助けることができる。 In yet another variation, the reset control unit 131 may request the sub-CPU 122 to output a first clear signal before the WDT times out. If the sub-CPU 122 itself is not abnormal, it may output the first clear signal to the reset control unit 131 in response to the request from the reset control unit 131. With this configuration, if the output of the first clear signal is delayed in the sub-CPU 122 for some reason but program verification is expected to end successfully, it is possible to avoid a system reset and help start up the system.

なお、上で言及したいずれの信号についても、信号の形式は説明したものとは異なってよい。例えば、各信号の極性又は信号レベル(“Hi”又は“Lo”)は、説明した例とは逆であってもよい。また、リセット制御部131は、電源制御部130に含まれる代わりに、電源制御部130から独立したモジュールとして信号バス110へ接続されてもよい。また、MFP1の構成要素の一部が、システムオンチップ(SoC)へ集積されてもよい。 Note that the signal format of any of the signals mentioned above may be different from that described. For example, the polarity or signal level ("Hi" or "Lo") of each signal may be reversed from that of the described example. Also, instead of being included in the power supply control unit 130, the reset control unit 131 may be connected to the signal bus 110 as a module independent of the power supply control unit 130. Also, some of the components of the MFP1 may be integrated into a system on chip (SoC).

<<5.まとめ>>
ここまで、図1~図10を用いて、本開示の実施形態について詳細に説明した。上述した実施形態では、検証手段により正当であると判定されたプログラムを実行手段が実行する情報処理装置において、実行手段がリセット制御用のタイマ(WDT)へアクセス可能となる前に、検証手段がWDTへアクセスしてカウンタ値をクリアする。WDTは、カウンタ値が所定のタイムアウト閾値に達した場合に、検証手段及び実行手段をリセットする。かかる構成によれば、主たるプロセッサ(実行手段)が動作する前の、補助的なプロセッサ(検証手段)によるプログラムの正当性検証が完了する前にWDTがタイムアウトすることが回避される。それにより、検証が正常に進行している間にシステムリセットがトリガされないため、システムの正常な起動を担保することが可能となる。
<<5. Summary>>
Up to this point, the embodiment of the present disclosure has been described in detail with reference to Figures 1 to 10. In the above-described embodiment, in an information processing device in which an execution means executes a program determined to be valid by a verification means, before the execution means can access a timer (WDT) for reset control, the verification means accesses the WDT and clears the counter value. When the counter value reaches a predetermined timeout threshold, the WDT resets the verification means and the execution means. With this configuration, it is possible to prevent the WDT from timing out before the auxiliary processor (verification means) completes the verification of the validity of the program before the main processor (execution means) operates. As a result, a system reset is not triggered while the verification is proceeding normally, so that it is possible to ensure normal startup of the system.

上述した実施形態では、検証手段は、上記タイムアウト閾値よりも短い出力周期で、WDTのカウンタ値を周期的にクリアし得る。かかる構成によれば、単一のカウンタ値を参照する既存のWDTの構成を大きく変更することなく、システムの起動を阻害しない形で、WDTを有するシステムにセキュアブート技術を組合せることができる。また、検証手段に異常が発生した場合には、その異常をWDTのタイムアウトによって捕捉して、システムリセットを実行することができる。 In the above-described embodiment, the verification means may periodically clear the counter value of the WDT with an output period shorter than the timeout threshold. With this configuration, it is possible to combine secure boot technology with a system having a WDT without significantly changing the configuration of an existing WDT that references a single counter value, and without impeding system startup. Furthermore, if an abnormality occurs in the verification means, the abnormality can be captured by the WDT timeout, and a system reset can be performed.

また、上述した実施形態では、検証手段は、上記プログラムが正当であると判定した場合に、WDTのカウンタ値をクリアするためのクリア信号の周期的な出力を停止し得る。かかる構成によれば、実行手段が動作を開始した後に、検証手段によってWDTのカウンタ値がクリアされないため、主たるプロセッサである実行手段の異常をも適切にWDTによって捕捉することができる。 In addition, in the above-described embodiment, the verification means may stop the periodic output of a clear signal for clearing the counter value of the WDT when it is determined that the program is valid. With this configuration, the counter value of the WDT is not cleared by the verification means after the execution means starts operating, so that even an abnormality in the execution means, which is the main processor, can be properly captured by the WDT.

また、上述した実施形態では、検証手段は、上記プログラムが正当であると判定した場合に、上記プログラムの検証完了をリセット制御手段へ通知し、その通知に応じて、WDTにおける実行手段からのクリア信号の監視が開始され得る。かかる構成によれば、WDTは、検証完了の通知の前には検証手段からのクリア信号のみを、検証完了の通知の後には実行手段からのクリア信号のみを監視すればよいため、WDTの動作の負荷が増大することを回避することができる。 In addition, in the above-described embodiment, when the verification means determines that the program is valid, the verification means notifies the reset control means of the completion of verification of the program, and in response to the notification, monitoring of the clear signal from the execution means in the WDT can be started. With this configuration, the WDT only needs to monitor the clear signal from the verification means before the notification of the completion of verification, and only the clear signal from the execution means after the notification of the completion of verification, thereby making it possible to avoid an increase in the operational load of the WDT.

<<6.その他の実施形態>>
上記実施形態は、1つ以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出して実行する処理の形式でも実現可能である。また、1つ以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
<<6. Other embodiments>>
The above-described embodiment can also be realized in the form of a process in which a program for realizing one or more functions is supplied to a system or device via a network or a storage medium, and one or more processors in a computer of the system or device read and execute the program. Also, the embodiment can be realized by a circuit (e.g., ASIC) for realizing one or more functions.

本発明は上述した実施形態に制限されるものではなく、発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。したがって、発明の範囲を公にするために請求項を添付する。 The present invention is not limited to the above-described embodiments, and various modifications and variations are possible without departing from the spirit and scope of the invention. Therefore, the following claims are appended to disclose the scope of the invention.

1:MFP(情報処理装置)、101:メインCPU(実行手段)、122:サブCPU(検証手段)、131:リセット制御部、133:WDT(タイマ)、137:第2クリア信号、140:第1クリア信号 1: MFP (information processing device), 101: main CPU (execution means), 122: sub CPU (verification means), 131: reset control unit, 133: WDT (timer), 137: second clear signal, 140: first clear signal

Claims (12)

プログラムの正当性を検証する検証手段と、
タイマに基づく所定の期間にわたって外部からのアクセスが無い場合に、システムリセット信号を発行するリセット制御手段と、
前記検証手段により正当であると判定された前記プログラムを実行する実行手段であって、前記プログラムの起動後に前記リセット制御手段へアクセス可能となる当該実行手段と、
を備え、
前記検証手段は、前記実行手段が前記リセット制御手段へアクセス可能となる前に、前記リセット制御手段へ、前記タイマの値をクリアするためのクリア信号を出力する、
情報処理装置。
A verification means for verifying the correctness of the program;
a reset control means for issuing a system reset signal when there is no access from outside for a predetermined period based on a timer ;
an execution means for executing the program determined to be valid by the verification means, the execution means being able to access the reset control means after the program is started;
Equipped with
the verification means outputs a clear signal to the reset control means for clearing the value of the timer before the execution means becomes accessible to the reset control means.
Information processing device.
請求項1に記載の情報処理装置であって、前記検証手段は、前記所定の期間よりも短い出力周期で、前記クリア信号を周期的に前記リセット制御手段へ出力して、前記リセット制御手段に前記タイマの値をクリアさせる、情報処理装置。 2. An information processing device according to claim 1, wherein the verification means periodically outputs the clear signal to the reset control means at an output cycle shorter than the predetermined period, causing the reset control means to clear the value of the timer. 請求項2に記載の情報処理装置であって、前記検証手段は、前記プログラムが正当であると判定した場合に、前記クリア信号の周期的な出力を停止する、情報処理装置。 3. The information processing apparatus according to claim 2, wherein said verification means stops the periodic output of said clear signal when said program is determined to be valid. 請求項2又は3に記載の情報処理装置であって、
前記検証手段は、前記プログラムが正当であると判定した場合に、前記プログラムの検証完了を前記リセット制御手段へ通知し、
前記リセット制御手段は、前記検証手段からの前記検証完了の前記通知に応じて、前記検証手段からの前記クリア信号と異なるクリア信号であって前記実行手段から出力されるクリア信号の監視を開始する、
情報処理装置。
4. The information processing device according to claim 2,
when the verification means determines that the program is valid, the verification means notifies the reset control means of completion of the verification of the program;
the reset control means, in response to the notification of the completion of the verification from the verification means, starts monitoring a clear signal output from the execution means which is different from the clear signal from the verification means .
Information processing device.
請求項4に記載の情報処理装置であって、前記実行手段は、動作中に、前記所定の期間よりも短い出力周期で前記リセット制御手段へ前記異なるクリア信号を出力して、前記リセット制御手段に前記タイマの値をクリアさせる、情報処理装置。 5. An information processing device according to claim 4, wherein the execution means, during operation, outputs the different clear signal to the reset control means at an output period shorter than the predetermined period, causing the reset control means to clear the value of the timer. 請求項2乃至5のいずれか1項に記載の情報処理装置であって、前記リセット制御手段は、前記検証手段からの前記クリア信号の入力回数を計数し、前記入力回数が閾値を上回る場合には前記クリア信号の入力に応じて前記タイマの値をクリアしない、情報処理装置。 6. An information processing device according to claim 2, wherein the reset control means counts the number of times the clear signal is input from the verification means, and if the number of times the input exceeds a threshold value, the reset control means does not clear the value of the timer in response to the input of the clear signal. 請求項2又は3に記載の情報処理装置であって、前記リセット制御手段は、前記クリア信号の出力を前記検証手段へ要求し、前記要求に応じて前記検証手段から前記クリア信号が入力されない場合に、前記システムリセット信号を発行する、情報処理装置。 4. An information processing device according to claim 2 or 3, wherein the reset control means requests the verification means to output the clear signal, and issues the system reset signal when the clear signal is not input from the verification means in response to the request. 請求項1乃至7のいずれか1項に記載の情報処理装置であって、
前記検証手段は、前記プログラムが正当ではないと判定した場合に、前記プログラムの復旧用バージョンを用いて前記プログラムを復旧し、
前記検証手段は、前記プログラムを復旧している間に、前記リセット制御手段へ前記クリア信号を出力する、
情報処理装置。
8. An information processing apparatus according to claim 1,
When the verification means determines that the program is not authentic, the verification means recovers the program using a recovery version of the program;
the verification means outputs the clear signal to the reset control means while the program is being restored.
Information processing device.
請求項1に記載の情報処理装置であって、前記リセット制御手段は、前記クリア信号の入力に応じて、前記タイマの値をクリアし且つ前記タイマに基づく計時を停止する、情報処理装置。 2. The information processing apparatus according to claim 1 , wherein the reset control means clears the value of the timer and stops the time measurement based on the timer in response to the input of the clear signal. 請求項9に記載の情報処理装置であって、
前記検証手段は、前記プログラムが正当であると判定した場合に、前記プログラムの検証完了を前記リセット制御手段へ通知し、
前記リセット制御手段は、前記検証手段からの前記検証完了の前記通知に応じて、前記計時を再開する、
情報処理装置。
The information processing device according to claim 9,
when the verification means determines that the program is valid, the verification means notifies the reset control means of completion of the verification of the program;
the reset control means restarts the timekeeping in response to the notification of the completion of the verification from the verification means.
Information processing device.
請求項1乃至10のいずれか1項に記載の情報処理装置であって、前記プログラムは、前記情報処理装置のBIOS(Basic Input/Output System)プログラムを含む、情報処理装置。 An information processing device according to any one of claims 1 to 10, wherein the program includes a BIOS (Basic Input/Output System) program of the information processing device. プログラムの正当性を検証する検証手段と、
タイマに基づく所定の期間にわたって外部からのアクセスが無い場合に、システムリセット信号を発行するリセット制御手段と、
前記検証手段により正当であると判定された前記プログラムを実行する実行手段であって、前記プログラムの起動後に前記リセット制御手段へアクセス可能となる当該実行手段と、
を備える情報処理装置において行われるリセット制御方法であって、
前記実行手段が前記リセット制御手段へアクセス可能となる前に、前記検証手段が前記リセット制御手段へ、前記タイマの値をクリアするためのクリア信号を出力すること、
を含むリセット制御方法。
A verification means for verifying the correctness of the program;
a reset control means for issuing a system reset signal when there is no access from outside for a predetermined period based on a timer ;
an execution means for executing the program determined to be valid by the verification means, the execution means being able to access the reset control means after the program is started;
A reset control method performed in an information processing device comprising:
said verifying means outputting a clear signal to said reset control means for clearing the value of said timer before said executing means becomes accessible to said reset control means;
A reset control method comprising:
JP2019221449A 2019-09-20 2019-12-06 Information processing device and reset control method Active JP7522547B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/021,451 US11657125B2 (en) 2019-09-20 2020-09-15 Information processing apparatus and reset control method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019171853 2019-09-20
JP2019171853 2019-09-20

Publications (2)

Publication Number Publication Date
JP2021051713A JP2021051713A (en) 2021-04-01
JP7522547B2 true JP7522547B2 (en) 2024-07-25

Family

ID=75158287

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019221449A Active JP7522547B2 (en) 2019-09-20 2019-12-06 Information processing device and reset control method

Country Status (1)

Country Link
JP (1) JP7522547B2 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008525892A (en) 2004-12-23 2008-07-17 マイクロソフト コーポレーション Method and system for locking the TPM always "on" using a monitor
JP2010511934A (en) 2006-12-04 2010-04-15 サンディスク コーポレイション Portable module interface that prevents time-out by dummy block
JP2012230637A (en) 2011-04-27 2012-11-22 Denso Corp Program group
JP2013143093A (en) 2012-01-12 2013-07-22 Toyota Motor Corp Information processing apparatus and information processing system
JP2018045392A (en) 2016-09-13 2018-03-22 株式会社東芝 Network monitoring device, network system and program
US20180157840A1 (en) 2016-12-07 2018-06-07 Google Inc. Rollback resistant security

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008525892A (en) 2004-12-23 2008-07-17 マイクロソフト コーポレーション Method and system for locking the TPM always "on" using a monitor
JP2010511934A (en) 2006-12-04 2010-04-15 サンディスク コーポレイション Portable module interface that prevents time-out by dummy block
JP2012230637A (en) 2011-04-27 2012-11-22 Denso Corp Program group
JP2013143093A (en) 2012-01-12 2013-07-22 Toyota Motor Corp Information processing apparatus and information processing system
JP2018045392A (en) 2016-09-13 2018-03-22 株式会社東芝 Network monitoring device, network system and program
US20180157840A1 (en) 2016-12-07 2018-06-07 Google Inc. Rollback resistant security

Also Published As

Publication number Publication date
JP2021051713A (en) 2021-04-01

Similar Documents

Publication Publication Date Title
US11657125B2 (en) Information processing apparatus and reset control method
RU2517542C2 (en) Image processing apparatus and method of controlling image processing apparatus
JP2007068156A (en) Image processing apparatus and its control method
JP2014021953A (en) Information processor, image processor, start-up control method and start-up control program
KR102481686B1 (en) Image processing apparatus, method of controlling the same, and storage medium
JP7170482B2 (en) Information processing device, its control method, and program
JP6574558B2 (en) Information processing apparatus, information processing apparatus control method, and program
JP2021002081A (en) Information processing apparatus, control method thereof and program
JP2020160747A (en) Information processing device, control method therefor, and program
JP2021117928A (en) Information processing device and starting method therefor
JP7522547B2 (en) Information processing device and reset control method
JP7321795B2 (en) Information processing device, information processing method and program
JP2020057040A (en) Information processing device, control method therefor, and program
JP2017162177A (en) Electronic apparatus, restoration method, and program
JP5967945B2 (en) Information processing apparatus, information processing apparatus control method, and program
JP2021089607A (en) Information processing apparatus
JP5104137B2 (en) Data management apparatus and program
KR102467636B1 (en) Information processing apparatus, method of controlling information processing apparatus, and storage medium
JP7229672B2 (en) IMAGE FORMING APPARATUS AND CONTROL METHOD FOR IMAGE FORMING APPARATUS
JP2023167086A (en) Information processing apparatus and control method of information processing apparatus
JP2020086516A (en) Information processing device, control method of information processing device, and program
JP2021111916A (en) Information processing device and program restoration method
JP7322233B2 (en) Information processing device and tampering detection method for detecting tampering of software executed at startup
JP2023160058A (en) Image forming apparatus, method for controlling image forming apparatus, and program
US20230101600A1 (en) Information processing apparatus and control method for information processing apparatus

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240614

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240712

R150 Certificate of patent or registration of utility model

Ref document number: 7522547

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150