JP2006185365A - 半導体装置およびデバッグ方法 - Google Patents
半導体装置およびデバッグ方法 Download PDFInfo
- Publication number
- JP2006185365A JP2006185365A JP2004380888A JP2004380888A JP2006185365A JP 2006185365 A JP2006185365 A JP 2006185365A JP 2004380888 A JP2004380888 A JP 2004380888A JP 2004380888 A JP2004380888 A JP 2004380888A JP 2006185365 A JP2006185365 A JP 2006185365A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- unit
- program
- priority level
- interrupt request
- 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.)
- Withdrawn
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000004044 response Effects 0.000 claims description 13
- 238000005259 measurement Methods 0.000 claims description 9
- 230000001934 delay Effects 0.000 claims description 5
- 238000011835 investigation Methods 0.000 claims description 2
- 230000005764 inhibitory process Effects 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000004913 activation Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000012552 review Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 インサーキットエミュレータなどの特殊な調査用機器を必要とせず、かつ、容易に割込み遅延を調査できる半導体装置およびデバッグ方法を提供する。
【解決手段】 CPU制御部は、割込み要求IRQ_2を受けて、割込み要求IRQ_2の優先レベルに応じて優先レベルを「10」に変更しタスク2を実行する。時刻Tbにおいて、割込み禁止命令が実行されと、CPU制御部は、優先レベルを「15」に変更して他のすべての割込み要求を禁止する。時刻Tcにおいて、優先レベル「14」の割込み要求IRQ_1が入力されると、IPC制御部は、プログラムカウンタ値をプログラムカウンタから読出し、IPCレジスタへ格納する。そして、タスク1に含まれるレジスタ読出し命令により、IPCレジスタに格納されているタスク2のプログラムカウンタ値を読出す。
【選択図】 図2
【解決手段】 CPU制御部は、割込み要求IRQ_2を受けて、割込み要求IRQ_2の優先レベルに応じて優先レベルを「10」に変更しタスク2を実行する。時刻Tbにおいて、割込み禁止命令が実行されと、CPU制御部は、優先レベルを「15」に変更して他のすべての割込み要求を禁止する。時刻Tcにおいて、優先レベル「14」の割込み要求IRQ_1が入力されると、IPC制御部は、プログラムカウンタ値をプログラムカウンタから読出し、IPCレジスタへ格納する。そして、タスク1に含まれるレジスタ読出し命令により、IPCレジスタに格納されているタスク2のプログラムカウンタ値を読出す。
【選択図】 図2
Description
この発明は半導体装置に関し、特に割込み遅延の原因を容易に調査できる手段を備えた半導体装置およびデバッグ方法に関する。
電子計算機の分野では、プログラムの実行とは無関係に生じる例外的な事象に対処するため、割込み要求による制御が行われる。
プログラムを実行する演算部は、割込み要求が入力されると、プログラムカウンタ値などを一時的に退避させて実行中のプログラムを中断し、割込みプログラムを優先的に実行する。
さらに、複数の例外的な事象に対処するため、それぞれ優先レベルが設定された複数の割込み要求が入力できるように構成される。
たとえば、非特許文献1に開示されているように、同時に複数の割込み要求が入力された場合や先に入力された割込み要求に対応する割込みプログラムが終了しない間に次の割込み要求が入力された場合などには、優先レベルが高い方の割込みプログラムが優先的に実行される。
ところで、複数のプログラムが共有資源であるメモリやファイルなどを取り合う状態、いわゆるクリティカルセクションにおいては、バグが生じやすい。そこで、他のプログラムの実行を阻止する排他処理が一般的に行われる。そのため、割込みプログラムにおいても、一時的に優先レベルを最大値に設定し、他のすべての割込みプログラムの実行を禁止する割込み禁止処理が常套手段となっている。
その結果、先に入力された割込み要求より優先レベルが高い割込み要求が後に入力されたとしても、先に入力された割込み要求に応じて実行される割込みプログラム中で割込み禁止処理が行われると、後に入力された優先レベルが高い割込み要求に応じた割込みプログラムの開始が遅延することになる。このような現象は、「割込み遅延」と称される。したがって、例外的な事象が発生してから実行完了までの時間が制約されるような割込みプログラムの場合には、割込み遅延により処理に支障をきたす。
そのため、割込み遅延の原因となる割込み禁止処理を行っているプログラムを特定し、その内容を修正するデバッグを行う必要が生じる。
上述のような割込み遅延の原因となっているプログラムを特定する方法としては、プログラムの全ソースコードレビューによる方法およびインサーキットエミュレーションによる方法がある。
プログラムの全ソースコードレビューは、プログラム開発者がソースコードを見直し、割込み禁止処理を行っているプログラムを特定する方法である。
インサーキットエミュレーションは、演算部に代えて、演算部の動作を再現する装置(インサーキットエミュレータ)を用いて、プログラムを実行させることにより割込み禁止処理を行っているプログラムを特定する方法である。
特許文献1には、割込み要求の入力に対して割込み処理プログラムが実行されない場合にデバッグ可能なインサーキットエミュレータが開示されている。
特開2000−40015号公報
SH7011ハードウェアマニュアルHD6417011、平成11年2月 第1版、株式会社日立製作所 半導体事業本部、p64,p74〜78
しかしながら、近年では、プログラムのソースコードサイズが肥大化しており、プログラム開発者などがソースコードを見直すことが困難となっている。
また、インサーキットエミュレータは、各演算部に応じて製作する必要があり、汎用的な半導体装置を除いては、一般的ではなかった。また、機能上の制約も多かった。そのため、必ずしも十分なデバッグを行うことができなかった。
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、インサーキットエミュレータなどの特殊な調査用機器を必要とせず、かつ、容易に割込み遅延を調査できる半導体装置およびデバッグ方法を提供することである。
この発明は、割込み要求を受けると、実行中のプログラムを中断して割込み要求に応じた割込みプログラムを実行し、かつ、割込み要求の優先レベルまたは割込みプログラムで設定される優先レベルを出力する演算部と、外部から優先レベルの設定された割込み要求を受けると、演算部から受けた優先レベルと割込み要求の優先レベルとを比較し、演算部からの優先レベルが割込み要求の優先レベルより低い場合には、割込み要求を演算部へ出力し、演算部からの優先レベルが割込み要求の優先レベルと同一またはより高い場合には、演算部からの優先レベルが低くなるまで割込み要求の出力を遅延させる割込み制御部と、割込み制御部が割込み要求を受けると、演算部におけるプログラムの実行状態を示す情報を格納する割込み遅延調査部とを備える半導体装置である。
また、この発明は、割込み要求を受けると、実行中のプログラムを中断して割込み要求に応じた割込みプログラムを実行し、かつ、割込み要求の優先レベルまたは割込みプログラムで設定される優先レベルを出力する演算部と、外部から優先レベルの設定された割込み要求を受けると、演算部から受けた優先レベルと割込み要求の優先レベルとを比較し、演算部からの優先レベルが割込み要求の優先レベルより低い場合には、割込み要求を演算部へ出力し、演算部からの優先レベルが割込み要求の優先レベルと同一またはより高い場合には、演算部からの優先レベルが低くなるまで割込み要求の出力を遅延させる割込み制御部とからなる半導体装置において実行されるプログラムの割込み遅延を回避するためのデバッグ方法であって、割込み制御部が割込み要求を受けると、演算部が実行しているプログラムを特定するためのプログラムカウンタ値を格納するステップと、割込み要求に応じて実行される割込みプログラムにおいて格納したプログラムカウンタ値を読出すステップとを含む。
この発明によれば、割込み遅延調査部は、割込み制御部が割込み要求を受けると、演算部におけるプログラムの実行状態を示す情報を格納するので、割込み要求に応じた割込みプログラムが実行される直前に実行されていたプログラムの情報を取得できる。よって、その格納されたプログラムの実行状態を示す情報に基づいて、割込み遅延の原因を容易に調査でき、さらにその調査した原因に基づいてデバッグを行うことができる。
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[実施の形態1]
図1は、この発明の実施の形態1に従う半導体装置100の構成を示す概略ブロック図である。
図1は、この発明の実施の形態1に従う半導体装置100の構成を示す概略ブロック図である。
図1を参照して、この発明の実施の形態1に従う半導体装置100は、割込み制御部2と、演算部(CPU部:Central Processing Unit;以下、CPU部と称す)4と、メモリ14と、内部バス52とを備える。
割込み制御部2、CPU部4およびメモリ14は、内部バス52を介して相互に接続される。
割込み制御部2は、レジスタ20と、入力制御部18と、優先レベル設定レジスタ28と、優先順位判定部26と、比較器30とからなる。
レジスタ20は、割込み制御レジスタ(ICR:Interrupt Control Register)22と、割込みステータスレジスタ(ISR:Interrupt Status Register)24とからなる。
割込み制御レジスタ22は、入力制御部18へ入力される割込み要求のそれぞれについて、割込みの許可または禁止の設定値を記憶する。
割込みステータスレジスタ24は、割込み要求のそれぞれの入力状態を記憶する。
入力制御部18は、割込み要求IRQ_1,IRQ_2,・・・,IRQ_nのうちいずれかが入力されると、入力された割込み要求に対応する設定値を割込み制御レジスタ22から読出す。そして、入力制御部18は、読出した設定値に基づいて、当該割込み要求が許可されているか否かを判断し、許可されていれば当該割込み要求を優先順位判定部26へ出力する。さらに、入力制御部18は、割込み要求のそれぞれの入力状態を割込みステータスレジスタ24へ格納する。
優先レベル設定レジスタ28は、入力制御部18に入力されるそれぞれの割込み要求に設定される優先レベルを記憶する。
優先順位判定部26は、入力制御部18から割込み要求を受けると、当該割込み要求に設定される優先レベルを優先レベル設定レジスタ28から読出す。また、優先順位判定部26は、同時に複数の割込み要求が入力されていれば、それぞれの割込み要求に設定される優先レベルを互いに比較し、優先レベルが高い割込み要求から比較器30へ順次出力する。
比較器30は、優先順位判定部26から割込み要求を受けると、当該割込み要求の優先レベルと、CPU部4から受けた優先レベルとを比較する。そして、比較器30は、CPU部4から受けた優先レベルが割込み要求の優先レベルより低ければ、当該割込み要求をCPU部4へ出力する。また、比較器30は、CPU部4から受けた優先レベルが割込み要求の優先レベル以上であれば、CPU部4から受けた優先レベルが割込み要求の優先レベルより低くなるまで当該割込み要求の出力を遅延させる。
CPU部4は、レジスタ32と、CPU制御部54と、IPC制御部40とからなる。
レジスタ32は、IPCレジスタ42と、IPC制御レジスタ44と、プログラムカウンタ(PC:Program Counter)46と、ステータスレジスタ(SR:Status Register)48と、スタックポインタ(SP:Stack Pointer)50とからなる。
プログラムカウンタ46は、CPU部4において実行されるプログラムの命令アドレスを記憶する。
ステータスレジスタ48は、CPU部4の優先レベルを記憶する。
スタックポインタ50は、メモリ14内のスタック領域を指定するためのアドレス値を記憶する。
IPCレジスタ42は、IPC制御部40から出力されたプログラムカウンタ値を記憶する。
IPC制御レジスタ44は、IPC制御部40に割込み要求が入力された場合に、IPC制御部40の動作が有効であるか否かの設定値を記憶する。
CPU制御部54は、実行されるプログラムに従い、プログラムカウンタ46の値をカウントアップする。そして、CPU制御部54は、割込み制御部2から割込み要求を受けると、スタックポインタ50に記憶されているアドレス値に基づいて、プログラムカウンタ46に記憶されている値およびステータスレジスタ48に記憶されている値をメモリ14内のスタック領域に退避させ、割込み要求に応じた割込みプログラムを実行させる。さらに、CPU制御部54は、ステータスレジスタ48の値を割込み要求の優先レベルに変更する。また、CPU制御部54は、実行されるプログラムの命令に応じて、ステータスレジスタ48の値を変更する。
IPC制御部40は、優先順位判定部26から比較器30へ割込み要求が出力されると同時に当該割込み要求を受け、IPC制御レジスタ44から設定値を読出し、その設定値が有効であるか否かを判断する。そして、設定値が有効である場合にのみ、IPC制御部40は、プログラムカウンタ46に記憶されているプログラムカウンタ値を読出し、その値をIPCレジスタ42へ格納する。
実施の形態1においては、IPC制御部40、IPCレジスタ42およびIPC制御レジスタ44が、プログラムカウンタ値格納部を構成する。
図2は、この発明の実施の形態1に従う半導体装置100の状態図の一例である。
図2を参照して、半導体装置100は、外部から割込み要求IRQ_1およびIRQ_2を受け、それぞれ割込みプログラムとして割込みハンドラ1および割込みハンドラ2を実行する。また、割込み要求の優先レベルは、1〜14の範囲で設定可能であり、割込み要求IRQ_1およびIRQ_2の優先レベルは、それぞれ「14」および「10」とする。すなわち、割込みハンドラ1は、割込みハンドラ2に比較してより優先度が高い。
図1および図2を参照して、時刻T0では、割込み要求IRQ_1およびIRQ_2のいずれも入力されておらず、CPU部4では、IDLEタスクが実行されている。また、CPU部4の優先レベルは「0」となっている。
次に、時刻Taにおいて、外部から割込み要求IRQ_2が入力されると、他の割込み要求が入力されていないので、割込み要求IRQ_2は、入力制御部18および優先順位判定部26を通過して比較器30へ出力される。比較器30は、CPU部4から受けた優先レベル「0」と、割込み要求IRQ_2の優先レベル「10」とを比較し、優先レベルが高い割込み要求IRQ_2をCPU制御部54へ出力する。すると、CPU制御部54は、割込み要求IRQ_2を受けて、割込み処理を行い、実行中のプログラムカウンタ46に記憶されている値およびステータスレジスタ48に記憶されている値をメモリ14のスタック領域へ退避させる(ステップS1)。同時に、CPU制御部54は、割込み要求IRQ_2の優先レベルに応じて、優先レベルを「10」に変更する。そして、CPU制御部54は、IRQ_2の割込みプログラムである割込みハンドラ2を実行する(ステップS2)。
時刻Tbにおいて、割込みハンドラ2の処理過程でクリティカルセクションが生じると、割込み禁止命令が実行される。すると、CPU制御部54は、優先レベルを割込み要求の優先レベルの最大値を超える「15」に変更し、他のすべての割込み要求を禁止する(ステップS3)。
他のすべての割込み要求が禁止されている時刻Tcにおいて、外部から割込み要求IRQ_1が入力されると、優先レベル「14」に設定されている割込み要求IRQ_1は、入力制御部18および優先順位判定部26を通過して比較器30へ出力される。比較器30は、CPU部4から受けた優先レベル「15」と、割込み要求IRQ_1の優先レベル「14」とを比較し、優先レベルの低い割込み要求IRQ_1の出力を遅延させる。
その後、時刻Tdにおいて、割込みハンドラ2のクリティカルセッションが終了し、割込み禁止解除命令が実行される。すると、CPU制御部54は、優先レベルを元の「10」に変更する。優先レベルの低下を受けて、比較器30は、割込み要求IRQ_1をCPU制御部54へ出力する。すると、CPU制御部54は、割込み要求IRQ_1に応じて、上述のステップS1と同様に、割込み処理を行う(ステップS5)。同時に、CPU制御部54は、割込み要求IRQ_1の優先レベルに応じて、優先レベルを「14」に変更する。そして、CPU制御部54は、IRQ_1の割込みプログラムである割込みハンドラ1を実行する(ステップS6)。
上述のように、先に入力された割込み要求IRQ_2に応じて実行される割込みプログラムに含まれる割込み禁止命令により、後に入力されたより優先レベルが高い割込み要求IRQ_1に対応する割込みプログラムの実行が(Te−Tc)だけ遅延することになる。
一方、IPC制御部40は、優先順位判定部26から出力される割込み要求を受けた時点、すなわち時刻Tcにおいて、CPU部4において実行されているプログラムのプログラムカウンタ値をプログラムカウンタ46から読出し、IPCレジスタ42へ格納する。
IPCレジスタ42は、レジスタ32に含まれるので、プログラム中のレジスタ読出し命令を用いて、IPCレジスタ42に格納されているデータを読出すことができる。
よって、割込み要求IRQ_1に応じて実行される割込みハンドラ1にレジスタ読出し命令を含ませることにより、IPCレジスタ42に格納されているプログラムカウンタ値を読出すことができる。このようにして、割込みハンドラ1の割込み遅延の原因である割込みハンドラ2のプログラムカウンタ値が得られる。
したがって、プログラム開発者は、得られたプログラムカウンタ値から、割込み遅延の原因となっているプログラムを特定でき、デバッグを容易に行うことができる。
図3は、この発明の実施の形態1に従う半導体装置100を用いてデバッグを行う方法を示すフローチャートである。
図3を参照して、IPC制御部40は、優先順位判定部26から割込み要求を受けたか否かを判断する(ステップS100)。割込み要求を受けていない場合(ステップS100においてNOの場合)には、IPC制御部40は、割込み要求を受けるまで待機する(S100)。割込み要求を受けた場合(ステップS100においてYESの場合)には、IPC制御部40は、プログラムカウンタ46からプログラムカウンタ値を読出してIPCレジスタ42へ格納する(ステップS102)。
そして、当該割込み要求に応じて実行される割込みプログラムにおいて、IPCレジスタ4からプログラムカウンタ値を読出す(ステップS104)。
プログラム開発者は、読出されたプログラムカウンタ値に基づいてプログラムを特定する(S106)。そして、プログラム開発者は、その特定したプログラムに対してデバッグする(S108)。
なお、実施の形態1においては、プログラムカウンタ値格納部を構成する、IPC制御部40、IPCレジスタ42およびIPC制御レジスタ44をCPU部4の内部に配置する場合について説明したが、CPU部4とデータの授受を行うバスを介してCPU部4の外部に配置してもよい。
実施の形態1によれば、IPC制御部は、外部から与えられた割込み要求が優先順位判定部から出力されると、当該割込み要求がCPU部に与えられるか否かにかかわらず、CPU部において実行されているプログラムのプログラムカウンタ値を格納する。そして、割込み要求に応じて実行される割込みプログラムにおいて格納された当該プログラムカウンタ値を読出すことができる。よって、割込みプログラムに割込み遅延が生じた場合には、プログラム開発者は、読出されたプログラムカウンタ値からその遅延原因となったプログラムを特定でき、デバッグを容易に行うことができる。
また、実施の形態1によれば、IPC制御部は、IPC制御レジスタに記憶される設定値に基づいてプログラムカウンタ値を格納するか否かを決定するので、割込み遅延の原因となるプログラムを特定する必要がある場合にのみプログラムカウンタ値を格納させることができる。よって、通常時には、プログラムカウンタ値を格納しないように設定することで冗長な処理を回避できる。
[実施の形態2]
図4は、この発明の実施の形態2に従う半導体装置200の構成を示す概略ブロック図である。
図4は、この発明の実施の形態2に従う半導体装置200の構成を示す概略ブロック図である。
図4を参照して、この発明の実施の形態2に従う半導体装置200は、図1に示す実施の形態1に従う半導体装置100において、CPU部4をCPU部6に代えたものである。
CPU部6は、レジスタ34と、CPU制御部56と、比較器62と、タイマー(TMR)制御部60とからなる。
レジスタ34は、タイマー起動優先レベルレジスタ(I_LVL)64と、タイマーカウントレジスタ(TM_CNT)66と、プログラムカウンタ46と、ステータスレジスタ48と、スタックポインタ50とからなる。
タイマー起動優先レベルレジスタ64は、タイマー制御部60が割込み要求を受けて時間計測を開始する条件となる優先レベルの設定値を記憶する。
タイマーカウントレジスタ66は、タイマー制御部からリセット値(0)または時間の計測値を受けて、その値を記憶する。
プログラムカウンタ46と、ステータスレジスタ48と、スタックポインタ50とについては、上述の実施の形態1と同様であるので説明は繰返さない。
CPU制御部56は、上述の実施の形態1におけるCPU制御部54の機能に加え、タイマー制御部60から指令を受けて、ステータスレジスタ48の値を変更する。
比較器62は、優先順位判定部26から割込み要求が出力されると、当該割込み要求の優先レベルと、タイマー起動優先レベルレジスタ64から読出した優先レベルとを比較する。そして、比較器62は、割込み要求の優先レベルが、タイマー起動優先レジスタの優先レベルより高い場合にのみ、当該割込み要求をタイマー制御部60へ出力する。
タイマー制御部60は、比較器62から割込み要求を受けると、タイマーカウントレジスタ66の値をリセットした後、時間の計測を開始する。そして、タイマー制御部60は、その計測した値をタイマーカウントレジスタ66へ格納する。さらに、タイマー制御部60は、計測した時間が予め定められた設定値を超えると、CPU部4の優先レベルを強制的に下げるための指令をCPU制御部56へ与える。なお、このようにCPU部4の優先レベルを強制的に下げる処理は、NMI(Non Maskable Interrupt)処理と称される。
実施の形態2においては、タイマー制御部60、比較器62、タイマー起動優先レベルレジスタ64およびタイマーカウントレジスタ66が遅延時間計測部を構成する。
図5は、この発明の実施の形態2に従う半導体装置200の状態図の一例である。
図2に示す実施の形態1に従う半導体装置100と同様に、半導体装置200は、外部から割込み要求IRQ_1およびIRQ_2を受け、それぞれ割込みプログラムとして割込みハンドラ1および割込みハンドラ2を実行する。また、割込み要求に対する優先レベルは、1〜14の範囲で設定可能であり、割込み要求IRQ_1およびIRQ_2の優先レベルは、それぞれ「14」および「10」である。
図4および図5を参照して、時刻T0から時刻Tbまでは、図2と同様であるので、説明は繰返さない。
時刻Tcにおいて、外部から割込み要求IRQ_1が入力されると、最高の優先レベル「14」に設定されている割込み要求IRQ_1は、入力制御部18および優先順位判定部26を通過して比較器30および62へ出力される。
比較器30は、CPU部4から受けた優先レベル「15」と、割込み要求IRQ_1の優先レベル「14」とを比較し、レベルの低い割込み要求IRQ_1の出力を遅延させる。
一方、比較器62は、優先順位判定部26から受けた割込み要求IRQ_1の優先レベル「14」と、タイマー起動優先レベルレジスタ64に記憶されている優先レベルとを比較する。たとえば、タイマー起動優先レベルレジスタの優先レベルを「13」とすると、比較器62は、優先レベルが高い割込み要求IRQ_1をタイマー制御部60へ出力する。すると、タイマー制御部60は、タイマーカウントレジスタ66をリセットした後、時間の計測を開始し、その計測した値をタイマーカウントレジスタ66へ格納する。
タイマーカウントレジスタ66は、レジスタ32に含まれるので、プログラムで実行されるレジスタ読出し命令により格納されているデータを読出すことができる。
よって、割込み要求IRQ_1に応じて実行される割込みハンドラ1にレジスタ読出し命令を含ませることにより、IPCレジスタ42に格納されている時間計測値が読出され、割込みハンドラ1の割込み遅延時間が得られる。このようにして、プログラム開発者は、割込みハンドラ1の遅延状態を把握できる。
したがって、プログラム開発者は、割込みプログラムの実行毎に、割込み遅延が生じているか否かを知ることができ、デバッグを容易に行うことができる。
さらに、割込み遅延の時間が予め定められた設定値を超えると、タイマー制御部60がNMI処理を実行し、CPU制御部56がCPU部4の優先レベルを下げるので、割込み禁止処理により遅延させられていた割込みプログラムが実行される。
よって、タイマー制御部60におけるNMI処理を実行する条件となる設定値を割込み遅延の許容時間以下とすることで、割込み遅延による処理の不具合を回避できる。
なお、実施の形態2においては、遅延時間計測部を構成する、タイマー制御部60、比較器62、タイマー起動優先レベルレジスタ64およびタイマーカウントレジスタ66をCPU部6の内部に配置する場合について説明したが、CPU部6とデータの授受を行うバスを介してCPU部6の外部に配置してもよい。
実施の形態2によれば、IPC制御部は、外部から与えられた割込み要求が優先順位判定部から出力されると、当該割込み要求がCPU部に与えられるか否かにかかわらず、時間の計測を開始する。そして、割込み要求に応じて実行される割込みプログラムにより計測値を読出すことができる。よって、プログラム開発者は、割込みプログラムの割込み遅延状態を把握でき、複数の割込みプログラムが実行される場合に、いずれの割込みプログラムに問題があるのかを特定できるため、デバッグを容易に行うことができる。
また、実施の形態2によれば、タイマー制御部は、タイマー起動優先レベルレジスタに記憶される優先レベルより高い優先レベルに設定された割込み要求が入力された場合に遅延時間を計測する。よって、特に処理完了までの時間制約が厳しく、高い優先レベルに設定された割込みプログラムに着目して、割込み遅延状態を監視できる。
さらに、実施の形態2によれば、タイマー制御部は、割込み遅延時間が設定値を超えた場合には、NMI処理を行い割込みプログラムを強制的に実行させる。よって、割込みプログラムの割込み遅延時間を所定の値以下に抑制でき、割込み遅延による処理の不具合を回避できる。
[実施の形態3]
上述の実施の形態1においては、外部から与えられた割込み要求が優先順位判定部から出力されると、実行されているプログラムのプログラムカウンタ値を格納する場合について説明した。また、上述の実施の形態2においては、外部から与えられた割込み要求が優先順位判定部から出力されると、時間を計測する場合について説明した。
上述の実施の形態1においては、外部から与えられた割込み要求が優先順位判定部から出力されると、実行されているプログラムのプログラムカウンタ値を格納する場合について説明した。また、上述の実施の形態2においては、外部から与えられた割込み要求が優先順位判定部から出力されると、時間を計測する場合について説明した。
一方、実施の形態3においては、両方の機能を備える場合について説明する。
図6は、この発明の実施の形態3に従う半導体装置300の構成を示す概略ブロック図である。
図6を参照して、この発明の実施の形態3に従う半導体装置300は、図1に示す実施の形態1に従う半導体装置100において、CPU部4をCPU部8に代えたものである。
CPU部8は、レジスタ36と、CPU制御部54と、切換部72と、タイマー制御部60と、IPC制御部40とからなる。
レジスタ36は、切換設定レジスタ(FSW)78と、共用レジスタ80と、プログラムカウンタ46と、ステータスレジスタ48と、スタックポインタ50とからなる。
切換設定レジスタ78は、切換部72がタイマー制御部60およびIPC制御部40のいずれを有効にするかを切換えるための設定値を記憶する。
共用レジスタ80は、タイマー制御部60およびIPC制御部40から出力されるデータを記憶する。
プログラムカウンタ46と、ステータスレジスタ48と、スタックポインタ50と、CPU制御部54とについては、上述の実施の形態1と同様であるので説明は繰返さない。
切換部72は、優先順位判定部26から割込み要求を受けると、切換設定レジスタ78から設定値を読出し、その読出した設定値に応じて、タイマー制御部60またはIPC制御部40のいずれかに割込み要求を与える。
タイマー制御部60は、切換部72から割込み要求を受けると、共用レジスタ80をリセットした後、時間の計測を開始する。そして、タイマー制御部60は、その計測したデータを共用レジスタ80へ格納する。
IPC制御部40は、切換部72から割込み要求を受けると、プログラムカウンタ46に記憶されているプログラムカウンタ値を読出し、共用レジスタ80へ格納する。
実施の形態3においては、IPC制御部40および共用レジスタ80が、プログラムカウンタ格納部を構成し、タイマー制御部60および共用レジスタ80が、遅延時間計測部を構成する。
切換設定レジスタ78および共用レジスタ80はレジスタ36に含まれるので、プログラム中のレジスタ書込み命令を用いて格納されているデータを更新でき、かつ、レジスタ読出し命令を用いて格納されているデータを読出すことができる。
たとえば、割込みプログラム中でレジスタ書込み命令を実行させて、切換設定レジスタ78に格納されている設定値をタイマー制御部60が有効となるように変更する。さらに、レジスタ読出し命令を実行させて、共用レジスタ80に格納されている時間計測値を読出す。このようにして、まず割込みプログラムにおける割込み遅延状態を把握する。
そして、割込みプログラムの割込み遅延が生じていれば、割込みプログラム中でレジスタ書込み命令を実行させて、切換設定レジスタ78に格納されている設定値をIPC制御部40が有効となるように変更する。さらに、レジスタ読出し命令を実行させて、共用レジスタ80に格納されているプログラムカウンタ値を読出す。このようにして、割込み遅延の原因であるプログラムのプログラムカウンタ値が得られる。
したがって、プログラム開発者は、割込み遅延が生じているか否かを判断することができ、さらに、割込み遅延の原因となっているプログラムを特定できるため、デバッグを容易に行うことができる。
なお、実施の形態3においては、プログラムカウンタ格納部および遅延時間計測部を構成する、IPC制御部40、タイマー制御部60、切換設定レジスタ78および共用レジスタ80をCPU部8の内部に配置する場合について説明したが、CPU部8とデータの授受を行うバスを介してCPU部8の外部に配置してもよい。
実施の形態3によれば、切換設定レジスタの設定値に応じて、IPC制御部またはタイマー制御部のいずれかが有効となるので、IPC制御部およびタイマー制御部がデータを格納するための領域を共用できる。よって、CPU部のレジスタを有効に利用することができるため、レジスタ領域を抑制できる。
[実施の形態4]
図7は、この発明の実施の形態4に従う半導体装置400の構成を示す概略ブロック図である。
図7は、この発明の実施の形態4に従う半導体装置400の構成を示す概略ブロック図である。
図7を参照して、この発明の実施の形態4による半導体装置400は、図1に示す実施の形態1に従う半導体装置100において、CPU部4をCPU部10に代え、インターフェイス部84を加えたものである。
CPU部10は、レジスタ38と、CPU制御部58と、トレース部82とからなる。
レジスタ38は、プログラムカウンタ46と、ステータスレジスタ48と、スタックポインタ50とからなる。プログラムカウンタ46と、ステータスレジスタ48と、スタックポインタ50とについては、上述の実施の形態1と同様であるので説明は繰返さない。
CPU制御部58は、上述の実施の形態1におけるCPU制御部54の機能に加え、実行アドレス、実行した命令コードおよびオペランドアクセス情報などからなるトレース情報をトレース部82へ出力する。
トレース部82は、優先順位判定部26から割込み要求を受けると、CPU制御部58を介してCPU部10のトレース情報の収集を開始する。そして、トレース部82は、収集したトレース情報を自身へ格納する。さらに、トレース部82は、その収集したトレース情報をインターフェイス部84へ出力する。
インターフェイス部84は、トレース部82から受けたトレース情報を所定の形式のデータに変換し、外部の解析装置などへ出力する。
プログラム中で実行される読出し命令を用いて、トレース部82に格納されているトレース情報を読出すことができる。よって、プログラム開発者は、割込み遅延発生時のより詳細な情報を取得できる。
また、トレース部82は、格納したトレース情報をインターフェイス部84を介して外部の解析装置へ出力する。よって、プログラム開発者は、割込み遅延発生時のプログラム実行状態の解析をより容易に行うことができる。
なお、実施の形態4においては、トレース部82をCPU部10の内部に配置する場合について説明したが、CPU部10とデータの授受を行うバスを介してCPU部10の外部に配置してもよい。
実施の形態4によれば、トレース部は、外部から与えられた割込み要求が優先順位判定部から出力されると、トレース情報の収集を開始する。そのため、必要なトレース情報だけを収集できるので、トレース部が冗長なトレース情報を収集することがなく、トレース部の記憶容量を抑制でき、かつ、効率的に解析作業を行える。
[実施の形態5]
図8は、この発明の実施の形態5に従う半導体装置500の構成を示す概略ブロック図である。
図8は、この発明の実施の形態5に従う半導体装置500の構成を示す概略ブロック図である。
図8を参照して、この発明の実施の形態5による半導体装置500は、図7に示す実施の形態4に従う半導体装置400において、CPU部10をCPU部12に代えたものである。そして、CPU部12はCPU部10において、CPU制御部58をCPU制御部59に代え、トレース部82をバス関連情報格納部94に代えたものである。
CPU制御部59は、上述の実施の形態1におけるCPU制御部54の機能に加え、バスアクセス情報をバス関連情報格納部94へ出力する。
バス関連情報格納部94は、バスアクセスカウンタ92と、パフォーマンスカウンタ90とからなる。そして、バス関連情報格納部94は、優先順位判定部26から割込み要求を受けると、バスアクセスカウンタ92およびパフォーマンスカウンタ90を起動させる。さらに、バス関連情報格納部94は、バスアクセスカウンタ92およびパフォーマンスカウンタ90に格納されているデータを読出してインターフェイス部84へ出力する。
バスアクセスカウンタ92は、CPU制御部59から受けたバスアクセス情報に基づいて、CPU部12が内部バス52に対して行ったバスアクセス回数、すなわち、リード/ライトアクセスを行った回数をカウントし、そのカウント回数を記憶する。
パフォーマンスカウンタ90は、CPU制御部59から受けたバスアクセス情報に基づいて、CPU部12が内部バス52に対して行ったバスアクセスの実行サイクル数、すなわち、リード/ライトアクセスに要したサイクル数(クロック数)をカウントし、そのカウント回数を記憶する。
また、バス関連情報格納部94は、プログラムカウンタ46に記憶されているプログラムカウンタ値を読出し、インターフェイス部84へ出力する。
実施の形態5においては、バス関連情報格納部94およびインターフェイス部84が情報出力部を構成する。
また、バス関連情報格納部94は、インターフェイス部84を介して接続された記録装置にバスアクセス回数、バスアクセスの実行サイクル数およびプログラムカウンタ値を出力できる。プログラム開発者は、割込み遅延発生時のプログラム実行状態の解析をより容易に行うことができる。
なお、実施の形態5においては、バス関連情報格納部94をCPU部12部に配置する場合について説明したが、CPU部12とデータの授受を行うバスを介してCPU部12の外部に配置してもよい。
実施の形態5によれば、バス関連情報格納部は、外部から与えられた割込み要求が優先順位判定部から出力されると、バスアクセス回数およびバスアクセス実行サイクル数の収集を開始する。そのため、必要なタイミングにおけるバス関連情報を収集できるので、不用な情報を収集することがなく、効率的に解析作業を行える。さらに、プログラムカウンタ値も同時に出力されるので、より効率的に解析作業を行える。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
2 割込み制御部、4,6,8,10,12 演算部(CPU部)、14 メモリ、18 入力制御部、20,32,34,36,38 レジスタ、22 割込み制御レジスタ(ICR)、24 割込みステータスレジスタ(ISR)、26 優先順位判定部、28 優先レベル設定レジスタ、30,62 比較器、40 IPC制御部、42 IPCレジスタ、44 IPC制御レジスタ、46 プログラムカウンタ(PC)、48 ステータスレジスタ(SR)、50 スタックポインタ(SP)、52 内部バス、54,56,58,59 CPU制御部、60 タイマー(TMR)制御部、64 タイマー起動優先レベルレジスタ(I_LVL)、66 タイマーカウントレジスタ(TM_CNT)、72 切換部、78 切換設定レジスタ(FSW)、80 共用レジスタ、82 トレース部、84 インターフェイス部、90 パフォーマンスカウンタ、92 バスアクセスカウンタ、94 バス関連情報格納部、100,200,300,400,500 半導体装置、IRQ_1,IRQ_2,・・・,IRQ_n 割込み要求。
Claims (12)
- 割込み要求を受けると、実行中のプログラムを中断して前記割込み要求に応じた割込みプログラムを実行し、かつ、前記割込み要求の優先レベルまたは前記割込みプログラムで設定される優先レベルを出力する演算部と、
外部から優先レベルの設定された割込み要求を受けると、前記演算部から受けた前記優先レベルと前記割込み要求の優先レベルとを比較し、前記演算部からの前記優先レベルが前記割込み要求の優先レベルより低い場合には、前記割込み要求を前記演算部へ出力し、前記演算部からの前記優先レベルが前記割込み要求の優先レベルと同一またはより高い場合には、前記演算部からの前記優先レベルが低くなるまで前記割込み要求の出力を遅延させる割込み制御部と、
前記割込み制御部が前記割込み要求を受けると、前記演算部におけるプログラムの実行状態を示す情報を格納する割込み遅延調査部とを備える、半導体装置。 - 前記割込み遅延調査部は、前記割込み制御部が前記割込み要求を受けた時点において、前記演算部が実行しているプログラムのプログラムカウンタ値を格納するプログラムカウンタ値格納部を含む、請求項1に記載の半導体装置。
- 前記割込み遅延調査部は、前記割込み制御部が前記割込み要求を受けると、前記演算部において前記割込みプログラムが実行されるまでに要する時間を計測する遅延時間計測部をさらに含む、請求項1または2に記載の半導体装置。
- 前記割込み遅延調査部は、
前記割込み制御部が前記割込み要求を受けた時点において、前記演算部が実行しているプログラムのプログラムカウンタ値を格納するプログラムカウンタ値格納部と、
前記割込み制御部が前記割込み要求を受けると、前記演算部において前記割込みプログラムが実行されるまでに要する時間を計測する遅延時間計測部と、
予め定められた設定値に応じて、前記プログラムカウンタ値格納部および前記遅延時間計測部のいずれか一方を有効とする切換部とをさらに含む、請求項1に記載の半導体装置。 - 前記プログラムカウンタ値格納部は、予め定められた設定値に応じて、前記演算部が実行しているプログラムのプログラムカウンタ値を格納するか否かを決定する、請求項2または4に記載の半導体装置。
- 前記遅延時間計測部は、前記割込み制御部が受けた前記割込み要求の優先レベルに応じて、前記時間を計測するか否かを決定する、請求項3または4に記載の半導体装置。
- 前記遅延時間計測部は、前記計測した時間が予め定められた設定値以上となれば、前記演算部において前記割込みプログラムを強制的に実行させる、請求項3,4または6のいずれか1項に記載の半導体装置。
- 前記割込み遅延調査部は、前記割込み制御部が前記割込み要求を受けると、前記演算部におけるトレース情報を格納するトレース部をさらに含む、請求項1〜7のいずれか1項に記載の半導体装置。
- 前記割込み遅延調査部は、前記割込み制御部が前記割込み要求を受けると、前記演算部におけるプログラムの実行状態を示す情報を外部へ出力する情報出力部をさらに含む、請求項1〜8のいずれか1項に記載の半導体装置。
- 前記情報出力部は、前記演算部におけるプログラムの実行状態を示す情報として、前記演算部のバスアクセス情報を外部へ出力する、請求項9に記載の半導体装置。
- 前記情報出力部は、前記演算部におけるプログラムの実行状態を示す情報として、前記演算部のプログラムカウンタ値をさらに外部へ出力する、請求項10に記載の半導体装置。
- 割込み要求を受けると、実行中のプログラムを中断して前記割込み要求に応じた割込みプログラムを実行し、かつ、前記割込み要求の優先レベルまたは前記割込みプログラムで設定される優先レベルを出力する演算部と、
外部から優先レベルの設定された割込み要求を受けると、前記演算部から受けた前記優先レベルと前記割込み要求の優先レベルとを比較し、前記演算部からの前記優先レベルが前記割込み要求の優先レベルより低い場合には、前記割込み要求を前記演算部へ出力し、前記演算部からの前記優先レベルが前記割込み要求の優先レベルと同一またはより高い場合には、前記演算部からの前記優先レベルが低くなるまで前記割込み要求の出力を遅延させる割込み制御部とからなる半導体装置において実行されるプログラムの割込み遅延を回避するためのデバッグ方法であって、
前記割込み制御部が前記割込み要求を受けると、前記演算部が実行しているプログラムを特定するためのプログラムカウンタ値を格納するステップと、
前記割込み要求に応じて実行される割込みプログラムにおいて前記格納したプログラムカウンタ値を読出すステップとを含む、デバッグ方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2004380888A JP2006185365A (ja) | 2004-12-28 | 2004-12-28 | 半導体装置およびデバッグ方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2004380888A JP2006185365A (ja) | 2004-12-28 | 2004-12-28 | 半導体装置およびデバッグ方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2006185365A true JP2006185365A (ja) | 2006-07-13 |
Family
ID=36738412
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2004380888A Withdrawn JP2006185365A (ja) | 2004-12-28 | 2004-12-28 | 半導体装置およびデバッグ方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2006185365A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2463048A (en) * | 2008-08-29 | 2010-03-03 | Symbian Software Ltd | A diagnostic tool for displaying interrupt activity against a time line |
| WO2015128755A1 (en) * | 2014-02-27 | 2015-09-03 | International Business Machines Corporation | Delaying floating interruption while in tx mode |
| CN107621974A (zh) * | 2016-07-13 | 2018-01-23 | 罗伯特·博世有限公司 | 中断请求分配装置和对此的运行方法 |
| JP2019159852A (ja) * | 2018-03-13 | 2019-09-19 | 富士電機株式会社 | 情報処理装置 |
-
2004
- 2004-12-28 JP JP2004380888A patent/JP2006185365A/ja not_active Withdrawn
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2463048A (en) * | 2008-08-29 | 2010-03-03 | Symbian Software Ltd | A diagnostic tool for displaying interrupt activity against a time line |
| WO2015128755A1 (en) * | 2014-02-27 | 2015-09-03 | International Business Machines Corporation | Delaying floating interruption while in tx mode |
| CN107621974A (zh) * | 2016-07-13 | 2018-01-23 | 罗伯特·博世有限公司 | 中断请求分配装置和对此的运行方法 |
| CN107621974B (zh) * | 2016-07-13 | 2023-11-28 | 罗伯特·博世有限公司 | 中断请求分配装置和对此的运行方法 |
| JP2019159852A (ja) * | 2018-03-13 | 2019-09-19 | 富士電機株式会社 | 情報処理装置 |
| JP7069870B2 (ja) | 2018-03-13 | 2022-05-18 | 富士電機株式会社 | 情報処理装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4094724B2 (ja) | ソフトウェアをデバッグする際に例外を識別するための装置および方法 | |
| US20130159977A1 (en) | Open kernel trace aggregation | |
| CN103109276B (zh) | 系统测试方法 | |
| CN103430158B (zh) | 使用执行单一步骤来诊断编码 | |
| US8495344B2 (en) | Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information | |
| US7831818B2 (en) | Exception-based timer control | |
| CN101606132B (zh) | 半导体集成电路、调试/跟踪电路、以及半导体集成电路操作观测方法 | |
| JP5054558B2 (ja) | マルチコアlsi | |
| JP6963552B2 (ja) | ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ | |
| JP2006185365A (ja) | 半導体装置およびデバッグ方法 | |
| US20110107072A1 (en) | Method for self-diagnosing system management interrupt handler | |
| US10747647B2 (en) | Method, apparatus and system for diagnosing a processor executing a stream of instructions | |
| JP2007257441A (ja) | プロセッサおよびプロセッサ制御方法 | |
| JP2011028308A (ja) | 半導体装置及びソフトウェア開発支援装置 | |
| CN101311909A (zh) | 诊断系统异样的方法 | |
| US7543185B2 (en) | Debug system with event-based virtual processing agents | |
| JP2003281076A (ja) | Dmaコントローラの不正アクセス検出装置、不正アクセス検出方法およびそのプログラム | |
| JP2000066922A (ja) | 全命令トレースデータの2次記憶装置への格納競合防止方法 | |
| JP2007034864A (ja) | 入出力装置の診断方法 | |
| JP2005267349A (ja) | プロセッシングモジュールおよびその制御方法 | |
| JPS6111855A (ja) | デ−タ処理装置の機能診断方式 | |
| JP5416257B2 (ja) | マルチコアlsi | |
| CN120850924A (zh) | 基于dwt实现寄存器覆盖率统计的方法及装置 | |
| JP2013105388A (ja) | 割り込み回路及び割り込み方法 | |
| CN115687159A (zh) | 调试方法、装置及计算机可读存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080304 |