JP6070220B2 - 電子機器用のデバイス - Google Patents

電子機器用のデバイス Download PDF

Info

Publication number
JP6070220B2
JP6070220B2 JP2013014413A JP2013014413A JP6070220B2 JP 6070220 B2 JP6070220 B2 JP 6070220B2 JP 2013014413 A JP2013014413 A JP 2013014413A JP 2013014413 A JP2013014413 A JP 2013014413A JP 6070220 B2 JP6070220 B2 JP 6070220B2
Authority
JP
Japan
Prior art keywords
buffer
data
controller
control unit
log
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.)
Expired - Fee Related
Application number
JP2013014413A
Other languages
English (en)
Other versions
JP2013225291A (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.)
Ricoh Co Ltd
Original Assignee
Ricoh 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2013014413A priority Critical patent/JP6070220B2/ja
Publication of JP2013225291A publication Critical patent/JP2013225291A/ja
Application granted granted Critical
Publication of JP6070220B2 publication Critical patent/JP6070220B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、ASIC(Application Specific Integrated Circuit)が実装された電子機器用のデバイスに関する。
多機能周辺装置MFP(Multifunction Peripheral)やプリンタ等の画像形成装置を一例とする電子機器には、画像処理をハードウエアで行うための特定用途向け半導体集積回路(ASIC)が実装されている。
電子機器を製品化する前に行われる試験では、ASICの制御(レジスタ設定)の間違いに起因する障害(例えば異常画像)が発生する場合がある。その障害の原因を特定するための情報としては、ASICのレジスタアクセスや、DMAC(Direct Memory Access Controller)の動作状態、割り込み等の内部モジュール動作のトレース記録が必要になる。レジスタアクセスを記録する方法としては、インサーキット・エミュレータ(In Circuit Emulator(ICE)を用いる方法が既に知られている。
ICEを用いた方法では、CPUからASICのレジスタへのアクセスを記録することは可能である。一方、ICEを用いた方法では、ASICの内部モジュールの動作(例えばDMACの起動)との詳細なタイミング関係がわからず、その結果、障害の原因特定までに時間がかかってしまうという問題があった。
それに対して、レジスタアクセスやDMACの動作状態等の情報をASIC内部に備えたバッファメモリにログデータとして蓄積する方法が考えられる。また、DMAのアクセスログをASIC内ではなくDMAによりメモリ上に蓄積する方法も提案されている(特許文献1参照)。特許文献1では、外付けのデバッグ装置を設けることなく、効率的に低コストでデバッグ作業を行なうことを目的として、デバッグ用のアクセスアドレス情報をメモリ上に書き込むことでDMAC動作の履歴情報を記録する技術が開示されている。
CPUからのレジスタアクセスや、内部信号の挙動をモニターしてログを作成し、作成したログの内蔵メモリへの保存、外部への出力が可能なハードウェアをデバイス内部に備えることで、デバッグの容易化を図る方法も提案されている(特許文献2参照)。
しかし、レジスタアクセスやDMACの動作状態等の情報をASIC内部に備えたバッファメモリにログデータとして蓄積する方法を採用すると、ASICに実装されているレジスタ数や、各レジスタ数のアクセス回数に応じてログデータの情報量が増大する。このため、その分だけバッファメモリサイズが必要になり回路規模が増大しコストが高くなるという問題がある。
また、特許文献1では、DMAのアクセスログをASIC内ではなくDMAによりメモリ上に蓄積する。このため、本来のデータ転送帯域に影響を与え、結果として異常画像を発生させる可能性があるという問題がある。
また、特許文献2に示されるように、レジスタアクセスや内部信号をモニターしログを作成する方法では、ログとして取得した全てのアクセスに対してアドレス(32bit)、データ(32bit)の情報をそのままログとして保存するため、解析時間が長い場合や取得するアクセスの種類数が多い場合にはログのデータ量が膨大になり、保存に必要な内蔵メモリの容量が大きくコストが高くつくという問題がある。
上記課題に鑑み、本発明の目的とするところは、回路規模拡大を抑止しながら、デバッグのためのログデータを記録することが可能な電子機器用のデバイスを提供することにある。
上記課題を解決するために、本発明のある観点によれば、
データを入出力する入出力装置と、
前記データを記憶するメモリと、
前記メモリへの前記データの転送を制御するエンジン制御部と、
前記入出力装置と前記メモリとの間で前記データの転送を行うコントローラと、を備え、
前記エンジン制御部は、
前記データを一時的に蓄積するバッファと、
デバッグ用のログデータを生成し、前記エンジン制御部内の前記バッファの空き状況及び前記コントローラのデータ転送状況に応じて、前記生成されたログデータを前記バッファへ蓄積するか又は前記コントローラへ転送するデバッグ制御部と、
を有することを特徴とする電子機器用のデバイスが提供される。
本発明によれば、回路規模拡大を抑止しながら、デバッグのためのログデータを記録することができる。
第1及び第2実施形態に係る画像形成装置用のデバイスの全体構成図。 一般的なエンジンASICの内部構成図。 第1実施形態に係るコントローラASICの内部構成図。 第1実施形態に係るエンジンASICの内部構成図。 第1実施形態に係るデバッグ制御部(エンジンASIC側)の内部構成図。 第1実施形態に係るバッファ制御部(エンジンASIC側)の内部構成図。 第1実施形態に係る状態信号と使用バッファとの関係を示した図。 第1実施形態に係る状態信号と使用バッファとの関係を示した図。 第1実施形態に係るデバイスの各部の状態を示したシーケンス図。 ログデータの一例を示した図。 第2実施形態に係るデバッグ制御部(エンジンASIC側)の内部構成図。 第2実施形態に係るバッファ制御部(エンジンASIC側)の内部構成図。 第2実施形態に係る状態信号と使用バッファとの関係を示した図。 第2実施形態に係る状態信号と使用バッファとの関係を示した図。 第2実施形態に係るコントローラASICの内部構成図。 第2実施形態に係るデバッグ制御部(コントローラASIC側)の内部構成図。 第2実施形態に係るバッファ制御部(コントローラASIC側)の内部構成図。 第2実施形態に係る状態信号と使用バッファとの関係を示した図。 第2実施形態に係る状態信号と使用バッファとの関係を示した図。 第2実施形態に係るデバイスの各部の状態を示したシーケンス図。 第3実施形態に係る電子機器用のデバイスの全体構成を示した図。 第3実施形態に係るデバッグ制御部の内部構成を示した図。 第3実施形態に係る制御レジスタを示した図。 第3実施形態に係るアクセスログのフォーマットを示した図。 第3実施形態に係るデバッグ制御部の動作を示したシーケンス図。 第3実施形態に係るイベントモードにてレジスタアクセスを検知する場合のタイミングチャート図。 第3実施形態に係るイベントモードにて内部信号を検知する場合のタイミングチャート図。
以下、本発明の好適な実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
本発明の一実施形態に係る電子機器用のデバイスは、ASIC内部に元々備わっている画像データ用のバッファの空き領域を利用してログデータ(履歴情報)を一時的に蓄積し、かつ、画像データを転送する際の空き時間を利用してログデータをメモリに転送する。これにより、ASICの制御(例えばレジスタ設定)の間違いに起因する障害(例えば異常画像)を特定するために、デバッグに使用するログデータを残すことができる。なお、本実施形態に係る画像形成装置は、電子機器の一例であり、電子機器は、これに限られず、電子機器用の処理をハードウエアで行うためのASICを内蔵した装置であれば、どんな機器であってもよい。また、電子機器の内部又は外部に設けられたメモリに記憶されるデータは画像データに限られず、テキストデータ等、どのようなデータであってもよい。
以下、電子機器として画像形成装置を例に挙げて以下の実施形態について説明する。
<第1実施形態>
[全体構成]
ます、本発明の第1実施形態に係る画像形成装置用のデバイスについて、図1を参照しながら説明する。図1は、本実施形態に係る画像形成装置用のデバイスの全体構成を示す。本実施形態に係る画像形成装置用のデバイスは、エンジン制御部1及びコントローラ2を有する。エンジン制御部1は、スキャナ3、プロッタ11、エンジンASIC4及びエンジンCPU8を有する。スキャナ3及びプロッタ11は、画像データを入出力する入出力装置の一例である。図1では、スキャナ3及びプロッタ11は、エンジン制御部1の内部に設けられているが、これに限らず、エンジン制御部1の外部に設けられてもよい。
エンジンASIC4は、スキャナ3及びプロッタ11とコントローラ2とのデータ転送制御および画像処理を行う特定用途向け半導体集積回路である。エンジンCPU8は、エンジン制御部1の動作を制御する。これにより、エンジン制御部1は、スキャナ3及びプロッタ11(入出力装置)とコントローラ2とのメモリ7への画像データの転送を制御する。
コントローラ2は、コントローラASIC5、チップセット6、メモリ7、ハードディスクドライブ(HDD)9及びコントローラCPU10を有する。コントローラASIC5は、エンジン制御部1とメモリ7とのデータ転送および画像処理を行う特定用途向け半導体集積回路である。コントローラCPU10は、コントローラ2の動作を制御する。これにより、コントローラ2は、スキャナ3及びプロッタ11とメモリ7との画像データの転送を行う。
メモリ7は、画像データを記憶したり、ログデータを格納したりするための記憶領域である。ハードディスクドライブ9は、画像データを格納するための大型記憶領域である。本実施形態の特徴は、主にエンジンASIC4及びコントローラASIC5の機能により実現される。
以下では、一般的なエンジンASICの内部構成について図2を参照しながら説明する。その後、本実施形態に係るコントローラASIC5及びエンジンASIC4の内部構成について図3及び図4を参照しながら説明する。
(一般的なエンジンASICの内部構成)
まず、一般的なエンジンASICの内部構成について説明する。図2に示した一般的なエンジンASIC94は、スキャナI/F制御部901、プロッタI/F制御部902、S2M(Scanner to Memory)画像処理部903、M2P(Memory to Plotter)画像処理部904、S2Mバッファ905、M2Pバッファ906、WDMAC907、RDMAC908、アービタ909、コントローラI/F制御部910、コミュニケーションバッファ911及びCPU I/F制御部912を有する。
S2Mバッファ905及びM2Pバッファ906は、S2Mバッファ905を通る経路及びM2Pバッファ906を通る経路において、S2M画像処理部903及びM2P画像処理部904が行う画像データ処理にて画像データを一時的に保持するために実装されている。また、S2Mバッファ905及びM2Pバッファ906は、S2Mバッファ905を通る経路及びM2Pバッファ906を通る経路とコントローラ2との転送時の転送速度差吸収のために転送データを一時的に保持するために実装されている。
(コントローラASIC5の内部構成)
次に、本実施形態に係るコントローラASIC5の内部構成について説明する。図3に示した本実施形態に係るコントローラASIC5は、エンジンI/F制御部501、コントローラ画像処理部502、画像処理バッファ503、画像処理WDMAC504、画像処理RDMAC505、画像入力WDMAC506、画像出力RDMAC507、画像入力バッファ508、画像出力バッファ509、メモリアービタ510、システムI/F制御部511及びレジスタ制御部512を有している。
画像入力バッファ508及び画像出力バッファ509は、S2M(Scanner to Memory)動作(エンジン制御部1からの画像入力)及びM2P(Memory to Plotter)動作(エンジン制御部1への画像出力)時に、エンジン制御部1とコントローラ2との間(つまり、エンジンASIC4とコントローラASIC5との間)の転送と、コントローラASIC5とメモリ7との間の転送との転送速度差吸収のために実装されている。画像処理バッファ503は、M2P動作においてコントローラ画像処理部502が行う処理の画像データ処理にて画像データを一時的に保持するために実装されている。
(エンジンASICの内部構成)
次に、本実施形態に係るエンジンASIC4の内部構成について説明する。図4に示した本実施形態に係るエンジンASIC4は、図2に示した一般的なエンジンASIC94に備わっているバッファの空き領域を利用してログデータを蓄積する構成を有している。本実施形態に係るエンジンASIC4は、一般的なエンジンASIC94の構成に、デバッグ制御部413を追加した構成を有する。デバッグ制御部413は、アービタ409とコントローラI/F制御部410との間に設けられ、CPU I/F制御部412と接続されている。
具体的には、本実施形態に係るエンジンASIC4は、スキャナI/F制御部401、プロッタI/F制御部402、S2M(Scanner to Memory)画像処理部403、M2P(Memory to Plotter)画像処理部404、S2Mバッファ405、M2Pバッファ406、WDMAC407、RDMAC408、アービタ409、デバッグ制御部413、コントローラI/F制御部410、コミュニケーションバッファ411及びCPU I/F制御部412を有する。
なお、S2Mバッファ405及びM2Pバッファ406は、画像データを一時的に蓄積するバッファに相当する。より具体的には、S2Mバッファ405は、入力する画像データを蓄積するための入力用バッファに相当し、M2Pバッファ406は、出力する画像データを蓄積するための出力用バッファに相当する。
また、WDMAC407及びRDMAC408は、画像データのメモリ7へのダイレクトメモリアクセスを制御するダイレクトメモリアクセスコントローラ(DMAC)に相当する。より具体的には、WDMAC407は、S2Mバッファ405からメモリ7に画像データを書き込む書込み用ダイレクトメモリアクセスコントローラ(WDMAC)に相当し、RDMAC408は、メモリ7から画像データを読み込んでM2Pバッファ406に出力する読込み用ダイレクトメモリアクセスコントローラ(RDMAC)に相当する。WDMAC407及びRDMAC408により、画像データをメモリ7に書込む又はメモリ7から読み出すことができる。
デバッグ制御部413は、デバッグ用のログデータを生成し、エンジン制御部1内のバッファ(例えばS2Mバッファ405及びM2Pバッファ406)の空き状況及びコントローラ2のデータ転送状況に応じて、ログデータをバッファへ蓄積、またはコントローラ2へ転送する。以下、デバッグ制御部413の内部構成について説明する。
(デバッグ制御部413の内部構成)
図5に本実施形態に係るデバッグ制御部413の内部構成を示す。本実施形態に係るデバッグ制御部413は、ログデータの生成、バッファへの蓄積/読み出し、メモリ7への転送を実行する。デバッグ制御部413は、ログ生成部414、バッファ制御部415、デバッグ用WDMAC416、デバッグ用アービタ417及び内部レジスタ418を有する。
(ログ生成部414)
ログ生成部414は、図4に示したCPU I/F制御部412とWDMAC407とRDMAC408とに接続され、レジスタアクセスや割り込み、各DMACの動作状態等の信号を入力する。レジスタアクセスが発生する毎に、上記信号の状態を記録したログデータを生成し、バッファ制御部415に出力する。ただし、ロギング制御レジスタがオンの場合のみログデータの生成および出力を行い、オフの場合は行わない。
このように、デバッグ用のログデータは、エンジン制御部1が有するレジスタへの書込み及び読込みの履歴情報を含んでもよい。また、デバッグ用のログデータは、ダイレクトメモリアクセスコントローラ(以下、DMACとも称呼する。)の動作状態の遷移を含んでもよい。また、デバッグ用のログデータは、エンジン制御部1への割り込み状態の遷移を含んでもよい。
(バッファ制御部415)
バッファ制御部415は、各DMACの動作状態に応じて、ログ生成部414から受け取ったログデータの蓄積/読み出し先バッファを切り替える。また、バッファにログデータが蓄積されていない場合はバッファエンプティ信号をデバッグ用WDMAC416に出力する。バッファ切り替えの詳細は後述する。
(デバッグ用WDMAC416)
デバッグ用WDMAC416は、バッファ制御部415から入力したログデータをメモリ上にライト(書き込み)する。デバッグ用WDMAC416は、デバッグ用アービタ417に対してライトリクエストを発生する。デバッグ用WDMAC416は、バッファエンプティでない(すなわち、ログデータがバッファに存在する)限り、ライトリクエストを発行し続ける。
(デバッグ用アービタ417)
デバッグ用アービタ417は、(A)一般的なアービタからのリクエスト(画像データ転送)と、(B)デバッグ用WDMAC416からのリクエスト(ログデータの転送)とを調停する。プライオリティは、(A)一般的なアービタからのリクエストが、(B)デバッグ用WDMAC416からのリクエストより高く、固定値である。ログデータ転送は、本来のデータ転送帯域に影響を与えないように、(B)デバッグ用WDMAC416からのリクエストを(A)一般的なアービタからのリクエストより低い優先順位とする。これにより、ログデータ転送は、本来のデータ転送が行われていない空き時間を利用して処理される。
(内部レジスタ418)
内部レジスタ418は、ログ保存領域開始アドレスレジスタ419及びロギング制御レジスタ420を有する。エンジンCPU8は、内部レジスタ418の制御(レジスタ設定)を行うことができる。ログ保存領域開始アドレスレジスタ419には、デバッグ用WDMAC415がログデータを転送する際の転送開始アドレスが設定される。ロギング制御レジスタ420には、ロギング(履歴情報の開始)のオン/オフ情報が設定される。
(バッファ制御部415の内部構成)
次に、バッファ制御部415の内部構成について、図6を参照しながら説明する。バッファ制御部415は、バッファセレクタ422及びデバッグ用バッファ423を有する。バッファセレクタ422は、各DMACの動作状態信号(WDMAC状態信号及びRDMAC状態信号)に応じて、ログ生成部414から受け取ったログデータを、どのバッファに蓄積/読み出しするかを選択する。例えば、WDMAC状態信号が「1」のときには、S2Mバッファ405へ画像データを転送中であることを示す。RDMAC状態信号が「1」のときには、M2Pバッファ406へ画像データを転送中であることを示す。
各DMAC動作状態信号と使用バッファ(ログデータの蓄積/読み出し先)との関係を図7に示す。WDMAC状態信号が「0」、RDMAC状態信号が「0」のとき、使用バッファは、S2Mバッファ405又はM2Pバッファ406となる。WDMAC状態信号が「0」、RDMAC状態信号が「1」のとき、使用バッファは、S2Mバッファ405となる。WDMAC状態信号が「1」、RDMAC状態信号が「0」のとき、使用バッファは、M2Pバッファ406となる。WDMAC状態信号が「1」、RDMAC状態信号が「1」のとき、使用バッファは、デバック用バッファ423となる。
これによれば、デバッグ用バッファ423を使用するのはS2Mバッファ405へのデータ転送とM2Pバッファ406へのデータ転送が同時に発生しているときのみである。すなわち、S2Mバッファ405とM2Pバッファ406とのどちらかへのデータ転送が止まっている場合には、本来データ転送用に使われるS2Mバッファ405又はM2Pバッファ406の空き領域をログデータ転送用に利用する。本実施形態に係る優先順位を用いた各バッファの利用方法によれば、バッファ用のメモリ領域を無用に拡大する必要がないため、回路規模の増大を抑えることができる。
また、各バッファに対するライト/リード回数をカウントし、等しい場合はバッファエンプティ信号をアサートする。つまり、各バッファに対するライト/リード回数が等しい場合は、バッファログデータが存在しないと判断し、バッファエンプティ信号を有効な状態にする。なお、ライト回数>リード回数の場合は、バッファログデータが存在すると判定し、バッファエンプティ信号をディアサート、つまり、バッファエンプティ信号を無効な状態にする。
図8には、WDMAC状態信号とRDMAC状態信号と、使用バッファとの関係が図示されている。使用バッファに記載された「S2M」はS2Mバッファ405を示し、「M2P」はM2Pバッファ406を示し、「Debug」はデバッグ用バッファ423を示す。図7に示したWDMAC状態信号とRDMAC状態信号と、使用バッファとの関係に基づき、図8に示したように使用バッファが遷移する。例えば、図8では最初、WDMAC状態信号とRDMAC状態信号は(0,0)であるため、使用バッファはS2Mバッファ405又はM2Pバッファ406を使用可能であるが、図8ではM2Pバッファ406を使用する。次に、WDMAC状態信号とRDMAC状態信号は(1,0)であるため、使用バッファはM2Pバッファ406のままとなる。次いで、WDMAC状態信号とRDMAC状態信号は(0,0)の後、(0,1)となった時点で、使用バッファはS2Mバッファ405に遷移する。更に、WDMAC状態信号とRDMAC状態信号が(0,0)の後、(1,0)となった時点で、使用バッファは再びM2Pバッファ406に遷移する。更に、WDMAC状態信号とRDMAC状態信号が(1,1)となった時点で、使用バッファはデバッグ用バッファ423に遷移する。
これによれば、デバッグ用バッファ423を使用するのはS2Mバッファ405へのデータ転送とM2Pバッファ406へのデータ転送が同時に発生しているときのみであることがわかる。なお、WDMAC状態信号とRDMAC状態信号は(0,0)である場合、使用バッファはS2Mバッファ405又はM2Pバッファ406を使用可能であるから、図8ではM2Pバッファ406を使用しているが、S2Mバッファ405を使用するようにしても良い。WDMAC状態信号とRDMAC状態信号は(0,0)の場合、S2Mバッファ405とM2Pバッファ406のいずれを使用バッファとして設定するかは、S2Mバッファ405とM2Pバッファ406の使用頻度等に応じて決めることができる。
[動作]
次に、第1実施形態に係る画像形成装置用のデバイスの動作について、図9を参照しながら説明する。図9は、本実施形態に係るエンジンCPU8、エンジンASIC4、コントローラASIC5、コントローラCPU10、メモリ7の各部の状態を示したシーケンス図である。
なお、図9は、S2Mバッファ405へのデータ転送、すなわち、メモリ7への書き込みの場合を例に挙げて図示している。M2Pバッファ406へのデータ転送の場合は、画像データの転送方向が逆、すなわち、メモリ7からの読み出しとなる。それ以外のシーケンスについては、S2Mバッファ405へのデータ転送とM2Pバッファ406へのデータ転送とは共通する。以下では、S2Mバッファ405へのデータ転送の場合のみ説明し、M2Pバッファ406へのデータ転送の場合の説明は省略する。
(処理の流れ)
図9のシーケンス図に示した処理の流れの詳細説明を以下に示す。
(1)まず、コントローラCPU10からエンジンCPU8に、S2Mバッファ405へのデータ転送制御用の各種パラメータを転送する。
(2)次に、コントローラCPU10からエンジンCPU8に、ログ保存領域開始アドレスを転送する。
(3)次に、エンジンCPU8からエンジンASIC4のレジスタに、S2Mバッファ405へのデータ転送制御用の各種パラメータを設定する。
(4)次に、エンジンCPU8からエンジンASIC4のレジスタに、ログ保存領域開始アドレスを設定する。
(5)次に、エンジンCPU8の制御によりエンジンASIC4のレジスタは、ロギングオン(ログデータの蓄積開始)に設定される。これにより、エンジンCPU8からエンジンASIC4へのレジスタアクセスが発生する毎にログデータの生成および転送が開始される。
(6)次に、エンジンCPU8からエンジンASIC4のダイレクトメモリアクセスコントローラ(DMAC)を起動し、S2Mバッファ405へのデータ転送を開始する。これにより、S2Mバッファ405を介して、エンジンASIC4からメモリ7への画像データの転送が開始される。
(7)画像データの転送が終了すると、エンジンASIC4からエンジンCPU8に割り込みが発生し、SS2Mバッファ405へのデータ転送の完了が通知される。
(8)次に、エンジンCPU8の制御によりエンジンASIC4のレジスタはロギングオフ(ログデータの蓄積終了)に設定される。これにより、ログデータの生成および転送が終了する。
(9)次に、コントローラCPU10からエンジンCPU8に、SS2Mバッファ405へのデータ転送の完了通知が送られる。
(10)最後に、コントローラCPU10は、メモリ7のログデータの読み出しを行う。
(ログデータの一例)
以上の画像形成装置用のデバイスの動作により記録されたログデータの一例を図10に示す。Seq_Numは、シーケンシャルナンバーを示す。ADDRは、レジスタアクセスのアドレスを示す。DATAは、レジスタアクセスのリードまたはライトデータを示す。R/Wは、レジスタアクセスのリード/ライト区分を示す。EXECは、各DMACの動作状態を示す。INT_FLGは、各割り込みフラグの状態を示す。
シーケンシャルナンバーSeq_Numには、1つのログデータにつき1つの番号が割り当てられる。シーケンシャルナンバーSeq_Numは、ロギング開始から終了までの間、新たなログデータが発生する毎にインクリメントされる。シーケンシャルナンバーSeq_Numをつけることで、イベントの発生順番を記録することができ、これにより、ログデータを使用してより容易に障害の原因を解析することができる。上記をレジスタアクセス1回分のログデータとする。
以上、第1実施形態に係る画像形成装置用のデバイスについて説明した。第1実施形態に係る画像形成装置用のデバイスでは、ASIC内部に元々備わっている画像データ用のバッファの空き領域を利用してログデータを一時的にバッファに蓄積し、かつ、画像データ転送の空き時間を利用して、ログデータをメモリに転送する。これによれば、本来のデータ転送帯域に影響を与えることなく、かつバッファのための回路規模の増大を抑制しながらデバッグのためのログデータを記録することができる。
<第2実施形態>
[全体構成]
次に、本発明の第2実施形態に係る画像形成装置用のデバイスについて説明する。第2実施形態に係る画像形成装置用のデバイスの全体構成、エンジンASIC4の内部構成及びコントローラASIC5の内部構成は、第1実施形態に係る画像形成装置用のデバイスの全体構成(図1)、エンジンASIC4の内部構成(図4)及びコントローラASIC5の内部構成(図3)と同様であるため、ここでは説明を省略する。
(デバッグ制御部の内部構成)
第2実施形態では、デバッグ制御部は、エンジンASIC側とコントローラASIC側との両方に設けられている。エンジンASIC側は図11のデバッグ制御部413、コントローラASIC側は図15及び図16のデバッグ制御部513である。そして、エンジンASIC4とコントローラASIC5とが連動し、両方に備わっているデバッグ制御部(デバッグ制御部413、デバッグ制御部513)にそれぞれ設けられているバッファの空き領域を利用してログデータを蓄積するようになっている。
(エンジンASIC側のデバッグ制御部の内部構成)
まず、デバッグ制御部413の内部構成について、図11を参照しながら説明する。図11は、第2実施形態に係るエンジンASIC4側のデバッグ制御部413の内部構成を示す。第1実施形態に係るデバッグ制御部と下記の点で異なる。
・コントローラASICバッファエンプティ信号を追加
・コントローラASICバッファ指定アドレスレジスタ421を内部レジスタ418に追加
コントローラASICバッファ指定アドレスは、ログデータをエンジンASIC4からコントローラASIC5のバッファに転送し蓄積する場合の転送先アドレスとなる。
(バッファ制御部415の内部構成)
次に、第2実施形態に係るバッファ制御部415(エンジンASIC側)の内部構成について、図12を参照しながら説明する。第2実施形態に係るバッファ制御部415は、図6の第1実施形態に係るバッファ制御部415に、コントローラASICバッファエンプティ信号を追加した構成となる。また、バッファセレクタ422の機能の一部が、第1実施形態とは異なる。
(バッファセレクタ422)
バッファセレクタ422は、各DMACの動作状態信号(WDMAC状態信号及びRDMAC状態信号)に応じて、ログ生成部414から受け取ったログデータを、どのバッファに蓄積/読み出しするかを選択する。各DMAC動作状態信号と使用バッファ(ログデータの蓄積/読み出し先)との関係を図13に示す。第2実施形態に係るバッファセレクタ422は、この関係に基づき使用バッファを選択する。
WDMAC状態信号が「0」、RDMAC状態信号が「0」のとき、使用バッファは、S2Mバッファ405又はM2Pバッファ406となる。このとき、バッファの選択に対してコントローラASICバッファエンプティ信号は考慮しなくてよい。
WDMAC状態信号が「0」、RDMAC状態信号が「1」のとき、使用バッファはS2Mバッファ405となり、WDMAC状態信号が「1」、RDMAC状態信号が「0」のとき、使用バッファはM2Pバッファ406となる。これらのときも、バッファの選択に対してコントローラASICバッファエンプティ信号は考慮しなくてよい。
WDMAC状態信号が「1」、RDMAC状態信号が「1」のとき、コントローラASICバッファエンプティ信号を考慮する。つまり、WDMAC状態信号およびRDMAC状態信号がともに「1」の場合、コントローラバッファエンプティ信号の状態に応じて、ログデータの蓄積/読み出し先を切り替える。具体的には、コントローラASICバッファエンプティ信号が「1」のとき、使用バッファは、コントローラASICのバッファとなり、コントローラASICにログデータを転送する。コントローラASICは、それを受けて内部のバッファにログデータを蓄積する。コントローラASICの動作に関しては後述する。
また、コントローラASICバッファエンプティ信号が「0」のとき、使用バッファは、デバッグ用のバッファとなる。
本実施形態によれば、S2Mバッファ405へのデータ転送とM2Pバッファ406へのデータ転送が同時に発生しているとき(つまり、S2Mバッファ405及びM2Pバッファ406が共に画像データ用に使用されているとき)でも、コントローラASICのバッファが空いていればそちらを使用することができる。これにより、第1実施形態と比較してデバッグ用バッファによる回路規模の増大をより抑止することができる。
図14には、WDMAC状態信号とRDMAC状態信号とコントローラASICバッファエンプティ信号と、使用バッファとの関係が図示されている。使用バッファに記載された「S2M」はS2Mバッファ405を示し、「M2P」はM2Pバッファ406を示し、「ASIC2」はコントローラASIC5のバッファを示し、「Debug」はデバッグ用バッファ423を示す。
図13に示したWDMAC状態信号とRDMAC状態信号とコントローラASICバッファエンプティ信号と、使用バッファとの関係に基づき、図14に示したように使用バッファが遷移する。これによれば、エンジンASIC4のデバッグ用バッファ423又はコントローラASIC5のバッファを使用するのはS2Mバッファ405へのデータ転送とM2Pバッファ406へのデータ転送が同時に発生しているときのみであることがわかる。また、コントローラASICバッファエンプティ信号の値で、エンジンASIC4のデバッグ用バッファ423又はコントローラASIC5のバッファのいずれを使用するかを切り替えることができる。
(コントローラASIC側のデバッグ制御部の内部構成)
次に、第2実施形態に係るコントローラASIC5の内部構成について、図15を参照しながら説明する。第2実施形態に係るコントローラASIC5は、第1実施形態に係るコントローラASIC5の内部構成(図3)に加えてデバッグ制御部513が追加されている。デバッグ制御部513は、メモリアービタ510とシステムI/F制御部511との間に設けられている。
図16は、第2実施形態に係るコントローラASIC側のデバッグ制御部513の内部構成を示す。デバッグ制御部513は、エンジンASIC4から転送されたログデータのバッファへの蓄積/読み出し、バッファ空き状態のエンジンASIC4への通知、ログデータのメモリへの転送を担う。
デバッグ制御部513は、アドレスデコーダ514、バッファ制御部515、デバッグ用WDMAC516、デバッグ用アービタ517及び内部レジスタ518を有する。
(バッファ制御部515)
バッファ制御部515は、各DMAC(WDMAC状態信号及びRDMAC状態信号)および画像処理部の動作状態(画像処理部状態信号)に応じて、エンジンASIC4から取得したログデータの蓄積/読み出し先バッファを切り替える。また、コントローラ側のバッファにログデータが蓄積されていない場合は、コントローラASICバッファエンプティ信号をエンジンASIC4に出力する。
(デバッグ用WDMAC516)
デバッグ用WDMAC516は、バッファ制御部515から受け取ったログデータをメモリ上にライトする。デバッグ用WDMAC516は、デバッグ用アービタ517に対してライトリクエストを発生する。デバッグ用WDMAC516は、コントローラASICバッファエンプティ信号がアサート(ログデータがバッファに存在)している限り、ライトリクエストを発行し続ける。
(アドレスデコーダ514)
アドレスデコーダ514は、メモリアービタ510から受け取るリクエストのアドレスに応じて、データの出力先を切り替える。アドレスデコーダ514は、アドレスが内部レジスタ518に設定したコントローラASICバッファ指定アドレスレジスタ519と一致する場合、コントローラASIC5のバッファに蓄積するログデータと判定し、バッファ制御部515に出力する。アドレスデコーダ514は、アドレスが内部レジスタ518に設定したコントローラASICバッファ指定アドレスレジスタ519と一致しない場合、メモリ7に転送するログデータまたは画像データと判定し、デバッグ用アービタ517に出力する。
(デバッグ用アービタ517)
デバッグ用アービタ517は、(C)メモリアービタ510からのリクエスト(メモリ7に転送するログデータまたは画像データ)と、(D)デバッグ用WDMAC516からのリクエスト(ASIC2のバッファから読み出したログデータ)とを調停する。
プライオリティは(C)メモリアービタ510からのリクエストが、(D)デバッグ用WDMAC516からのリクエストより高く、固定値である。これにより、ログデータ転送は、本来のデータ転送が行われていない空き時間を利用して処理される。よって、本実施形態によれば本来のデータ転送帯域に影響を与えず、ログデータを転送することができる。
(内部レジスタ518)
内部レジスタ518は、コントローラASICバッファ指定アドレスレジスタ519及びログ保存領域開始アドレスレジスタ520を備える。エンジンCPU8は、内部レジスタ418の制御(レジスタ設定)を行うことができる。
コントローラASICバッファ指定アドレス部レジスタ519には、ログデータをエンジンASIC4からコントローラASIC5のバッファに転送し蓄積するときの転送先アドレスが設定される。エンジンASIC4に設定されたレジスタ設定値と同じ値を設定することができる。この値は、アドレスデコーダでのログデータ出力先の判定に用いられる。
ログ保存領域開始アドレス部レジスタ520には、コントローラASIC5のデバッグ用WDMAC516がログデータを転送する際の転送開始アドレスが設定される。
(バッファ制御部515の内部構成)
次に、コントローラASIC側のバッファ制御部515の内部構成について、図17を参照しながら説明する。バッファ制御部515は、バッファセレクタ521及びデバッグ用バッファ522を有する。
バッファセレクタ521は、各DMACの動作状態信号(WDMAC状態信号及びRDMAC状態信号)と画像処理部状態信号とに応じて、エンジンASIC4から受け取ったログデータを、どのバッファに蓄積/読み出しするかを選択する。
例えば、WDMAC状態信号が「1」のとき、エンジンASIC4からの画像転送中(S2Mバッファ405に転送中)を示す。RDMAC状態信号が「1」のとき、エンジンASIC4への画像転送中(M2Pバッファ406に転送中)を示す。画像処理部状態信号が「1」のとき、M2M(Memory to Memory)動作での画像処理実行中を示す。M2M動作は、DMAによってメモリからデータを読み出し、各種処理をして再度メモリに書き込む動作である。S2M(Scanner to Memory)動作及びM2P(Memory to Plotter)動作と対比される動作であり、本実施形態では、メモリ7→画像処理RDMAC505→コントローラ画像処理部502→画像処理WDMAC504→メモリ7の経路がM2M動作の経路となる。
各動作状態信号と使用バッファ(ログデータの蓄積/読み出し先)との関係を図18に示す。デバッグ用バッファを使用するのはS2M動作、M2P動作、M2M動作が同時に発生しているときのみで、いずれかの転送が止まっている場合は、本来的には画像データの転送又は画像処理用に使われる画像入力又は画像出力又は画像処理用のバッファの空き領域を利用する。これにより、バッファのためのメモリ領域拡大が不要になり、回路規模の増大を抑えることができる。
また、各バッファに対するライト/リード回数をカウントし、等しい場合はコントローラASICバッファエンプティ信号をアサート、つまりバッファエンプティ信号を有効な状態にする。なお、ライト回数>リード回数の場合は、バッファにログデータが存在することを示す。よって、この場合にはコントローラASICバッファエンプティ信号をディアサートし、バッファエンプティ信号を無効な状態にする。
図19には、WDMAC状態信号とRDMAC状態信号と画像処理部状態信号と、使用バッファとの関係が図示されている。使用バッファに記載された「出力」は画像出力バッファ509を示し、「入力」は画像入力バッファ508を示し、「処理」は画像処理バッファ503を示し、「Debug」はデバッグ用バッファ522を示す。
図18に示したWDMAC状態信号とRDMAC状態信号と画像処理部状態信号と、使用バッファとの関係に基づき、図19に示したように使用バッファが遷移する。デバッグ用バッファ522が使用されるのは、WDMAC状態信号とRDMAC状態信号と画像処理部状態信号が(1,1,1)に遷移したタイミングである。
[動作]
次に、第2実施形態に係る画像形成装置用のデバイスの動作について、図20を参照しながら説明する。図20は、本実施形態に係るエンジンCPU8、エンジンASIC4、コントローラASIC5、コントローラCPU10、メモリ7の各部の状態を示したシーケンス図である。
なお、図20は、S2Mバッファ405へのデータ転送、すなわち、メモリ7への書き込みの場合を例に挙げて図示している。M2Pバッファ406へのデータ転送の場合は、画像データの転送方向が逆、すなわち、メモリ7からの読み出しとなる。それ以外のシーケンスについては、S2Mバッファ405へのデータ転送とM2Pバッファ406へのデータ転送とは共通する。以下では、S2Mバッファ405へのデータ転送の場合のみ説明し、M2Pバッファ406へのデータ転送の場合の説明は省略する。
第1実施形態との差異は以下の4つの処理を追加した点である。
・「(6)コントローラ側のログ保存領域開始アドレスのレジスタ設定」の処理を追加
・「(7)コントローラASICバッファ指定アドレスのレジスタ設定」の処理を追加
・「コントローラASICバッファエンプティ信号のアサート/ディアサート」の処理を追加
・「(13)ログデータ読み出しの際の、ログ保存領域が2つになる」処理を追加
(処理の流れ)
図20のシーケンス図に示した処理の流れの詳細説明を以下に示す。
(1)まず、コントローラCPU10からエンジンCPU8に、S2Mバッファ405へのデータ転送制御用の各種パラメータを転送する。
(2)次に、コントローラCPU10からエンジンCPU8に、ログ保存領域開始アドレスを転送する。
(3)次に、エンジンCPU8からエンジンASIC4のレジスタに、S2Mバッファ405へのデータ転送制御用の各種パラメータを設定する。
(4)次に、エンジンCPU8からエンジンASIC4のレジスタに、エンジンASIC側のログ保存領域開始アドレス419を設定する。
(5)次に、エンジンCPU8からエンジンASIC4のレジスタに、コントローラASICバッファ指定アドレスを設定する。
(6)コントローラCPU10からコントローラASIC5に、コントローラASIC側のログ保存領域開始アドレス520を設定する。
(7)コントローラCPU10からコントローラASIC5に、コントローラASICバッファ指定アドレスを設定する。
(8)エンジンCPU8からエンジンASIC4のレジスタにロギングオン(ログデータの蓄積開始)が設定される。これにより、エンジンCPU8からエンジンASIC4へのレジスタアクセスが発生する毎にログデータの生成および転送が開始される。これによれば、コントローラASIC5のバッファの空き状況に応じて、コントローラASIC5からエンジンASIC4へコントローラASICバッファエンプティ信号がアサート/ディアサートされる。
(9)エンジンCPU8がエンジンASIC4のDMACを起動し、S2Mバッファ405へのデータ転送を開始する。これにより、コントローラASIC5を介して、エンジンASIC4からメモリ7への画像転送が開始される。
(10)画像転送が終了すると、エンジンASIC4からエンジンCPU8に割り込みが発生し、S2Mバッファ405へのデータ転送の完了を通知する。
(11)エンジンCPU8からエンジンASIC4のレジスタに、ロギングオフが設定される。これにより、ログデータの生成および転送が終了する。
(12)コントローラCPU10からエンジンCPU8に、S2Mバッファ405へのデータ転送の完了通知を送る。
(13)コントローラCPU10は、メモリ7のログデータを読み出す。ログデータが保存される領域は2つ(ログ保存領域アドレス開始419およびログ保存領域開始アドレス520)に分かれているので、両方の領域のログデータを読み出す。
以上、第2実施形態に係る画像形成装置用のデバイスについて説明した。以上のように第2実施形態に係る画像形成装置用のデバイスにおいて、コントローラ2は、画像データの前記メモリへのダイレクトメモリアクセスを制御するDMACと、画像データを一時的に蓄積するバッファと、デバッグ用のログデータを生成し、前記エンジン制御部内の前記バッファの空き状況及び前記コントローラへのデータ転送状況に応じて、前記生成されたログデータをバッファへ蓄積するか又は前記コントローラへ転送するデバッグ制御部とを有する。エンジン制御部のデバッグ制御部は、前記エンジン制御部側のバッファの空き状況と、前記コントローラ側のバッファの空き状況とに応じて前記生成したログデータを前記コントローラへのデータ転送状況に応じて、前記生成されたログデータを前記エンジン制御部側のバッファ又は前記コントローラ側のバッファへ蓄積するか又はコントローラへ転送する。
これによれば、ASIC内部に元々備わっている画像データ用のバッファの空き領域を利用してログデータを一時的に蓄積し、かつ、画像データ転送の空き時間を利用して、ログデータをメモリ7に転送する。これによれば、本来のデータ転送帯域に影響を与えることなく、かつバッファ用のメモリ領域の拡大のための回路規模の増大を抑制しながらデバッグのためのログデータを記録することができる。また、本実施形態によれば、エンジン制御部1又はコントローラ2のいずれかのバッファに空き領域があれば、本来画像データ蓄積用に用いられるバッファをログデータの蓄積に用いることができる。このため、エンジン制御部1およびコントローラ2に実装されるログバッファのための回路規模の増大を抑えながら、確実にログ情報を蓄積することができる。
また、第2実施形態に係る画像形成装置用のデバイスによれば、エンジン制御部1側またはコントローラ2側の両方のバッファを使用して、いずれかのバッファに空き領域があれば本来画像データ蓄積用に用いられるバッファをログデータの蓄積に用いることができる。このため、第1実施形態の場合より、より確実にログ情報を蓄積することができる。
<第3実施形態>
次に説明する第3実施形態に係る電子機器用のデバイスでは、CPUからアクセスが可能なデバイス、およびデバイスを搭載する電子機器の障害解析のために、CPUからレジスタへのアクセスや内部信号の挙動という特定のイベントが、ログデータとして取得したい特定のイベントとして登録される。そして、登録されたイベントが発生した場合のみ、イベント番号を含むログデータが保存される。これにより、電子機器に内蔵されるメモリの容量を小さく抑えることができる。
[全体構成]
以下、第3実施形態に係る電子機器に搭載されたデバイス(回路)の全体構成について、図21を参照しながら説明する。第3実施形態に係る電子機器に搭載されたデバイス(回路)は、ターゲット基板600に形成されている。
ターゲット基板600は、電子機器の回路部を構成する部品である。ターゲット基板600には、CPU620(所定のコントローラに相当)と、CPU620からアクセスを受けるデバイス601とが搭載されている。図21の構成例では、CPU620が、デバイス601に対して外付けになっており、デバイス601内で取得されるアクセスログデータ(以下、アクセスログという。)を記憶する記憶装置としての内蔵メモリ609がデバイス601に内蔵されているが、CPU620及び内蔵メモリ609のいずれも、デバイス601に対して外付けされても、内蔵されてもよい。
例えば、デバイス601を搭載する電子機器が画像形成装置である場合、デバイス601は、例えば、プリンタ制御用のエンジンASICといった、CPU I/Fを有するデバイスである。図21に示すように、デバイス601は、CPU I/F603、割り込みコントローラ605、機能モジュール607a、607b、607c、内蔵メモリ609、シリアルI/F611及びデバッグ制御部613を有する。
CPU I/F603は、CPU620にCPUバスを介して接続され、CPU620からレジスタへのアクセスをデバイス601の内部のレジスタI/Fに変換して各機能モジュール607a、607b、607cに接続する。
機能モジュール607a、607b、607cは、デバイス601に内蔵された所望の機能を有するモジュールに相当し、それぞれCPU620にアクセス可能なレジスタを有し、内部バス経由でCPU620へのアクセスが行われる。図21では、機能モジュール607a、607b、607cの3つのモジュールを例に挙げているが、モジュール数はいくつでも構わない。機能モジュール607a、607b、607cは、以下、総称して機能モジュール607ともいう。
内蔵メモリ609は、アクセスログを格納するために用いられる記憶装置である。内蔵メモリ609に格納されたアクセスログには、CPU620および後述するターミナルPC630から直接アクセスすることが可能である。
シリアルI/F611は、ターミナルPC630から内蔵メモリ609にアクセスするためのI/Fとして機能する。
ターミナルPC630は、シリアル操作及び表示用のPC(Personal Computer)であり、シリアルI/F611を介して内蔵メモリ609にアクセスし、格納されたアクセスログを取得することが可能な管理端末機である。
デバッグ制御部613は、CPU620からのアクセスを監視し、アクセスログを作成して内蔵メモリ609に出力するモジュールである。デバッグ制御部613は、デバイス601の内部信号を監視することも可能である。
デバッグ制御部613は、監視状況に応じて、割り込みコントローラ605を介してCPU620に割り込みを通知することも可能である。
(デバッグ制御部)
第3実施形態に係るデバッグ制御部613の機能の詳細について、図22を参照しながら説明する。図22は、第3実施形態に係るデバッグ制御部613の内部構成を示す。デバッグ制御部613は、イベント検出回路641、タイマー643、ログ作成回路645及びイベント登録部647を有する。イベント登録部647は、制御レジスタを有する。
イベント検出回路641は、レジスタI/FにてCPU620からのレジスタのアクセスと内部信号を監視する。イベント検出回路641は、イベント登録部647により予め制御レジスタ648に設定されたイベント検知条件に基づき、制御レジスタ648に設定された特定のイベントが発生したら検知結果をログ作成回路645に通知する。イベント検出回路641は、モジュールへのアクセスを分析し、特定のイベントを検知するイベント検出部に相当する。
イベント検出回路641は、特定のイベント発生時、以下のような処理も可能である。
・CPU620に対して割り込みを発生させる。
・任意のレジスタへのライト(書込み)をマスクする。
・任意のレジスタに、任意の値を書き込む。
タイマー643は、図示しないカウンターを用いて時間を計測する。タイマー643によるカウント単位は、制御レジスタ648で設定可能である。タイマー643によるカウント値は、リアルタイムでイベント検出回路641に通知される。
ログ作成回路645は、イベント検知回路641からの検知結果に、タイマー643からの時間情報(タイムスタンプ)を付加し、ログデータを作成する。ログ作成回路645は、作成したログデータを内蔵メモリ609に転送する。ログ作成回路645は、イベント検知部により検知された特定のイベントに対するログデータを生成するログ生成部に相当する。
制御レジスタ648は、デバッグ制御部613を制御するレジスタである。以下では、図23を参照して、制御レジスタ648に含まれる各レジスタの詳細を説明する。
[制御レジスタ]
(デバッグモードレジスタ<DBG_MODE>647a)
デバッグモードレジスタ647aは、デバッグのモードを選択する。「dbg_en」は、デバッグをイネーブルにする。つまり、「dbg_en」が「0」のときには、ログデータを取得しない。「dbg_en」が「1」のときには、ログデータを取得する。
「ev_en」は、イベントモードをイネーブルにする。つまり、「ev_en」が「0」のときには、ノーマルモードで動作し、CPUからのレジスタアクセスを監視し、アドレス、データ、リード/ライトの情報を全てログデータとして取得する。「ev_en」が「1」のときには、イベントモードで動作し、レジスタに設定されたイベント検知条件と一致した場合のみ、ログデータを取得する。
「time_en」は、タイムスタンプの付加をイネーブルにする。つまり、「time_en」が「0」のときには、ログデータにタイムスタンプを付加しない。「time_en」が「1」のときには、ログデータにタイムスタンプを付加する。
(タイマー周期レジスタ<PERIOD>647b)
タイマー周期レジスタ647bは、タイマー周期を設定する。タイマー周期レジスタ647bは、設定された周期の分だけ時間が経過する毎に、タイムスタンプの値をインクリメントする。例えばタイマーが16bitで設定値0x4とした場合、タイマー1周で65.535sのタイムスタンプが付加されることになる。
0x0: タイマー周期100ns
0x1: タイマー周期1μs
0x2: タイマー周期10μs
0x3: タイマー周期100μs
0x4: タイマー周期1ms
0x5: タイマー周期10ms
0x6: タイマー周期100ms
0x7: タイマー周期1s
以下で説明するレジスタにおいて、「イベント(n)xxレジスタ」は、それぞれ登録可能なイベント数n個分だけ存在する。nは各イベントを識別するイベント番号となる。
(イベント(n)モード選択レジスタ<EV_MODE>647c)
イベント(n)モード選択レジスタ647cは、イベントモードがイネーブルの場合、検知するイベントの種類を選択する。
「EV_MODE」が「0」のときには、レジスタへのアクセスを検知するモード(レジスタアクセス検知モード)である。このとき、下記イベント(n)アドレス登録レジスタ<ADDR>647d,イベント(n)アドレスマスクレジスタ<ADDR_MSK>647e,イベント(n)データ登録レジスタ<DATA>647f,イベント(n)データマスクレジスタ<DATA_MSK>647g,イベント(n)リードライト選択レジスタ<RW>647hの各レジスタに設定された条件を満たすレジスタアクセスが検知される。
「EV_MODE」が「1」のときには、内部信号を検知するモード(内部信号検知モード)である。このとき、下記イベント(n)割り込み選択レジスタ<INT>647i,イベント(n)内部信号選択レジスタ<SIG>647j,イベント(n)エッジ選択レジスタ<EDGE>647kの各レジスタに設定された条件を満たす内部信号の変化が検知される。
(イベント(n)アドレス登録レジスタ<ADDR>647d)
イベント(n)アドレス登録レジスタ647dは、レジスタアクセス検知モード時に検知する、レジスタアクセスのアドレスを設定する。
(イベント(n)アドレスマスクレジスタ<ADDR_MSK>647e)
イベント(n)アドレスマスクレジスタ647eは、レジスタアクセス検知モード時に検知する、レジスタアクセスのアドレスにおいて、各ビットのマスクを設定する。すなわち、「1」と設定されたビットはマスクされ、処理外のビット(Don't care扱い)になる。
例えばADDR=0x32107654、ADDR_MSK=0x0000FFFF、と設定された場合、アドレス0x3210xxxx(「x」はDon't care)へのアクセスが検知条件を満たす。
(イベント(n)データ登録レジスタ<DATA>647f)
イベント(n)データ登録レジスタ647fは、レジスタアクセス検知モード時に検知する、レジスタアクセスのデータを設定する。
(イベント(n)データマスクレジスタ<DATA_MSK>647g)
イベント(n)データマスクレジスタ647gは、レジスタアクセス検知モード時に検知する、レジスタアクセスのデータにおいて、各ビットのマスクを設定する。
例えば、DATA = 0x32107654、DATA_MSK=0x0000FFFF、と設定された場合、データ0x3210xxxx(xはDon't care)のアクセスが検知条件を満たす。
(イベント(n)リードライト選択レジスタ<RW>647h)
イベント(n)リードライト選択レジスタ647hは、レジスタアクセス検知モード時に検知する、レジスタアクセスのリード/ライトを選択する。「RW」が「0」のときには、リードアクセスを検知する。「RW」が「1」のときには、ライトアクセスを検知する。
(イベント(n)割り込み選択レジスタ<INT>647i)
イベント(n)割り込み選択レジスタ647iは、内部信号検知モード時に検知する、割り込み信号を選択する。各ビットは、割り込みコントローラにおける割り込み要因に対応づけてられている。例えば、「int0」のときには、割り込み要因0の変化が検知される。また、例えば、「int31」のときには、割り込み要因31の変化が検知される。
(イベント(n)内部信号選択レジスタ<SIG>647j)
イベント(n)内部信号選択レジスタ647jは、内部信号検知モード時に検知する、内部信号を選択する。各ビットは、デバイス実装時に選択された、解析に有用な代表的な内部信号に対応づけられている。例えば画像形成装置の場合、各DMACの起動信号や、各画像転送チャネルの転送制御信号(LSYNC, LGATE, FSYN, FGATE)等を割り当てる。例えば、「sig01」のときには、内部信号0の変化が検知される。また、例えば、「sig31」のときには内部信号31の変化が検知される。
(イベント(n)エッジ選択レジスタ<EDGE>647k)
イベント(n)エッジ選択レジスタ647kは、内部信号検知モード時に検知する、内部信号のエッジを選択する。「EDGE」が「0」のときには、立下りエッジが検知される。「EDGE」が「1」のときには、立上りエッジが検知される。
[アクセスログのフォーマット]
次に、アクセスログのフォーマットについて、図24を参照しながら説明する。図24は、取得可能なアクセスログのフォーマットを示す。
本実施形態では、デバッグモードレジスタ647aの「ev_en」および「time_en」レジスタの設定値に応じて、図24に示した4種類のフォーマットLF1、LF2,LF3,LF4でログを取得することが可能である。
(フォーマットLF1)
「ev_en=0」,「time_en=1」の場合、フォーマットLF1でログが取得される。ログサイズは1ログあたり72bitとなる。フォーマットLF1の場合、ノーマルモードで動作するため、レジスタアクセスのアドレスf2、データf3、リードライトの情報が取得され、さらにタイムスタンプf1が付加される。
(フォーマットLF2)
「ev_en=0」,「time_en=0」の場合、フォーマットLF2でログが取得される。ログサイズは1ログあたり56bitとなる。フォーマットLF2の場合、レジスタアクセスのアドレスf2、データf3が取得される。
(フォーマットLF3)
「ev_en=1」,「time_en=1」の場合、フォーマットLF3でログが取得される。ログサイズは1ログあたり24bitとなる。フォーマットLF3の場合、イベントモードで動作するため検知したイベント番号f4が取得され、さらにタイムスタンプf1が付加される。
(フォーマットLF4)
「ev_en=1」,「time_en=0」の場合、ログサイズは1ログあたり8bitとなる。フォーマットLF4の場合、イベントモードで動作するため検知したイベント番号f4が取得される。
上記の通り、レジスタ設定により取得するログのフォーマットを変更することが可能である。よって、デバッグの用途に応じて、レジスタアクセスの詳細を観測したい場合にはフォーマットLF1、内部信号を含めてポイントを絞った観測をしたい場合にはフォーマットLF4といった使い分けができる。
また、例えば、フォーマットLF2とフォーマットLF4とを比較すると、イベントモードを使用することで1ログあたりのサイズを8bit/56bit=1/7に圧縮することが可能であり、限られた内蔵メモリの容量を効率よく活用することが可能である。
[デバッグ制御部の動作]
次に、デバッグ制御部613の動作について、図25を参照しながら説明する。図25は、第3実施形態に係るデバッグ制御部の動作を示したシーケンス図である。
イベント登録部647は、あらかじめCPU620からのアクセスに対するデバッグ制御部613の各制御レジスタ648の設定(モード、イベント設定)を行う(ステップS10)。
電子機器を動作させると、CPU620からデバイス601の機能モジュール607に対してのレジスタアクセス(ステップS12)や、CPU620への割り込み(ステップS14)や、(図示しない)内部信号の変化が発生する。
デバッグ制御部613は、それらの挙動を監視し、あらかじめ制御レジスタ648に設定された特定のイベントを検知するとログデータを作成し、内蔵メモリ609に蓄積する(ステップS16)。
動作終了後、ターミナルPC630からコマンド操作することで(ステップS18)、内蔵メモリ609からログデータが読み出され、ログデータが取得される(ステップS20)。
図示しないが、ログデータの読み出しは、ターミナルPC630からではなくソフトウェアによりCPU620から行うことも可能である。
図26に、イベントモードにてレジスタアクセスを検知する場合のタイミングチャートを示す。図26では、以下のようにレジスタ設定された場合が想定されている。「dbg_en=1」、「ev_en=1」、「time_en=1」、「ev_mode=0」
図26において、「req*」、「ack*」は、イベント検知回路641とログ作成回路645との間で、イベント検知結果を通知するための信号であり、設定可能なイベント数分だけ存在する。「time」は、タイマーからログ作成回路645に通知されるタイムスタンプ情報である。「log_data」は、ログ作成回路645にて作成さ、内蔵メモリ609に出力されるログデータである。「mem_rdy」は、内蔵メモリ609が書き込み可能状態であることを示す信号であり、待機時は「1」、メモリへの書き込み中のみ「0」に設定される。
また、本実施形態においては、イベント設定次第で、同時に複数のイベントを検知する可能性がある。図26の(A)は、あるタイミングで1つのイベントが検知された場合を示し、図26の(B)はあるタイミングで2つのイベントが検知された場合を示す。
(A)1つのイベントが検知された場合
イベント検知回路641は、レジスタI/Fにて「cs」の立上りを検知すると、T4のタイミングで「rw」、「addr」、「data」をラッチする。イベント検知回路641は、イベント検知条件と比較し、図ではイベント3と一致したためT5のタイミングで「req3」をアサートし、イベント3を検知したことをCPU620に通知する。
ログ作成回路645は、「mem_rdy=1」、つまりメモリ書き込み可能状態であれば、最短のT6のタイミングで「ack4」をアサートし、イベント3の検知結果を受け取ると同時に、同タイミングでのタイムスタンプ値0x143を付加し、「log_data=0x0143_03」を内蔵メモリ609に書き込む。内蔵メモリ609は、ログデータの書き込み開始と同時に「mem_rdy」をネゲートし、書き込みが完了すると(ここでは書き込みに3サイクルかかる場合の例を示している)T9のタイミングで再び「mem_rdy」をアサートする。
(B)同時に2つのイベントが検知された場合
同時に複数のイベントが検知された場合、本実施形態では、イベント番号の小さいイベントほど高い優先度で、順番にログデータを作成する。
図26では、T13のタイミングでイベント3,4を同時に検知したため、イベント検知回路641はT14のタイミングで「req3」と「req4」を同時にアサートする。
ログ作成回路645は、優先度の高い順に、まず「ack3」をアサートし、「log_data=0x0145_03」を内蔵メモリ609に書き込む。その間、「ack4」はネゲートされたままであり、イベント検知回路641は「req4」をアサートし続ける。
T18のタイミングでイベント3のログデータの書き込みが完了すると、T19のタイミングで「ack4」をアサートし、イベント4の検知結果を受け付ける。
本実施形態によれば、上記のような動作により、同時に複数のイベントを検知した場合でも、発生したイベントを取りこぼすことなく、ログデータを取得することが可能となる。また、上記本実施形態では優先度が固定(イベント番号が小さいほど優先度高)の場合の例であるが、別途レジスタを設けることでイベント番号ごとに優先度を変更できる構成とすることも可能である。例えば、イベント番号の大きいイベントほど高い優先度にしてもよい。
図27に、イベントモードにて内部信号を検知する場合のタイミングチャートを示す。以下のようにレジスタ設定された場合を想定している。「dbg_en=1」、「ev_en=1」、「time_en=1」、「ev_mode=1」
「内部信号sig0の立ち上がり」をイベント番号5として登録した場合の例である。基本的なログ取得の動作は、レジスタアクセス検知時と同じであるが、内部信号検知時は、イベント設定された内部信号の変化を監視して、ログデータが作成される。イベント検知後にログデータを作成しメモリに書き込む機能はレジスタアクセス検知時と共通であるため、図26に(B)にて説明した、同時に複数のイベントが発生した場合の対応も同様に可能である。
CPU620からのアクセスをモニタし、ログデータを取得する場合、アドレス(32bit)、データ(32bit)の情報をそのままログデータとして保存するため、ログデータのデータ量が膨大になり、保存に必要な内蔵メモリ609の容量が大きくコストがかかる。
これに対して、第3実施形態に係る電子機器用のデバイスによれば、電子機器の障害解析のためにあらかじめログとして取得したいCPUからのレジスタアクセスや内部信号の挙動をイベントとして登録しておき、登録したイベントが発生した場合のみ、イベント番号をログとして保存する。これにより、必要とする内蔵メモリの容量を小さく抑えることができる。
また、第3実施形態に係る電子機器用のデバイスによれば、CPUアクセスだけでなく、デバイスの内部信号の変化もイベントとして検知しログを取得することができる。また、ログにタイムスタンプを付加することで、より詳細な解析ができるようになる。また、イベントが検知されたことを、割り込みによりソフトウェアに通知することができる。また、シリアル通信可能な機器、例えばPCを接続して、ログを取得することができる。解析するタイムレンジに応じて適切な分解能のタイムスタンプをログに付加することで、より詳細な解析ができるようになる。アドレスやデータの一部(例えば上位16bit)のみを比較して、イベント検知することができ、より柔軟な解析ができる。また、同時に複数のイベントが発生した場合でも、全てのイベントのログを取得することができ、より確実な解析ができる。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明した。しかしながら、本発明の技術的範囲はかかる例に限定されない。本発明の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属する。
例えば、各CPUにより実行される各機能を実現するためのプログラムは、はじめから図示しないコンピュータに備えられた図示しないROM等の記憶手段に格納されてもよいし、記録媒体であるCD−ROMあるいはフレキシブルディスク,SRAM,EEPROM,メモリカード等の不揮発性記録媒体(メモリ)に記録され、メモリに記録されたプログラムをコンピュータにインストールして各CPUに実行させるか、又はCPUにそのメモリからこのプログラムを読み出して実行させてもよい。さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードすることもできる。
1 エンジン制御部
2 コントローラ
3 スキャナ
4 エンジンASIC
5 コントローラASIC
7 メモリ
8 エンジンCPU
10 コントローラCPU
11 プロッタ
413 デバッグ制御部(エンジンASIC側)
415 バッファ制御部(エンジンASIC側)
418 内部レジスタ(エンジンASIC側)
422 バッファセレクタ(エンジンASIC側)
423 デバッグ用バッファ(エンジンASIC側)
513 デバッグ制御部(コントローラASIC側)
515 バッファ制御部(コントローラASIC側)
518 内部レジスタ(コントローラASIC側)
521 バッファセレクタ(コントローラASIC側)
522 デバッグ用バッファ(コントローラASIC側)
600 ターゲット基板
601 デバイス
620 CPU
641 イベント検知回路
645 ログ作成回路
647 イベント登録部
649 制御レジスタ
特開2003‐271414号公報 特開2008‐287319号公報

Claims (10)

  1. データを入出力する入出力装置と、
    前記データを記憶するメモリと、
    前記メモリへの前記データの転送を制御するエンジン制御部と、
    前記入出力装置と前記メモリとの間で前記データの転送を行うコントローラと、を備え、
    前記エンジン制御部は、
    前記データを一時的に蓄積するバッファと、
    デバッグ用のログデータを生成し、前記エンジン制御部内の前記バッファの空き状況及び前記コントローラのデータ転送状況に応じて、前記生成されたログデータを前記バッファへ蓄積するか又は前記コントローラへ転送するデバッグ制御部と、
    を有することを特徴とする電子機器用のデバイス。
  2. 前記エンジン制御部は、
    前記データの前記メモリへのダイレクトメモリアクセスを制御するダイレクトメモリアクセスコントローラを更に備え、
    前記ダイレクトメモリアクセスによる前記コントローラへのデータ転送中、前記ログデータを前記バッファへ蓄積することを特徴とする請求項1に記載の電子機器用のデバイス。
  3. 前記エンジン制御部は、
    前記生成されたデバッグ用のログデータを一時的に蓄積するためのデバッグ用のログバッファを更に有し、
    前記バッファの空き状況に応じて前記生成されたログデータを前記デバッグ用のログバッファへ蓄積することを特徴とする請求項1又は2に記載の電子機器用のデバイス。
  4. 前記デバッグ用のログデータは、
    前記エンジン制御部が有するレジスタへの書込み及び読込みの履歴情報を含むことを特徴とする請求項1〜3のいずれか一項に記載の電子機器用のデバイス。
  5. 前記デバッグ用のログデータは、
    前記ダイレクトメモリアクセスコントローラの動作状態の遷移を含むことを特徴とする請求項に記載の電子機器用のデバイス。
  6. 前記デバッグ用のログデータは、
    前記エンジン制御部への割り込み状態の遷移を含むことを特徴とする請求項1〜5のいずれか一項に記載の電子機器用のデバイス。
  7. 前記データを一時的に蓄積するバッファは、
    入力するデータを蓄積するための入力用バッファと、出力するデータを蓄積するための出力用バッファとを有し、
    前記ダイレクトメモリアクセスコントローラは、
    前記入力用バッファから前記メモリにデータを書き込む書込み用ダイレクトメモリアクセスコントローラと、前記メモリからデータを読み込み前記出力用バッファに出力する読込み用ダイレクトメモリアクセスコントローラとを有し、
    前記エンジン制御部内の前記入力用バッファの空き状況、前記出力用バッファの空き状況及び前記コントローラのデータ転送状況に応じて、前記生成されたログデータを前記入力用バッファへ蓄積するか、前記出力用バッファへ蓄積するか又は前記コントローラへ転送することを特徴とする請求項2又は5に記載の電子機器用のデバイス。
  8. 前記コントローラは、
    前記データの前記メモリへのダイレクトメモリアクセスを制御するコントローラ側のダイレクトメモリアクセスコントローラと、
    前記データを一時的に蓄積するコントローラ側のバッファと、
    前記コントローラ側のバッファの空き状況及び前記コントローラのデータ転送状況の少なくともいずれかを前記エンジン制御部へ通知するデバッグ制御部と、を有し、
    前記エンジン制御部のデバッグ制御部は、
    前記エンジン制御部内の前記バッファの空き状況と、前記コントローラ側のバッファの空き状況と前記コントローラのデータ転送状況に応じて、前記生成されたログデータを前記エンジン制御部側のバッファへ蓄積するか、前記コントローラ側のバッファへ蓄積させるか、又は前記コントローラへ転送することを特徴とする請求項1〜7のいずれか一項に記載の電子機器用のデバイス。
  9. 前記デバッグ制御部は、アクセスされるモジュールを有し、
    前記モジュールへのアクセスを分析し、特定のイベントを検知するイベント検知部と、
    前記イベント検知部により検知された特定のイベントに対するログデータを生成するログ生成部と、
    前記イベント検知部により検知される特定のイベントを登録するイベント登録部と、
    を有することを特徴とする請求項1に記載の電子機器用のデバイス。
  10. データを入出力する入出力装置と、
    前記データを記憶するメモリと、
    前記メモリへの前記データの転送を制御するエンジン制御部と、
    前記入出力装置と前記メモリとの間で前記データの転送を行うコントローラと、を備え、
    前記エンジン制御部は、
    前記データを一時的に蓄積するバッファと、
    デバッグ用のログデータを生成し、前記エンジン制御部内の前記バッファの空き状況及び前記コントローラのデータ転送状況に応じて、前記生成されたログデータを前記バッファへ蓄積するか又は前記コントローラへ転送するデバッグ制御部と、
    を有する電子機器用のデバイスを備えることを特徴とする画像形成装置。
JP2013014413A 2012-03-23 2013-01-29 電子機器用のデバイス Expired - Fee Related JP6070220B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013014413A JP6070220B2 (ja) 2012-03-23 2013-01-29 電子機器用のデバイス

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012066679 2012-03-23
JP2012066679 2012-03-23
JP2013014413A JP6070220B2 (ja) 2012-03-23 2013-01-29 電子機器用のデバイス

Publications (2)

Publication Number Publication Date
JP2013225291A JP2013225291A (ja) 2013-10-31
JP6070220B2 true JP6070220B2 (ja) 2017-02-01

Family

ID=49595281

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013014413A Expired - Fee Related JP6070220B2 (ja) 2012-03-23 2013-01-29 電子機器用のデバイス

Country Status (1)

Country Link
JP (1) JP6070220B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015187833A (ja) * 2014-03-14 2015-10-29 株式会社リコー 情報処理装置、情報処理方法およびプログラム
JP6447167B2 (ja) * 2015-01-23 2019-01-09 株式会社リコー 半導体デバイス、ログ取得方法及び電子機器

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005065023A (ja) * 2003-08-18 2005-03-10 Noritsu Koki Co Ltd 動作履歴データ保存システム及び保存プログラム
JP2008065426A (ja) * 2006-09-05 2008-03-21 Ricoh Co Ltd 画像形成方法,装置および画像形成システム
JP2007018534A (ja) * 2006-09-25 2007-01-25 Hitachi Ltd オンラインシステム回復方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Also Published As

Publication number Publication date
JP2013225291A (ja) 2013-10-31

Similar Documents

Publication Publication Date Title
US9047400B2 (en) Data processor device for handling a watchpoint and method thereof
US9454451B2 (en) Apparatus and method for performing data scrubbing on a memory device
TWI505084B (zh) 用於產生資料處理設備之追蹤串流的技術
CN104320308B (zh) 一种服务器异常检测的方法及装置
US9069896B2 (en) Data processor device for handling a watchpoint and method thereof
US9223678B2 (en) Data processor device having a debug control module which selectively modifies trace messages
JP6070220B2 (ja) 電子機器用のデバイス
US20140095846A1 (en) Trace based measurement architecture
JP7354091B2 (ja) 集積回路のためのロジックアナライザ
JP6127766B2 (ja) 電子機器用のデバイス及び前記デバイスを搭載した電子機器
JP4914253B2 (ja) 半導体集積回路及びエラー解析方法
JP5982845B2 (ja) トレース制御装置及びトレース制御方法
US20060117226A1 (en) Data communication system and data communication method
JP6666216B2 (ja) 電子制御装置、解析システム
JP4828483B2 (ja) 半導体集積回路
JP6142182B2 (ja) 集積回路装置
CN108681500B (zh) 具有事务记录能力的系统和事务记录方法
CN117076183B (zh) 一种错误上报方法、片上系统、计算机设备及存储介质
CN117076182B (zh) 一种错误上报方法、片上系统、计算机设备及存储介质
JP2006227668A (ja) メモリモデルとプログラムと論理回路検証方法
JP2010140440A (ja) バス調停装置
JP2008152665A (ja) 半導体集積回路の動作解析方法
JP2002132743A (ja) メモリアクセス監視装置、メモリアクセス監視方法およびメモリアクセス監視用プログラムを記録した記録媒体
JP2007079828A (ja) 信号処理装置
JP5467172B1 (ja) 情報処理システム、および情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161111

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161219

R151 Written notification of patent or utility model registration

Ref document number: 6070220

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees