(57)【要約】  【課題】  常に動作状態にあるとは限らないＣＰＵを内蔵するシステムオンチップの半導体集積回路において、特殊なモードを設定することなく、少ない数の信号を用いてデバッグを行う。  【解決手段】  このデバッグ方法は、ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号をＣＰＵに送信するステップ（ａ）と、ＣＰＵから受信した第２の信号に基づいて、ＣＰＵが動作状態にあるか否かを確認するステップ（ｂ）と、ステップ（ｂ）においてＣＰＵが動作状態にあることが確認された場合にデバッグモードに入るステップ（ｃ）と、デバッグモードにおいて、ＣＰＵに内蔵されたデバッグ用メモリに格納されている複数の命令をＣＰＵに順次実行させるステップ（ｄ）と、デバッグ用メモリに格納されている複数の命令の実行が終了したときにデバッグモードを抜けるステップ（ｅ）とを具備する。【選択図】  図２
2007094475.tif 000002
【特許請求の範囲】
【請求項１】
システムオンチップに組み込まれ、常に動作状態にあるとは限らないＣＰＵにおいて実行されるプログラムを、デバッグシステムを用いてデバッグする方法であって、
前記ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号を前記ＣＰＵに送信するステップ（ａ）と、
前記ＣＰＵから受信した第２の信号に基づいて、前記ＣＰＵが動作状態にあるか否かを確認するステップ（ｂ）と、
ステップ（ｂ）において前記ＣＰＵが動作状態にあることが確認された場合にデバッグモードに入るステップ（ｃ）と、
デバッグモードにおいて、前記ＣＰＵに内蔵されたデバッグ用メモリに格納されている複数の命令を前記ＣＰＵに順次実行させるステップ（ｄ）と、
前記デバッグ用メモリに格納されている複数の命令の実行が終了したときにデバッグモードを抜けるステップ（ｅ）と、
を具備するデバッグ方法。
【請求項２】
システムオンチップに組み込まれ、常に動作状態にあるとは限らないＣＰＵにおいて実行されるプログラムをデバッグするためのデバッグシステムであって、
前記ＣＰＵに接続され、前記ＣＰＵとの間で信号の送受信を行うためのデバッグツールと、
前記デバッグツールを制御することにより、前記ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号を前記ＣＰＵに送信し、前記ＣＰＵから受信した第２の信号に基づいて前記ＣＰＵが動作状態にあることが確認された場合に、前記ＣＰＵに内蔵されたデバッグ用メモリに格納されている複数の命令を前記ＣＰＵに順次実行させるホストコンピュータと、
を具備するデバッグシステム。
【請求項３】
常に動作状態にあるとは限らないＣＰＵを内蔵するシステムオンチップの半導体集積回路であって、
ユーザプログラムを格納するメモリと、
動作状態にあるときに、前記ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号に応答して、前記ＣＰＵが動作状態にあることを表す第２の信号を送信し、前記ＣＰＵに内蔵された前記デバッグ用メモリに格納されている複数の命令を順次実行する前記ＣＰＵと、
を具備する半導体集積回路。
【請求項４】
前記ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号を双方向通信用の第１の端子に受信し、前記ＣＰＵが動作状態にあることを表す第２の信号を第２の端子から送信し、デバッグ用モニタプログラムに含まれている命令を実行して得られたデータを前記第１の端子から送信する、請求項３記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、常に動作状態にあるとは限らないＣＰＵを内蔵するシステムオンチップの半導体集積回路に関する。さらに、本発明は、そのようなＣＰＵにおいて実行されるユーザプログラムをデバッグするためのデバッグ方法及びデバッグシステムに関する。
【背景技術】
【０００２】
例えば、携帯電話には、画像処理を行う画像処理部と、液晶表示部を制御する表示制御部と、ＣＰＵ及びメモリ等とを１つのチップに組み込んだシステムオンチップと呼ばれる半導体集積回路が搭載されている。システムオンチップにおいては、消費電力の低減や制御の簡略化のために、ＣＰＵが常に動作状態にあるとは限らない。一方、一般的なデバッグツールは、ターゲットとなるＣＰＵが常に動作状態にあることを前提として作成されているので、システムオンチップに組み込まれたＣＰＵにおいて実行されるユーザプログラムをデバッグするために、一般的なデバッグツールを使用することはできなかった。
【０００３】
ところで、下記の特許文献１には、埋め込みプロセッサの開発ツールとしてエミュレータを用いて、デバッガ（ホストコンピュータ）からのエミュレーションコードを実行するためにターゲットＣＰＵを初期化する方法が開示されている。この方法においては、デバッグの対象となるＣＰＵとデバッガとの間にエミュレータとスキャンコントローラとが設置され、エミュレータがＣＰＵ及びデバッガと常に通信を行う。また、エミュレータは、有限ステートマシンを有しており、有限ステートマシンの状態としては、何からの要求も無効となるリセットモードと、ＣＰＵ及びデバッガからの要求が有効であるがデバッガからの要求が優先されるノーマルモードと、デバッガからの要求だけが有効となる立上げモードとがある。
【０００４】
ＣＰＵを初期化するために、有限ステートマシンがリセットモードに設定され、その後、立上げモードに設定される。このように、エミュレータを配置して、ＣＰＵとデバッガとを常に通信状態に置いてＣＰＵを監視することにより、エミュレーションコード実行の際に、任意のタイミングにおけるＣＰＵの初期化を可能にしている。しかしながら、デバッグを行うために、エミュレータに有限ステートマシンを設けて、特殊なモードを設定しておくことが必要となる。
【０００５】
また、特許文献１に記載されているエミュレータは、ＣＰＵのレジスタや他のメモリに直接アクセスできるので、ＪＴＡＧ方式によるバウンダリ・スキャンテストに対する代案になると記載されている。ＪＴＡＧ方式においては、検査の対象となる半導体集積回路とホストコンピュータとの間で５種類の信号が送受信されるが、もっと少ない数の信号を用いてユーザプログラムのデバッグを行うことが望まれている。
【特許文献１】特開平１１−２７２４９３号公報（第１−４頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、上記の点に鑑み、本発明は、常に動作状態にあるとは限らないＣＰＵを内蔵するシステムオンチップの半導体集積回路において、特殊なモードを設定することなく、少ない数の信号を用いてデバッグを行うことを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明の１つの観点に係るデバッグ方法は、システムオンチップに組み込まれ、常に動作状態にあるとは限らないＣＰＵにおいて実行されるプログラムを、デバッグシステムを用いてデバッグする方法であって、ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号をＣＰＵに送信するステップ（ａ）と、ＣＰＵから受信した第２の信号に基づいて、ＣＰＵが動作状態にあるか否かを確認するステップ（ｂ）と、ステップ（ｂ）においてＣＰＵが動作状態にあることが確認された場合にデバッグモードに入るステップ（ｃ）と、デバッグモードにおいて、ＣＰＵに内蔵されたデバッグ用メモリに格納されている複数の命令をＣＰＵに順次実行させるステップ（ｄ）と、デバッグ用メモリに格納されている複数の命令の実行が終了したときにデバッグモードを抜けるステップ（ｅ）とを具備する。
【０００８】
また、本発明の１つの観点に係るデバッグシステムは、システムオンチップに組み込まれ、常に動作状態にあるとは限らないＣＰＵにおいて実行されるプログラムをデバッグするためのデバッグシステムであって、ＣＰＵに接続され、ＣＰＵとの間で信号の送受信を行うためのデバッグツールと、デバッグツールを制御することにより、ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号をＣＰＵに送信し、ＣＰＵから受信した第２の信号に基づいてＣＰＵが動作状態にあることが確認された場合に、ＣＰＵに内蔵されたデバッグ用メモリに格納されている複数の命令をＣＰＵに順次実行させるホストコンピュータとを具備する。
【０００９】
さらに、本発明の１つの観点に係る半導体集積回路は、常に動作状態にあるとは限らないＣＰＵを内蔵するシステムオンチップの半導体集積回路であって、ユーザプログラムを格納するメモリと、動作状態にあるときに、ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号に応答して、ＣＰＵが動作状態にあることを表す第２の信号を送信し、ＣＰＵに内蔵されたデバッグ用メモリに格納されている複数の命令を順次実行するＣＰＵとを具備する。
【００１０】
ここで、半導体集積回路が、ＣＰＵが動作状態にあるか否かを問い合わせる第１の信号を双方向通信用の第１の端子に受信し、ＣＰＵが動作状態にあることを表す第２の信号を第２の端子から送信し、デバッグ用モニタプログラムに含まれている命令を実行して得られたデータを第１の端子から送信するようにしても良い。
【発明の効果】
【００１１】
本発明によれば、ターゲットとなるＣＰＵが動作状態にあることを確認してデバッグモードに移行することができるので、特殊なモードを設定することなく、少ない数の信号を用いてデバッグを行うことが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の一実施形態に係る半導体集積回路及びデバッグシステムを示すブロック図である。半導体集積回路１０は、複数の処理機能を１つのチップに組み込んだシステムオンチップと呼ばれるものであり、クロックリセットコントローラ１１と、ＣＰＵ（中央処理装置）１２と、ユーザプログラム等を格納するメモリ１３と、ＵＳＢ端子を介して外部と接続を行うためのＵＳＢインタフェース１４と、画像処理を行う画像処理部１５と、液晶ディスプレイ等の表示モジュール５０を制御する表示制御部１６とを内蔵している。各部１２〜１６は、バスラインを介して互いに接続されている。
【００１３】
クロックリセットコントローラ１１は、外部からクロック信号とリセット信号を受信して、これらの信号に基づいてＣＰＵ１２の動作を制御する。ＣＰＵ１２は、システムの動作に必要な場合に、メモリ１３に格納されているユーザプログラムに基づいて動作すると共に、デバッグシステム２０によるデバッグの対象となる。そのために、ＣＰＵ１２は、デバッグ用モニタプログラムを格納するデバッグモニタＲＯＭ１２ａを内蔵している。
【００１４】
半導体集積回路１０は、デバッグシステム２０に対して、クロック信号ＤＣＬＫを端子Ｐ１から送信し、ＣＰＵ１２の状態を表す状態信号ＤＳＴ２を端子Ｐ２から送信すると共に、デバッグシステム２０との間で、双方向通信用の端子Ｐ３及び双方向通信ラインＤＳＩＯを介して各種の信号を送受信する。
【００１５】
デバッグを開始する際に、デバッグシステム２０は、ＣＰＵ１２が動作状態にあるか否かを問い合わせる割り込み信号を、双方向通信ラインＤＳＩＯを介して半導体集積回路１０に送信し、状態信号ＤＳＴ２を半導体集積回路１０から受信する。半導体集積回路１０が動作状態にある場合には、デバッグシステム２０が、デバッグ用モニタプログラムに含まれている複数の命令をＣＰＵ１２に実行させ、その結果得られたデータを、双方向通信ラインＤＳＩＯを介して半導体集積回路１０から受信する。
【００１６】
デバッグシステム２０は、端子Ｐ１〜Ｐ３及び接地端子ＰＧを介してＣＰＵ１２に接続されており、ＣＰＵ１２との間で信号の送受信を行うためのデバッグツール３０と、デバッグツール３０にＲＳ２３２Ｃインタフェース及びパラレルインタフェース又はＵＳＢインタフェースを介して接続され、ターゲットとなるＣＰＵ１２において実行されるユーザプログラムのデバッグを行うホストコンピュータ（デバッガ）４０とによって構成される。
【００１７】
デバッグツール３０は、実行制御部３１と、ターゲットメモリ書き込み部３２とを含んでいる。また、ホストコンピュータ４０は、プログラム情報格納部４１と、プログラム情報書き込み部４２とを含んでいる。
【００１８】
デバッグツール３０の実行制御部３１は、ＣＰＵ１２におけるプログラムの実行を制御する。また、ターゲットメモリ書き込み部３２は、半導体集積回路１０のメモリ１３にプログラムをロードしたり、メモリ１３内のプログラムを書き換えたりする機能を有し、半導体集積回路１０のメモリ１３に書き込むデータを、双方向通信ラインＤＳＩＯを介して送信する。
【００１９】
ホストコンピュータ４０のプログラム情報格納部４１は、半導体集積回路１０のメモリ１３に格納されるユーザプログラムと同一のプログラムの機械語コード列を格納する。また、プログラム情報書き込み部４２は、半導体集積回路１０のメモリ１３にロードしたユーザプログラムと同一のプログラムをプログラム情報格納部４１にロードしたり、半導体集積回路１０のメモリ１３に格納されているプログラムコードを読み出してプログラム情報格納部４１に書き込んだり、プログラム情報格納部４１に格納されているプログラムを、半導体集積回路１０のメモリ１３にロードしたユーザプログラムと同じ内容になるように書き換えたりする。
【００２０】
次に、本発明の一実施形態に係るデバッグ方法について、図１及び図２を参照しながら説明する。図２は、本発明の一実施形態に係るデバッグ方法を示すフローチャートである。
表示モジュール５０を制御する半導体集積回路１０においては、ＣＰＵ１２は、補助的に用いられているので、常に動作状態であるとは限らない。そこで、ＣＰＵ１２において実行されるユーザプログラムのデバッグを行う際には、ホストコンピュータ４０の制御の下で、デバッグツール３０の実行制御部３１が、ＣＰＵ１２が動作状態にあるか否かを問い合わせる割り込み信号を生成して、双方向通信ラインＤＳＩＯを介してＣＰＵ１２に送信する（ステップＳ１）。
【００２１】
デバッグツール３０の実行制御部３１は、ＣＰＵ１２から状態信号ＤＳＴ２を受信して、ホストコンピュータ４０にその結果を報告し、ホストコンピュータ４０は、ＣＰＵ１２が動作状態にあるか否かを確認する（ステップＳ２）。
【００２２】
ＣＰＵ１２が動作状態にない場合には、状態信号ＤＳＴ２がローレベルとなっているので、ホストコンピュータ４０は、ＣＰＵ１２が動作状態にないことを確認して、処理をステップＳ１に戻す。ホストコンピュータ４０がデバッグツール３０を制御することにより、実行制御部３１が、再び、ＣＰＵ１２が動作状態にあるか否かを問い合わせる割り込み信号をＣＰＵ１２に送信する。ホストコンピュータ４０は、ステップＳ１〜Ｓ２を繰り返すことにより、ＣＰＵ１２が動作状態になるのを待つ。その繰り返し回数は、予めプログラムに設定しておいても良いし、ユーザが設定するようにしても良い。
【００２３】
ＣＰＵ１２が動作状態にある場合には、ＣＰＵ１２が、ハイレベルの状態信号ＤＳＴ２をデバッグツール３０に送信する。デバッグツール３０の実行制御部３１は、ハイレベルの状態信号ＤＳＴ２を受信して、ホストコンピュータ４０にその結果を報告する。ホストコンピュータ４０は、ＣＰＵ１２が動作状態にあることを確認して、処理をデバッグモードに切り替え、デバッグシステム２０がデバッグモードに入る（ステップＳ３）。
【００２４】
デバッグモードにおいては、実行制御部３１が、ＣＰＵ１２のデバッグモニタＲＯＭ１２ａに格納されているデバッグ用モニタプログラムに含まれている複数の命令をＣＰＵ１２に順次実行させる（ステップＳ４）。ＣＰＵ１２は、デバッグ用モニタプログラムに含まれている命令を実行して得られたデータ（トレース結果）を端子Ｐ３からデバッグツール３０に送信し、これを実行制御部３１が受信して、ホストコンピュータ４０に送信する。
【００２５】
デバッグ用モニタプログラムに含まれている複数の命令の実行が終了したときに、デバッグシステム２０がデバッグモードを抜ける（ステップＳ５）。このように、ホストコンピュータ４０は、デバッグツール３０を介して、ターゲットであるＣＰＵ１２に対して命令を送信するが、ＣＰＵ１２は、ホストコンピュータ４０に対して命令を送信する必要がない。デバッグモードが終了した後においては、ＣＰＵ１２にリセットがかけられたり、クロック信号が停止しても、トレース結果に影響を与えることはない。
【００２６】
以上説明したように、デバッグシステム２０を構成するホストコンピュータ４０が、ＣＰＵ１２の割り込み機能を利用して動作確認を行うことにより、常に動作状態であるとは限らないＣＰＵ１２に対して、アイドルモード等の特殊なモードを設けることなくデバッグを行うことができる。また、半導体集積回路１０の３つの端子Ｐ１〜Ｐ３と接地端子ＰＧのみを用いてデバッグを行うことができるので、半導体集積回路１０やデバッグシステム２０のコストを低減することが可能となる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係る半導体集積回路及びデバッグシステムを示す図。
【図２】本発明の一実施形態に係るデバッグ方法を示すフローチャート。
【符号の説明】
【００２８】
１０  半導体集積回路、１１  クロックリセットコントローラ、  １２  ＣＰＵ、  １３  メモリ、  １４  ＵＳＢインタフェース、  １５  画像処理部、  １６  表示制御部、  ２０  デバッグシステム、  ３０  デバッグツール、  ３１  実行制御部、  ３２  ターゲットメモリ書き込み部、  ４０  ホストコンピュータ、  ４１  プログラム情報格納部、  ４２  プログラム情報書き込み部、  ５０  表示モジュール
【図１】
2007094475.tif 000003
【図２】
2007094475.tif 000004