IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社エルイーテックの特許一覧

特開2022-15197デバッグ用インサーキットエミュレータ装置
<>
  • 特開-デバッグ用インサーキットエミュレータ装置 図1
  • 特開-デバッグ用インサーキットエミュレータ装置 図2
  • 特開-デバッグ用インサーキットエミュレータ装置 図3a
  • 特開-デバッグ用インサーキットエミュレータ装置 図3b
  • 特開-デバッグ用インサーキットエミュレータ装置 図3c
  • 特開-デバッグ用インサーキットエミュレータ装置 図3d
  • 特開-デバッグ用インサーキットエミュレータ装置 図3e
  • 特開-デバッグ用インサーキットエミュレータ装置 図4
  • 特開-デバッグ用インサーキットエミュレータ装置 図5
  • 特開-デバッグ用インサーキットエミュレータ装置 図6
  • 特開-デバッグ用インサーキットエミュレータ装置 図7
  • 特開-デバッグ用インサーキットエミュレータ装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022015197
(43)【公開日】2022-01-21
(54)【発明の名称】デバッグ用インサーキットエミュレータ装置
(51)【国際特許分類】
   G06F 11/36 20060101AFI20220114BHJP
【FI】
G06F11/36 152
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2020117882
(22)【出願日】2020-07-08
(71)【出願人】
【識別番号】591107481
【氏名又は名称】株式会社エルイーテック
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100158551
【弁理士】
【氏名又は名称】山崎 貴明
(72)【発明者】
【氏名】井之川 晋一
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA33
5B042HH03
5B042HH30
5B042JJ43
5B042MA10
5B042MB04
5B042MC03
5B042MC05
5B042MC35
5B042NN13
5B042NN14
5B042NN16
(57)【要約】
【課題】ICEがCPU動作時の詳細なプロセッサのステート情報を提供することにより、プロセッサを用いたプログラムデバッグをより確実かつ迅速に行うことが求められている。
【解決手段】プロセッサに接続されたインサーキットエミュレータ装置は、コンピュータプログラムを動作させるためのワークメモリーの領域を少なくとも有する第1の記録装置と、前記コンピュータプログラムに基づいて動作する前記プロセッサのステート及び前記ステートに関連するアドレスを受信するプロセッサアクセス検出部と、前記ステート及び前記アドレスを記憶する第2の記録装置と、を備え、前記ステートは、前記プロセッサのスタックメモリーがリード及びライトされたことを示す情報を少なくとも含むことができる。
【選択図】図1
【特許請求の範囲】
【請求項1】
プロセッサに接続されたインサーキットエミュレータ装置であって、
コンピュータプログラムを動作させるためのワークメモリーの領域を少なくとも有する第1の記録装置と、
前記コンピュータプログラムに基づいて動作する前記プロセッサのステート及び前記ステートに関連するアドレスを受信するプロセッサアクセス検出部と、
前記ステート及び前記アドレスを記憶する第2の記録装置と、
を備え、
前記ステートは、前記プロセッサのスタックメモリーがリード及びライトされたことを示す情報を少なくとも含む、装置。
【請求項2】
前記第2の記録装置は、前記ステート及び前記アドレスに関連する時間情報をさらに記憶する、請求項1に記載の装置。
【請求項3】
前記第1の記録装置及び前記第2の記録装置のメモリーマップが同じである、請求項1に記載の装置。
【請求項4】
前記第2の記録装置は、前記ステート及び前記アドレスに関連するデータをさらに記憶する、請求項1又は2に記載の装置。
【請求項5】
請求項1~4に何れか一つに記載の装置から前記ステートに関する情報を受信し、表示するコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバッグ用インサーキットエミュレータ装置に関する。
【背景技術】
【0002】
マイクロコンピュータシステムの開発において、プロセッサ(中央処理装置(CPU)とも称される)またはプロセッサを内蔵したチップのインサーキットエミュレータ(ICE)を用いてプログラムのデバッグ作業が行われている。従来、ICEでは、プログラムデバッグのために、プロセッサのレジスタ内容表示やアクセスするメモリーの内容を表示する機能が知られている。さらに、特許文献1には、メモリーへのリード及びライトなどのプロセッサのステートを提供する機能が開示されている(図2)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005-182573号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来のICEは、CPUのバスを用いてメモリーに対する命令のフェッチ、並びに、リード及びライトに関するステートを取得できた。しかしながら、従来技術において、より詳細な情報、特に、メモリーにアクセスするCPUに関するプロセッサのステート(内部動作状態)が提供されないことから、デバッグ作業の内容によっては、従来のICEで提供される情報はデバッグ作業を行うために十分に詳細な情報では無かった。特に、スタックメモリーに関するプロセッサのステータスが取得できなかったことから、従来、スタックによる領域への書き換えの暴走、不正プログラムによるメモリーアクセスは検出が難しかった。
【0005】
ICEがCPU動作時の詳細なプロセッサのステート情報を提供することにより、プロセッサを用いたプログラムデバッグをより確実かつ迅速に行うことが求められている。
【課題を解決するための手段】
【0006】
本発明の実施例による、プロセッサに接続されたインサーキットエミュレータ装置は、コンピュータプログラムを動作させるためのワークメモリーの領域を少なくとも有する第1の記録装置と、前記コンピュータプログラムに基づいて動作する前記プロセッサのステート及び前記ステートに関連するアドレスを受信するプロセッサアクセス検出部と、前記ステート及び前記アドレスを記憶する第2の記録装置と、を備え、前記ステートは、前記プロセッサのスタックメモリーがリード及びライトされたことを示す情報を少なくとも含むことができる。
【0007】
本発明の実施例によるインサーキットエミュレータ装置において、前記第2の記録装置は、前記ステート及び前記アドレスに関連する時間情報をさらに記憶する。
【0008】
本発明の実施例によるインサーキットエミュレータ装置において、前記第1の記録装置及び前記第2の記録装置のメモリーマップが同じである。
【0009】
本発明の実施例によるインサーキットエミュレータ装置において、前記第2の記録装置は、前記ステート及び前記アドレスに関連するデータをさらに記憶する。
【図面の簡単な説明】
【0010】
図1】インサーキットエミュレータ、開発基板、及びホストコンピュータ装置を含むインサーキットエミュレータシステムを示す。
図2】プロセッサの状態(ステート)とその遷移を示す。
図3a】プロセッサの状態を実際の命令に基づいて示す。
図3b】プロセッサの状態を実際の命令に基づいて示す。
図3c】プロセッサの状態を実際の命令に基づいて示す。
図3d】プロセッサの状態を実際の命令に基づいて示す。
図3e】プロセッサの状態を実際の命令に基づいて示す。
図4】セキュリティ機能を実現するICEにおける周辺ロジックの詳細を示す。
図5】ICEのリセットの処理フローを示す。
図6】記憶装置及び周辺ロジックのメモリー空間のメモリーマップの例を示す。
図7】プロセッサのレジスタバンクにおけるレジスタを示す。
図8】ホストコンピュータ装置において、レジスタバンクの情報を表示及び更新するためのユーザインタフェースを示す。
【発明を実施するための形態】
【0011】
インサーキットエミュレータの構成
図1は、インサーキットエミュレータ115、開発基板110、及びホストコンピュータ装置120を含むインサーキットエミュレータを用いたシステム100を示す。インサーキットエミュレータを用いたシステム100は、開発基板110、インサーキットエミュレータ(ICE、In-Circuit Emulator)115、及びホストコンピュータ装置120を備える。インサーキットエミュレータ115は、プロセッサ105、インサーキットエミュレータ制御ユニット180、周辺ロジック25、記憶装置24、外部バスインタフェース26、カバレッジ記録用メモリー19、トレース記録用メモリー20、リアルタイムモニタ用メモリー18、及びホストコンピュータ装置用インタフェース21を含む。
【0012】
インサーキットエミュレータを用いたシステム100において、ICE115は、ホストコンピュータ装置用インタフェース21を介してホストコンピュータ装置120に接続される。ホストコンピュータ装置用インタフェース21は、USB(Universal Serial Bus)や、UART (Universal Asynchronous Receiver/Transmitter)、及びSPI(Serial Peripheral Interface)などを用いて実現される。
【0013】
ICE115は、さらに、接続ケーブル27を介して開発ターゲットとなる基板110に接続される。接続ケーブル27は、周辺ロジック25の外部バスインタフェース26に接続されており、接続ケーブル27の基板110に接続される端部(周辺ロジック25側端部の反対側の端部)は、コネクタ(図示せず)を有する。接続ケーブル27のコネクタは、基板110のプロセッサまたはプロセッサを内蔵したチップが有するソケット(図示せず)を受け入れる。プログラム開発者は、開発基板110のソケットにおけるチップ挿入部をICE115のコネクタに差し込むことによって、プロセッサ105またはプロセッサを含むチップで動作するプログラムのデバッグを行うことが可能となる。
【0014】
プロセッサ105は、バスコントローラ4、状態遷移制御部5、複数のレジスタ群を内蔵するレジスタバンク8、及びレジスタバンク制御部29を有する。状態遷移制御部5は、後述するプロセッサ105の内部状態遷移を管理し、プロセッサ105の動作状態を決定するとともに、制御ユニット及び命令デコーダ(図示せず)、並びに、バスコントローラ4の動作指示を行う。レジスタバンク制御部29は、実行時に用いられるレジスタバンク8におけるレジスタ群の一つを選択及び特定する。プロセッサ105は、レジスタバンク8を有することから、第1のレジスタ群に対する処理1と第2のレジスタ群に対する処理2の独立性が維持され、第1の処理と第2の処理の切替が迅速に行われる。
【0015】
状態遷移制御部5は、さらに、命令のフェッチや、メモリーのリード及びライトなどの状態を含むプロセッサステート(状態)6、及び、当該命令の最終サイクル(Last Instruction Cycle、LIC)を示す情報7をプロセッサアクセス検出部9に出力する。
【0016】
バスコントローラ4は、アドレスデータ、バスデータ、及びリード/ライト制御信号を、ICE115のバス(アドレスバス1、データバス2、及びリード/ライト制御信号バス3)とバスセレクタ23とを介して記憶装置24及び周辺ロジック25に送信する。さらに、プロセッサ105のバスコントローラ4からのアドレスデータ及びバスデータは、ICE制御ユニット180のプロセッサアクセス検出部9に送信される。
【0017】
ICE制御ユニット180は、プロセッサ105のレジスタバンク8の情報を入出力することができる。具体的には、プロセッサ105のレジスタバンク8は、ICE制御ユニット180のプロセッサレジスタアクセス制御部10からレジスタバンクアドレス信号(Register Bank Address,rb_adr)、レジスタバンクリード/ライト信号(Register Bank Read/Write,rb_rw)を、プロセッサレジスタアクセス制御部10からの制御によりレジスタバンクデータ出力信号(Register Bank Data Out,rb_do)とレジスタバンクデータ入力信号(Register Bank Data In,rb_di)を介してプロセッサレジスタアクセス制御部10よりアクセスができる。
【0018】
レジスタバンクリード/ライト信号(rb_rw)がライト信号の場合、レジスタバンク8は、レジスタバンクアドレス信号(rb_adr)のアドレスにライトすべきレジスタバンクのデータを、レジスタバンクデータ入力信号(rb_di)を介してプロセッサレジスタアクセス制御部10から受信する。レジスタバンクリード/ライト信号(rb_rw)がリード信号の場合、レジスタバンク8は、レジスタバンクアドレス信号(rb_adr)のアドレスにリードすべきレジスタバンクのデータを、レジスタバンクデータ出力信号(rb_do)を介してプロセッサレジスタアクセス制御部10に送信する。プロセッサレジスタアクセス制御部10によりアクセスされるレジスタバンク8の情報は、ICE制御ユニット180の内部バスを介してホストコンピュータ装置用インタフェース21経由でホストコンピュータ装置120に提供され、ホストコンピュータ装置120は、レジスタバンク8の情報を表示更新する。レジスタバンクデータのアクセスは1バイトのレジスタ単位に行うが複数のレジスタ単位で行っても良い。プロセッサ105のレジスタバンク8のレジスタへのリード/ライトタイミングはレジスタバンクリード/ライト信号(rb_rw)の立上りまたは立下りであっても良いし、プロセッサ105内の別クロックであっても良い。
【0019】
開発基板110は、ICE115から接続ケーブル27のコネクタ(図示せず)を受けるソケット(図示せず)を有する。ICE115のコネクタを開発基板110のソケットに差し込むことによって、ICE115は、外部バスインタフェース26に接続された接続ケーブル27を介して、開発基板110に接続される。これにより、ICE115の内部のプロセッサ105、ICE制御ユニット180、周辺ロジック25、及び記憶装置24は、開発基板に実装されたプロセッサまたはプロセッサを含むチップをエミュレートすることができる。他の実施例において、開発基板110及びICE115が、それぞれ、コネクタ及びソケットを有していてもよい。
【0020】
ICE115は、バスセレクタ23、記憶装置24、及び、接続ケーブル27に接続されている周辺ロジック25を有する。記憶装置24、及び周辺ロジック25は、バスセレクタ23を介してプロセッサ105及びICE制御ユニット180に接続されている。
【0021】
記憶装置24は、ICE115がエミュレーションを実行している時にプロセッサ105がアクセスするメモリーを含む。記憶装置24において、エミュレートされるチップに内蔵される又は開発基板110に実装されるRead Only Memoy(ROM)及び/又はRandom Access Memory(RAM)がエミュレーションされる。ROMがプロセッサ105からアクセスされる場合、ROMは、プロセッサ105を動作させるためのコンピュータプログラムを記憶し、RAMは、コンピュータプログラムを動作させるためにワークメモリーとして用いられる。ROMがICE制御ユニット180からアクセスされる場合、ROMは、書き込み可能であり、ホストコンピュータ装置120から送られたデバッグ対象の実行プログラムを書き込むことができる。記憶装置24及び周辺ロジック25は、アドレスバス1、データバス2、及びリード/ライト制御信号バス3を含むバス、並びに、バスセレクタ23を介して、プロセッサ105に接続される。
【0022】
バスセレクタ23は、プロセッサ105、記憶装置24、周辺ロジック25及びICE制御ユニット180のアドレスバス、データバス、制御信号を選択して接続する。ICE115は、ホストコンピュータ装置120の操作又は外部入力185の信号により、プロセッサ105を実行中から停止中(ブレイク中)の状態又はその逆の状態にすることができ、さらに、ブレイク条件を検出すると、プロセッサ105を実行中から停止中の状態にする。ICE制御ユニット180のブレイク検出部11は、外部入力185の信号、及びブレイク条件が満たされたことのいずれか一つを検出したことに応じて、プロセッサ105の状態を変化させるための信号であるBreak_act信号を、プロセッサ105とバスセレクタ23に送信する。例えば、Break_act信号が‘LOW’信号出力中は実行中とし、Break_act信号が‘HIGH’信号を出力されている間を停止中とすることができる。
【0023】
実行中おいて、バスセレクタ23が、プロセッサ105、記憶装置24、及び周辺ロジック25のアドレスバス、データバス、及び制御信号を選択し接続することにより、プロセッサ105は、記憶装置24及び周辺ロジック25を制御する。一方、停止中において、バスセレクタ23が、ICE制御ユニット180、記憶装置24、及び周辺ロジック25のアドレスバス、データバス、及び制御信号を選択し接続することにより、ICE制御ユニット180は、記憶装置24及び周辺ロジック25を制御する。
【0024】
したがって、バスセレクタ23は、実行中において、プロセッサ105に接続されたアドレスバス1、データバス2、及び制御信号バス3を記憶装置24、及び周辺ロジック25に接続し、停止中において、制御ユニット180に接続されたアドレスバス31、データバス32、及び制御信号バス33を記憶装置24、及び周辺ロジック25に接続する。これにより、停止中において、ホストコンピュータ装置120は、その操作により、記憶装置24、及び周辺ロジック25の内容を表示更新することができる。停止中のプロセッサ105は、バスセレクタにより、記憶装置24、及び周辺ロジック25から切り離されている(プロセッサ105及びICE制御ユニット180はバスセレクタ23を介して接続されていない)が、レジスタバンク8はバスを介さずアクセスできる、すなわち、ICE制御ユニット180のプロセッサレジスタアクセス制御部10が、プロセッサ105のレジスタバンク8にアクセスするため、ホストコンピュータ装置120は、その操作により、レジスタバンク8の内容を表示更新することができる。
【0025】
ICE115は、さらに、ICE制御ユニット180、カバレッジ記録用メモリー19、トレース記録用メモリー20、リアルタイムモニタ用メモリー18、ホストコンピュータ装置用インタフェース21及びICEバス(アドレスバス31、データバス32、及びリード/ライト制御信号バス33)を有する。カバレッジ記録用メモリー19は、記憶装置24などのメモリーにどのようなアクセスが実行されたかについての履歴の情報を格納する。トレース記録用メモリー20は、ICE115が実行するプロセッサ105の動作トレースなどの機能に必要な情報を格納するために用いられる。例えば、トレース記録用メモリー20は、トレース履歴、タイミング、及びトレースの結果を記憶する。リアルタイムモニタ用メモリー18は、記憶装置24及び周辺ロジック25のメモリーと同じメモリー空間(同じアドレスマッピング)を有し、プロセッサが実行中であるときの記憶装置24及び周辺ロジック25のメモリーのアクセス内容を記録する。具体的には、メモリーアクセスバス制御部12は、プロセッサが実行中であるとき、プロセッサアクセス検出部9がアドレスバス1、データバス2、及びプロセッサステート6を介して取得した情報をリアルタイムモニタ用メモリー18に記録する。これにより、ホストコンピュータ装置21は、実行中において、記憶装置24のRAM及び周辺回路25のレジスタに記録されるべき内容をリアルタイムで読み取ることができる。ホストコンピュータ装置用インタフェース21は、ホストコンピュータ装置120をICE115に接続させ、ホストコンピュータ装置120及びICE115間における操作コマンドの送受信を行う。ホストコンピュータ装置用インタフェース21は、USB(Universal Serial Bus)や、UART (Universal Asynchronous Receiver/Transmitter)、及びSPI(Serial Peripheral Interface)などを用いて実現される。
【0026】
図6は、記憶装置24及び周辺ロジック25のメモリー空間のメモリーマップの例を示す。メモリーマップにおいて、アドレス「0000」から「xxx1」はコンピュータプログラムを記録するための領域であるユーザROM領域であり、「xxx2」から「xxx3」は未使用領域であり、「xxx4」から「xxx5」はワークメモリーとして機能するユーザRAM領域であり、「xxx6」から「xxx7」は周辺ロジック25が用いるレジスタとして機能する周辺機能設定・制御レジスタ領域であり、「xxx7」から「FFFF」はアドレスを基板110のチップセレクトに変換するのに必要な情報の領域である。カバレッジ記録用メモリー19及びリアルタイムモニタ用メモリー18それぞれのメモリーマップは、図6で示されるメモリーマップと同様とすることができる。プロセッサアクセス検出部9の機能として、メモリーマップ上のアドレス領域に未使用、RO(ReadOnly)、RW(Read/Write可)等の属性を割り振ることができる。プロセッサアクセス検出部9は、アドレス「0000」から「xxx1」はRO、「xxx2」から「xxx3」は未使用、「xxx4」から「xxx5」はRW、「xxx6」から「xxx7」はRW、「xxx7」から「FFFF」はRWに割り振り設定を行い、属性以外のアクセスを行ったらメモリーアクセス違反(メモリーバイオレーション)として検出することもできる。
【0027】
ICE制御ユニット180は、プロセッサアクセス検出部9、プロセッサレジスタアクセス制御部10、ブレイク検出部11、メモリーアクセスバス制御部12、カバレッジ解析部13、トレース記録用メモリー制御部16、トレースデータ収集部14、時間測定部15、及び、操作制御部28を有する。各回路は、ICE制御ユニット180内において、バスを介して接続されている。各回路の機能については、以下に、ICEの機能とともに説明する。
【0028】
ホストコンピュータ装置120は、デバッグに関する情報を、ホストコンピュータ装置用インタフェース21を介してICE115に送受信する。例えば、カバレッジ機能に関する情報及びトレースに関する情報が、ホストコンピュータ装置120とICE115との間で送信される。カバレッジ機能に関する情報は、少なくとも、カバレッジ測定の開始/終了や、カバレッジの表示対象とするメモリーの範囲などを示す情報を含む。トレースに関する情報は、例えば、トレース測定の開始/終了、トレースに使用するためのメモリーのサイズ、トレースモード、トレースのサンプリング条件、及びトレースポイントなどを示す情報を含む。ICE115は、ホストコンピュータ装置120から受信したカバレッジ機能に関する情報及びトレースに関する情報に基づいて動作する。
【0029】
ICEの基本動作
ユーザは、まず、ホストコンピュータ装置120及び基板110をICE115に接続する。これにより、ホストコンピュータ装置120は、基板110及びプロセッサ105を動作させるためのコンピュータプログラムを、記憶装置24のROMにロードすることができる。
【0030】
ホストコンピュータ装置120は、コンピュータプログラムをデバッグするための条件を設定することができる。例えば、コンピュータプログラムの実行を停止する(デバッグを停止する)条件であるブレイク条件や、トレースの範囲を定義するトレース範囲条件が設定される。
【0031】
ホストコンピュータ装置120は、デバッグの条件を定めた後、デバッグを開始することができる。ホストコンピュータ装置120は、所定のコンピュータプログラムを指定し、当該コンピュータプログラムを実行又はステップ実行する。ステップ実行において、コンピュータプログラムは、1バイト又は2バイト以上の所定の1命令として実行される。コンピュータプログラムのステップ実行の場合、コンピュータプログラムは、所定の命令ごとに停止(ブレイク)する。ブレイクの後、さらにステップ実行を行い、ステップ実行を繰り返すことにより、コンピュータプログラムの実行を確認することができる。この場合、プログラム実行の確認は、実行後のプロセッサ105におけるレジスタバンク8のレジスタ内容、フラグレジスタ内容、記憶装置24内のメモリー内容、周辺ロジック25内の周辺ロジックのレジスタ内容を用いて行われる。ユーザは、これらの内容が、期待とおりの内容となっているかを確認することによって、コンピュータプログラムのバグを発見することができる。
【0032】
コンピュータプログラムの実行は、ホストコンピュータ装置120により設定されたブレイク条件となるまで行われる。ブレイク条件の例は、所定アドレスの命令が実行されることや、所定アドレスのメモリーにアクセスされたことなどとすることができる。ブレイクの後、さらに実行を行い、コンピュータプログラムの実行を確認することができる。
【0033】
ブレイク検出部11は、ステップ実行、ブレイク条件、及びブレイク信号を監視し、ブレイクを行うか否かを検出する。ブレイクを行うことが検出されると、ブレイク検出部11は、Break_act信号をプロセッサ105及びバスセレクタ23に送信する。
【0034】
ICE115のプロセッサアクセス検出部9は、実行中、アドレスバス1や、データバス2、プロセッサステート6などの情報を取得し、プロセッサレジスタアクセス制御部10は、レジスタバンク8などの情報を取得する。リアルタイムモニタ用メモリー18、カバレッジ記録用メモリー19、及び/又は、トレース記録用メモリー20の少なくとも一つは、プロセッサアクセス検出部9及びプロセッサレジスタアクセス制御部10が取得したプロセッサの内部情報を記録する。これにより、ホストコンピュータ装置120は、ICE115からプロセッサの内部情報を取得し、プロセッサ105の動作履歴や実行内容を表示することができる。
【0035】
ICE115のバスセレクタ23は、ブレイク中において、バスコントローラ4から記憶装置24と周辺ロジック25へのバス接続を、メモリーアクセスバス制御部12から記憶装置24と周辺ロジック25へのバス接続に切り替えることから、ホストコンピュータ装置120は、記憶装置24と周辺ロジック25の情報も表示することができる。また、ホストコンピュータ装置120は、レジスタバンク8の情報を表示してもよい。さらに、ブレイク中において、ホストコンピュータ装置120は、記憶装置24、周辺ロジック25及び/又はレジスタバンク8の情報を更新することができる。
【0036】
以下において、特に説明がない場合、本実施例のプロセッサ105を8ビットプロセッサ、特に、インテル社の80系プロセッサとして説明する。当業者であれば理解されるように、本実施例は、変更すべき点を変更することによって、他のビット数のプロセッサに適用することが可能である。なお、遊技機において、8ビットプロセッサが広く用いられていることから、本発明の実施例によるICE115は、遊技機で用いられるプロセッサ105において、特に有用である。
【0037】
バスラインの監視とICEの表示内容
本発明の実施例によるICEは、従来のICEと同様に、バスラインの監視を行い、ブレイク条件の監視、メモリーカバレッジ、及びトレースといった処理もバスラインの監視で行っている。本発明の実施例によるICEは、さらに、プロセッサの内部ステートの監視も行っている。したがって、本発明の実施例によるICEは、リード(RD)、ライト(WR)、FT(命令フェッチ)だけであるバスラインのステートをプロセッサの内部ステートと組み合わせることにより、プロセッサバスアクセスの状態をより詳しく読み取ることができる。
【0038】
プロセッサステートの遷移
図2は、プロセッサ105の状態(ステート)とその遷移を示す。リセット、命令(オペコード)フェッチ、メモリーリード(OPR,DSPR,MR)、メモリーライト(MW)、スタックリード(SR)、スタックライト(SW)、割込み認識サイクル、及びHALTは、プロセッサがバスを制御することによって実行される処理である。命令最終サイクル判定、命令デコード、レジスタリード、レジスタライト、及び実行(演算処理)は、プロセッサがバスを制御しないプロセッサ内部の処理である。したがって、バスの制御により実行される処理は、バスの監視により検知されるが、プロセッサ内部の処理は、バスラインには表れないため、バスを監視しても、検知されない。なお、メモリーリード(OPR,DSPR,MR)は、OPRがオペランド、DSPがディスプレイスメント、MRがメモリーリードを示す。図2において、プロセッサ105の状態遷移制御部5は、プロセッサの動作状態を決定し、プロセッサ105の動作を制御する。プロセッサ105の状態は、始めに、リセットされた後、命令最終サイクル判定ステートに遷移する(1)。このステートは、各命令サイクルの最後のステートであり、次の命令フェッチに遷移するかの判定と、割込みが発生しているかの判定とが行われる。次に、新たに命令がフェッチされるサイクルに遷移し(2)、命令フェッチ(FT)サイクルとなり命令のフェッチを行う。フェッチした命令が2バイト以上である場合、命令フェッチサイクル(FT)は2回以上繰り返される(例えば、命令が3バイトの場合、命令フェッチサイクル(FT)は3回繰り返される)。命令フェッチ(FT)サイクルが終わると、次に、命令デコードサイクルへ遷移する(3)。命令デコードサイクルでデコードされた命令に基づいて、各命令ごとに、下記の状態(ステート)に遷移し、命令が順次実行される。
【0039】
-レジスタリードステート
レジスタ内容を読み出す。読み出したデータは実行される次のステートで使われる。
【0040】
-メモリーリード(OPR,DSPR,MR)ステート
メモリーリード(OPR,DSPR,MR)ステートは、メモリーリードステートの3つの状態のオペランドリード(OPR)、ディスプレースメントリード(DSPR)及びメモリーリード(MR)を1つとして表す。メモリーリード(OPR,DSPR,MR)が行われると、メモリーよりデータがリードされ、リードされたデータは、次のステートで使われる。リードすべきデータが2バイト以上である場合、メモリーリード(OPR,DSPR,MR)ステートは2回以上繰り返される。メモリーリードステートにおいて、オペランドリード(OPR)、ディスプレースメントリード(DSPR)及びメモリーリード(MR)の少なくとも一つが行われるが、フェッチした命令に応じて、OPR,DSPR,MRの少なくとも二以上の状態が交互に繰り返すこともある。
【0041】
-スタックリード(SR)ステート
スタックリードが行われると、スタックメモリーのデータがリードされる。フェッチした命令により、複数バイトのスタックメモリーがリードされる場合、このサイクルは、複数回繰り返される。リードしたデータは、次のステートで使われる。
【0042】
-HALTステート
HALT命令実行中のサイクルにおいて、プロセッサ105は、HALT状態となりHALTサイクルを繰り返す。HALTサイクルには、割込み禁止状態DI(Disable Interrupt)でのHALTサイクルと、割込み許可状態EI(Enable Interrupt)でのHALTサイクルがある。DI状態のHALTサイクルで割込みが入ると、命令フェッチサイクルに遷移し(21)、次の命令フェッチを開始する(22)。EI状態のHALTサイクルで割込みが入ると、認識サイクルへ遷移し(25)、割込み処理を開始する。
【0043】
-メモリーライト(MW)ステート
データをメモリーにライトする。ライトするデータが2バイト以上の場合、メモリーライトは繰り返して実行される(図3において、メモリーライトのステートにおけるボックスの左側の矢印が繰り返しを示す)。
【0044】
-スタックライト(SW)ステート
データをスタックメモリーへライトする。スタックライトにおいて、ライトするデータが2バイト以上の場合、スタックライトを2回以上繰り返す。
【0045】
-演算処理の実行ステート
フェッチした命令により演算レジスタに対し各種演算処理(加減乗除、論理演算等)が実行され演算結果レジスタに格納される、演算結果レジスタは次のステートで使われる。演算には何もしない演算(NOP、(No Operation))が存在する。例えば、NOPである転送命令は、リードされたデータを演算用レジスタに書き込んだ後、何もしないで次のステートで演算結果レジスタを使用する。また、演算処理は8ビット演算と16ビット演算があり、演算レジスタ、演算結果レジスタ共に8ビットと16ビットがある。
【0046】
-レジスタライトステート
データをレジスタにライトする。データが2バイト以上の場合、レジスタライトを複数回繰り返す。
【0047】
-命令サイクルの終了判定(LIC)ステート
命令サイクルが終了サイクルであるか否かを判定し、終了サイクルである場合、次の命令フェッチに遷移する(2)。また、このステートで割込みが発生していることを検出した場合、割り込み認識サイクルステートに遷移する(24)。
このステートの時、プロセッサ105の状態遷移制御部5は最終サイクル信号lic7を出力する。この信号は1命令毎に実行するステップ動作のブレイク検出に使われる。
【0048】
-割り込み認識サイクルステート
プロセッサ105が割込みを検出すると割込み認識サイクルステートとなり、割込み認識サイクルが終了すると命令サイクルの終了判定に遷移し(25)、割込み処理プログラムを開始する。
【0049】
図3a~eは、プロセッサの状態を実際の命令に基づいて示す。なお、図3中に示される参照番号は、図2中の参照番号に対応する。
【0050】
図3aは、状態遷移として、1バイト命令をフェッチする例を示す。図3aでは、例として、命令LD A,Bを用いて説明する。
【0051】
この命令は、Bレジスタの内容をAレジスタにロードする命令である。当該命令において、状態遷移制御部5は、プロセッサの状態を、以下の順序で遷移させる。
1.フェッチ(FT0、エフティーゼロ)から、命令のデコードへの遷移(3)、
2.命令のデコードから、Bレジスタをリードへの遷移(4)、
3.Bレジスタを演算レジスタへリードから、演算処理の実行への遷移(7)
4.NOP演算処理の実行から、Aレジスタへ演算結果レジスタのライトに遷移(13)
Bレジスタの内容がAレジスタに書き込まれる。
5.レジスタへのライトから、次の命令フェッチへの遷移(14)
【0052】
図3aの下部に示されるタイミングチャートは、LD命令において、クロックサイクルの1サイクル目にフェッチが実行されることを示している。
【0053】
図3bは、状態遷移として、オペランドリード及びメモリーリードを伴う1バイト命令の例を示す。図3bでは、例として、命令LD A,(mn)を用いて説明する。
【0054】
この命令は、アドレスmnが示すメモリーの8ビットデータをAレジスタにロードする命令である。当該命令において、状態遷移制御部5は、プロセッサの状態を、以下の順序で遷移させる。
1.命令のフェッチ(FT0、エフティーゼロ)から、命令のデコードへの遷移(3)
2.命令のデコードから、オペランドリード(OPR)への遷移、及びオペランドリードから、メモリーリード(MR)への遷移(5)
オペランドリードにより、m及びnそれぞれをリードするため、オペランドリードは2回行われる。メモリーリードにより、mn番地のアドレスにあるメモリーのデータを演算レジスタへリードする。
3.メモリーリード(MR)から、演算処理の実行への遷移(11)
4.NOP演算処理の実行から、レジスタライトへの遷移(13)
演算結果レジスタをAレジスタに書き込むことにより、メモリーからリードした内容(mn番地のアドレスにあるメモリーのデータ)がAレジスタに書き込まれる。
5.レジスタへのライトから、次の命令のフェッチへの遷移(14)
【0055】
図3bの下部に示されるタイミングチャートは、命令において、クロックサイクルの1サイクル目にフェッチ、2、3サイクル目にオペランドリード、及び4サイクル目にメモリーリードが実行されることを示している。
【0056】
図3cは、状態遷移として、ディスプレースメントリード、オペランドリード、メモリーリード、及びメモリーライトを伴う2バイト命令の例を示す。図3cでは、例として、命令LDQ (HL+d),(k)を用いて説明する。
【0057】
この命令は、Qレジスタの内容(8ビット)及びk(8ビット)をそれぞれ上位及び下位アドレスとして表されるアドレス(16ビット)が示すメモリーのデータをリードし、HLレジスタ16ビットに8ビットのdを足し合わせた値(HL+d)が示す16ビットアドレスのメモリーにライトする命令である。
当該命令において、状態遷移制御部5は、プロセッサの状態を、以下の順序で遷移させる。
1.命令のフェッチ(FT0、エフティーゼロ、及びFT1、エフティーイチ)から、命令のデコードへの遷移(3)
当該命令は2バイト命令であることから、フェッチは2回行われる。
2.命令のデコードから、ディスプレースメントリードへ(DSPR)及びオペランドリード(OPR)への遷移(5)
ディスプレースメントリードにより、「d」の値を取得し、オペランドリードにより、「k」の値を取得する。
3.オペランドリードから、メモリーリード(MR)への遷移(11)
Qレジスタの内容を上位バイト及びkが示す値を下位バイトとして示される2バイトアドレスで示すメモリーの値を演算レジスタへリードする。
4.メモリーリード(MR)から、演算処理の実行への遷移(11)
5.演算処理でNOP演算を実行し演算レジスタ内容を演算結果レジスタへ格納し、メモリータライト(MR)への遷移(12)
演算結果レジスタの内容をHLレジスタ(16ビット)の内容にd(8ビット)を足した値(HL+d)のアドレスで指定されるメモリーにライトされる。
6.メモリーへのライトから、次の命令のフェッチへの遷移(20)
【0058】
図3cの下部に示されるタイミングチャートは、命令において、クロックサイクルの1、2サイクル目にフェッチ、3サイクル目にディスプレースメントリード、4サイクル目にオペランドリード、5サイクル目にメモリーリード、及び6サイクル目にメモリーライトが実行されることを示している。
【0059】
図3dは、状態遷移として、オペランドリード及びスタックライトを伴う1バイト命令の例を示す。図3dでは、例として、命令CALL mnを用いて説明する。
【0060】
この命令は、コール命令であり、mnで表される16ビットのアドレスとして、コールされる命令のアドレスをプログラムカウンタ(PC)に格納する命令である。
当該命令において、状態遷移制御部5は、プロセッサの状態を、以下の順序で遷移させる。
1.命令のフェッチ(FT0、エフティーゼロ)から、命令のデコードへの遷移(3)
2.命令のデコードから、オペランドリード(OPR)への遷移(5)
3.オペランドm及びnそれぞれをリードするため、オペランドリードは2回行われ、mnは16ビット演算レジスタへリードされ、演算処理の実行への遷移(11)
4.演算処理で16ビットのNOP演算の実行から、レジスタライトへの遷移(13)
演算結果アドレスmnの値を2バイトの一時レジスタにライトする。
5.レジスタライトから、レジスタリードへの遷移(15)
プログラムカウンタの上位8ビットの値を1バイトの一時レジスタにリードする
6.レジスタリードから、スタックライト(SW)への遷移(9)
1バイトの一時レジスタ(プログラムカウンタの上位8ビット)の値が、スタックポインタのアドレスから1差し引いた値のアドレスに対応するスタックにライトされる。
7.スタックライトから、レジスタリードへの遷移(10)
プログラムカウンタの下位8ビットの値を1バイトの一時レジスタへリードする
8.レジスタリードから、スタックライト(SW)への遷移(9)
1バイトの一時レジスタ(プログラムカウンタの下位8ビット)の値が、スタックポインタのアドレスから2差し引いた値のアドレスに対応するスタックにライトされる。
9.スタックライトから、レジスタリードへの遷移(10)
2バイトの一時レジスタの内容(アドレスmn)を16ビット演算レジスタへリードする
10.レジスタリードから、演算処理の実行への遷移(7)
11.16ビットのNOP演算処理の実行から、レジスタライトへの遷移(13)
16ビット演算結果レジスタ(リードした一時レジスタの内容(アドレスmn))をプログラムカウンタにライトする
5.レジスタライトから、次の命令のフェッチへの遷移(14)
【0061】
図3dの下部に示されるタイミングチャートは、命令において、クロックサイクルの1サイクル目にフェッチ、2、3サイクル目にオペランドリード、及び4、5サイクル目にスタックライトが実行されることを示している。
【0062】
図3eは、状態遷移として、スタックリードを伴う1バイト命令の例を示す。図3eでは、例として、命令RETを用いて説明する。
【0063】
この命令は、リターン命令であり、スタックに退避していたアドレス情報をプログラムカウンタに復帰させる命令である。
当該命令において、状態遷移制御部5は、プロセッサの状態を、以下の順序で遷移させる。
1.命令のフェッチ(FT0、エフティーゼロ)から、命令のデコードへの遷移(3)
2.命令のデコードから、スタックドリード(SR)への遷移(6)
スタックポインタが示すアドレスに退避された情報をリードし、一時レジスタにライトする。
3.スタックリードから、レジスタライトへの遷移(17)
一時レジスタの情報をプログラムカウンタの下位8ビットにライトする。
4.レジスタライトから、スタックリード(SR)への遷移(16)
スタックポインタのアドレスに1足した値のアドレスに退避された情報をリードし、一時レジスタにライトする。
5.スタックリードから、レジスタライトへの遷移(17)
一時レジスタの情報をプログラムカウンタの上位8ビットにライトする。
6.レジスタライトから、次の命令のフェッチへの遷移(14)
【0064】
図3eの下部に示されるタイミングチャートは、命令において、クロックサイクルの1サイクル目にフェッチ、及び2、3サイクル目にスタックリードが実行されることを示している。
【0065】
図2及び3を用いて説明したように、状態遷移制御部5は、以下のプロセッサの状態(ステート)を管理することができる。


