JP7226049B2 - シミュレーション装置、シミュレーション方法及び情報処理装置 - Google Patents

シミュレーション装置、シミュレーション方法及び情報処理装置 Download PDF

Info

Publication number
JP7226049B2
JP7226049B2 JP2019075130A JP2019075130A JP7226049B2 JP 7226049 B2 JP7226049 B2 JP 7226049B2 JP 2019075130 A JP2019075130 A JP 2019075130A JP 2019075130 A JP2019075130 A JP 2019075130A JP 7226049 B2 JP7226049 B2 JP 7226049B2
Authority
JP
Japan
Prior art keywords
code
model
cpu
unit
undefined
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
JP2019075130A
Other languages
English (en)
Other versions
JP2020173616A (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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2019075130A priority Critical patent/JP7226049B2/ja
Priority to US16/837,963 priority patent/US20200326950A1/en
Publication of JP2020173616A publication Critical patent/JP2020173616A/ja
Application granted granted Critical
Publication of JP7226049B2 publication Critical patent/JP7226049B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/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/0658Controller construction arrangements
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明はシミュレーション装置、シミュレーション方法及び情報処理装置に関し、例えばプリンタのシミュレーションを行うシミュレーション装置に適用して好適なものである。
従来、シミュレーション装置としては、ソフトウェアを実行した場合におけるハードウェアの動作を模擬することにより、当該ソフトウェアの動作確認や解析等を行うものが広く普及している。
このシミュレーション装置では、例えばプリンタのシミュレーションを行う場合、当該プリンタを構成する各部分、例えば用紙を搬送する搬送部、画像を形成する画像形成部、画像を用紙に定着させる定着部、及びこれらを制御する制御部等を、それぞれモデル化する。
このうち制御部をモデル化した制御部モデルでは、命令コードを読み込んで実行するCPU(Central Processing Unit)、制御プログラム等の各種情報を記憶するROM(Read Only Memory)、及び情報を一時的に格納するRAM(Random Access Memory)等をそれぞれモデル化し、ソフトウェア上で擬似的に構成する。
そのうえでシミュレーション装置では、制御部のモデルにおいて、複数の命令コードにより構成されたファームウェア(すなわちプログラム)をROMのモデルに格納し、当該ファームウェアの各命令コードをCPUのモデルが順次読み出し、それぞれデコードして命令処理を順次実行する(例えば、特許文献1参照)。これによりシミュレーション装置は、プリンタにおいてファームウェアが正常に動作するか否かを、ソフトウェア上で容易に確認させることができる。
特開平11-250115号公報(図1等)
ところでシミュレーション装置では、ファームウェアの開発や修正が行われる場合、ファイルとして作成された複数通りのファームウェアを適宜入れ替えながら、それぞれのシミュレーション処理を行う場合がある。そこでシミュレーション装置としては、例えばユーザの操作によりファームウェアのファイルをファイル名等により指定させ、当該ファイル名と対応付けられたファームウェアをROMのモデルに書き込んでから、シミュレーション処理を開始することにより、作業の効率化を図ったものがある。
しかしながらユーザは、例えば頻繁にファームウェアを更新しながら、ファイル名も適宜変更しているような場合に、当該ファイルの指定を誤る場合、具体的にはファイル名そのものやファイルのパス等を誤る場合がある。このような場合、シミュレーション装置では、ROMのモデルが初期化された後にファームウェアが書き込まれていない状態、例えば各アドレスに「00H」が書き込まれた状態でシミュレーション処理を開始することになる。
多くの場合、命令コード「00H」は、何ら処理を行わないことを意味する「NOP」が割り当てられている。このためシミュレーション装置では、制御部のモデルにおいて、CPUのモデルがROMのモデルにおける各アドレスから「00H」を順次読み出し、何ら処理を行わず、すなわちプリンタを何ら動作させることなく、プログラムカウンタが順次更新されていく。このような場合、シミュレーション装置を操作しているユーザは、ソフトウェア上でプリンタが動作しないため、例えばファームウェアに問題があるものと推測してその原因を探る等、無駄な作業を行う可能性がある。
すなわちシミュレーション装置は、ROMモデルにファームウェア等のプログラムが正常に書き込まれていない状態でシミュレーション処理を行い、正常な動作結果が得られなかった場合に、ユーザにその原因を把握させることが困難である、という問題があった。
本発明は以上の点を考慮してなされたもので、プログラムの書込に関する異常を迅速に検出し得るシミュレーション装置、シミュレーション方法及び情報処理装置を提案しようとするものである。
かかる課題を解決するため本発明のシミュレーション装置においては、命令コードを読み込んで実行するCPU(Central Processing Unit)を模したCPUモデルと、複数の命令コードにより構成された制御プログラムを格納する記憶部を模した記憶部モデルとを形成するモデル形成部と、記憶部モデルにおける少なくとも一部の記憶領域に、CPUにおいて定義されていない未定義コードを書き込む未定義コード書込部と、記憶部モデルにおける未定義コードが書き込まれた記憶領域に、ユーザに指定された制御プログラムを書き込む制御プログラム書込部と、記憶部モデルから命令コードを順次読み出してCPUモデルにより順次実行させる命令コード実行部とを設けるようにした。
また本発明のシミュレーション方法においては、モデル形成部により、命令コードを読み込んで実行するCPUを模したCPUモデルと、複数の命令コードにより構成された制御プログラムを格納する記憶部を模した記憶部モデルとを形成するモデル形成ステップと、未定義コード書込部により、記憶部モデルにおける少なくとも一部の記憶領域に、CPUにおいて定義されていない未定義コードを書き込む未定義コード書込ステップと、制御プログラム書込部により、記憶部モデルにおける未定義コードが書き込まれた記憶領域に、ユーザに指定された制御プログラムを書き込む制御プログラム書込ステップと、命令コード実行部により、記憶部モデルから命令コードを順次読み出してCPUモデルにより順次実行させる命令コード実行ステップとを設けるようにした。
さらに本発明の情報処理装置においては、命令コードを読み込んで実行するCPUと、複数の命令コードにより構成された制御プログラムを格納する記憶部と、記憶部における少なくとも一部の記憶領域に、CPUにおいて定義されていない未定義コードを書き込む未定義コード書込部と、記憶部における未定義コードが書き込まれた記憶領域に、ユーザに指定された制御プログラムを書き込む制御プログラム書込部と、CPUにより記憶部から制御プログラムの命令コードを読み出して実行する場合に、当該命令コードが未定義コードであった場合、制御プログラムの実行を停止させる停止処理、及び当該未定義コードが読み出されたことを通知する通知処理のうち少なくとも一方を行う異常処理部とを設けるようにした。
本発明は、記憶部又は記憶部モデルに予め未定義コードを書き込んでから、制御プログラムを書き込み、CPU又はCPUモデルが記憶部又は記憶部モデルから制御プログラムの命令コードをフェッチ及びデコードして処理を実行する。このため本発明は、仮に記憶部又は記憶部モデルからフェッチ及びデコードした命令コードが未定義コードであれば、記憶部又は記憶部モデルに制御プログラムが正常に書き込まれていないことを容易に検出できる。
本発明によれば、プログラムの書込に関する異常を迅速に検出し得るシミュレーション装置、シミュレーション方法及び情報処理装置を実現できる。
第1の実施の形態によるシミュレーション装置の構成を示す略線的ブロック図である。 プリンタモデルの構成を示す略線的ブロック図である。 モデル表示ウィンドウの構成を示す略線図である。 第1の実施の形態によるシミュレーション処理手順を示すフローチャートである。 初期化された状態におけるROMモデルのダンプデータを示す略線図である。 未定義コードを書き込んだ状態におけるROMモデルのダンプデータを示す略線図である。 ファームウェアがロードされた状態におけるROMモデルのダンプデータを示す略線図である。 第1の実施の形態によるリセット処理手順を示すフローチャートである。 第1の実施の形態によるファームウェア実行処理手順を示すフローチャートである。 異常通知ウィンドウの表示を示す略線図である。 従来のシミュレーション装置の構成を示す略線的ブロック図である。 従来のシミュレーション処理手順を示すフローチャートである。 従来のファームウェア実行処理手順を示すフローチャートである。 第2の実施の形態によるプリンタの構成を示す略線的ブロック図である。 第2の実施の形態による外部メモリのメモリマップ及びダンプデータを示す略線図である。 例外処理の発生要因及び格納アドレスを示す略線図である。 第2の実施の形態によるファームウェア更新処理手順を示すフローチャートである。 第2の実施の形態によるリセット処理手順を示すフローチャートである。 第2の実施の形態によるファームウェア実行処理手順を示すフローチャートである。 未定義コード実行例外処理手順を示すフローチャートである。 第3の実施の形態によるプリンタの構成を示す略線的ブロック図である。 第3の実施の形態による内部RAMのメモリマップ及びダンプデータを示す略線図である。 第3の実施の形態によるファームウェア転送処理手順を示すフローチャートである。 第3の実施の形態によるエラー通報処理手順を示すフローチャートである。 エラー通報処理のタイミングチャートを示す略線図である。
以下、発明を実施するための形態(以下実施の形態とする)について、図面を用いて説明する。
[1.第1の実施の形態]
[1-1.シミュレーション装置の構成]
図1に模式的なブロック図を示すように、第1の実施の形態によるシミュレーション装置1は、制御部2、記憶部3、通信部4、表示部5及び操作部6がバス8を介して相互に接続されている。このシミュレーション装置1は、ソフトウェア上でプリンタ(画像形成装置とも呼ばれる)を模したプリンタモデルを構成し、このプリンタモデルにおいてファームウェアを実行させるシミュレーション処理を行うようになっている。因みにファームウェアは、プリンタを構成する各ハードウェアをそれぞれ制御して印刷処理等の動作を行わせるためのプログラムであり、制御プログラムとも呼ばれる。
制御部2は、図示しないCPU(Central Processing Unit)やROM(Read Only Memory)及びRAM(Random Access Memory)等を有しており、該ROMや記憶部3からファームウェア等の種々のプログラムを読み出して実行することにより、その内部に複数の機能ブロックを形成して種々の処理を行う(詳しくは後述する)。
記憶部3は、例えばハードディスクドライブやフラッシュメモリ等でなる不揮発性の記憶媒体であり、種々の情報を記憶する。この記憶部3には、後述するシミュレーションプログラムやファームウェアのファイル等が格納されている。通信部4は、例えばIEEE(Institute of Electrical and Electronics Engineers)802.3u/ab等の規格に準拠した有線LAN(Local Area Network)、或いはIEEE802.11a/b/g/n/ac等の無線LANに準拠したインタフェースであり、所定のネットワーク(図示せず)と接続され、外部の情報処理装置(図示せず)との間で情報を相互に送受信する。
表示部5は、例えば液晶ディスプレイであり、文字や図形等により種々の情報を表示してユーザに提示する。操作部6は、例えばキーボードやマウス、或いはタッチパッド等であり、ユーザによる種々の入力操作を受け付ける。
制御部2は、記憶部3からシミュレーションプログラムを読み出して実行することにより、その内部にモデル形成部11、モデル画像表示処理部12、未定義コード書込部13、制御プログラム書込部14、命令コード実行部15及び異常処理部16といった複数の機能ブロックを構成する。
モデル形成部11は、図2に示すように、プリンタを構成する各部分をそれぞれ擬似的に模したプリンタモデル20を生成する。具体的にプリンタモデル20は、大きく分けてメイン基板モデル21、オプショントレイモデル22及びメカモデル23により構成されている。
メイン基板モデル21は、プリンタの各部を制御するメイン基板をモデル化したものであり、ASIC(Application Specific Integrated Circuit)をモデル化したASICモデル30を中心に構成されている。ASICモデル30の内部には、CPU、ROM、RAM及びゲートアレイをそれぞれモデル化したCPUモデル31、ROMモデル32、RAMモデル33及びゲートアレイモデル34がそれぞれ設けられている。
CPUモデル31は、その内部において演算ユニットや各種レジスタ、及びプログラムカウンタ等(何れも図示せず)をそれぞれモデル化しており、命令コードのフェッチ(取込)、デコード及び命令実行といった、実際のCPUと同様の動作(振る舞い)をソフトウェア上で模擬的に実行し得るようになっている。ROMモデル32及びRAMモデル33は、それぞれ実際のROM及びRAMと同様の記憶領域を有すると共にアドレスを割り当てており、実際のROM及びRAMと同様に動作し、各アドレスと対応付けてデータを格納し、また読み出し得るようになっている。
このCPUモデル31では、実際のCPUと同様に、予め2バイトの命令コードが複数種類定義されており、ROMモデル32等から読み出して取得したデータを命令コードと見なし、この命令コードに応じた処理を実行する。ただしCPUモデル31では、256通りがある2バイトのデータのうち、一部分のみが命令コードとして定義されており、その残りが未定義となっている。このCPUモデル31は、未定義の命令コード(以下これを未定義コードと呼ぶ)を取得した場合、実際のCPUと同様に、所定のアドレスにジャンプする等の例外処理を行うようになっている。
ゲートアレイモデル34は、実際のASIC内に形成されるゲートアレイと同様の動作(振る舞い)をソフトウェア上で実行し得るようになっている。またメイン基板モデル21には、駆動力を発生して各部に供給するモータを制御するためのモータドライバをモデル化したモータドライバモデル35も設けられている。
オプショントレイモデル22は、プリンタに取り付け可能なオプションの用紙トレイ及びその周辺の部品であるオプショントレイをモデル化したものであり、各部を制御するマイコン(マイクロコンピュータ)をモデル化したマイコンモデル40を中心に構成されている。マイコンモデル40には、ASICモデル30と同様にCPUモデル41、ROMモデル42及びRAMモデル43が設けられている。またオプショントレイモデル22には、メイン基板モデル21と同様、モータドライバをモデル化したモータドライバモデル44も設けられている。
メカモデル23は、プリンタ内に設けられる各部のモデルが設けられている。具体的にメカモデル23には、駆動力を発生するモータをモデル化したモータモデル51、用紙の有無等を検知するセンサをモデル化したセンサモデル52、円筒状に形成され、回転することにより用紙の搬送等を行うローラをモデル化したローラモデル53が設けられている。
またメカモデル23には、トナーを用いてトナー画像を形成するイメージドラム(ID)をモデル化したイメージドラム(ID)モデル54、トナー画像が転写された用紙に熱及び圧力を加えて定着させる定着器をモデル化した定着器モデル55も設けられている。さらにメカモデル23には、用紙を搬送する用紙搬送路をモデル化した用紙搬送路モデル57、及び用紙をモデル化した用紙モデル58も設けられている。
制御部2(図1)のモデル画像表示処理部12は、モデル形成部11により形成したプリンタモデル20(図2)における各部の動作や状態に基づき、図3に示すように、当該プリンタの状態や動作等を画像として表したモデル表示ウィンドウ60を表示部5に表示させる。
モデル表示ウィンドウ60には、プリンタ本体を模式的に表すプリンタ本体部61が設けられている。プリンタ本体部61には、用紙Pを収納する用紙トレイ62が設けられており、またオプションとしてプリンタ本体部61に取り付けることにより用紙トレイを増設するオプショントレイ63が取り付けられている。さらにプリンタ本体部61には、用紙Pを搬送する用紙搬送路64、用紙Pに駆動力を伝達するローラ65、用紙Pを検出する用紙センサ66、トナー画像を形成するイメージドラム67、及びトナー画像が転写された用紙Pに熱及び圧力を加える定着器68がそれぞれ設けられている。
シミュレーション装置1においてシミュレーション処理を行う場合、モデル表示ウィンドウ60では、プリンタ本体部61、用紙トレイ62及びオプショントレイ63における各部の動作に応じて画像の各部を適宜変化させる。例えばモデル表示ウィンドウ60は、用紙Pの位置を搬送路に沿って順次変化させる。またモデル表示ウィンドウ60におけるプリンタ本体部61の下側には、文字により各部の状態を表す状態表示部69が設けられている。状態表示部69は、例えば定着器における動作状態や、各センサによる用紙Pの検出結果等を、それぞれ文字により表示している。
これによりモデル表示ウィンドウ60は、シミュレーション処理においてプリンタの各部が動作する様子を、画像や文字によりユーザに提示することができる。
制御部2(図1)の未定義コード書込部13は、後述する未定義コードを、モデル形成部11により形成したROMモデル32(図2)に書き込む(詳しくは後述する)。制御プログラム書込部14(図1)は、記憶部3に格納されている制御プログラム、すなわちプリンタを動作させるためのファームウェアを読み出し、ROMモデル32(図2)に書き込む。命令コード実行部15(図1)は、CPUモデル31(図2)により、命令コードの実行、具体的にはROMモデル32からの命令コードのフェッチ(読出)、デコード及び命令実行といった各処理を行わせる。異常処理部16は、異常を検出した場合に所定の異常対応処理を行う(詳しくは後述する)。
このようにシミュレーション装置1は、シミュレーション処理において、ソフトウェア上にプリンタを構成する各部をそれぞれモデル化し、ROMモデル32に格納したファームウェアの各命令コードを順次読み出してCPUモデル31により実行することにより、プリンタの動作をシミュレートする。
[1-2.シミュレーション処理]
次に、シミュレーション装置1におけるシミュレーション処理の実行について説明する。シミュレーション装置1の制御部2は、ユーザからシミュレーション処理を開始する指示として、例えばコマンドラインにおいてシミュレーションプログラムの実行ファイルを表すファイル名が入力されると、記憶部3からシミュレーションプログラムを読み出して実行する。これにより制御部2は、図1に示した各機能ブロックを内部に形成した上で、図4に示すシミュレーション処理手順RT1を開始し、最初のステップSP1に移る。
ステップSP1において制御部2は、モデル形成部11(図1)により、プリンタモデル20(図2)を形成すると共に、モデル画像表示処理部12(図1)により、モデル表示ウィンドウ60(図3)を表示部5(図1)に表示させて、次のステップSP2に移る。
このときプリンタモデル20の各部は、新たに生成された直後であるため、各部が初期状態となっている。例えばメイン基板モデル21におけるCPUモデル31の各レジスタ(図示せず)等は、全て初期化された状態となる。またROMモデル32は、図5にダンプデータを示すように、全てのアドレスにおいて値「00H」となっている。この値「00H」は、CPUモデル31の命令コードにおいて、何も処理を行わないことを意味する「NOP」として定義されている。
ステップSP2において制御部2は、未定義コード書込部13(図1)により、プリンタモデル20(図2)におけるROMモデル32の全領域に、未定義コードである「A5H」を書き込み、次のステップSP3に移る。これによりROMモデル32は、図6にダンプデータを示すように、ROMモデル32における全てのアドレスに未定義コードである「A5H」が書き込まれた状態となる。
ステップSP3において制御部2は、ファームウェアをロードする指示、すなわち記憶部3(図1)にファイルとして格納されているファームウェアを読み出してROMモデル32に書き込む指示をユーザから受け付けたか否かを判定する。この場合、制御部2は、例えばコマンドラインにおいてシミュレーションプログラムの実行ファイルを表すファイル名が入力された際に、引数としてファームウェアのファイル名が指定されていれば、ファームウェアをロードする指示を受け付けたものと見なす。ここで肯定結果が得られると、制御部2は次のステップSP4に移る。
ステップSP4において制御部2は、記憶部3からファームウェアのファイルを正常に読み出したか否かを判定する。ここで肯定結果が得られると、制御部2は次のステップSP5に移る。
ステップSP5において制御部2は、制御プログラム書込部14(図1)により、記憶部3から読み出したファームウェア(制御プログラム)のファイルをROMモデル32に順次書き込む処理、すなわちローディングを行い、次のステップSP6に移る。これによりROMモデル32には、図7にダンプデータを示すように、ファームウェアを構成する各命令コードが、ROMモデル32における開始アドレスから順次書き込まれた状態となる。換言すれば、このときファームウェアの各命令コードは、未定義コードに上書きされていくことになる。因みにROMモデル32では、ファームウェアの容量が該ROMモデル32の記憶容量よりも小さい場合、最上位のアドレス近傍等において、ファームウェアの書込終了後も未定義コードが一部残った状態となる。
因みにプリンタモデル20では、図6に示したアドレス0x00000000からの4バイトが、リセット処理が行われた直後にジャンプするべきアドレスであるベクタアドレスADVを表している。図6では、一例として、リセット時のベクタアドレスADVがアドレス「10000H」である状態を表している。すなわちCPUモデル31は、リセット処理が行われた場合、アドレス0x00000000から4バイト分のデータをベクタアドレスADVと見なし、これらを読み出してプログラムカウンタにセットすることにより、このベクタアドレスにジャンプして処理を継続することになる。
一方、ステップSP3において否定結果が得られると、このことはファームウェアをロードする必要が無いことを表している。このとき制御部2は、次のステップSP6に移る。また制御部2は、ステップSP4において否定結果が得られた場合、すなわちユーザからファームウェアをロードする指示を受け付けたものの、当該ファームウェアを正常に読み出し得なかった場合にも、ステップSP6に移る。これは、例えばユーザがファームウェアのファイル名やパス名を誤って指定していた場合等が該当する。この場合、ROMモデル32は、ステップSP2において未定義コードが書き込まれた状態(図6)のままとなる。
ステップSP6において制御部2は、リセットの指示を受け付けたか否かを判定する。このとき制御部2は、例えば、ユーザからコマンドラインにおいて所定の引数が含まれていれば、これをリセットの指示として受け付ける。また制御部2は、ステップSP3等においてファームウェアのロードが指示されていた場合にも、リセットの指示を受け付けたものと見なす。ここで肯定結果が得られると、制御部2は次のステップSP7に移る。
ステップSP7において制御部2は、リセット処理をサブルーチンとして実行する。具体的に制御部2は、記憶部3(図1)からリセットプログラムを読み出して実行することにより、図8に示すリセット処理手順RT2を開始してステップSP11に移る。
ステップSP11において制御部2は、リセット信号をイネーブルに切り替え、次のステップSP12に移る。ここでリセット信号とは、種々の値の初期化のような、プリンタを最初から動作させるための一連の処理(以下これをリセット処理と呼ぶ)が行われている間にイネーブル状態となり、このリセット処理が終了するとディスエーブル状態になる信号である。
ステップSP12において制御部2は、CPUモデル31における各レジスタ(図示せず)や出力信号等をそれぞれ初期化し、次のステップSP13に移る。ステップSP13において制御部2は、プログラムを開始するアドレスとして、所定のベクタアドレス(例えば00000000H)をプログラムカウンタに設定し、次のステップSP14に移る。
ステップSP14において制御部2は、リセットが解除されたか否か、具体的にはリセット信号がディスエーブル状態になったか否かを判定する。ここで否定結果が得られると、制御部2はこのステップSP14を繰り返すことにより、リセット信号がディスエーブル状態に切り替わるのを待ち受ける。
一方、ステップSP14において肯定結果が得られると、制御部2は次のステップSP15に移り、リセット処理手順RT2を終了して元のシミュレーション処理手順RT1(図4)におけるステップSP7に戻り、その次のステップSP8に移る。また制御部2は、ステップSP6において否定結果が得られると、初期化処理を行うことなく、次のステップSP8に移る。
ステップSP8において制御部2は、ファームウェア実行処理をサブルーチンとして実行する。具体的に制御部2は、記憶部3(図1)からファームウェア実行プログラムを読み出して実行することにより、図9に示すファームウェア実行処理手順RT3を開始してステップSP21に移る。
ステップSP21において制御部2は、命令コード実行部15(図1)により、ROMモデル32におけるプログラムカウンタ(図示せず)が示すアドレスから命令コードをフェッチして、すなわち取り出して、次のステップSP22に移る。ステップSP22において制御部2は、命令コード実行部15(図1)により、フェッチした命令コードをデコードし、次のステップSP23に移る。
ステップSP23において制御部2は、命令コード実行部15(図1)により、命令コードが未定義コードであるか否かを判定する。ここで否定結果が得られると、このことは当該命令コードが未定義コードでは無く、予め定義された何れかの命令コードであることを表している。またこのことは、ROMモデル32における現在のアドレスに関して、ステップSP2(図4)において未定義コードが書き込まれた後に、ステップSP5においてファームウェアが正常に書き込まれたことを表している。このとき制御部2は、次のステップSP24に移る。
ステップSP24において制御部2は、命令コード実行部15(図1)により、命令コードに応じた処理に分岐し、続くステップSP25において命令コードに応じた命令処理を実行し、その次のステップSP26に移る。ステップSP26において制御部2は、プログラムカウンタを更新した後、再度ステップSP21に戻る。これにより制御部2は、次のアドレスに関して一連の処理を繰り返す。
一方、ステップSP23において肯定結果が得られると、このことは命令コードが未定義コードであることから、ROMモデル32における現在のアドレスに関して、ステップSP2(図4)において未定義コードが書き込まれた後に、ステップSP5によりファームウェアが正常に書き込まれなかったことを意味している。またこのことは、ROMモデル32に対しファームウェアの少なくとも一部が正常に書き込まれていないため、現状のシミュレーション装置1では当該ファームウェアの動作確認を正しく行い得ないことを表している。このとき制御部2は、次のステップSP27に移る。
ステップSP27において制御部2は、異常処理部16(図2)により、シミュレーションを停止させ、次のステップSP28に移る。ステップSP28において制御部2は、異常処理部16(図2)により、図10に示すように、モデル表示ウィンドウ60の手前側に重ねるようにして、異常通知ウィンドウ80を表示部5(図1)に表示させ、次のステップSP29に移る。
この異常通知ウィンドウ80には、例えば「ERROR」、「未定義命令コードをデコードしました。」及び「シミュレーションを停止しました。」といったメッセージが表示される。このため、この異常通知ウィンドウ80を目視したユーザは、未定義命令コードがデコードされたこと、及びこれに伴ってシミュレーション処理が停止されたことを直ちに把握できる。
ステップSP29において制御部2は、ファームウェア実行処理手順RT3を終了して元のシミュレーション処理手順RT1(図4)におけるステップSP8に戻り、その次のステップSP9に移って当該シミュレーション処理手順RT1も終了する。
[1-3.効果等]
以上の構成において、第1の実施の形態によるシミュレーション装置1では、シミュレーション処理の開始直後に、ROMモデル32の全領域に未定義コードを書き込むようにした(図4及び図6)。
ここで、シミュレーション装置1と比較するために、従来のシミュレーション装置101について説明する。図1と対応する図11に示すように、従来のシミュレーション装置101は、本実施の形態によるシミュレーション装置1と比較して、制御部2に代わる制御部102を有している。制御部102は、制御部2(図1)と比較して、未定義コード書込部13及び異常処理部16が省略されている点において相違するものの、他の点については同様に構成されている。
従来のシミュレーション装置101の制御部102は、シミュレーション処理を実行する場合、本実施の形態によるシミュレーション処理手順RT1(図4)に代えて、従来のシミュレーション処理手順RT11(図12)を実行する。
従来のシミュレーション処理手順RT11は、シミュレーション処理手順RT1(図4)と比較して、一部が同様に構成されているものの、ステップSP2に相当する処理が省略されており、またステップSP117において、サブルーチンとして図13に示す従来のファームウェア実行処理手順RT12を実行するようになっている。従来のファームウェア実行処理手順RT12(図13)は、ファームウェア実行処理手順RT3(図9)と比較して、一部が同様に構成されているものの、ステップSP23、SP27、SP28及びSP29に相当する処理が省略されている。
このため、従来のシミュレーション装置101では、仮にユーザが誤ったファイル名を指定していた場合、従来のシミュレーション処理手順RT11(図12)のステップSP113において否定結果となり、ステップSP115以降の処理を実行する。そうすると従来のシミュレーション装置101は、ROMモデル32をステップSP111において初期化した状態(図5)、すなわち全領域に「00H」が格納された状態のまま、ステップSP117においてファームウェア実行処理を行うことになる。
この場合、従来のシミュレーション装置101は、従来のファームウェア実行処理手順RT12(図13)において、ROMモデル32の各アドレスから命令コード「00H」を順次読み出し、何も処理を行わない、といった一連の処理を繰り返す。これに伴い、従来のシミュレーション装置101は、プリンタモデル20(図2)において何ら動作を行わないことになり、モデル表示ウィンドウ60(図3)の表示を変更せずにそのまま表示し続ける。この場合、従来のシミュレーション装置101を操作していたユーザは、プリンタモデル20が正常に動作していないことは認識し得るものの、その原因が何であるかを直ちに把握することができず、原因究明のための作業を行う必要があった。
これに対し、本実施の形態によるシミュレーション装置1では、シミュレーション処理手順RT1(図4)のステップSP2において、ROMモデル32の全領域に未定義コードを書き込んでいる(図6)。このためシミュレーション装置1では、仮にユーザが誤ったファイル名を指定していた場合、シミュレーション処理手順RT1(図4)のステップSP4において否定結果となり、ステップSP6以降の処理を実行する。そうするとシミュレーション装置1は、ROMモデル32をステップSP2において未定義コードが書き込まれた状態(図6)、すなわち全領域に「A5H」が格納された状態のまま、ステップSP8においてファームウェア実行処理を行うことになる。
この場合、シミュレーション装置1の制御部2は、ファームウェア実行処理手順RT3(図9)において、まずROMモデル32のベクタアドレスADVに格納されているアドレスが「A5A5A5A5H」であるために、これをプログラムカウンタにセットする。続いて制御部2は、アドレス「A5A5A5A5H」から未定義コード「A5H」を読み出すため、ステップSP23において肯定結果が得られ、ステップSP27及びSP28において、シミュレーションを停止すると共に異常通知ウィンドウ80(図10)を表示部5に表示させる。
これにより、シミュレーション装置1を操作していたユーザは、未定義コードがデコードされたことを直ちに認識でき、さらにこのことからファームウェアのロードに失敗した可能性が高いこと、すなわちファイル名の指定に誤りがあった可能性が高いことに容易に想到でき、ファイル名の指定を修正する等、直ちに適切に対処できる。これを換言すれば、このときユーザは、ファームウェアに未定義コード(すなわちバグ)が含まれていた可能性を相対的に低いものと捉えることができるため、ファームウェアの内容確認のような手間を要する作業を後回しにすることで、短時間で問題の原因を解消することが可能となる。
またシミュレーション装置1では、ROMモデル32から未定義コードを取り出してデコードした段階で、シミュレーションの停止及び異常通知ウィンドウ80(図10)の表示を行うことができる(図9)。このためシミュレーション装置1では、シミュレーション処理を停止させるための各レジスタ等の条件を綿密に設定する必要が無く、ユーザに余分な手間をかけさせる必要が無い。
さらにシミュレーション装置1では、ROMモデル32から取り出してデコードした命令コードが未定義コードであるか否かを基に、シミュレーションの停止及び異常通知ウィンドウ80(図10)の表示を行うようにした。このためシミュレーション装置1は、未定義コードを検知するための仕組みをプリンタモデル20に組み込む必要が無く、該プリンタモデル20やCPUモデル31等において、実際のプリンタやCPU等と同様の動作を行わせることによる高精度な検証を行うことができる。
これに加えてシミュレーション装置1では、シミュレーション処理手順RT1(図4)のステップSP2において、ROMモデル32の全領域に未定義コードを書き込むようにした。このためシミュレーション装置1では、仮に記憶部3に格納されていたファームウェアのファイルが途中から破損しており、一部のみが正常にローディングできていなかった場合であっても、未定義コードをフェッチ及びデコードした時点で、ファームウェアが正常に書き込まれていないことを検出できる。
以上の構成によれば、第1の実施の形態によるシミュレーション装置1は、シミュレーション処理において、予めROMモデル32の全領域に未定義コードを書き込んでから、ファームウェアを該ROMモデル32にロードする処理を行うようにした。シミュレーション装置1は、仮にユーザが誤ったファイル名を指定した場合、ROMモデル32に未定義コードが書き込まれた状態のままファームウェア実行処理を行うため、該未定義コードのフェッチ及びデコードを検知した場合に、シミュレーション処理を停止してユーザに通知する。これによりユーザは、未定義コードの検知を直ちに認識でき、さらにファームウェアのロードに失敗した可能性が高いことに容易に想到でき、直ちに適切に対処できる。
[2.第2の実施の形態]
[2-1.画像形成装置の構成]
図14に模式的なブロック図を示すように、第2の実施の形態によるプリンタ201は、制御基板202に操作パネル203、搬送部205、画像形成部206及び定着部207等が接続されている。因みに、実際のプリンタ201は、画像形成装置とも呼ばれており、図3のモデル表示ウィンドウ60に画像として表示されたプリンタ本体部61と類似した構成となっている。
制御基板202には、ASIC211及び外部メモリ212が設けられている。ASIC211の内部では、CPU221、外部メモリコントローラ222、インタフェース(I/F)コントローラ223、内部RAM224及び操作パネルコントローラ225が内部バス228を介して相互に接続されている。
CPU221は、第1の実施の形態におけるCPUモデル31と対応しているものの、ソフトウェア上のモデルでは無く、半導体素子等の組合せにより構成された実際のCPUであり、その内部に演算ユニットや各種レジスタ、及びプログラムカウンタ等(何れも図示せず)を有している。
外部メモリコントローラ222は、外部メモリ212と接続されている。外部メモリ212は、例えばフラッシュメモリであり、所定のアドレスが割り当てられており、種々のプログラムやデータ等を記憶することができる。外部メモリコントローラ222は、外部メモリ212にアクセスすることにより該外部メモリ212から種々のプログラムやデータ等を読み出すことや書き込むことができる。
インタフェースコントローラ223は、例えばIEEE802.3ab/u等の規格に準拠した有線LANの物理インタフェースであり、制御基板202上に設けられたコネクタ202Cを介して、図示しないコンピュータ装置等の上位装置と接続される。このためインタフェースコントローラ223は、例えば上位装置から命令やデータを受信してこれをCPU221に供給することができる。内部RAM224は、種々のプログラムやデータ等を記憶することができる。
操作パネルコントローラ225は、操作パネル203と接続されている。操作パネル203は、例えば液晶パネルにタッチセンサが組み込まれてなるタッチパネルや、LED等でなる表示ランプ、及び各種操作ボタン等により構成されている。操作パネル203は、操作パネルコントローラ225の制御に基づき、タッチパネルに種々の情報を表示し得ると共に、ユーザによるタッチ操作や操作ボタンの押下操作等を受け付けることができる。
またCPU221は、第1の実施の形態におけるCPUモデル31と同様、予め2バイトの命令コードが複数種類定義されており、外部メモリ212等から読み出して取得したデータを命令コードと見なし、この命令コードに応じた処理を実行する。さらにCPU221では、やはり第1の実施の形態と同様、256通りがある2バイトのデータのうち、一部分のみが命令コードとして定義されており、その残りが未定義となっている。CPU221は、未定義の命令コード(すなわち未定義コード)を取得した場合、第1の実施の形態と同様、所定のアドレスにジャンプする等の例外処理を行うようになっている。
ところで外部メモリ212は、図15(A)に模式的なメモリマップを示すように、大きく分けて、アドレスの先頭側からベクタアドレス格納エリアAR1、例外処理プログラムエリアAR2、及びその他のプログラムエリアAR3が設けられている。
ベクタアドレス格納エリアAR1は、複数の例外処理に応じたそれぞれのプログラム(以下これを例外処理プログラムと呼ぶ)におけるそれぞれの先頭アドレス(すなわちベクタアドレス)が格納されたテーブルとなっている。プリンタ201では、例えば図16に示すように、例外処理の要因と、例外処理プログラムの先頭アドレスが格納された格納アドレスとが、予め対応付けられている。
例外処理プログラムエリアAR2(図15)は、発生要因がリセット以外である例外処理プログラムがそれぞれ格納されている。その他のプログラムエリアAR3は、ファームウェア(すなわち制御プログラム)等、各種プログラムが格納される。発生要因がリセットである場合のベクタアドレスは、その他のプログラムエリアAR3内のアドレスが格納されている。説明の都合上、以下では、例外処理プログラムエリアAR2を例外処理プログラム記憶領域とも呼び、またその他のプログラムエリアAR3を制御プログラム記憶領域とも呼ぶ。
このような構成により、CPU221は、仮にリセット以外の例外処理が発生した場合、ベクタアドレス格納エリアAR1における、当該例外処理の発生要因に応じた格納アドレスから、例外処理プログラムの先頭アドレスを読み出してプログラムカウンタにセットする。これによりCPU221は、当該先頭アドレス(すなわち例外処理プログラムエリアAR2内)にジャンプし、当該例外処理プログラムを実行する。
またCPU221は、仮にリセットが発生した場合、ベクタアドレス格納エリアAR1におけるリセットの格納アドレスから、例外処理プログラムの先頭アドレスを読み出してプログラムカウンタにセットする。これによりCPU221は、当該アドレス(すなわちその他のプログラムエリアAR3内)にジャンプし、命令コードを順次読み出して実行する。
さらにプリンタ201では、ファームウェアを更新する場合、外部メモリ212のうちベクタアドレス格納エリアAR1及び例外処理プログラムエリアAR2内をそのまま残し、その他のプログラムエリアAR3内のみを更新するようになっている。このためプリンタ201は、仮にファームウェアの更新処理に失敗し、その他のプログラムエリアAR3内にファームウェアが格納されていない状態であったとしても、ベクタアドレス格納エリアAR1及び例外処理プログラムエリアAR2において、各ベクタアドレスの読み出しや各例外処理プログラムの実行が可能となっている。
[2-2.ファームウェア更新処理]
次に、プリンタ201においてファームウェア(制御プログラム)を更新する処理について説明する。プリンタ201のCPU221(図14)は、外部メモリコントローラ222を介して外部メモリ212から所定の更新プログラムを読み出して実行することにより、図17に示すファームウェア更新処理手順RT21を開始して最初のステップSP211に移る。
ステップSP211においてCPU221は、初期化処理を行い、次のステップSP212に移る。このときCPU221は、初期化処理として、例えば新たなファームウェアを書き込む際の先頭アドレスを、その他のプログラムエリアAR3の先頭アドレスに設定する等の処理を行う。
ステップSP212においてCPU221は、その他のプログラムエリアAR3の全領域に、例えば「A5H」のような未定義コードを書き込み、次のステップSP213に移る。これによりその他のプログラムエリアAR3は、例えば図15(C)にダンプデータを示すように、各アドレスに未定義コード「A5H」が書き込まれた状態となる。
ステップSP213においてCPU221は、インタフェースコントローラ223及びコネクタ202Cを介して、図示しない上位装置から新たなファームウェアをローディングし(すなわち受信し)、次のステップSP214に移る。
ステップSP214においてCPU221は、ローディングした新たなファームウェアを、その他のプログラムエリアAR3内における、ステップSP211において設定された先頭アドレスから順次書き込み、次のステップSP215に移る。このときCPU221は、ステップSP212において各アドレスに書き込まれた未定義コード「A5H」にそれぞれ上書きするようにして、新たなファームウェアの各命令コードを書き込んでいく。
このためプリンタ201は、仮に新たなファームウェアを外部メモリ212に書き込む途中で電源が切断された場合や、上位装置から新たなファームウェアを途中までしか取得できなかった場合等に、外部メモリ212におけるその他のプログラムエリアAR3内に、未定義コード「A5H」が残ったままの状態となる。
ステップSP215においてCPU221は、リセット処理をサブルーチンとして実行する。具体的にCPU221は、図18に示すリセット処理手順RT22を開始してステップSP221に移る。ステップSP221においてCPU221は、各レジスタ(図示せず)や出力信号等をそれぞれ初期化し、次のステップSP222に移る。
ステップSP222においてCPU221は、プログラムを開始するアドレスとして、リセットの割込処理における開始アドレスが格納されているアドレス「0000H」(図16)から開始アドレス「00000800H」を読み出し、これをプログラムカウンタに設定する。その後、CPU221は、次のステップSP223に移ってリセット処理手順RT22を終了する。
その後、CPU221は、プログラムカウンタに設定されたリセット後の開始アドレスである「00000800H」から命令コードを順次読み出すことにより、ファームウェアの実行を開始する。因みにCPU221は、ファームウェアの更新中に電源が切断された後、再び電源が投入された場合も、リセット処理を行う。
具体的にCPU221は、図19に示すファームウェア実行処理手順RT23を開始してステップSP231に移る。ステップSP231においてCPU221は、外部メモリ212におけるプログラムカウンタが示すアドレスから命令コードをフェッチして、すなわち取り出して、次のステップSP232に移る。
ステップSP232~SP236において、CPU221は、第1の実施の形態におけるファームウェア実行処理手順RT3(図9)のステップSP21~SP26とそれぞれ同様の処理を実行する。
このうちステップSP233において否定結果が得られると、このことはステップSP232においてデコードした命令コードが未定義コードでは無く、予め定義された何れかの命令コードであることを表している。またこのことは、外部メモリ212における現在のアドレスに関して、ステップSP212(図17)において未定義コードが書き込まれた後に、ステップSP214においてファームウェアが正常に書き込まれたことを表している。このときCPU221は、ステップSP234~SP235において命令コードに応じた処理を実行する。
一方、ステップSP233において肯定結果が得られると、このことは命令コードが未定義コードであることから、外部メモリ212における現在のアドレスに関して、ステップSP212(図17)において未定義コードが書き込まれた後に、ステップSP214によりファームウェアが正常に書き込まれなかったことを意味している。またこのことは、外部メモリ212に対しファームウェアの少なくとも一部が正常に書き込まれていないため、プリンタ201が正常に動作し得ないことを表している。このときCPU221は、次のステップSP237に移る。
ステップSP237においてCPU221は、に起因したベクタアドレス格納エリアAR1における「未定義コード実行」の格納アドレス、例えば「0008H-000BH」から、例外処理プログラムの先頭アドレスを読み出してプログラムカウンタにセットする。
因みに、未定義コード実行の例外処理プログラムは、上述したように、例外処理プログラムエリアAR2(図15)内に格納されており、ファームウェアの更新時にも書き換えが行われないため、該ファームウェアの書き込みに失敗した場合であっても、外部メモリ212に格納されたままとなっている。
これによりCPU221は、サブルーチンとして、図20に示す未定義コード実行例外処理手順RT24を開始してステップSP241に移る。ステップSP241においてCPU221は、操作パネルコントローラ225(図14)を制御することにより、操作パネル203のタッチパネルに所定のエラー表示画面を表示させる。
このエラー表示画面には、第1の実施の形態における異常通知ウィンドウ80(図10)と同様に、エラーが発生したこと、及び未定義コードをデコードしたこと等がテキストや図形等により表示される。その後、CPU221は、次のステップSP242に移って未定義コード実行例外処理手順RT24を終了する。
[2-3.効果等]
以上の構成において、第2の実施の形態によるプリンタ201は、外部メモリ212にベクタアドレス格納エリアAR1、例外処理プログラムエリアAR2及びその他のプログラムエリアAR3を設け(図15)、ファームウェアの更新時にその他のプログラムエリアAR3のみを書き換えるようにした。
そのうえでプリンタ201は、ファームウェアの更新時に、その他のプログラムエリアAR3内の全領域に未定義コードを書き込んでから、新たなファームウェアを書き込み、その後にリセット処理を行うようにした。
このためプリンタ201は、仮に新たなファームウェアの書き込みに失敗した場合、外部メモリ212のその他のプログラムエリアAR3内における少なくとも一部のアドレスに、未定義コードが残っている状態となる。
例えば、図15に示したように、アドレス「00000800H」は、ファームウェア更新処理手順RT21(図17)のステップSP212において未定義コード「A5H」が書き込まれた後、ステップSP214において新たなファームウェアの命令コードが書き込まれず、この未定義コード「A5H」がそのまま残された状態となっている。
この場合、プリンタ201のCPU221は、ファームウェア実行処理手順RT23(図19)において、まずベクタアドレス格納エリアAR1のうちリセットが発生要因である例外処理の格納アドレスが「0000H-0003H」であるため(図16)、プログラムカウンタにアドレス「00000800H」がセットされている(図15)。
次にCPU221は、このアドレス「00000800H」から未定義コード「A5H」をフェッチしてデコードし、ステップSP233において肯定結果が得られ、ステップSP237において未定義コード実行例外処理手順RT24(図20)を実行し、所定のエラー表示画面を操作パネル203のタッチパネルに表示させることができる。
この結果、プリンタ201は、ファームウェアの更新処理に失敗し、外部メモリ212のその他のプログラムエリアAR3内にファームウェアが適切に格納されていなかった場合、エラー表示画面を操作パネル203に表示することで、ユーザに対し該ファームウェアが正常に書き込まれていないことを認識させることができる。
これによりプリンタ201は、ユーザに対し、電源の切断やファームウェアの再更新、或いはサービスマンの手配等、正常な状態に復旧させるための適切な処置を行わせることができるので、CPU221が暴走した状態を継続することによるハードウェアへのダメージを未然に防止できる。
換言すれば、第2の実施の形態によるプリンタ201では、第1の実施の形態によるシミュレーション装置1と同様、ファームウェアの書き込みや更新を行う前に、予め未定義コードを書き込んでおくことにより、当該未定義コードをデコードしたか否かを基に、当該ファームウェアの書込や更新に失敗したか否かを容易に判別することができる。
またプリンタ201は、ファームウェアを更新する際に、外部メモリ212を全て書き換えるのではなく、その他のプログラムエリアAR3内のみを書き換えるようにした。これによりプリンタ201は、ファームウェアの更新処理中であってもベクタアドレスや例外処理プログラムを維持でき、当該ファームウェアの更新に失敗した場合にも、残っているベクタアドレスや例外処理プログラムを利用して、ユーザへの通知等を行うことができる。
他の観点から見れば、プリンタ201は、その他のプログラムエリアAR3内にファームウェアが書き込まれていない状態であっても、ベクタアドレス格納エリアAR1及び例外処理プログラムエリアAR2の記憶内容を利用することで、エラー表示画面の表示を行うことができる。このためプリンタ201では、CPU221を監視する専用のハードウェアを別途設ける必要が無く、一般的な構成でなるASIC211をそのまま利用でき、設計や動作検証等に要するコストを抑えることができる。
その他の点においても、第2の実施の形態では、第1の実施の形態と同様の作用効果を奏し得る。
以上の構成によれば、第2の実施の形態によるプリンタ201では、ファームウェアを更新する際に、予め外部メモリ212におけるその他のプログラムエリアAR3内の全領域に未定義コードを書き込んでから、新たなファームウェアを書き込む処理を行うようにした。プリンタ201は、ファームウェアの書き込みを正常に完了できなかった場合、その他のプログラムエリアAR3に未定義コードが書き込まれた状態のままファームウェア実行処理を行うため、該未定義コードのフェッチ及びデコードを検知した場合に、例外処理を実行して操作パネル203にエラー表示画面を表示してユーザに通知する。これによりユーザは、未定義コードの検知を直ちに認識でき、さらにファームウェアの書き込みに失敗した可能性が高いことに容易に想到でき、適切な対処を迅速に行うことができる。
[3.第3の実施の形態]
[3-1.画像形成装置の構成]
図14と対応する図21に模式的なブロック図を示すように、第3の実施の形態によるプリンタ301は、第2の実施の形態によるプリンタ201と比較して、制御基板202に代わる制御基板302を有する点、及びブザー308を有する点において相違するものの、他の点については同様に構成されている。ブザー308は、制御基板302と接続されており、該制御基板302の制御に基づいて音を発生させ、また停止させる。
制御基板302は、第2の実施の形態における制御基板202(図14)と比較して、ASIC211に代わるASIC311を有する点において相違するものの、他の点については同様に構成されている。ASIC311は、第2の実施の形態におけるASIC211と比較して、CPU221に代わるCPU321を有する点、並びにエラー通報回路326を有する点において相違するものの、他の点については同様に構成されている。
ただしプリンタ301では、第2の実施の形態によるプリンタ201と異なり、外部メモリ212に格納されているファームウェアを内部RAM224に転送(すなわちコピー)した後、CPU321が当該内部RAM224からファームウェアの命令コードを順次読み出して実行するようになっている。
内部RAM224は、図15(A)と対応する図22(A)に模式的なメモリマップを示すように、第2の実施の形態における外部メモリ212と同様に、アドレスの先頭側からベクタアドレス格納エリアAR1、例外処理プログラムエリアAR2、及びその他のプログラムエリアAR3が設けられている。
ただしプリンタ301では、外部メモリ212から内部RAM224へファームウェアを転送する際に、第2の実施の形態においてファームウェアを更新する場合とは異なり、ベクタアドレス格納エリアAR1、例外処理プログラムエリアAR2、及びその他のプログラムエリアAR3の全ての領域を書き換えるようになっている。
エラー通報回路326(図21)は、その内部に図示しないCPU、ROM及びRAM等を有しており、当該ROMに所定のエラー通報プログラムが予め格納されている。またエラー通報回路326は、CPU321及び内部バス228と接続されている。CPU321は、命令コードをフェッチする際に、フェッチ信号を生成してエラー通報回路326に通知するようになっている。これによりエラー通報回路326は、CPU321における命令コードのフェッチサイクルを知得することができる。
またエラー通報回路326は、内部バス228を監視することにより、該内部バス228上を流れているデータを取得する。内部バス228では、様々なデータが流れるものの、タイミングによっては、CPU321が内部RAM224から読み出したデータ(すなわち命令コード)が流れている。
さらにエラー通報回路326は、内部バス228から取得したデータ(すなわち命令コード)が未定義コードであるか否かを判定した上で、未定義コードであった場合に、ブザー308を制御して鳴動させること、例えば所定の通知音を発生させることができる。
[3-2.ファームウェア転送処理]
次に、プリンタ301においてファームウェア(制御プログラム)を転送する処理について説明する。プリンタ301のCPU321(図21)は、外部メモリコントローラ222を介して外部メモリ212から所定の転送プログラムを読み出して実行することにより、図23に示すファームウェア転送処理手順RT31を開始して最初のステップSP311に移る。
ステップSP311においてCPU321は、初期化処理を行い、次のステップSP312に移る。このときCPU321は、初期化処理として、例えば内部RAM224にファームウェアを書き込む際の先頭アドレスを、ベクタアドレス格納エリアAR1の先頭アドレスに設定する等の処理を行う。
ステップSP312においてCPU321は、内部RAM224における全ての領域に対し、例えば「A5H」のような未定義コードを書き込み、次のステップSP313に移る。これにより内部RAM224は、例えば図22(B)及び(C)にダンプデータを示すように、全領域に未定義コード「A5H」が書き込まれた状態となる。
ステップSP313においてCPU321は、外部メモリ212から外部メモリコントローラ222を介して内部RAM224へ各データや各プログラム、すなわちベクタアドレスや例外処理プログラム、及びファームウェア等を順次転送し、次のステップSP314に移る。このときCPU321は、ステップSP312において各アドレスに書き込まれた未定義コード「A5H」にそれぞれ上書きするようにして、各データや各プログラムの各命令コードを順次書き込んでいく。
このためプリンタ301は、仮に各データや各プログラムを外部メモリ212から内部RAM224へ転送する途中でエラーが発生するなどして中断した場合等に、該内部RAM224内に、未定義コード「A5H」が残ったままの状態となる。
ステップSP314においてCPU321は、第2の実施の形態と同様に、サブルーチンとしてリセット処理を実行し、その次のステップSP315に移ってファームウェア転送処理手順RT31を終了する。
これによりCPU321は、第2の実施の形態と同様に、プログラムを開始するアドレスとして、リセットの割込処理における開始アドレスが格納されているアドレス「0000H」(図16)から開始アドレスを読み出してプログラムカウンタに設定する。その後、CPU321は、内部RAM224における開始アドレスから命令コードを順次読み出すことにより、ファームウェアの実行を開始する。このときCPU321は、内部RAM224から命令コードをフェッチする度に、エラー通報回路326に対してフェッチ信号を送信する。
一方、エラー通報回路326は、電源が投入されると、図24に示すエラー通報処理手順RT32を開始して最初のステップSP321に移る。ステップSP321においてエラー通報回路326は、CPU321からフェッチ信号を受信したか否かを判定する。ここで否定結果が得られると、エラー通報回路326はこのステップSP321を繰り返すことにより、CPU321からのフェッチ信号の受信を待ち受ける。
一方、ステップSP321において肯定結果が得られると、このことはCPU321からフェッチ信号を受信したため、該CPU321がフェッチした命令コードと同一の命令コードを当該エラー通報回路326としても取得する必要があることを表している。このときエラー通報回路326は、次のステップSP322に移る。
ステップSP322においてエラー通報回路326は、内部バス228からデータ(すなわち命令コード)をラッチし(すなわち取得し)、次のステップSP323に移る。
ステップSP323においてエラー通報回路326は、内部バス228からラッチしたデータが未定義コードであるか否かを判定する。
ここで否定結果が得られると、このことはCPU321がフェッチした命令コードが未定義コードではないため、少なくともこの命令コードに関して、ステップSP313(図23)において外部メモリ212から内部RAM224へ各データ又は各プログラムを正常に転送できたことを表している。このときエラー通報回路326は、再度ステップSP321に戻り、CPU321により次の命令コードがフェッチされるのを待ち受ける。
一方、ステップSP321において肯定結果が得られると、このことは少なくともこの命令コードをフェッチしたアドレスに関して、ステップSP312(図23)において書き込まれた未定義コードが残っていることを表している。すなわちこれは、当該アドレスに関して、ステップSP313(図23)において外部メモリ212から内部RAM224へ各データ又は各プログラムを正常に転送できていないことを表している。このときエラー通報回路326は、次のステップSP324に移る。
ステップSP324においてエラー通報回路326は、エラー発生信号を生成してCPU321へ送信し、次のステップSP325に移る。これに応じてCPU321は、所定の例外処理を実行する。ステップSP325においてエラー通報回路326は、ブザー308を鳴動させることにより、未定義コードがフェッチ及びデコードされたことをユーザに通知する。その後、エラー通報回路326は、つぎのステップSP326に移ってエラー通報処理手順RT32を終了する。
ここで、プリンタ301でのエラー通報処理における各種データや信号のタイミングに関して、図25のタイミングチャートを参照しながら説明する。図25(A)~(D)は、内部バス228のクロック、アドレス、リード信号、及びデータバスをそれぞれ表している。また図25(E)はCPU321のフェッチ信号を表しており、図25(F)~(G)はエラー通報回路326のラッチデータ及びエラー信号をそれぞれ表している。
内部バス228のクロック(A)は、ASIC311内に設けられたクロック回路(図示せず)において生成されるクロック信号であり、該ASIC311内の各回路や内部バス228がこのクロック信号に同期して動作するようになっている。説明の都合上、以下では、図25における前半の2クロック分をリードサイクルRC1とし、後半の2クロック分をリードサイクルRC2とする。
内部バス228のアドレス(B)は、該内部バス228のうちアドレスを表すためのアドレスバス上を流れるデータを表す。リード信号(C)は、内部バス228からデータを読み出すタイミングを表す信号であり、負論理となっている。データバス(D)は、内部バス228のうちデータそのものを表すデータバス上を流れるデータを表す。
CPU321のフェッチ信号(E)は、CPU321においてフェッチ処理が行われるタイミングを表す信号であり、負論理となっている。エラー通報回路326のラッチデータ(F)は、エラー通報回路326により内部バス228からラッチされたデータを表す。エラー信号(G)は、エラー通報回路326においてラッチしたデータが未定義コードであると判定した場合に、当該エラー通報回路326が生成するエラー信号であり、正論理となっている。
図25において、前半のリードサイクルRC1では、CPU321が内部RAM224からデータアドレスを読み出している。すなわちこの場合、CPU321は命令コードを読み出していないため、フェッチ処理を行っていない。この場合、フェッチ信号(E)は、非アクティブであることを表すハイレベルのままである。このときエラー通報回路326は、内部バス228からデータをラッチせず、未定義コードか否かの判定処理も行わない。
一方、図25における後半のリードサイクルRC2では、CPU321が内部RAM224から命令フェッチアドレスを読み出している。すなわちこの場合、CPU321は命令コードを読み出してフェッチ処理を行っており、これに伴ってフェッチ信号(E)をローレベルに立ち下げる。このときエラー通報回路326は、内部バス228からデータ(すなわち命令コード)をラッチし(F)、その内部で未定義コードか否かの判定処理を行う。ここでエラー通報回路326は、ラッチした命令コードが未定義コード「A5H」であるため、エラー信号(G)をハイレベルに立ち上げてアクティブ状態とし、CPU321にエラーが発生したことを通知する。
[3-3.効果等]
以上の構成において、第3の実施の形態によるプリンタ301は、起動後に内部RAM224の全領域に未定義コードを書き込んだ後、外部メモリ212から各データや各プログラムを内部RAM224に転送して書き込む。その後、プリンタ301は、リセット処理を行い、CPU321が内部RAM224にアクセスして命令コードを読み出して実行する。
またプリンタ301は、ASIC311に設けたエラー通報回路326により、CPU321から得られるフェッチ信号を基に内部バス228から命令コードをラッチし、これが未定義コードであるか否かを判定するようにした。
プリンタ301は、仮に外部メモリ212から内部RAM224への各データや各プログラムの転送に失敗した場合、該内部RAM224における少なくとも一部のアドレスに、未定義コードが残っている状態となる。このような場合、プリンタ301は、CPU321がこの未定義コードをフェッチした段階で、エラー通報回路326が内部バス228からラッチした命令コードを当該未定義コードと判定し、該CPU321にエラー発生信号を送信すると共に、ブザー308を鳴動させる。
これによりプリンタ301は、内部RAM224に各データや各プログラムが正常に書き込まれておらず、CPU321により正常なエラー処理を行い得ない場合であったとしても、エラー通報回路326によってブザー308を鳴動させ、ユーザに対して内部でエラーが発生していることを通知できる。
換言すれば、第3の実施の形態によるプリンタ301では、第1の実施の形態によるシミュレーション装置1等と同様、ファームウェア等の書き込みを行う前に、予め未定義コードを書き込んでおくことにより、当該未定義コードをフェッチしたか否かを基に、当該ファームウェアの書込に失敗したか否かを容易に判別することができる。
またプリンタ301では、第2の実施の形態によるプリンタ201とは異なり、CPU321がフェッチした命令コードが未定義コードであるか否かを、該CPU321とは別に設けたエラー通報回路326により判定する。このためプリンタ301では、CPU321において判定する場合と比較して、処理負荷を軽減することができる。またプリンタ301では、例えば外部メモリ212に格納しているベクタアドレス格納エリアAR1及び例外処理プログラムエリアAR2内の各データを予め差し替えておくことにより、内部RAM224におけるベクタアドレスや例外処理プログラムを更新することもできる。
その他の点においても、第3の実施の形態では、第1及び第2の実施の形態と同様の作用効果を奏し得る。
以上の構成によれば、第3の実施の形態によるプリンタ201では、起動後に内部RAM224の全領域に未定義コードを書き込んだ後、外部メモリ212から各データや各プログラムを内部RAM224に転送して書き込む。プリンタ301は、各データや各プログラムを正常に転送できなかった場合、未定義コードが書き込まれた状態のままファームウェアを実行するため、該未定義コードをフェッチした場合、エラー通報回路326によりこれを検知してブザー308を鳴動させ、ユーザに通知する。これによりユーザは、プリンタ301の内部において異常が発生したことを直ちに認識でき、適切な対処を行うことができる。
[4.他の実施の形態]
なお上述した第1の実施の形態においては、シミュレーション処理手順RT1(図4)のステップSP2において、ROMモデル32に対し、未定義コードとして「A5H」を書き込む場合について述べた。しかしながら本発明はこれに限らず、他の種々の未定義コードを書き込んでも良い。要は、CPUモデル31において命令が割り当てられていないコードであれば良い。第2及び第3の実施の形態についても同様である。
さらに上述した第1の実施の形態においては、ROMモデル32の全領域に未定義コード「A5H」を書き込む場合について述べた。しかしながら本発明はこれに限らず、例えばROMモデル32のうち開始アドレスの近傍や、未定義コードをベクタアドレスとした場合に示すアドレスの近傍等、一部の領域にのみ未定義コードを書き込んでも良い。これにより、未定義コードの書き込みに要する時間を短縮できる。第2及び第3の実施の形態についても同様である。
さらに上述した第1の実施の形態においては、異常通知ウィンドウ80(図10)に未定義コードをデコードした旨及びシミュレーション処理を停止した旨を表示する場合について述べた。しかしながら本発明はこれに限らず、例えばファームウェアのローディングに失敗した可能性がある旨を表示する等、他の情報を通知しても良い。第2の実施の形態についても同様である。
さらに上述した第3の実施の形態においては、プリンタ301にブザー308を設け、エラー通報回路326により、CPU321においてフェッチしたデータが未定義コードであると判定した場合、当該ブザー308を鳴動させる場合について述べた。しかしながら本発明はこれに限らず、例えばプリンタ301にLED等による通知ランプを設けておき、この通知ランプを点灯或いは点滅させても良い。また、第2の実施の形態と同様に、操作パネル203に所定のエラー表示画面を表示させても良い。さらには、これらを適宜組み合わせても良い。
さらに上述した第3の実施の形態においては、エラー通報回路326をASIC311内に設ける場合について述べた(図21)。しかしながら本発明はこれに限らず、例えばエラー通報回路326を制御基板302上におけるASIC311から独立した半導体チップとして構成しても良い。この場合、ASIC311からエラー通報回路326に対し、CPU321のフェッチ信号や内部バス228に流れるデータを供給できれば良い。
また上述した第1の実施の形態においては、シミュレーション装置1がプリンタのシミュレーション処理を行う場合について述べた。しかしながら本発明はこれに限らず、シミュレーション装置1が他の種々の情報機器のシミュレーション処理を行うようにしても良い。
さらに上述した第2の実施の形態においては、プリンタ201のファームウェアを更新する場合について述べた。しかしながら本発明はこれに限らず、他の種々の情報機器におけるファームウェアを更新する場合に適用しても良い。第3の実施の形態についても同様である。
さらに上述した第1の実施の形態においては、シミュレーション装置1がファームウェアを記憶部3から読み出す場合について述べた。しかしながら本発明はこれに限らず、例えば通信部4及び所定のネットワークを介してシミュレーション装置1と接続されたサーバ装置(図示せず)等の情報処理装置からファームウェアを取得(受信)しても良い。
さらに上述した第1の実施の形態においては、シミュレーション装置1が実行するシミュレーションプログラムを記憶部3に記憶させておく場合について述べた。しかしながら本発明はこれに限らず、例えば通信部4及び所定のネットワークを介してシミュレーション装置1と接続されたサーバ装置(図示せず)等の情報処理装置からシミュレーションプログラムを取得して実行しても良い。
さらに本発明は、上述した各実施の形態及び他の実施の形態に限定されるものではない。すなわち本発明は、上述した各実施の形態と上述した他の実施の形態の一部又は全部を任意に組み合わせた実施の形態や、一部を抽出した実施の形態にもその適用範囲が及ぶものである。
さらに上述した実施の形態においては、モデル形成部としてのモデル形成部11と、未定義コード書込部としての未定義コード書込部13と、制御プログラム書込部としての制御プログラム書込部14と、命令コード実行部としての命令コード実行部15とによってシミュレーション装置としてのシミュレーション装置1を構成する場合について述べた。しかしながら本発明はこれに限らず、その他種々の構成でなるモデル形成部と、未定義コード書込部と、制御プログラム書込部と、命令コード実行部とによってシミュレーション装置を構成しても良い。
本発明は、例えばプリンタのような情報処理装置のシミュレーション処理を行うシミュレーション装置で利用できる。
1……シミュレーション装置、2……制御部、3……記憶部、4……通信部、5……表示部、6……操作部、8……バス、11……モデル形成部、12……モデル画像表示処理部、13……未定義コード書込部、14……制御プログラム書込部、15……命令コード実行部、16……異常処理部、20……プリンタモデル、60……モデル表示ウィンドウ、80……異常通知ウィンドウ、201、301……プリンタ、202、302……制御基板、202C……コネクタ、203……操作パネル、211、311……ASIC、212……外部メモリ、221、321……CPU、222……外部メモリコントローラ、224……内部RAM、225……操作パネルコントローラ、228……内部バス、308……ブザー、326……エラー通報回路、AR1……ベクタアドレス格納エリア、AR2……例外処理プログラムエリア、AR3……その他のプログラムエリア。

Claims (11)

  1. 命令コードを読み込んで実行するCPU(Central Processing Unit)を模したCPUモデルと、複数の前記命令コードにより構成された制御プログラムを格納する記憶部を模した記憶部モデルとを形成するモデル形成部と、
    前記記憶部モデルにおける少なくとも一部の記憶領域に、前記CPUにおいて定義されていない未定義コードを書き込む未定義コード書込部と、
    前記記憶部モデルにおける前記未定義コードが書き込まれた前記記憶領域に、ユーザに指定された前記制御プログラムを書き込む制御プログラム書込部と、
    前記記憶部モデルから前記命令コードを順次読み出して前記CPUモデルにより順次実行させる命令コード実行部と
    を具えることを特徴とするシミュレーション装置。
  2. 前記記憶部モデルから読み出された前記命令コードが前記未定義コードであった場合、当該未定義コードが読み出されたことを前記ユーザに通知する異常処理部
    をさらに具えることを特徴とする請求項1に記載のシミュレーション装置。
  3. 前記異常処理部は、前記記憶部モデルから読み出された前記命令コードが前記未定義コードであった場合、前記命令コード実行部による前記命令コードの読出及び実行を停止させる
    ことを特徴とする請求項2に記載のシミュレーション装置。
  4. 前記未定義コード書込部は、前記記憶部モデルにおける、前記CPUが最初に読み出すアドレスを含む前記記憶領域に、前記未定義コードを書き込む
    ことを特徴とする請求項1に記載のシミュレーション装置。
  5. 前記未定義コード書込部は、前記記憶部モデルにおける、前記CPUが最初にジャンプするアドレスを含む前記記憶領域に、前記未定義コードを書き込む
    ことを特徴とする請求項1に記載のシミュレーション装置。
  6. 前記未定義コード書込部は、前記記憶部モデルにおける全ての前記記憶領域に前記未定義コードを書き込む
    ことを特徴とする請求項1に記載のシミュレーション装置。
  7. モデル形成部により、命令コードを読み込んで実行するCPUを模したCPUモデルと、複数の前記命令コードにより構成された制御プログラムを格納する記憶部を模した記憶部モデルとを形成するモデル形成ステップと、
    未定義コード書込部により、前記記憶部モデルにおける少なくとも一部の記憶領域に、前記CPUにおいて定義されていない未定義コードを書き込む未定義コード書込ステップと、
    制御プログラム書込部により、前記記憶部モデルにおける前記未定義コードが書き込まれた前記記憶領域に、ユーザに指定された前記制御プログラムを書き込む制御プログラム書込ステップと、
    命令コード実行部により、前記記憶部モデルから前記命令コードを順次読み出して前記CPUモデルにより順次実行させる命令コード実行ステップと
    を具えることを特徴とするシミュレーション方法。
  8. 命令コードを読み込んで実行するCPUと、
    複数の前記命令コードにより構成された制御プログラムを格納する記憶部と、
    前記記憶部における少なくとも一部の記憶領域に、前記CPUにおいて定義されていない未定義コードを書き込む未定義コード書込部と、
    前記記憶部における前記未定義コードが書き込まれた前記記憶領域に、前記制御プログラムを書き込む制御プログラム書込部と、
    前記CPUにより前記記憶部から前記制御プログラムの前記命令コードを読み出して実行する場合に、当該命令コードが前記未定義コードであった場合、前記制御プログラムの実行を停止させる停止処理、及び当該未定義コードが読み出されたことを通知する通知処理のうち少なくとも一方を行う異常処理部と
    を具えることを特徴とする情報処理装置。
  9. 前記記憶部は、前記制御プログラムを格納する制御プログラム記憶領域とは別に例外処理を実行するための例外処理プログラムが格納される記憶領域である例外処理プログラム記憶領域を有し、
    前記未定義コード書込部は、前記例外処理プログラム記憶領域には当該未定義コードを書き込まずに前記記憶部の前記制御プログラム記憶領域に前記未定義コードを書き込み、
    前記制御プログラム書込部は、前記記憶部の前記制御プログラム記憶領域に前記制御プログラムを書き込む
    ことを特徴とする請求項8に記載の情報処理装置。
  10. 前記異常処理部は、前記CPUとは別に構成されたエラー通報回路である
    ことを特徴とする請求項8に記載の情報処理装置。
  11. 前記異常処理部は、前記記憶部から前記CPUに供給される前記命令コードをラッチし、当該命令コードが前記未定義コードであるか否かを判定する
    ことを特徴とする請求項10に記載の情報処理装置。
JP2019075130A 2019-04-10 2019-04-10 シミュレーション装置、シミュレーション方法及び情報処理装置 Active JP7226049B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019075130A JP7226049B2 (ja) 2019-04-10 2019-04-10 シミュレーション装置、シミュレーション方法及び情報処理装置
US16/837,963 US20200326950A1 (en) 2019-04-10 2020-04-01 Simulation apparatus, simulation method, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019075130A JP7226049B2 (ja) 2019-04-10 2019-04-10 シミュレーション装置、シミュレーション方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2020173616A JP2020173616A (ja) 2020-10-22
JP7226049B2 true JP7226049B2 (ja) 2023-02-21

Family

ID=72747855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019075130A Active JP7226049B2 (ja) 2019-04-10 2019-04-10 シミュレーション装置、シミュレーション方法及び情報処理装置

Country Status (2)

Country Link
US (1) US20200326950A1 (ja)
JP (1) JP7226049B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325120A (ja) 2000-03-10 2001-11-22 Fujitsu Ltd 情報処理装置
JP2007323167A (ja) 2006-05-30 2007-12-13 Oki Electric Ind Co Ltd メモリテスト方法
JP2012018641A (ja) 2010-07-09 2012-01-26 Toshiba Corp ソフトウェア開発システム
JP2015108964A (ja) 2013-12-04 2015-06-11 キヤノン株式会社 情報処理装置、その制御方法、プログラム、及び記憶媒体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04165433A (ja) * 1990-10-29 1992-06-11 Nec Software Ltd オペレーティングシステムのデバグ方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325120A (ja) 2000-03-10 2001-11-22 Fujitsu Ltd 情報処理装置
JP2007323167A (ja) 2006-05-30 2007-12-13 Oki Electric Ind Co Ltd メモリテスト方法
JP2012018641A (ja) 2010-07-09 2012-01-26 Toshiba Corp ソフトウェア開発システム
JP2015108964A (ja) 2013-12-04 2015-06-11 キヤノン株式会社 情報処理装置、その制御方法、プログラム、及び記憶媒体

Also Published As

Publication number Publication date
JP2020173616A (ja) 2020-10-22
US20200326950A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
CN103930878B (zh) 用于存储器验证的方法、装置及系统
US10613773B2 (en) Backing up firmware during initialization of device
US6438688B1 (en) Method and computer for locally and remotely updating a basic input output system (BIOS) utilizing one update file
US9858084B2 (en) Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US8407526B1 (en) Updating a firmware image using a firmware debugger application
JP6124994B2 (ja) レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム
JP2007206885A (ja) コンピュータシステム及びシステム起動方法
GB2436215A (en) Method for updating a system BIOS stored in NVRAM
TW201510866A (zh) Uefi bios開機及更新之系統及方法、記錄媒體及電腦程式產品
JPS601643B2 (ja) デジタルコンピュ−タ用の初期化回路
JPH05204617A (ja) 特定のコンピュータ・ハードウェア・アーキテクチャのために作成されたソフトウェアのバージョンの互換性を確保する装置および方法
JP6157811B2 (ja) ブート前データ検証のための方法及びシステム
TW201520895A (zh) Bios自動恢復系統及方法
CN112947977A (zh) 一种软件在线升级方法及系统
TWI478061B (zh) 更新韌體的方法
TW201314574A (zh) 用於電腦系統之基本輸入輸出系統程式更新方法及更新裝置
JP7226049B2 (ja) シミュレーション装置、シミュレーション方法及び情報処理装置
US8572598B1 (en) Method and system for upgrading software in a computing device
WO1991016678A1 (fr) Procede de remise a zero d'un module adaptateur suite a une panne et syteme d'ordinateur executant ledit procede
TW202137007A (zh) 儲存電路以及運作方法
JP2016024798A (ja) 冗長化コントローラシステム、その待機系コントローラ
JPH06314202A (ja) 画像形成装置
KR100505700B1 (ko) 엠시유를 이용하여 다양한 목표 시스템을 검증하는 재탑재에뮬레이션 장치, 이를 구비한 마이크로 컴퓨터 개발시스템, 및 그 방법
CN112912958A (zh) 使用内置自测控制器测试只读存储器
JP7411471B2 (ja) 情報処理装置及び通信システム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20191118

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20210615

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230123

R150 Certificate of patent or registration of utility model

Ref document number: 7226049

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150