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

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

Info

Publication number
JP7401215B2
JP7401215B2 JP2019133752A JP2019133752A JP7401215B2 JP 7401215 B2 JP7401215 B2 JP 7401215B2 JP 2019133752 A JP2019133752 A JP 2019133752A JP 2019133752 A JP2019133752 A JP 2019133752A JP 7401215 B2 JP7401215 B2 JP 7401215B2
Authority
JP
Japan
Prior art keywords
area
information processing
semiconductor memory
program
processing device
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
JP2019133752A
Other languages
English (en)
Other versions
JP2021018595A (ja
JP2021018595A5 (ja
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 JP2019133752A priority Critical patent/JP7401215B2/ja
Priority to US16/924,271 priority patent/US11599303B2/en
Publication of JP2021018595A publication Critical patent/JP2021018595A/ja
Publication of JP2021018595A5 publication Critical patent/JP2021018595A5/ja
Application granted granted Critical
Publication of JP7401215B2 publication Critical patent/JP7401215B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Description

本発明は、情報処理装置に関する。
近年、情報処理装置では、そのメモリとして、たとえばSSD(ソリッドステートドライブ)、eMMCといった、フラッシュメモリを用いる不揮発性半導体メモリ装置を使用することが増えている。不揮発性半導体メモリ装置は、アクセス速度、静音性などの点においてHDD(ハードディスクドライブ)などの他のメモリより優れている。その一方で、不揮発性半導体メモリ装置に用いる不揮発性半導体メモリには、書き換え回数に制限がある。また、不揮発性半導体メモリの書き込み済みの領域に新たなデータを書込むためには、書込処理とは別に、領域を書き込み可能にするための消去処理を実行する必要がある。書き換え回数の制限については、たとえば不揮発性半導体メモリ装置にキャッシュメモリを設け、不揮発性半導体メモリへの書き込みをキャッシュメモリからの書き込みとすることにより、外部装置から不揮発性半導体メモリ装置への書き込みの度に不揮発性半導体メモリへの書き込みが生じないようにしたり、不揮発性半導体メモリ装置のメモリコントローラにおいてウェアレベリングと呼ばれる分散書き込みを実行して、たとえばブロックといった単位の領域で書き込み回数の平均化を図ったり、することにより改善できる。書き込み済みのデータの消去処理については、不揮発性半導体メモリ装置のメモリコントローラが、不揮発性半導体メモリへの新たなデータの書き込みの度に、処理対象の領域の不要になったデータを消去するトリム処理を実行したり、情報処理装置のコントローラが、消去処理を指示するトリムコマンドを、不揮発性半導体メモリ装置のメモリコントローラに指示したり、することにより改善できる。
特許第6289128号公報
しかしながら、このような対策を講じ得たとしても、不揮発性半導体メモリ装置においてメモリコントローラは、トリムコマンドなどの消去コマンドに基づいて、不揮発性半導体メモリの使用済みの領域についてのデータの消去処理を実行する必要がある。そして、その消去処理の実行中には、不揮発性半導体メモリへアクセスすることができない。このため、情報処理装置の処理は、不揮発性半導体メモリにアクセスできないことに起因して遅延したり、動作速度が低下したりする。このため、特許文献1では、メモリコントローラが、情報処理装置についてのジョブ実行などの使用状況に基づいてジョブの中断状況であると判断できる場合にトリム処理を実行し、ジョブの中断状況でなくなるとトリム処理を中断する。しかしながら、情報処理装置がその処理に不揮発性半導体メモリへのアクセスを必要とする場合は、ジョブを実行する場合に限られるものではない。たとえばユーザが情報処理装置に対して操作をする場合においても、情報処理装置は、その処理のために不揮発性半導体メモリにアクセスすることがある。そして、ジョブの中断状態においてユーザが情報処理装置に対して操作をすると、メモリコントローラがトリム処理の中断を終えるまで、情報処理装置は、その処理のために不揮発性半導体メモリにアクセスすることができない。この場合においても、ユーザは、不揮発性半導体メモリ装置にアクセスできないことに起因する遅延を体感したり、動作速度の低下を体感したり、することになる。
このように情報処理装置では、不揮発性半導体メモリへのアクセスを改善することが求められている。
本発明に係る情報処理装置は、複数の領域を有する不揮発性半導体メモリと、ユーザ操作を受け付けることができるユーザインタフェースと、一連の命令を格納するメモリデバイスと、前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する制御部と、を有する情報処理装置であって、前記制御部は、前記一の領域のマウント設定を取得し、取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断し、前記制御部は、前記メモリデバイスに格納された命令を実行することによって、前記情報処理装置についての再起動や前記不揮発性半導体メモリへのアップデート処理に使用するプログラムの実行に応じて、前記不揮発性半導体メモリにトリムコマンドを出力するか否かを判断し、前記不揮発性半導体メモリは、前記情報処理装置の通常起動において実行されるプログラムを記録する第一領域と、前記第一領域をアップデートする際に実行されるプログラムのみを記録する第二領域と、を有し、前記制御部は、前記メモリデバイスに格納された命令を実行することによって、前記情報処理装置を通常起動の状態からアップデートのための起動状態へ再起動し、アップデートのための再起動状態において、前記第一領域のプログラムをアップデートし、前記第一領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する。
本発明では、不揮発性半導体メモリへのアクセスを改善することができる。
本発明の実施形態に係る情報処理装置の構成図である。 図1のeMMCの構成図である。 図2のeMMCによるシステム領域の一例の説明図である。 フラッシュメモリの領域のマウント状態の説明図である。 図1の情報処理装置のファームウェアプログラムのモジュール構成の説明図である。 図1の情報処理装置についての、トリム処理を含むシャットダウン処理のフローチャートである。 図1の情報処理装置についての、トリム処理を含むファームウェアプログラムのアップデート処理のフローチャートである。
以下、本発明の実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は実施形態に記載されている構成によって限定されることはない。
図1は、本発明の実施形態に係る情報処理装置100の構成図である。図1の情報処理装置100は、操作部110、プリンタエンジン120、スキャナエンジン130、および、これらが接続される制御部140、電源ユニット160、を有する。図1の情報処理装置100は、プリントジョブ、スキャンジョブおよびコピージョブを実行可能なMFP(Multi Function Peripheral)である。なお、情報処理装置100は、MFPといった画像形成装置に限られない。
電源ユニット160は、商用電力を変換し、情報処理装置100の各部へ供給する。電源ユニット160では、不図示の電源ユニット160の電源コントローラが、不図示のROMに記録される電源ファームウェアプログラムを実行し、各部への電力供給を制御する。操作部110は、たとえばテンキーデバイス、タッチパネルデバイス、液晶デバイス、を有する。操作部110では、不図示の操作部110の操作コントローラが、不図示のROMに記録される操作ファームウェアプログラムを実行し、操作部110の各部の動作を制御する。これにより、操作部110は、情報処理装置100の処理のためにユーザ操作可能なユーザインタフェースとして機能する。プリンタエンジン120では、不図示のプリンタエンジンコントローラが、不図示のROMに記録されるプリンタファームウェアプログラム121を実行し、用紙などの印刷媒体へ画像データを印刷する。スキャナエンジン130では、不図示のスキャナエンジンコントローラが、不図示のROMに記録されるスキャンファームウェアプログラム131を実行し、原稿を読み取って画像データを生成する。制御部140は、情報処理装置100の全体的な動作を制御する。制御部140は、CPU141、ROM142、Chipset143、RAM144、SRAM145、HDD146、eMMC147、Embedded Controller148、および、これらを接続するシステムバス149、を有する。システムバス149には、この他にも、LED150、ネットワークI/Fカード(NIC)151、操作I/F152、プリンタI/F153、スキャナI/F154、が接続される。操作I/F152は、操作部110に接続され、操作部110との間でデータを入手力する。スキャナI/F154は、スキャナエンジン130に接続され、スキャナエンジン130との間でデータを入手力する。プリンタI/F153は、プリンタエンジン120に接続され、プリンタエンジン120との間でデータを入手力する。LED150は、情報処理装置100の状態を表示する。情報処理装置100の状態には、たとえば情報処理装置100のソフトウェアの異常状態、ハードウェアの異常状態がある。LED150は、たとえば操作I/F152と並べて設けられる。ネットワークI/Fカード151は、たとえばLAN170に接続される。LAN170には、この他にもたとえば外部サーバ180、パーソナルコンピュータ(PC)190、が接続される。外部サーバ180は、LAN170に接続されるインターネットに設けられてもよい。この場合、ネットワークは、LAN170およびインターネットにより構成される。ネットワークI/Fカード151は、LAN170上のたとえば外部サーバ180といった外部装置との間でデータを送受する。送受するデータには、たとえばプリントジョブのデータ、情報処理装置100で使用するアップデートプログラムのデータ、設定データ、がある。ネットワークI/Fカード151は、情報処理装置100の通信部として機能する。Chipset143は、関連のある複数の集積回路の集合体である。Chipset143には、たとえばリアルタイムクロック(RealTimeClock)155を有する。リアルタイムクロック155は、時間や時刻を計測する専用の集積回路である。リアルタイムクロック155は、情報処理装置100が休止しているスリープ状態においても不図示の内蔵電池から電源供給を受けて動作する。リアルタイムクロック155は、たとえば所定のタイミングにおいて情報処理装置100を起動する信号を出力する。ただし、情報処理装置100が停止しているシャットダウン状態では、リアルタイムクロック155は、停止する。この場合、情報処理装置100の電源ユニット160の不図示のスイッチを操作することにより、情報処理装置100は起動できる。Embedded Controller148は、情報処理装置100のために開発された集積回路である。Embedded Controller148は、サブCPU156、サブRAM157、を有する。サブRAM157は、ランダムアクセスメモリで、CPU141が情報処理装置100を制御する際に、プログラムや一時的なデータの格納などに使用される。サブCPU156は、Embedded Controller148のソフトウェアプログラムを実行し、情報処理装置100の中で一部の制御を行う。
SRAM145は、情報処理装置100の設定値、画像調整値などを記録する。SRAM145は、不揮発メモリであり、電源を遮断しても再投入までデータを保持する。HDD146は、大容量の記録デバイスである。HDD146は、たとえば、画像データ、ユーザデータ、ファームウェアのアップデートプログラム、などを記録する。HDD146は、たとえばファームウェアプログラムを記録してよい。eMMC147は、フラッシュメモリ205を有する不揮発性半導体メモリ装置である。フラッシュメモリ205は、不揮発半導体メモリである。eMMC147は、ファームウェアプログラム、ワーク領域304、ユーザデータ領域、などをフラッシュメモリ205に記録する。この他にもたとえば、eMMC147は、情報処理装置100にHDD146が設けられない場合などにおいて、HDD146に記録する画像データ、ユーザデータ、をフラッシュメモリ205に記録してよい。ROM142は、リードオンリーメモリである。ROM142は、たとえば情報処理装置100のBIOS、固定設定値を記録する。RAM144は、CPU141のメインメモリである。RAM144は、ワーク領域304などの一時記録領域として用いられてよい。CPU141は、eMMC147などに記録されているファームウェアプログラムを読み出してRAM144に展開する。これにより、CPU141は、ファームウェアプログラムを実行して、情報処理装置100の全体の動作を制御する。制御部140としてのCPU141は、たとえば、ユーザインタフェースとしての操作部110におけるユーザ操作に基づいて、読取処理、印刷処理といった処理を実行する。これにより、情報処理装置100は、画像形成装置として、プリントジョブ、スキャンジョブまたはコピージョブを実行できる。
図2は、図1のeMMC147の構成図である。図2のeMMC147は、SATAI/F201、メモリコントローラ203、キャッシュメモリ204、フラッシュメモリ205、およびこれらが接続されるバスコントローラ202、を有する。図2には、情報処理装置100のSATAI/F210も図示されている。フラッシュメモリ205は、たとえばNAND型のフラッシュメモリである。フラッシュメモリ205は、たとえばブロックといった単位での領域ごとに、データを削除することができる。また、フラッシュメモリ205は、データが書き込まれている領域には、その領域からデータを削除した後でないと、新たなデータを書き込むことができない。キャッシュメモリ204は、フラッシュメモリ205から読み出されたデータ、フラッシュメモリ205に書き込むデータの一時格納メモリである。SATAI/F201は、システムバス149により他のSATAI/F201と接続されるインタフェースである。バスコントローラ202は、SATAI/F201とキャッシュメモリ204との間でのデータ入出力と、キャッシュメモリ204とフラッシュメモリ205との間でのデータ入出力とを、排他的に制御する。メモリコントローラ203は、eMMC147を管理して動作を制御する。メモリコントローラ203は、たとえばSATAI/F201を通じたSATA規格に基づくeMMC147へのデータ入出力を制御する。メモリコントローラ203は、キャッシュメモリ204とフラッシュメモリ205との間でのデータ入出力を制御する。
図3は、図2のeMMC147によるシステム領域300の一例の説明図である。図3は、後述するように情報処理装置100が通常起動された場合でのeMMC147によるシステム領域300である。システム領域300とは、CPU141が管理してアクセス可能な記憶領域である。eMMC147によるシステム領域300には、複数のパーティションとして、stdファーム格納領域301、safeファーム格納領域302、情報処理装置100のユーザ数分の複数のユーザデータ格納領域303および複数のワーク領域304、を有する。HDD146が搭載されない情報処理装置100においては、eMMC147によるシステム領域300には、さらに後述する、ファームウェアのアップデートプログラムのダウンロード領域571、アップデートプログラムを展開するための一時展開領域572、をマウントしてよい。eMMC147では、図3のシステム領域300の各パーティションに、フラッシュメモリ205の物理的な記憶領域を割り当てる。stdファーム格納領域301は、情報処理装置100を通常起動する場合においてCPU141により実行されるファームウェアプログラムを記録する。safeファーム格納領域302は、情報処理装置100をアップデートのための起動する場合においてCPU141により実行されるファームウェアプログラムを記録する。ユーザデータ格納領域303は、ユーザ毎のデータを記録する。ワーク領域304は、ジョブ実行の際にユーザ毎のデータを記録する。このように図3のシステム領域300のstdファーム格納領域301とsafeファーム格納領域302とには、情報処理装置100のCPU141が実行可能なファームウェアプログラム、が記録される。
図4は、フラッシュメモリ205の領域のマウント状態の説明図である。図4のフラッシュメモリ205の各領域は、図3のシステム領域300に対応する。情報処理装置100の起動状態には、図4に示すように、通常起動モード401と、アップデートのための起動モード402と、がある。通常起動モード401で起動する場合、eMMC147のメモリコントローラ203およびCPU141は、通常起動において実行するプログラムを記録するstdファーム格納領域301を、読み込み専用モードに設定する。それ以外のsafeファーム格納領域302、複数のユーザデータ格納領域303および複数のワーク領域304を、読み書き可能に設定する。アップデートのための起動モード402で起動する場合、メモリコントローラ203およびCPU141は、アップデートのための起動において実行するプログラムを記録するsafeファーム格納領域302を、読み込み専用モードに設定する。また、アップデートするstdファーム格納領域301を、読み書き可能に設定する。複数のユーザデータ格納領域303および複数のワーク領域304は、アップデートの際にはアクセスしない領域であるため、マウントしない。このように、たとえばeMMC147のメモリコントローラ203は、情報処理装置100の起動時に、起動状態に応じて、フラッシュメモリ205の各領域を、図4の起動モードの設定に応じた状態でシステム領域300にマウントする。マウント後には、CPU141は、それぞれのマウント状態に基づいてフラッシュメモリ205の各領域にアクセスできる。
図5は、図1の情報処理装置100のファームウェアプログラムのモジュール構成の説明図である。図5には、情報処理装置100で実行されるプログラムとして、ブートプログラム510、BIOSプログラム520、ローダープログラム530、ファームウェアプログラム540、が図示されている。ブートプログラム510は、Embedded Controller148の不図示のメモリに記録される。情報処理装置100の電源ユニット160において不図示のシーソースイッチがオン操作されると、電源ユニット160からEmbedded Controller148へ電力が供給される。Embedded Controller148が起動すると、サブCPU156は、ブートプログラム510を実行する。サブCPU156は、情報処理装置100において起動に関わる処理を実行する。BIOSプログラム520は、たとえばSRAM145に記録される。サブCPU156がブートプログラム510を実行すると、CPU141は、BIOSプログラム520をRAM144に読み込んで実行する。CPU141は、情報処理装置100において起動に関わる処理を実行する。ローダープログラム530は、たとえばSRAM145に記録される。CPU141は、BIOSプログラム520を実行した後、ローダープログラム530をRAM144に読み込んで実行する。CPU141は、情報処理装置100において起動に関わる処理を実行する。
ファームウェアプログラム540は、基本的に通常起動モード401において実行されるために、eMMC147のフラッシュメモリ205のstdファーム格納領域301に記録される。CPU141は、ローダープログラム530を実行した後、ファームウェアプログラム540をRAM144に読み込んで実行する。CPU141は、情報処理装置100において起動に関わる処理を実行する。stdファーム格納領域301に記録されるファームウェアプログラム540は、情報処理装置100の各機能に対応する複数のプログラムで構成される。stdファーム格納領域301に記録されるファームウェアプログラム540には、たとえば情報処理装置100の起動プログラム、操作I/F152、スキャナI/F154またはプリンタI/F153を制御するプログラム、複数のアプリケーションプログラム541、が含まれる。
CPU141は、ファームウェアプログラム540を実行する場合、最初に起動プログラムをRAM144に読み込んで実行する。起動プログラムを実行するCPU141は、通常起動中に使用するeMMC147やHDD146の各領域をマウントする起動処理を実行する。また、起動プログラムを実行するCPU141は、その他のプログラムであるアプリケーションプログラム541を、ファームウェアプログラム540から読み込んで実行する。アプリケーションプログラム541には、シャットダウン実行プログラム542が含まれる。一連の実行が完了すると、情報処理装置100は、ファームウェアプログラム540により制御された状態に起動される。情報処理装置100は、たとえば操作部110のユーザ操作に基づいて、プリントジョブなどを実行することができる。また、情報処理装置100には、図5の通信管理部550、UI制御部560が実現される。通信管理部550は、ネットワークI/Fカード151を用いて、外部サーバ180などとデータを送受する。UI制御部560は、操作I/F152を介して操作部110を制御して、操作部110へ操作画面を表示させたり、操作部110に対するユーザ操作を取得したりする。起動状態にある情報処理装置100において電源ユニット160のシーソースイッチがオフ操作されると、CPU141は、シャットダウン実行プログラム542を実行して、シャットダウン処理を開始する。CPU141は、たとえば各アプリケーションプログラム541に終了通知を行う。CPU141は、各アプリケーションプログラム541の終了を確認すると、電源ユニット160に電源をOFFする要求を出力する。電源ユニット160は、情報処理装置100の各部への給電を終了する。これにより、情報処理装置100は、停止しているシャットダウン状態となる。
また、図5に示すように、eMMC147のフラッシュメモリ205のstdファーム格納領域301には、ファームウェアプログラム540の一部として、ファームウェアのダウンロード実行プログラム543、バックグラウンドアップデート実行プログラム544、fstrim実行プログラム545、safeファーム格納領域302のアップデート実行プログラム546、が記録される。CPU141は、情報処理装置100が通常起動した状態において、stdファーム格納領域301に実行可能に記録されているファームウェアのダウンロード実行プログラム543を繰り返し実行する。これにより、CPU141は、外部サーバ180などから、情報処理装置100のファームウェアのアップデートプログラムを取得する。CPU141は、取得したアップデートプログラムを、HDD146のダウンロード領域571に記録する。アップデートプログラムをHDD146のダウンロード領域571に記録すると、CPU141は、バックグラウンドアップデート実行プログラム544を実行する。CPU141は、ダウンロード領域571のアップデートプログラムを、HDD146の一時展開領域572に展開する。HDD146の一時展開領域572には、アップデートされたファームウェアプログラム540が記録される。HDD146の一時展開領域572に展開されているファームウェアプログラムには、プリンタファームウェアプログラム121やスキャンファームウェアプログラム131についてのアップデートプログラムが含まれてよい。情報処理装置100に不図示のフィニッシャ装置などの他の処理装置が連結されている場合、HDD146の一時展開領域572に展開されているファームウェアプログラムには、他の処理装置のファームウェアプログラム540についてのアップデートプログラムが含まれてよい。CPU141は、情報処理装置100が通常起動した状態において、stdファーム格納領域301に実行可能に記録されているsafeファーム格納領域302のアップデート実行プログラム546を実行する。CPU141は、HDD146の一時展開領域572に展開されているアップデートプログラムをeMMC147へ出力し、eMMC147にsafeファーム格納領域302への格納を指示する。eMMC147のメモリコントローラ203は、フラッシュメモリ205のsafeファーム格納領域302を、アップデートプログラムにより更新する。safeファーム格納領域302には、アップデートされたファームウェアプログラム540が記録される。
CPU141は、情報処理装置100が通常起動した状態において、アプリケーションプログラム541による任意のタイミングにおいて、stdファーム格納領域301のfstrim実行プログラム545を適宜実行してよい。CPU141は、制御部140として、フラッシュメモリ205の記憶領域のトリム処理を指示するトリムコマンドとしてfstrimコマンドを生成し、eMMC147へ出力する。eMMC147のフラッシュメモリ205は、書込済みの領域に新たなデータを書込むためには、書込処理とは別に、領域ごとの消去処理を実行する必要がある。eMMC147のメモリコントローラ203は、fstrimコマンドに基づいて、フラッシュメモリ205の領域についてのトリム処理を実行する。これにより、フラッシュメモリ205からは、情報処理装置100において不要となったデータなどが、それを格納している領域から削除される。データが削除された領域は、新たなデータを書込むことができる状態になる。その後、eMMC147のメモリコントローラ203は、データを削除した領域を除いて、ウェアレベリング処理を実行することが可能になる。これにより、eMMC147のパフォーマンスの低下を抑制できる。
なお、CPU141は、fstrimコマンドの替わりに、eMMC147のパーティションをマウントする際に、”discard”と呼ばれるマウントオプションを指定して登録することもできる。この場合、eMMC147のメモリコントローラ203は、フラッシュメモリ205の”discard”とのマウントオプションが設定されている領域にデータを書き込む場合、データを書き込んだ領域について、トリム処理を実行する。これにより、”discard”とのマウントオプションが設定されている領域は、常に新たなデータを書き込むことができる状態に維持される。この場合、CPU141は、領域に対するトリム処理を実行させるために、アプリケーションプログラム541などの実行中においてfstrimコマンドを生成する必要がない。また、オペレーティングシステムによっては、fstrimコマンドに対応していないこともある。しかしながら、”discard”と呼ばれるマウントオプションを指定すると、領域へデータを書込むたびにトリム処理が逐次的に実行される。トリム処理を実行している間、CPU141は、eMMC147のフラッシュメモリ205にアクセスすることができない。その結果、一回の書き込み処理に実質的に必要となる時間が長くなる。
また、図5においてeMMC147のフラッシュメモリ205のsafeファーム格納領域302には、fstrim実行プログラム547、stdファーム格納領域301のアップデート実行プログラム548、が記録される。CPU141が実行するファームウェアプログラム540は、フラッシュメモリ205のstdファーム格納領域301とsafeファーム格納領域302とにパーティションで分けて記録される。そして、stdファーム格納領域301とsafeファーム格納領域302とは、図4の起動モードに応じた設定でマウントされる。CPU141は、通常起動ではstdファーム格納領域301のファームウェアプログラムのみを実行する。CPU141は、アップデートのための起動ではsafeファーム格納領域302のファームウェアプログラムのみを実行する。たとえば、CPU141は、情報処理装置100が通常起動した状態において、stdファーム格納領域301に記録されているsafeファーム格納領域302のアップデート実行プログラム546を実行する。これにより、CPU141は、safeファーム格納領域302のファームウェアプログラムをアップデートする。また、CPU141は、情報処理装置100が通常起動した状態において、stdファーム格納領域301に記録されているfstrim実行プログラム545を実行する。これにより、CPU141は、safeファーム格納領域302についてのfstrimコマンドを生成する。また、CPU141は、情報処理装置100がアップデートのために起動した状態において、safeファーム格納領域302に記録されているstdファーム格納領域301のアップデート実行プログラム548を実行する。これにより、CPU141は、stdファーム格納領域301のファームウェアプログラムをアップデートする。また、CPU141は、情報処理装置100がアップデートのために起動した状態において、safeファーム格納領域302に記録されているfstrim実行プログラム547を実行する。これにより、CPU141は、stdファーム格納領域301についてのfstrimコマンドを生成する。
図6は、図1の情報処理装置100についての、トリム処理を含むシャットダウン処理のフローチャートである。通常起動されている情報処理装置100のCPU141は、通常起動している情報処理装置100を終了する際にeMMC147のstdファーム格納領域301に格納されているシャットダウン実行プログラム542を実行し、図6のシャットダウン処理を実行する。ステップS601において、CPU141は、電源ユニット160のシーソースイッチのOFFによるシャットダウン指示、パーソナルコンピュータ190または外部サーバ180からのネットワーク経由でのシャットダウン指示、操作部110からのシャットダウン指示を取得する。これにより、CPU141は、eMMC147のstdファーム格納領域301に含まれるシャットダウン実行プログラム542によるシャットダウン処理を開始する。ステップS602において、CPU141は、シャットダウン中を示す画面を操作部110に表示する。CPU141は、シャットダウン中の画面表示を操作部110へ指示する。操作部110は、シャットダウン用画面を表示する。また、操作部110は、ユーザの操作を受け付けない状態になる。情報処理装置100は、情報処理装置100の処理のためにユーザ操作可能なユーザインタフェースに対するユーザ操作を受け付けない状態となる。ステップS603において、CPU141は、stdファーム格納領域301の複数のアプリケーションプログラム541について、シャットダウン処理を実行する。CPU141は、各アプリケーションプログラム541に対して終了を指示する。これにより、CPU141は、各アプリケーションプログラム541の終了処理を開始する。CPU141は、各アプリケーションプログラム541についての実行中のジョブをキャンセルし、使用していたリソースのデータを保存し、リソースを解放する。CPU141は、アプリケーションプログラム541についての終了処理を終えると、終了をシャットダウン実行プログラム542に通知する。このステップS601からステップS603の処理により、CPU141は、ユーザ操作を受け付けない状態となり、かつ、新規の印刷ジョブ、スキャンジョブ、FAXジョブ等のジョブも受け付けない状態となる。ステップS604において、CPU141は、各アプリケーションの終了の通知を待ちながら、eMMC147についてマウントしている各領域のマウント設定を確認する。ステップS605において、CPU141は、eMMC147の各領域について、書込可(RW)でマウントされているか否かを判断する。これにより、制御部140としてのCPU141は、フラッシュメモリ205に領域ごとの消去処理を指示するトリムコマンドを生成するために、フラッシュメモリ205の領域ごとの設定が書込可能であるか否かを判断する。判断に係る領域が書込可(RW)でマウントされている場合、CPU141は、処理をステップS606へ進める。判断に係る領域が書込可(RW)でマウントされていない場合、CPU141は、処理をステップS607へ進める。ステップS606において、CPU141は、書込可(RW)でマウントされている領域についての、fstrim処理を指示する。CPU141は、書込可能と判断した領域について領域ごとの消去処理を指示するfstrimコマンドを生成し、eMMC147のメモリコントローラ203へ出力する。eMMC147のメモリコントローラ203は、フラッシュメモリ205についての指示された領域について、使用済みの不要な書込データを削除するトリム処理を実行する。トリム処理において、メモリコントローラ203は、たとえば、処理対象の領域から不要なデータを消去する。これにより、CPU141は、書込済みの領域に新たなデータを書込むためには書込処理とは別に領域ごとの消去処理を実行する必要があるフラッシュメモリ205についてのトリム処理を実行する。フラッシュメモリ205についての、書込可(RW)でマウントされている領域は、使用済みのデータを記録している場合トリム処理により使用済みの不要なデータが削除され、新たなデータを書込むことができる状態となる。ステップS607において、CPU141は、フラッシュメモリ205についてのマウントされているすべての領域についての設定確認が完了したか否かを判断する。マウントされているすべての領域についての設定確認が完了していない場合、CPU141は、処理をステップS604へ戻す。CPU141は、フラッシュメモリ205についてのマウントされているすべての領域についての設定確認が完了するまで、領域ごとにマウント設定を確認して必要に応じてfstrimコマンドを生成する。すべての領域についての設定確認が完了すると、CPU141は、処理をステップS608へ進める。これにより、フラッシュメモリ205についての書込可(RW)でマウントされている領域は、すべて、使用済みのデータが削除されて、新たなデータを書込むことができる状態になる。図4の通常起動の場合、複数のすべてのユーザデータ領域、複数のすべてのワーク領域304は、すべて、使用済みのデータが削除されて、新たなデータを書込むことができる状態となる。ステップS608において、CPU141は、すべてのアプリケーションプログラム541についてのシャットダウン処理がすべて終了しているか否かを判断する。CPU141は、たとえばすべてのアプリケーションプログラム541から終了が通知されているか否かを判断する。終了していないアプリケーションプログラム541が存在する場合、CPU141は、ステップS608の判断処理を繰り返し、そのシャットダウン処理の終了を待つ。終了していないアプリケーションプログラム541が存在しなくなってすべてのアプリケーションプログラム541が終了すると、CPU141は、処理をステップS609へ進める。ステップS609において、CPU141は、フラッシュメモリ205についてのマウントされている領域についてのすべてのトリム処理が完了しているか否かを判断する。たとえば、CPU141は、ステップS606を最初に実行する際に、fstrim実行中を示すフラグを立てる。CPU141は、fstrim実行プログラム545による処理がすべて終了すると、フラグを倒す。この場合、CPU141は、フラグが倒れていることに基づいて、すべてのトリム処理が完了していることを判断できる。すべてのトリム処理が完了していない場合、CPU141は、ステップS609の判断処理を繰り返し、その終了を待つ。すべてのトリム処理が完了している場合、CPU141は、処理をステップS610へ進める。ステップS610において、CPU141は、通常起動中にマウントしていたフラッシュメモリ205のすべての領域のアンマウント処理を実行する。ステップS611において、CPU141は、電源OFFを、電源ユニット160に指示する。電源ユニット160は、情報処理装置100の各部への給電を停止する。
このように図6の処理では、情報処理装置100をシャットダウンする処理において、ユーザインタフェースに対するユーザ操作を受け付けないようにした後に、領域ごとの消去処理を指示するトリムコマンドを生成する。情報処理装置100は、ユーザインタフェースに対するユーザ操作を受け付けない状態において、領域ごとの消去処理を指示するトリムコマンドを生成する。情報処理装置100は、情報処理装置100が処理するジョブが生じない状態であって、かつ、ユーザインタフェースに対するユーザ操作を受け付けない状態において、トリムコマンドを生成することができる。これにより、情報処理装置100は、通常起動中のユーザ操作やジョブ実行が発生する可能性のあるタイミングを避けて、fstrimトリムコマンドを生成できる。eMMC147においてトリム処理が実行されているfstrim処理中に、情報処理装置100においてジョブ実行やユーザ操作があると、それに対するeMMC147のレスポンスが遅延する。その結果、情報処理装置100のパフォーマンスが低下する。本実施形態では、このようなパフォーマンス低下を生じさせることなく、eMMC147にトリム処理を実行させることができる。しかも、本実施形態では、フラッシュメモリ205の領域ごとの消去処理を指示するトリムコマンドを生成するために、フラッシュメモリ205の領域ごとの設定が書込可能であるか否かを判断し、書込可能と判断した領域について領域ごとの消去処理を指示するトリムコマンドを生成する。フラッシュメモリ205の全体の領域に対して、トリムコマンドを一律に生成しない。これにより、本実施形態では、シャットダウン処理に追加されるフラッシュメモリ205からの不要なデータの消去処理の負荷および時間を軽減できる。フラッシュメモリ205の全体の領域に対してトリムコマンドを一律に生成する場合のように、シャットダウン処理が無用に長くなってしまうことはない。
図7は、図1の情報処理装置100についての、トリム処理を含むファームウェアプログラム540のアップデート処理のフローチャートである。通常起動されている情報処理装置100のCPU141は、情報処理装置100のファームウェアプログラム540のアップデート処理のために、eMMC147のstdファーム格納領域301に格納されているアップデート用の各種の実行プログラムを実行する。これにより、CPU141は、図7のアップデート処理を実行する。ステップS701において、CPU141は、通常起動の状態において、外部サーバ180もしくはユーザの操作部110からの指示により、ファームウェアプログラム540のアップデート指示を取得する。CPU141は、eMMC147のstdファーム格納領域301に記録されているファームウェアプログラム540ダウンロード実行プログラム543に対してアップデートを指示する。これにより、CPU141は、eMMC147のstdファーム格納領域301に記録されているsafeファーム格納領域302のアップデート実行プログラム546を実行する。CPU141は、アップデート対象の新しいファームウェアプログラムの情報を取得し、eMMC147のファームウェア情報格納領域に保存する。ステップS702において、CPU141は、認証画面を、操作部110に表示する。ステップS703において、CPU141は、ユーザの認証を判断する。ユーザが認証されない場合、CPU141は、図7の処理を終了する。ユーザが認証されると、CPU141は、処理をステップS704へ進める。なお、ファームウェアのアップデートプログラムがユーザ認証を必要としないものである場合、CPU141は、ステップS701の後に、処理をステップS704へ進めてよい。ステップS704において、CPU141は、バックグラウンド処理によりファームウェアプログラム540についての新たなアップデートプログラムを外部サーバ180からダウンロードし、HDD146のダウンロード領域571に保存する。ダウンロードされた新たなアップデートプログラムには、eMMC147のsafeファーム格納領域302に格納される新しいバージョンのファームウェアプログラム540などが含まれる。ダウンロードされたアップデートプログラム、改ざん防止のために署名暗号化されている。ステップS705において、CPU141は、ダウンロード領域571にダウンロードされたアップデートプログラムを復号化し、一時展開領域572に展開する。これにより、最終的にeMMC147に展開して記録されるべきファームウェアプログラム540が、HDD146において予め展開される。このため、後に実施する情報処理装置100の再起動後の処理では、CPU141は、予めHDD146の一時展開領域572に展開されている新たなファームウェアプログラム540を、eMMC147の所定の領域へコピーするだけでよくなる。再起動後の処理において復号化、展開、および適用のすべてを行う場合と比べて、アップデートのためのeMMC147のダウンタイムを短縮できる。ステップS706において、CPU141は、ファームウェアプログラム540の適用時刻を確認する。ファームウェアプログラム540の適用時刻は、たとえば外部サーバ180から取得したり、ユーザの設定を取得したりすることにより、eMMC147に予め記録されている。ファームウェアプログラム540の適用時刻に到達していない場合、CPU141は、ステップS706の処理を繰り返す。ファームウェアプログラム540の適用時刻に到達すると、CPU141は、処理をステップS707へ進める。ステップS707において、CPU141は、認証画面を操作部110に表示する。ステップS708において、CPU141は、ユーザの認証を判断する。ユーザが認証されない場合、CPU141は、図7の処理を終了する。ユーザが認証されると、CPU141は、処理をステップS709へ進める。なお、ファームウェアプログラム540のアップデートについてユーザ認証が不要と設定されている場合、CPU141は、ステップS706の後に、処理をステップS709へ進めてよい。
ステップS709において、CPU141は、アップデートのための再起動を指示する。CPU141は、たとえば図6のステップS601からステップS603およびステップS608からステップS610の処理を実行し、その後に情報処理装置100をアップデートのために再起動する。アップデートのための再起動では、CPU141は、safeファーム格納領域302のファームウェアプログラムを実行する。CPU141は、safeファーム格納領域302に記録されているstdファーム格納領域301のアップデート実行プログラム548を実行する。safeファーム格納領域302には、stdファーム格納領域301のアップデート実行プログラム548と、fstrim実行プログラム547と、が含まれ、アプリケーションプログラムなどが含まれない。このため、CPU141は、アップデートのための再起動により、情報処理装置100に対するユーザ操作を受け付けることができない状態となり、かつ、印刷ジョブ、スキャンジョブ、FAXジョブ等のジョブも受け付けることかできない状態となる。アップデートのために再起動されているステップS710において、CPU141は、図4に基づいて、stdファーム格納領域301を通常起動とは異なり書込可(RW)の状態でマウントする。CPU141は、図4に基づいて、safeファーム格納領域302を通常起動とは異なり書込不可(RO)の状態でマウントする。ステップS711において、CPU141は、一時展開領域572に展開済の新しいファームウェアプログラムを、書込可(RW)のstdファーム格納領域301にコピーする。CPU141は、展開済の新しいファームウェアプログラムを、HDD146から読み込んでeMMC147へ出力する。eMMC147のメモリコントローラ203は、新しいファームウェアプログラムを、フラッシュメモリ205のstdファーム格納領域301に書き込む。これにより、stdファーム格納領域301のファームウェアプログラムは、新しいものに差し替えられてアップデートされる。ステップS712において、CPU141は、書込可(RW)でマウントされているアップデート後のstdファーム格納領域301について、fstrim処理を指示する。CPU141は、safeファーム格納領域302のfstrim実行プログラム547を実行して、fstrimコマンドを生成し、eMMC147のメモリコントローラ203へ出力する。CPU141は、書込済みの領域に新たなデータを書込むためには書込処理とは別に領域ごとの消去処理を実行する必要があるフラッシュメモリ205についてのトリム処理を指示する。eMMC147のメモリコントローラ203は、フラッシュメモリ205についての指示されたstdファーム格納領域301について、アップデートにより不要となったデータを削除するトリム処理を実行する。トリム処理において、メモリコントローラ203は、たとえば、処理対象の領域から不要なデータを消去する。これにより、フラッシュメモリ205についての、書込可(RW)でマウントされているstdファーム格納領域301は、使用済みのデータが削除され、新たなデータを書込むことができる状態になる。stdファーム格納領域301は、ユーザインタフェースに対するユーザ操作を受け付けない状態において、かつ、ジョブを受け付けることかできない状態において、トリムコマンドに基づいて不要なデータが消去される。ファームウェアプログラム540更新による書込が行われた後にトリム処理を行うことで、eMMC147のパフォーマンス劣化の抑止に寄与することができる。fstrim実行プログラム547を実行するCPU141は、トリム処理が終了すると、トリム処理の終了をstdファームウェアのアップデートプログラムに通知する。ステップS713において、CPU141は、stdファーム格納領域301をアンマウントする。また、CPU141は、safeファーム格納領域302をアンマウントする。
ステップS714において、CPU141は、情報処理装置100を、通常起動により再起動する。通常起動による再起動では、CPU141は、stdファーム格納領域301のファームウェアプログラムを実行する。通常起動により再起動されているステップS715において、CPU141は、stdファーム格納領域301に記録されているファームウェアプログラム540のアップデート実行プログラムを実行する。ステップS716において、CPU141は、一時展開領域572に展開済の新しいファームウェアプログラムを、書込可(RW)のsafeファーム格納領域302にコピーする。CPU141は、展開済の新しいファームウェアプログラムを、HDD146から読み込んでeMMC147へ出力する。eMMC147のメモリコントローラ203は、新しいファームウェアプログラムを、フラッシュメモリ205のsafeファーム格納領域302に書き込む。これにより、safeファーム格納領域302のファームウェアプログラムは、新しいものに差し替えられてアップデートされる。通常起動時は、safeファーム格納領域302に格納されるファームウェアプログラム540はCPU141の実行対象とならない。したがって、情報処理装置100の動作に影響を与えないように、safeファーム格納領域302のファームウェアプログラム540をアップデートできる。なお、CPU141は、ここでさらに、書込可(RW)でマウントされているsafeファーム格納領域302について、fstrim処理を指示してよい。CPU141は、stdファーム格納領域301のfstrim実行プログラム545を実行して、fstrimコマンドを生成し、eMMC147のメモリコントローラ203へ出力する。eMMC147のメモリコントローラ203は、フラッシュメモリ205についての指示されたsafeファーム格納領域302について、アップデートにより不要となったデータを削除するトリム処理を実行する。また、図7では、CPU141は、通常起動時にバックグラウンドで実行されるsafeファーム格納領域302のアップデート実行プログラム546により、HDD146の一時展開領域572に展開済の新しいファームウェアプログラムを、safeファーム格納領域302にコピーしている。この他にもたとえば、CPU141は、safeファーム格納領域302のアップデート実行プログラム546の実行により、ダウンロードされた新たなファームウェアプログラム540を復号し、展開し、safeファーム格納領域302に記録してもよい。
このように図7の処理では、CPU141は、情報処理装置100のファームウェアプログラム540をアップデートする処理において、アップデートされる領域についての領域ごとの消去処理を指示するトリムコマンドを生成する。CPU141は、ユーザインタフェースに対するユーザ操作を受け付けない状態において、アップデートされる領域についての領域ごとの消去処理を指示するトリムコマンドを生成する。CPU141は、情報処理装置100のアップデートのための再起動を開始した後に、フラッシュメモリ205についてのアップデートに係るstdファーム格納領域301を書込可能な領域としてマウントしてアップデートを実行する。CPU141は、さらにトリムコマンドを生成してアップデートにより不要となるデータの消去処理を指示する。なお、ステップS701、ステップS703において、外部サーバ180からファームウェアプログラム540を取得する例を説明したが、新しいファームウェアプログラムの取得方法は他の方法であってもかまわない。たとえば、USBメモリやパーソナルコンピュータ190にファームウェアプログラム540を格納し、デバイスに接続することでも同様の処理を実施することができる。また、ファームウェアプログラムのアップデート方法として、本実施形態ではバックグラウンドであらかじめ新ファームウェアプログラム540を通常起動中に一時展開しておく例を説明したが、新ファームウェアプログラム540の展開はsafeファーム格納領域302によるアップデート用起動処理中に実施しもよい。
そして、本実施形態では、情報処理装置100についての再起動を伴うアップデート処理において、フラッシュメモリ205へのアップデート処理に用いるプログラムのみを実行する状態で情報処理装置100を再起動する処理を実行する。その後、フラッシュメモリ205に領域ごとの消去処理を指示する消去コマンドとしてのトリムコマンドを生成する。このようにアップデート処理での再起動後にトリムコマンドを生成するようにすることで、トリムコマンドは、情報処理装置100が処理するジョブが生じない状態であって、かつ、ユーザインタフェースに対するユーザ操作を受け付けない状態において生成され得る。しかも、本実施形態では、フラッシュメモリ205に領域ごとの消去処理を指示するトリムコマンドを生成するために、情報処理装置100のアップデート処理での再起動を開始した後に、フラッシュメモリ205についてのアップデートに係る記録領域を書込可能な領域としてマウントし、アップデートデータを記録領域にコピーして差し替え、記録領域について領域ごとの消去処理を指示するトリムコマンドを生成し、記録領域のアップデートデータによる再起動処理を実行する。これにより、アップデートに係る記録領域は、トリムコマンドにより不要なデータが削除された状態で、アップデートデータによる再起動に用いられる。本実施形態では、アップデート処理に追加されるフラッシュメモリ205からの不要なデータの消去処理の負荷および時間を軽減して、アップデート処理が無用に長くなってしまうことを抑制できる。特に、本実施形態では、上述したシャットダウン時のfstrim処理実行と合わせて、ファームウェアプログラムのアップデート時にstdファーム格納領域301にもfstrim処理実行を行う。このため、eMMC147のシステム領域300には、一通りのトリム処理を実行することができる。また、本実施形態では、ファームウェアプログラムのアップデート時のstdファーム格納領域301へのfstrim処理によって、eMMC147のファームウェアプログラムのアップデート時にできた不要な領域を即座にeMMC147に通知できる。このため、通常起動中に実施するシャットダウン処理中でのfstrim処理自体の処理時間の短縮も見込まれる。
以上のように、本実施形態では、ユーザインタフェースに対するユーザ操作を受け付けない状態において、フラッシュメモリ205に領域ごとの消去処理を指示するトリムコマンドを生成する。具体的にはたとえば、情報処理装置100が処理するジョブが生じない状態であって且つユーザインタフェースに対するユーザ操作を受け付けない状態において、フラッシュメモリ205に領域ごとの消去処理を指示するトリムコマンドを生成する。これにより、情報処理装置100は、ユーザがユーザインタフェースに対して操作をする際には、書込済みの領域に新たなデータを書込むためには書込処理とは別に領域ごとの消去処理を実行する必要があるフラッシュメモリ205について、領域ごとの消去処理を実行させないようにできる。情報処理装置100においてフラッシュメモリ205は、情報処理装置100に対してユーザが操作する際には領域ごとの消去処理を実行しない。このため、ユーザは、不揮発性半導体メモリ装置にアクセスできないことに起因する遅延を直接的に体感したり、動作速度の低下を直接的に体感したりし難くなる。このように情報処理装置100では、書込済みの領域に新たなデータを書込むためには書込処理とは別に領域ごとの消去処理を実行する必要があるフラッシュメモリ205を用いつつ、ユーザによる操作性を改善することができる。しかも、本実施形態では、フラッシュメモリ205の領域ごとの設定に基づいて書込可能と判断できる領域について、領域ごとの消去処理を指示するトリムコマンドを生成する。よって、フラッシュメモリ205についての、書込不可と判断される領域については、領域ごとの消去処理を実行させない。フラッシュメモリ205の全体についての領域ごとの消去処理の負荷および時間を、フラッシュメモリ205の領域ごとの設定に基づいて削減できる。本実施形態では、情報処理装置100において書込済みの領域に新たなデータを書込むためには書込処理とは別に領域ごとの消去処理を実行する必要があるフラッシュメモリ205を用いつつ、ユーザによる操作性を改善することができる。
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
本発明は、上述の実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
上記実施形態では、ファームウェアプログラム540をアップデートする場合に、CPU141は、ファームウェアプログラム540を記録するstdファーム格納領域301についてのみ、トリム処理を実行している。この他にもたとえば、ファームウェアプログラム540をアップデートする場合に、CPU141は、ファームウェアプログラム540を記録するstdファーム格納領域301とは別の他の領域についても、トリム処理を実行してもよい。この場合、CPU141は、フラッシュメモリ205に領域ごとの消去処理を指示するトリムコマンドを生成するために、情報処理装置100のアップデート処理での再起動を開始した後に、メモリについての使用済のデータが書き込まれている他の領域を書込可能な領域としてマウントしてよい。たとえば図4のマウント構成において、アップデートのための起動モード402のときに複数のユーザデータ格納領域303および複数のワーク領域304を書込可(RW)であえてマウントしてよい。そして、CPU141は、これらの領域を領域ごとの設定に基づいて書込可能と判断し、図7のS712において領域ごとの消去処理を指示するトリムコマンドを生成する。これにより、フラッシュメモリ205についての、アップデートに係る旧データを記録しているstdファーム格納領域301以外の領域についても、不使用のデータが書き込まれている領域については、アップデート処理中に不要なデータを削除することができる。フラッシュメモリ205についての、書込可(RW)でマウントされている領域は、使用済みのデータを記録している場合トリム処理により使用済みの不要なデータが削除され、新たなデータを書込むことができる状態となる。
100 情報処理装置
110 操作部
140 制御部
141 CPU
147 eMMC
202 バスコントローラ
203 メモリコントローラ
204 キャッシュメモリ
205 フラッシュメモリ
301 stdファーム格納領域
302 safeファーム格納領域
401 通常起動モード
402 起動モード
540 ファームウェアプログラム
542 シャットダウン実行プログラム
545 fstrim実行プログラム
546 アップデート実行プログラム
547 fstrim実行プログラム
548 アップデート実行プログラム

Claims (21)

  1. 複数の領域を有する不揮発性半導体メモリと、
    ユーザ操作を受け付けることができるユーザインタフェースと、
    一連の命令を格納するメモリデバイスと、
    前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する制御部と、
    を有する情報処理装置であって
    前記制御部は、
    前記一の領域のマウント設定を取得し、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断し、
    前記制御部は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置についての再起動や前記不揮発性半導体メモリへのアップデート処理に使用するプログラムの実行に応じて、前記不揮発性半導体メモリにトリムコマンドを出力するか否かを判断し、
    前記不揮発性半導体メモリは、前記情報処理装置の通常起動において実行されるプログラムを記録する第一領域と、前記第一領域をアップデートする際に実行されるプログラムのみを記録する第二領域と、を有し、
    前記制御部は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置を通常起動の状態からアップデートのための起動状態へ再起動し、
    アップデートのための再起動状態において、前記第一領域のプログラムをアップデートし、
    前記第一領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する、
    情報処理装置。
  2. 前記制御部は、前記ユーザインタフェースに対するユーザ操作を受け付けない状態において、前記メモリデバイスに格納された命令を実行することによって、
    前記一の領域のマウント設定を取得し、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを出力するか否かを判断する、
    請求項1記載の情報処理装置。
  3. 前記ユーザインタフェースに対するユーザ操作を受け付けない状態は、前記情報処理装置をシャットダウンするシャットダウン処理を実行させるためのユーザ操作が前記ユーザインタフェースに受け入れられた場合に実現される、
    請求項2記載の情報処理装置。
  4. 前記制御部は、前記メモリデバイスに格納された命令を実行することによって、
    取得した前記一の領域のマウント設定が書込可能であるか否かを判断し、
    取得した前記一の領域のマウント設定が書込可能であると判断した場合に、前記一の領域を対象とするトリムコマンドを出力する、
    請求項1から3のいずれか一項記載の情報処理装置。
  5. 前記ユーザインタフェースに対するユーザ操作を受け付けない状態は、前記情報処理装置についての再起動に伴って行われる前記不揮発性半導体メモリへのアップデート処理によって実現される、
    請求項2記載の情報処理装置。
  6. 前記制御部は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置をアップデートのための起動状態から通常起動の状態へ再起動し、
    再起動後の通常起動の状態において前記第二領域のプログラムをアップデートする、
    請求項1記載の情報処理装置。
  7. 前記制御部は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置のアップデート処理での再起動を開始した後にトリムコマンドを生成するために、前記複数の領域のうちの前記一の領域を書込可能な領域としてマウントし、
    アップデートデータを前記一の領域にコピーして差し替え、
    前記一の領域に対する消去処理を実行させるためのトリムコマンドを出力し、
    前記一の領域のアップデートデータによる再起動処理を実行する、
    請求項1または6記載の情報処理装置。
  8. 前記制御部は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置のアップデート処理での再起動を開始した後にトリムコマンドを生成するために、前記複数の領域のうち前記一の領域とは異なる他の領域を書込可能な領域としてマウントし、
    前記他の領域に対するトリムコマンドを生成する、
    請求項7記載の情報処理装置。
  9. 前記情報処理装置は、プリントジョブ、スキャンジョブまたはコピージョブを実行する画像形成装置である、
    請求項1から8のいずれか一項記載の情報処理装置。
  10. 前記制御部は、前記ユーザインタフェースに対するユーザ操作を受け付けない状態において、
    前記一の領域のマウント設定を取得し、
    取得した前記一の領域のマウント設定に応じて、前記一の領域を対象とするトリムコマンドを出力するか否かを判断する、
    請求項1記載の情報処理装置。
  11. 複数の領域を有する不揮発性半導体メモリと、
    ユーザ操作を受け付けることができるユーザインタフェースと、
    一連の命令を格納するメモリデバイスと、
    前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する制御部と、
    を有する情報処理装置であって
    前記制御部は、
    前記一の領域のマウント設定を取得し、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断し、
    前記複数の領域は、通常起動において実行されるプログラムを記録する第一領域と、アップデートのための起動で実行されるプログラムを記録する第二領域と、を有し、
    前記制御部は、前記情報処理装置が通常起動での始動状態にある場合、
    前記第一領域と前記第二領域のマウント設定を取得し、
    マウント設定が書込可能でない前記第一領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力せず、
    マウント設定が書込可能である前記第二領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力する、
    情報処理装置。
  12. 前記制御部は、前記情報処理装置がアップデートのための起動での始動状態にある場合、
    前記第一領域と前記第二領域のマウント設定を取得し、
    マウント設定が書込可能でない前記第二領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力せず、
    マウント設定が書込可能である前記第一領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力する、
    請求項11記載の情報処理装置。
  13. 前記トリムコマンドは、対象とする領域で、使用済みで不要なデータを削除するためのトリム処理を実行するためのコマンドである、
    請求項11記載の情報処理装置。
  14. 前記制御部は、
    前記一の領域のマウント設定が書込可能でない場合、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力せず、
    前記一の領域のマウント設定が書込可能である場合、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力する、
    請求項11記載の情報処理装置。
  15. 前記第一領域に記録されるプログラムには、前記情報処理装置の起動プログラムを含む、
    請求項1または11記載の情報処理装置。
  16. 前記第一領域に記録されるプログラムには、スキャナまたはプリンタを制御するプログラムを含む
    請求項1または11記載の情報処理装置。
  17. 前記第二領域に記録されるプログラムには、fstrim実行プログラムを含む
    請求項1または11記載の情報処理装置。
  18. 複数の領域を有する不揮発性半導体メモリと、一連の命令を格納するメモリデバイスと、を用いて処理を実行する情報処理装置の制御方法であって、
    前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを前記不揮発性半導体メモリに出力する第1出力工程を有し、
    前記第1出力工程は、
    前記一の領域のマウント設定を取得する取得工程と、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断する第1判断工程と、
    前記メモリデバイスに格納された命令を実行することによって、前記情報処理装置についての再起動や前記不揮発性半導体メモリへのアップデート処理に使用するプログラムの実行に応じて、前記不揮発性半導体メモリにトリムコマンドを出力するか否かを判断する第2判断工程と、を有し、
    前記不揮発性半導体メモリは、前記情報処理装置の通常起動において実行されるプログラムを記録する第一領域と、前記第一領域をアップデートする際に実行されるプログラムのみを記録する第二領域と、を有し、
    前記第1出力工程は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置を通常起動の状態からアップデートのための起動状態へ再起動する再起動工程と、
    アップデートのための再起動状態において、前記第一領域のプログラムをアップデートするアップデート工程と、
    前記第一領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する第2出力工程と、
    を有する、情報処理装置の制御方法。
  19. 複数の領域を有する不揮発性半導体メモリと、一連の命令を格納するメモリデバイスと、を用いて処理を実行する情報処理装置の制御方法であって、
    前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを前記不揮発性半導体メモリに出力する第1出力工程を有し、
    前記第1出力工程は、
    前記一の領域のマウント設定を取得する第1取得工程と、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断する判断工程とを、有し、
    前記複数の領域は、通常起動において実行されるプログラムを記録する第一領域と、アップデートのための起動で実行されるプログラムを記録する第二領域と、を有し、
    前記第1出力工程は、前記情報処理装置が通常起動での始動状態にある場合、
    前記第一領域と前記第二領域のマウント設定を取得する第2取得工程と、
    マウント設定が書込可能でない前記第一領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力せず、マウント設定が書込可能である前記第二領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力する第2出力工程と、
    を有する、情報処理装置の制御方法。
  20. 複数の領域を有する不揮発性半導体メモリと、一連の命令を格納するメモリデバイスと、を用いて処理を実行する情報処理装置の制御方法をコンピュータに実行させるプログラムであって、
    前記情報処理装置の制御方法は、
    前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを前記不揮発性半導体メモリに出力する第1出力工程を有し、
    前記第1出力工程は、
    前記一の領域のマウント設定を取得する取得工程と、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断する第1判断工程と、
    前記メモリデバイスに格納された命令を実行することによって、前記情報処理装置についての再起動や前記不揮発性半導体メモリへのアップデート処理に使用するプログラムの実行に応じて、前記不揮発性半導体メモリにトリムコマンドを出力するか否かを判断する第2判断工程と、を有し、
    前記不揮発性半導体メモリは、前記情報処理装置の通常起動において実行されるプログラムを記録する第一領域と、前記第一領域をアップデートする際に実行されるプログラムのみを記録する第二領域と、を有し、
    前記第1出力工程は、前記メモリデバイスに格納された命令を実行することによって、
    前記情報処理装置を通常起動の状態からアップデートのための起動状態へ再起動する再起動工程と、
    アップデートのための再起動状態において、前記第一領域のプログラムをアップデートするアップデート工程と、
    前記第一領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを出力する第2出力工程と、
    を有する、プログラム。
  21. 複数の領域を有する不揮発性半導体メモリと、一連の命令を格納するメモリデバイスと、を用いて処理を実行する情報処理装置の制御方法をコンピュータに実行させるプログラムであって、
    前記情報処理装置の制御方法は、
    前記複数の領域のうちの一の領域に対する消去処理を前記不揮発性半導体メモリに実行させるためのトリムコマンドを前記不揮発性半導体メモリに出力する第1出力工程を有し、
    前記第1出力工程は、
    前記一の領域のマウント設定を取得する第1取得工程と、
    取得したマウント設定に応じて、前記一の領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力するか否かを判断する判断工程とを、有し、
    前記複数の領域は、通常起動において実行されるプログラムを記録する第一領域と、アップデートのための起動で実行されるプログラムを記録する第二領域と、を有し、
    前記第1出力工程は、前記情報処理装置が通常起動での始動状態にある場合、
    前記第一領域と前記第二領域のマウント設定を取得する第2取得工程と、
    マウント設定が書込可能でない前記第一領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力せず、マウント設定が書込可能である前記第二領域を対象とするトリムコマンドを前記不揮発性半導体メモリに出力する第2出力工程と、
    を有する、プログラム。
JP2019133752A 2019-07-19 2019-07-19 情報処理装置、その制御方法およびプログラム Active JP7401215B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019133752A JP7401215B2 (ja) 2019-07-19 2019-07-19 情報処理装置、その制御方法およびプログラム
US16/924,271 US11599303B2 (en) 2019-07-19 2020-07-09 Information processing apparatus using nonvolatile semiconductor memory device and control method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019133752A JP7401215B2 (ja) 2019-07-19 2019-07-19 情報処理装置、その制御方法およびプログラム

Publications (3)

Publication Number Publication Date
JP2021018595A JP2021018595A (ja) 2021-02-15
JP2021018595A5 JP2021018595A5 (ja) 2022-07-26
JP7401215B2 true JP7401215B2 (ja) 2023-12-19

Family

ID=74343774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019133752A Active JP7401215B2 (ja) 2019-07-19 2019-07-19 情報処理装置、その制御方法およびプログラム

Country Status (2)

Country Link
US (1) US11599303B2 (ja)
JP (1) JP7401215B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021100182A (ja) * 2019-12-20 2021-07-01 キヤノン株式会社 画像形成装置および画像形成装置の制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287541A (ja) 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd 不揮発性メモリのアクセス制御システム
JP2007069368A (ja) 2005-09-05 2007-03-22 Seiko Epson Corp プリンタシステムの制御ソフトウェアの更新
JP2009226690A (ja) 2008-03-21 2009-10-08 Seiko Epson Corp 印刷装置および情報管理システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814480B2 (en) * 2005-09-05 2010-10-12 Seiko Epson Corporation Control software updating technique for a network apparatus
JP2013097515A (ja) * 2011-10-31 2013-05-20 Canon Inc 情報処理装置、その制御方法、および制御プログラム
US9785564B2 (en) * 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
JP6289128B2 (ja) 2014-01-30 2018-03-07 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
JP2018014050A (ja) * 2016-07-22 2018-01-25 東芝メモリ株式会社 メモリシステム
US10783240B2 (en) * 2017-09-29 2020-09-22 Stmicroelectronics, Inc. Secure environment in a non-secure microcontroller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287541A (ja) 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd 不揮発性メモリのアクセス制御システム
JP2007069368A (ja) 2005-09-05 2007-03-22 Seiko Epson Corp プリンタシステムの制御ソフトウェアの更新
JP2009226690A (ja) 2008-03-21 2009-10-08 Seiko Epson Corp 印刷装置および情報管理システム

Also Published As

Publication number Publication date
US20210019090A1 (en) 2021-01-21
JP2021018595A (ja) 2021-02-15
US11599303B2 (en) 2023-03-07

Similar Documents

Publication Publication Date Title
JP6073854B2 (ja) 電子機器及びファームウェア復旧プログラム
JP6543122B2 (ja) 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム
JP5917163B2 (ja) 情報処理装置、その制御方法及びプログラム並びに記憶媒体
KR102288563B1 (ko) 정보 처리장치 및 그 제어방법
JP2011028430A (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2012018501A (ja) 情報処理装置、情報処理装置の制御方法、プログラム
KR101813641B1 (ko) 화상형성장치 및 하이버네이션 기능을 갖는 화상형성장치를 부팅하는 방법
JP2016162022A (ja) 情報処理装置およびメモリー管理プログラム
JP7401215B2 (ja) 情報処理装置、その制御方法およびプログラム
JP6271939B2 (ja) 情報処理装置及びその制御方法、並びにプログラム
JP2017228010A (ja) ストレージ制御手段、ストレージ制御手段を有する情報処理装置、ストレージ制御方法及びそのプログラム
JP6004923B2 (ja) 情報処理装置及びその制御方法とプログラム
JP2016206938A (ja) 情報処理システム、情報処理システムのメモリ制御方法、及びプログラム
US11797292B2 (en) Information processing apparatus using swap file, control method therefor, and storage medium
JP2010009553A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2015204071A (ja) 情報処理装置、情報処理方法およびプログラム
JP2023128642A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP5707870B2 (ja) 情報処理装置及び記憶媒体
JP6953828B2 (ja) 情報処理装置及びプログラム
JP6781803B2 (ja) 情報処理装置とその制御方法
JP2024022079A (ja) 情報処理装置および情報処理装置の制御方法
JP2018063499A (ja) 情報処理装置及びその制御方法、並びにプログラム
JP2018092417A (ja) 画像処理装置
JP2006126987A (ja) 画像処理装置
JP6924088B2 (ja) 情報処理装置及びその制御方法、並びにプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220715

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231018

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: 20231107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231207

R151 Written notification of patent or utility model registration

Ref document number: 7401215

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151