ICE115は、これらプロセッサステートの少なくとも一部を取得することができる。
【0066】
ICEの機能
1.カバレッジ機能
ICE115は、カバレッジ機能を提供する。カバレッジ機能は、プロセッサ105が記憶装置24に記憶されたプログラムを実行したことにより、記憶装置24及び周辺ロジック25がどのようにアクセスされたかを示す情報を、ブレイクが検出されるまで取得する。例えば、ICE115は、記憶装置24と周辺ロジック25に関し、所定のアドレスへのオペコードフェッチ、オペランドリード、メモリーリード、メモリーライト、スタックリード、及びスタックライトの一つが実行されたことの情報を、プロセッサステートとして取得及び記憶する。したがって、ICE115は、メモリーリード/ライトだけでなく、スタックリード/ライトなどの情報も取得することから、より詳細にデバッグを行うための情報をユーザに提供し、デバッグを正確かつ迅速に行うことを可能にする。
【0067】
記憶装置24と周辺ロジック25は、コンピュータプログラムを記録するROM領域と、コンピュータプログラムを動作させるために必要なワーク領域であるRAM領域と周辺ロジックを有することから、ICE115は、オペコードフェッチ、及びオペランドリードをROM領域メモリーと対応付けし、メモリーリード、メモリーライト、スタックリード、及びスタックライトをRAM領域のアドレスと対応付けした情報を、カバレッジの情報としてカバレッジ記録用メモリー19に記録することができる。さらに、ICE115は、ディスプレースメントリード、ノンマスカブル割り込み時のダミーフェッチサイクル、及びマスカブル割込みのベクターフェッチサイクルの少なくとも一つ以上も、プロセッサステートとして取得してもよい。
【0068】
ICE115のプロセッサアクセス検出部9は、プロセッサ105のバスコントローラ4からのバス情報(バスコントローラ4からアドレスバス1を介して送信されるアドレス情報、及び、データバスを介して送信される、当該アドレス情報に対応するデータ)を取得し、記憶装置24と周辺ロジック25に関するアクセス情報を受信する。また、プロセッサアクセス検出部9は、状態遷移制御部5からのプロセッサステート6を受信する。カバレッジ解析部13は、受信した情報を解析し、プロセッサステートがフェッチ、オペランドリード、メモリーリード、メモリーライト、スタックリード及びスタックライトの何れか一つであるかを特定する。プロセッサステートがこれらの内の一つである場合、カバレッジ記録用メモリー19は、当該プロセッサステートと、当該プロセッサステートに対応するアドレスとを記録する。これにより、ICE115は、カバレッジ記録用メモリー19に記録された情報に基づいて、カバレッジ情報を、ホストコンピュータ装置用インタフェース21を介してホストコンピュータ装置120に提供することができる。
【0069】
一実施例において、カバレッジ記録用メモリー19は、記憶装置24及び周辺ロジック25と同じメモリー空間を有し、これにより、ICE115は、アクセスされた記憶装置24及び周辺ロジック25のアドレスに対応するプロセッサステートの情報を、当該記憶装置24及び周辺ロジック25のアドレスと同じ値であるカバレッジ記録用メモリー19におけるアドレスにおいて記録することができる。したがって、カバレッジ情報が取得された後、ICE115は、記憶装置24と周辺ロジック25のアドレス、及び当該アドレスに対応するプロセッサステートの情報を、カバレッジ記録用メモリー19から取得することができる。
【0070】
一実施例において、カバレッジ記録用メモリー19は、プロセッサコア105がアクセスできるすべてのメモリー空間(0000h-FFFFh)と同じ空間を有し、全てのメモリー空間に対するアクセスに対応するプロセッサステートの情報を、当該メモリー空間におけるアドレスに対応するカバレッジ記録用メモリー19におけるアドレスにおいて記録することができる。このことにより記憶装置24及び周辺ロジック25が実装されているメモリー空間と記憶装置24及び周辺ロジック25が実装されていないメモリー空間へのアクセスが起こったことを記録、発見できる。例えば、所定のプロセッサステートを所定の値に対応させ、所定のプロセッサステートに対応するカバレッジ記録用メモリー19のアドレスに、所定の値を記憶することによって、プロセッサステートに関する情報が記録される。
【0071】
ホストコンピュータ装置120は、そのディスプレイ装置において、カバレッジ情報を表示する。ホストコンピュータ装置120は、所定のアドレスにおいて、プロセッサステートがフェッチ、オペランドリード、メモリーリード、メモリーライト、スタックリード及びスタックライトの何れか一つであったことを表示する。例えば、アドレスごとに、プロセッサステートが表示される。また、プロセッサステートごとに色分けされてもよい、これにより、視認性が向上する。
【0072】
ホストコンピュータ装置120は、ICE115のオペレーション操作による実行、停止、一時停止、ステップ実行の他に、カバレッジ機能を制御するためのビジュアルユーザインタフェースを有していてもよい。ホストコンピュータ装置120は、カバレッジを行う記憶装置24と周辺ロジック25のアドレス範囲の指定や、カバレッジ結果のクリア、コンピュータプログラムの実行を停止する条件(ブレイク条件)の提供、ブレイク後のコンピュータプログラムの再実行の指示などの機能を有することができる。ブレイクは、割り込み処理の検出や、所定のメモリーアドレスへのアクセス、所定の時間間隔の経過、所定のアドレスのデータがリード/ライトされたこと、所定の命令が実行されたことなどのブレイク条件が満たされたこと、又は、ICE115へのブレイク信号が外部入力(図2の外部入力185)から入力があったことなどによって、プロセッサ105を停止し、ICE115を停止状態とする。これにより、ホストコンピュータ装置120は、コンピュータプログラムが実行されてからブレイクまでのカバレッジ情報をユーザに提供することができる。
【0073】
2.トレース機能
ICE115は、トレース機能を提供する。トレース機能は、プロセッサ105が実行する処理を記録し、実行された処理の情報を時系列で示す。例えば、ICE115は、記憶装置24に関し、所定のアドレスへのフェッチ、ディスプレースメントリード、オペランドリード、メモリーリード、メモリーライト、スタックリード、スタックライト、ノンマスカブル割り込み時のダミーフェッチサイクル、及びマスカブル割込みのベクターフェッチサイクルの一つが実行されたことの情報を、プロセッサステートとして取得及び記憶する。ICE115は、トレース機能を提供することにより、コンピュータプログラムを実行したとき、記憶装置24と周辺ロジック25がどのようにアクセスされたかを確認するための機能をユーザに提供し、デバッグを正確かつ迅速に行うことを可能にする。
【0074】
トレースデータ収集部14は、プロセッサ105におけるプロセッサステートなどのプロセッサ105の情報をICE115のプロセッサアクセス検出部9を介して収集し、トレース記録用メモリー制御部161は、トレース条件に基づいて設定されたトレースポイントで収集したトレース情報をトレース記録用メモリー20に記憶する。トレース情報はトレース記録用メモリー20が一杯になるか、指定されたサイズが一杯になるまで実行される。トレース記録用メモリー20は、アクセスされた記憶装置24と周辺ロジック25のアドレス、並びに、当該アドレスに対応するデータ及びプロセッサステートを少なくとも記憶する。トレース記録用メモリー20は、さらに、記憶したアドレス情報、データ情報、及びプロセッサステートに関する時間情報(プロセッサステートが行われた時刻又はその時刻に関連する時間の情報)を記憶してもよい。時間情報は、トレースポイントからの相対時間、すなわち、トレースポイントからの所定時間と関連付けすることもできる。
【0075】
一実施例において、トレース記録用メモリー20は、プロセッサコア105がアクセスできるすべてのメモリー空間(0000h-FFFFh)アドレスに対応するデータ及びプロセッサステートを少なくとも記憶する。このことにより、記憶装置24及び周辺ロジック25が実装されているメモリー空間と記憶装置24及び周辺ロジック25が実装されていないメモリー空間へのアクセスが起こったことを記録、発見できる。
【0076】
ICE115は、トレース記録用メモリー20に記録された情報に基づいて、トレース情報を、ホストコンピュータ装置用インタフェース21を介してホストコンピュータ装置120に提供することができる。
【0077】
ホストコンピュータ装置120は、そのディスプレイ装置において、トレース情報を表示する。ホストコンピュータ装置120は、所定のアドレス、さらに、所定のアドレスにおけるデータ及びプロセッサステートを少なくとも表示する。
【0078】
ホストコンピュータ装置120は、ICE115のトレース機能を制御するトレース条件のためのビジュアルユーザインタフェースを有していてもよい。トレース条件は、トレースを開始する条件及びトレースを行う範囲を少なくとも特定する。トレースを開始する条件は、トレースポイントとも称され、割り込み処理の検出や、所定のメモリーアドレス又はアドレスの範囲へのアクセス、所定の時間間隔の経過、所定のアドレスのデータがリード/ライトされたこと、所定の命令が実行されたこと、所定のアドレスの値が予め定めた値と一致又は不一致であること、所定の処理時間が予め定めた時間と一致又は不一致であること、ICE115へ外部入力(図2の外部入力185)から入力があったことなどとすることができる。トレースを行う範囲は、トレースポイント前の所定の時間や、トレースポイント後の所定の時間、トレースポイントの時間前後の所定の時間などとすることができる。
【0079】
3.情報更新機能
ホストコンピュータ装置120は、ブレイク条件を満たしたときや、ブレイク信号の入力があったとき、ステップ実行おけるコンピュータプグラム実行の中断などによって発生したブレイク中に、プロセッサ105のレジスタバンク8、記憶装置24、及び周辺ロジック25の情報を、ICE制御ユニット180のホストコンピュータ装置用インターフェース21を介して参照及び更新することができる。バスセレクタ23は、ブレイク中、バスコントローラ4から記憶装置24と周辺ロジック25へのバス接続を、メモリーアクセスバス制御部12から記憶装置24と周辺ロジック25へのバス接続に切り替えることから、ICE115のメモリーアクセスバス制御部12は、ホストコンピュータ装置用インターフェース21が受け取るホストコンピュータ装置120からの指示に基づいて、記憶装置24と周辺ロジック25の情報を参照及び/又は更新することができる。また、プロセッサレジスタアクセス制御部10は、ホストコンピュータ装置用インターフェース21が受け取るホストコンピュータ装置120からの指示に基づいて、レジスタ8の情報を参照及び/又は更新することができる。
【0080】
4.リアルタイムモニタ
ICE115は、リアルタイムモニタ用メモリー18を用いて、実行中の記憶装置24及び周辺ロジック25のRAM領域、及び周辺ロジックのアクセス情報をホストコンピュータ装置120に提供すことができる。リアルタイムモニタ用メモリー18のメモリー空間は、記憶装置24及び周辺ロジック25のメモリー空間と同じである。これにより、メモリーアクセスバス制御部12は、プロセッサアクセス検出部9が取得したアドレス、データ、プロセッサステータスの情報により、記憶装置24及び周辺ロジック25のメモリー空間と同じ空間として、リアルタイムモニタ用メモリー18にプロセッサ105が書き込んだデータと同じデータを記憶する。一実施例において、リアルタイムモニタ用メモリー18に書き込まれるデータは、記憶装置24と及び周辺ロジック25のメモリー空間と同じメモリー空間以外のメモリーマップに実装されていないメモリー空間を含んでも良い。
【0081】
5.セキュリティ機能を有するプロセッサにおいて用いられるICE
概要
遊技機などで用いられるプロセッサ内蔵のチップ(セキュリティチップと称される)において、プロセッサは、セキュリティ機能を有する。セキュリティ機能において、セキュリティチップは、セキュリティモード及びユーザモードを有する。セキュリティチップは、セキュリティモードのセキュリティ処理を実行することによって、セキュリティチップが実行するコンピュータプログラムの改ざんなどを検知することにより、セキュリティ性能を向上させることができる。
【0082】
ICE115は、セキュリティチップをエミュレーションすることができ、セキュリティモードからユーザモードへの切り替えを実現するセキュリティ機能を疑似的に実行する。
【0083】
セキュリティチップは、電源投入、又はリセット端子からシステムリセット信号が入力されると、セキュリティモードで動作する。セキュリティモードにおいて、セキュリティチップでは、セキュリティチェックを行うが、ICE115は、セキュリティチェックをエミュレートする。
【0084】
構成
図4は、セキュリティ機能を実現するICEにおける周辺ロジック25の詳細を示す。図4において、周辺ロジック25は、プロセッサ105、バスセレクタ23、及び開発基板110に接続されている。周辺ロジック25は、外部バスインタフェース回路26、初期値設定回路405、セキュリティ時間調整回路410、リセット回路415、指定エリア外走行禁止回路(IllegalAddressTrap、IAT)420、及びウオッチドッグタイマ回路(Watch Dog Timer、WDT)425を有する。
【0085】
図5は、ICE115のリセットの処理フローを示す。セキュリティチップは、リセットとして、システムリセット及びユーザリセット機能を有する。ユーザリセットは、通常のチップセットで実行されるリセットに対応しており、通常のチップセットは、システムリセットを有していない。ICE115は、システムリセット及びユーザリセットを実行することができる。システムリセットでは、周辺回路25とプロセッサ105をリセットでき、ユーザリセットでは、プロセッサ105をリセットすることができる。
【0086】
はじめに、ICE115は、システムリセットの命令を受け、リセット回路415は、システリセットを行う(ステップ505)。システムリセットのトリガーは、一例として、外部端電源端子からの周辺回路25の電源回路(不図示)への電源投入、外部端子からのリセット、及びホストコンピュータ装置120からのシステムリセット信号の発生操作などとすることができる。
【0087】
外部端子からのリセットの例としては、リセット回路415は、外部バスインターフェース回路26を介して接続ケーブル27に接続されたコネクタの外部端子であるXSRST信号を受信したことにより、リセットを検知する。ホストコンピュータ装置120からのシステムリセット信号の例としては、ICE115において、操作制御部28がホストコンピュータ装置用インターフェース21を介してホストコンピュータ装置120からのシステムリセット操作を検知すると、システムリセット操作信号(SRSR_i)を周辺ロジック25に送信する。周辺ロジック25において、リセット回路415は、システムリセット操作信号(SRSR_i)を受信し、システムリセットを検知する。ICE115は、他の手段を用いて、システムリセットを検知するように構成されていてもよい。
【0088】
システムリセットが検知されると、初期値設定回路405は、記憶装置24のユーザROM領域に記録されている情報に基づいて、周辺ロジック25内の各回路が参照する情報の初期値を設定する(ステップ550)。例えば、初期値設定回路405は、記憶装置24のユーザROM領域に予め設定されている値を、初期値として、IAT420及びWDT425に設定する。例えば、IAT420には、プログラムがアクセスできるメモリー空間のアドレスが設定され、WDT425には、監視サイクル時間が設定される。
【0089】
一実施例において、初期値設定回路405は、初期値の範囲に不備が有るか否か、設定した値が既定の値以外であるか等を判定する。不備が有る場合、初期値設定回路405は、初期値設定の処理にエラーが発生したことを示す信号を、INIT_i信号として操作制御部28に送信してもよい、または、不備が有った場合、予め設定されたデフォルト値を初期値として用いてもよい。不備が無い場合は、初期値設定回路405は、初期値設定の処理が正常に終了したことを示す信号を、INIT_i信号として操作制御部28に送信し、不備がありデフォルト値が初期値として用いられた場合、初期値設定回路405は、初期値設定の処理が異常に終了したことを示す信号を、INIT_i信号として操作制御部28に送信してもよい。これにより、操作制御部28は、初期値設定値に異常があったか否かを判定することができる。操作制御部28は、初期値設定の結果をホストコンピュータ装置120に送信し、ホストコンピュータ装置120は、初期値設定の結果を表示することができる。初期値設定結果の信号(INIT_i)は、初期値が正常に設定されたこと、正常に設定されなかったこと、及び正常に設定されなかったことの理由に関する情報(例えば、エラーコード)のいずれか一つを含むことができる。ホストコンピュータ装置120は、初期値設定が正常に設定されなかったことに加え、その理由も表示することができる。他の実施例において、初期値設定は、プログラム管理エリアに対して行われることから、初期値設定結果は、プログラム管理エリアステータスと称してもよい。
【0090】
操作制御部28は、セキュリティ時間を遅延させるか否かを判定情報に基づいて判定する(ステップ525)。セキュリティ時間の遅延を行う、すなわち、セキュリティ時間遅延が有効の場合、セキュリティ時間調整回路410は、クロックに基づいて、セキュリティチェックに要する所定の時間になるまで、処理を中断する(ステップ520)。これにより、ICE115は、セキュリティチェックの処理自体は行わないが、ICE115の外部への回路などに対して、セキュリティチェック処理を行ったように見せかけることができる。
【0091】
セキュリティ時間の遅延を行わない、すなわち、判定情報が、セキュリティ時間遅延が無効であることを示す場合、処理は、ステップ530に進み、記憶装置24に格納されたユーザROM領域のプログラムの処理の実行が開始される。
【0092】
ホストコンピュータ装置120は、セキュリティ時間を遅延させるか否か(セキュリティ時間が有効であるか無効であるか)を決定するための判定情報をICE115に設定できるように構成されていてもよい。また、判定情報はホストコンピュータ装置120により設定するように構成されていてもよい。セキュリティ時間及び/又は延長時間は、予め記憶装置24のユーザROM領域に登録されていて、初期値設定回路405により設定されてもよい、又は、ホストコンピュータ装置120によって登録されてもよい。また、キュリティ時間及び/又は延長時間は、所定の時間、又は、ランダムな時間であってもよい。ICE115がホストコンピュータ装置120から判定情報及び/又はセキュリティ時間に関する情報を受信すると、操作制御部28は、判定情報及び/又はセキュリティ時間に関する情報を、セキュリティ時間遅延設定(SDRST_i)信号により、セキュリティ時間調整回路410に送信する。セキュリティ時間調整回路410は、SDRST_i信号に基づいて、セキュリティ時間調整の有無や、セキュリティ時間の延長を制御する。
【0093】
ICE115は、ユーザリセットの命令を受け、リセット回路415は、ユーザリセットを行う(ステップ525)。ユーザリセットのトリガーは、一例として、IAT420の指定エリア外へのアクセス、WDT425のタイムアップによるプロセッサの暴走などの検出、及びホストコンピュータ装置120からのユーザリセット信号の受信などとすることができる。
【0094】
記憶装置24の指定エリア外へのアクセスは、IAT420が、記憶装置24のユーザーROMにおいて、アクセスが許可されていない所定のアドレス又は所定のアドレスの範囲にアクセスが有るか否かを監視する。IAT420は、アクセスが許可されていないメモリーへのアクセスを検出すると、IAT420は、IATO信号をユーザリセットとしてリセット回路415に送信する。プログラムの暴走などの検出は、ウォッチドッグタイマー(WDT425)が、プログラムにより一定周期でクリアされることによりプログラムに暴走が発生しているか否かを監視する。WDT425は、一定周期でクリアされないとプログラムに暴走が発生していると判定し、WDT425は、WDTO信号をユーザリセットとしてリセット回路415に送信する。ホストコンピュータ装置120からのユーザリセット信号は、ホストコンピュータ装置120がユーザリセット信号をICE115に送信すると、操作制御部28は、ユーザリセット操作(URST_i)信号をリセット回路415に送信する。
【0095】
リセット回路415は、IAT420、WDT425及び操作制御部28の何れか一つからユーザリセットに関する信号を受信すると、ユーザリセットを行う。
【0096】
システムリセット又はユーザリセットにより、プロセッサ105はリセットされ、記憶装置24のユーザROM領域におけるリセットされたアドレス(例えば、0000h番地)からコンピュータプログラムを実行する(ステップ530)。なお、ユーザリセットでは、プロセッサ105のみがリセットされるのに対し、システムリセットでは、プロセッサ105及びその周辺ロジック25もリセットされる。
【0097】
6.メモリアクセスに基づくブレイク検出
ICE制御ユニット180のブレイク検出部11は、プロセッサアクセス検出部9により検出されたプロセッサのバス(1及び2)とプロセッサステート6を監視して、プロセッサ105によるアクセスが行われるアドレス空間に、リード及びライトの少なくとも一方があったことを検出することができる。上記のようなメモリーのアドレスへのアクセスが検出されると、ブレイク検出部11は、ブレイク(Break_act)信号をプロセッサ105とバスセレクタ23に送る。これにより、プロセッサ105はブレイク状態になる。ブレイク状態において、ユーザは、ホストコンピュータ装置120を介して、記憶装置24及び周辺ロジック25に、どのようなアクセスが有ったかを確認することができる。又、プロセッサによるアクセスが許可されてないメモリーのアドレスへのアクセスは、コンピュータプログラムの暴走や、入出力回路の異常値入出力、ハードウエアの誤動作などのエラーが原因で発生することが知られている。このようなエラーは、通常のテストで発見することが難しいことから、デバッグの対象とすることは有用である。
【0098】
ブレイク検出部11は独立した複数のブレイク条件を設定でき、ブレイク条件のいずれかがブレイクを検出したとき、ブレイク(Break_act)信号をプロセッサ105とバスセレクタ23に送る。複数のブレイク条件は、ホス装置用トインターフェース21を介してホストコンピュータ装置120から設定、変更ができる。
プロセッサのメモリーアクセス条件を検出するとブレーク条件としては
指定したアドレスに対し命令フェッチ、
メモリーリード(指定データ一致を検出)、
メモリーライト(指定データ一致を検出)、
メモリーアクセス(リードまたはライト)(指定データ一致を検出)、
メモリーEXリード(指定データ以外のリードを検出)、
メモリーEXライト(指定データ以外のライトを検出)、
メモリーEXアクセス(リードまたはライト)(指定データ以外のアクセスを検出)
【0099】
ブレークのタイミングは、命令フェッチ条件は、実行前ブレーク、それ以外の条件は検出後の直近の命令に対して実行前ブレークとなる。命令フェッチの実行前ブレイクを行うには命令フェッチの最終サイクル判定時にプロセッサ105のバスコントローラ4が次にフェッチする命令のアドレス(PC)アドレスバスに出力する構造とすればよい。指定アドレスおよび指定データは各々にマスクビットを設定でき指定アドレスおよび指定データにマスクビットを論理積(AND演算)したアドレスおよびデータを指定できる。設定したブレイク条件にブレイク検出の検出回数を設定することができる。検出回数は同じブレイク条件が何回成立したか(そのブレイクポイントを何回実行したか)によってブレイクとするかを決定する。
【0100】
その他のブレイク条件としてはブレーク検出部が
・外部トリガ入力185、
・プロセッサステータスのINT割込み、NMI割込み、
・プロセッサアクセス検出部によるICE設定アドレス範囲外のアクセス(メモリーバイオレーション)、
・時間測定部からの計測時間の終了
・トレースデータ収取部によるトレースの開始、トレースの終了
等がある。
【0101】
7.プロセッサレジスタの表示更新機能
図7は、プロセッサ105のレジスタバンク8におけるレジスタを示す。レジスタバンク8は、アドレス「00h」から「3Eh」において、各レジスタを有する。レジスタバンク8は、少なくともバンク0(アドレス「05h」から「21h」)及びバンク1(アドレス「22h」から「31h」)を有する。バンク0及びバンク1は、それぞれ、メインレジスタとサブレジスタを有する。アドレス「00h」から「04h」のアドレスは、バンク0及びバンク1の両方で共通に利用されるレジスタである。
【0102】
プロセッサ105は、バンク0及びバンク1の一方のレジスタを用いてプログラムを実行する。バンクの切り替えは、プログラム命令により、レジスタバンク制御部29が行う。使用されているレジスタバンク情報は、Fレジスタ(バンク0ではアドレス「09h」及びバンク1ではアドレス「26h」のレジスタ)における3ビット目の情報をRB(Register Bank)フラグとして得ることができる。バンク0を用いる場合、レジスタバンク制御部29は、RBフラグを「0」とし、バンク1を用いる場合、RBフラグを「1」とする。したがって、バンク0及びバンク1の一方のRBフラグを参照することによって、利用されているレジスタバンクが特定される。
【0103】
ホストコンピュータ装置120は、ICE制御ユニット180のプロセッサレジスタアクセス制御部10を介して、レジスタバンクの情報の表示及び更新を行う。図8は、ホストコンピュータ装置120において、レジスタバンクの情報を表示及び更新するためのユーザインタフェースを示す。ホストコンピュータ装置120は、全てのレジスタの情報を表示することができ、さらに、ユーザはレジスタの値を変更し、ホストコンピュータ装置用インターフェース21、プロセッサレジスタアクセス制御部10を介してレジスタの内容を更新することができる。
【0104】
ホストコンピュータ装置120は、バンク毎にレジスタの内容を表示する。本実施例では、バンク毎に列を形成し、2つのバンクを2列(縦並び)で表示している。他の実施例において、2つのバンクを2行(横並び)で表示してもよい。本実施例では、メインレジスタ及びサブレジスタを並べて表示しているが、メインレジスタ及びサブレジスタを連続して(すなわち、メインのIYレジスタの後にサブのUレジスタ以降並べて)表示してもよい。
【0105】
本実施例において、共通のレジスタ(PC、I、R、IFF)810をバンク0及びバンク1それぞれで同じ内容を表示しているが、これらは、同じ内容なので、共通のレジスタをどちらか一方のバンクでのみ表示してもよい。例えば、利用中のバンクのみに共通のレジスタが関連付けられて表示されてもよい。
【0106】
本実施例において、利用中のバンクには、「※」印805が付される。これは、例示であり、利用中のバンクに関する表示の一部又は全部に色を付加する、利用中のバンクを点滅させる、共通のレジスタを利用中のバンクのみに表示するなどの他の手段によって、利用中のバンクが特定されるようにしてもよい。他の手段は、利用中のバンクの文字を太字にする、色を変更する、利用中のバンクのバックカラー、枠の色又は太さを変更するなど、様々な方法が考えられる。
【0107】
8.ステータス表示機能
ICE115は、利用中のバンクを示す情報及びプログラム管理エリアステータスを、ICE115の状態が変化した場合、又は、繰り返しで、ホストコンピュータ装置120に送信することができる。繰り返しは、所定の周期で行われてもよく、ICE115の状態の変化は、利用中のバンクを示す情報及びプログラム管理エリアステータスの少なくとも一方が変化したことを含むことができる。ホストコンピュータ装置120は、利用中のバンクを示す情報及びプログラム管理エリアステータスを表示することができる。また、ホストコンピュータ装置120は、利用中のバンクを示す情報及びプログラム管理エリアステータスを常に表示するユーザインタフェースを有していてもよい。
【0108】
その他
上記の実施例において、ハードウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ソフトウエアで実現することができ、そして、ソフトウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ハードウエアで実現することができることは理解されるであろう。
【0109】
以上に説明した処理又は処理順序において、ある処理において、その処理ではまだ利用することができないはずのデータを利用しているなどの処理又は処理順序上の矛盾が生じない限りにおいて、処理又は処理順序を自由に変更することができる。
【0110】
以上に説明してきた各実施例に関し、各実施例の一部又は全部を組み合わせて一つの実施例として実現されてもよい。
【0111】
以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【0112】
特許請求の範囲の記載「第2の記録装置」は、例えば、上記の実施例におけるカバレッジ記録用メモリー19又はトレース記録用メモリー20とすることができる。特許請求の範囲の記載「前記ステート及び前記アドレスに関連するデータ」は、例えば、このアドレスからリードされたデータ、又は、このアドレスにライトするデータとすることができる。
【符号の説明】
【0113】
1 :アドレスバス
2 :データバス
3 :リード/ライト制御信号バス
4 :バスコントローラ
5 :状態遷移制御部
6 :プロセッサステート
7 :情報
8 :レジスタバンク
9 :プロセッサアクセス検出部
10 :プロセッサレジスタアクセス制御部
11 :ブレイク検出部
12 :メモリーアクセスバス制御部
13 :カバレッジ解析部
14 :トレースデータ収集部
15 :時間測定部
16 :トレース記録用メモリー制御部
18 :リアルタイムモニタ用メモリー
19 :カバレッジ記録用メモリー
20 :トレース記録用メモリー
21 :ホストコンピュータ装置用インターフェース
23 :バスセレクタ
24 :記憶装置
25 :周辺ロジック
26 :外部バスインタフェース
27 :接続ケーブル
28 :操作制御部
29 :レジスタバンク制御部
31 :アドレスバス
32 :データバス
33 :リード/ライト制御信号バス
100 :インサーキットエミュレータを用いたシステム
105 :プロセッサ
110 :開発基板
115 :インサーキットエミュレータ
120 :ホストコンピュータ装置
161 :トレース記録用メモリー制御部
180 :インサーキットエミュレータ制御ユニット
185 :外部入力
405 :初期値設定回路
410 :セキュリティ時間調整回路
415 :リセット回路
図1
図2
図3a
図3b
図3c
図3d
図3e
図4
図5
図6
図7
図8