(57)【特許請求の範囲】
【請求項１】
デバッグモードを指定するデバッグ信号を入力する端子と、
電源投入時にリセット信号を生成するリセット回路と、
前記デバッグ信号及び前記リセット信号に基づいて前記デバッグモードに移行させる制御信号を出力するデバッグモード制御回路と
を有し、
前記デバッグモード制御回路は、
前記デバック信号をラッチして第１の信号を生成するラッチ回路と、
前記デバッグモードを許可する許可コードが書き込まれると第２の信号を生成するレジスタ回路と
を含み、
前記第１の信号と前記第２の信号に基づいて前記制御信号を生成し、パワーオンリセット発生時の前記デバッグ信号のレベルにより決まる第１段階のモードと、前記第１段階のモードが特定モードの場合にアクセス可能な前記レジスタ回路に前記許可コードを書き込むことで決まる第２段階のモードの２段階によってデバッグモードを制御する
ことを特徴とする半導体集積回路。
【請求項２】
前記端子にデバッグ信号が入力されず、電源投入時に前記リセット回路によりリセット信号が生成された場合は、
前記第１の信号及び前記第２の信号は共に無効で、前記デバッグモード制御回路は前記制御信号を出力しない
ことを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記端子にデバッグ信号が入力され、電源投入時に前記リセット回路によりリセット信号が生成された場合は、
前記第１の信号が有効となり、前記レジスタ回路に前記許可コードが書き込まれることにより前記デバックモード制御回路が前記制御信号を出力する
ことを特徴とする請求項１記載の半導体集積回路。
【請求項４】
前記端子にデバッグ信号が入力されず、電源投入時に前記リセット回路によりリセット信号が生成されなかった場合は、
前記第１の信号及び前記第２の信号は共に無効で、前記デバッグモード制御回路は前記制御信号を出力しない
ことを特徴とする請求項１記載の半導体集積回路。
【請求項５】
前記端子にデバッグ信号が入力され、電源投入時に前記リセット回路によりリセット信号が生成されなかった場合は、
前記第２の信号は無効で、前記デバッグモード制御回路は前記制御信号を出力しない
ことを特徴とする請求項１記載の半導体集積回路。
【請求項６】
パワーオンリセット発生時のモード端子の入力信号レベルにより決まる第1段階のモードと、
前記第１段階のモードが特定モードの場合に、アクセス可能なモードレジスタにデバッグモードを許可するコードを書き込むことで決まる第２段階のモードと
を有し、
前記の第１段階のモードと前記の第２段階のモードの２段階によってデバッグモードが制御されることを特徴とするデバックモード決定方法。
【請求項７】
前記第２段階において、前記モードレジスタに書き込んだモードを許可するコードが、モードを許可しないコードに書き換えられるまで、前記特定モードを継続する
ことを特徴とする請求項６記載のデバックモード決定方法。
【請求項８】
前記第２段階で前記モードレジスタに書き込むモードを許可する複数のコードを設け、前記の複数コードの全コードで特定モードを継続し、各コードでデバッグモードにおける動作を規定するサブモードを設定する
ことを特徴とする請求項６記載のデバックモード決定方法。
【請求項９】
前記サブモードは、前記モード端子の通信データレートを規定することを特徴とする請求項８記載のデバックモード決定方法。
【請求項１０】
前記モード端子は、単一の端子からなる
ことを特徴とする請求項６記載のデバッグモード決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及びデバッグモード決定方法に係り、特にパワーオンリセットを利用してマイクロコントローラのデバッグモード決定する構成の半導体集積回路及びデバッグモード決定方法に関する。
【背景技術】
【０００２】
MCU等のマイクロコントローラに代表される、CPU等の情報処理装置を含む装置において、CPUを動作させるプログラムを開発する場合、一般的にはデバッグシステムを用いる。デバッグシステムは、開発するプログラムの諸動作情報の表示や、開発プログラムに対して特定の操作機能をプログラムに提供してデバッグを支援する。
【０００３】
図１は、シングルチップMCU用のデバッグシステムの構成の一例を示すブロック図である。図１において、半導体集積回路であるMCU１は、外部デバッグ装置２を介してホストコンピュータ３に接続されている。
【０００４】
MCU１は、図１に示す如く接続されたCPU１１、デバッグ回路１２、記憶装置１３、周辺機能部（又は、ブロック）１４，１５、パワーオンリセット回路１６、リセット制御回路１７、デバッグ端子（又は、モード端子）１８を有する。CPU１１、記憶装置１３及び周辺機能部１４，１５は、バス１９により接続されている。デバッグシステムは、少なくともデバッグ対象のMCU１内のデバッグ回路１２、外部デバッグ装置２及びホストコンピュータ３により構成される。
【０００５】
デバッグ回路１２は、CPU１１の各種動作及び状態の監視及び制御を行う。デバッグ回路１２は、MCU１の外部で各種デバッグ処理を行う外部デバッグ装置２とデバッグ端子１８及び専用の信号インタフェース４１を介して接続されている。外部デバッグ装置２は、専用の信号インタフェース４２を介してデバッガソフトウェア３１を実行するホストコンピュータ３に接続されている。
【０００６】
デバッグ回路１２と外部デバッグ装置２を接続するためのデバッグ端子１８は、デバッグ時以外は使用できない、或いは、デバッグ時以外に使用したとしてもその端子のデバッグができない、という制限を有する。このため、デバッグ端子１８の数は極力少なくすることが要求される。特に量産用のMCUにデバッグ回路を搭載して量産用MCUのデバッグを可能にするデバッグシステムでは、デバッグ端子は１つであることが望ましい。
【０００７】
デバッグ端子１８を1つにする場合、複数端子で実現していた外部デバッグ装置２とデバッグ回路１２間の通信機能と、デバッグ回路１２のデバッグモード制御機能等の必要な機能を１つの信号にマルチプレクスする必要がある。ここでは、デバッグ機能を実現するのに最低限必要である外部デバッグ装置２とデバッグ回路１２間の通信機能と、デバッグ回路１２のデバッグモード制御機能をマルチプレクスする場合について説明する。
【０００８】
外部デバッグ装置２とデバッグ回路１２間の通信機能は、デバッグ端子１８を半２重のシリアル通信の双方向端子として機能させることにより実現可能である。
【０００９】
デバッグ回路１２のデバッグモード制御機能は、MCU１のデバッグを許可するモード（デバッグ有効モード）とデバッグを許可しないモード（デバッグ無効モード）を決定する。具体的には、MCU１内のパワーオンリセット回路１６が電源投入時及び／又は電源電圧が許容値より低下したことを検出した時（以下、電源電圧低下検出時）に出力するリセット信号（以下、パワーオンリセット信号と言う）Porが発生している期間のデバッグ端子１８の入力信号レベルをラッチし、ラッチした信号レベルにより選択されるモードを判定する。モードが決まった後、デバッグ無効モードではMCU１のリセット解除後にユーザプログラムを実行し、デバッグ有効モードではMCU１のリセット解除後にデバッグ専用プログラム（又は、モニタプログラム）を実行する。
【００１０】
デバッグ端子１８をデバッグモード制御に使用するのは、電源投入時や電源電圧低下検出時のタイミングに限定される。これらのタイミングにおいては、MCU１が初期化されるため、外部デバッグ装置２とデバッグ回路１２間の通信は行われない。このため、外部デバッグ装置２とデバッグ回路１２間の通信機能とデバッグ回路１２のデバッグモード制御機能は、互いに干渉することはない。
【００１１】
図２は、デバッグモード制御の処理を説明するフローチャートである。図２において、ステップＳ１ではMCU１の電源が投入され、ステップＳ２ではパワーオンリセット信号Porによるパワーオンリセットが発生したか否かを判定する。ステップＳ２の判定結果がＮＯであると、ステップＳ３ではデバッグモードが不定であると判断されて処理は終了する。
【００１２】
ステップＳ２の判定結果がＹＥＳであると、ステップＳ４ではMCU１に外部デバッグ装置２が接続されているか否かを判定する。ステップＳ４の判定結果がＮＯであると、ステップＳ５ではパワーオンリセット解除時にデバッグ端子１８への入力信号をハイレベル（Ｈレベル）とし、ステップＳ６ではモードをデバッグ無効モードに決定する。ステップＳ７では、MCU１のリセットを解除し、ステップＳ８ではCPU１１がユーザプログラムを実行し、処理は終了する。
【００１３】
ステップＳ４の判定結果がＹＥＳであると、ステップＳ９ではパワーオンリセット解除時にデバッグ端子１８への入力信号をローレベル（Ｌレベル）とし、ステップＳ１０ではモードをデバッグ有効モードに決定する。ステップＳ１１では、MCU１のリセットを解除し、ステップＳ１２ではCPU１１がデバッグ機能を実現するためのモニタプログラムを実行する。又、ステップＳ１３ではデバッグ端子１８を介して外部デバッグ装置２と通信を行い、処理は終了する。
【００１４】
図３は、従来のデバッグ回路の一例を示す回路図である。又、図４乃至図６は、夫々図３のデバッグ回路１２Ａを図１のデバッグ回路１２として用いた場合のデバッグモード制御のタイミングを示すタイムチャートである。図４は、デバッグ無効モードを指定する場合を説明するタイムチャートであり、図５は、デバッグ有効モードを指定する場合を説明するタイムチャートであり、図６は、パワーオンリセットが正常に発生しない場合を説明するタイムチャートである。図４乃至図６において、VCCはMCU１の電源電圧、Porはパワーオンリセット回路１６が出力するパワーオンリセット信号、Pdtはデバッグ端子１８に入力されるMCU１のデバッグモードを指定するデバッグ信号、Pdmはデバッグ回路１２から出力されるMCU１をデバッグモードに移行させるデバッグモード信号を示す。図４乃至図６の縦軸は信号レベルを任意単位で示し、横軸は時間を任意単位で示す。
【００１５】
図３のデバッグ回路１２Ａは、通信機能ブロック２１１と、データラッチ回路２１３を含むデバッグモード制御回路２１２とを有する。データラッチ回路２１３は、ディレイラッチ（Dラッチ）により構成されている。通信機能ブロック２１１は、外部デバッグ装置２とデバッグ回路１２間の上記通信機能を実現するためのものであり、周知の構成の通信機能ブロックを使用可能である。尚、デバッグ端子１８は、プルアップ抵抗１９を介して電源電圧VCCに接続されている。パワーオンリセット信号Porがアクティブ中にデバッグ端子１８に入力されるデバッグ信号Pdtは、データラッチ回路２１３によりラッチされ、ラッチされた値はデバッグモード信号Pdmとして出力される。ここでは、パワーオンリセット時にデバッグ端子１８の入力信号レベルがHレベルの場合に、図４に示すようにデバッグモード信号PdmがLレベルになってデバッグ無効モードを示し、パワーオンリセット時にデバッグ端子１８の入力信号レベルがLレベルの場合に、図５に示すようにデバッグモード信号PdmがHレベルになってデバッグ有効モードを示す。これにより、外部デバッグ装置２がMCU１に対して未接続の場合は、パワーオンリセット時にデバッグ端子１８の入力信号レベルがHレベルになり、常にデバッグモード信号PdmがLレベルとなってデバッグ無効モードを示す。MCU１に外部デバッグ装置２が接続されている場合、外部デバッグ装置２はMCU１の電源を監視し、電源投入（パワーオンリセットの発生）から一定期間、MCU１のデバッグ端子１８にLレベルの信号を入力し、デバッグ回路１２Ａではデバッグモード信号PdmがHレベルになってデバッグ有効モードを示す。
【００１６】
このように、デバッグモードの決定には、パワーオンリセット回路１６が電源投入時や電源電圧低下検出時に出力するパワーオンリセット信号Porを使用している。ところが、このパワーオンリセット信号Porは、図６に示すように例えば電源電圧VCCが非常にゆっくり立ち上がる場合等には発生しないことがある。この場合、パワーオンリセット信号Porが接続される図３のデータラッチ回路２１３のラッチゲートがアクティブにならないため、データラッチ回路２１３の出力であるデバッグモード信号Pdmは不定となる。この結果、MCU１は意図しないデバッグモードで起動されしてしまう可能性がある。
【００１７】
尚、リセット制御回路１７は、パワーオンリセット信号Porに基づいてMCU１をリセットするリセット信号Rstを出力する。
【００１８】
特許文献１には、通常モードとデバッグモードを有するシングルチップマイクロコントローラが提案されている。
【特許文献１】特開昭５９−１４６３５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
従来、例えば装置に搭載されたMCUに外部デバッグ装置が接続されていない場合、パワーオンリセットが発生しないと、デバッグモードはデバッグ無効モードになることを期待するが、デバッグ有効モードになる可能性がある。逆に、MCUに外部デバッグ装置を接続した場合、電源投入時にパワーオンリセット信号が発生しないと、デバッグモードはデバッグ有効モードになることを期待するが、デバッグ無効モードになる可能性がある。
【００２０】
MCUが製品等の装置に搭載されて稼動される場合、デバッグ無効モードで動作しなければならない。しかし、従来のデバッグモード制御では、電源投入時にパワーオンリセットが発生しない場合、デバッグ有効モードになる可能性がある。装置に搭載されたMCUが意図せずデバッグ有効モードになると、MCUは装置が意図しないモードで動作するために装置の動作に大きな影響を及ぼすことになる。これに対する対策として、意図しないデバッグ有効モードから復旧させることが考えられるが、それにはMCUのモード異常状態を検出してMCUへの電源を再投入することが必要となる。このような対策を実現するメカニズムを装置に実装することは、装置の構成を複雑化すると共にコストを増加させる要因となる。このため、デバッグ無効モードを指定している場合にデバッグ有効モードになることを回避することは必須である。
【００２１】
このように、従来は、パワーオンリセットが発生しない場合、デバッグモードを適切に決定することが難しいという問題があった。
【００２２】
そこで、本発明は、パワーオンリセットが発生しない場合であっても、デバッグモードを適切に決定可能な半導体集積回路及びデバッグモード決定方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記の課題は、デバッグモードを指定するデバッグ信号を入力する端子と、電源投入時にリセット信号を生成するリセット回路と、前記デバッグ信号及び前記リセット信号に基づいて前記デバッグモードに移行させる制御信号を出力するデバッグモード制御回路とを有し、前記デバッグモード制御回路は、前記デバック信号をラッチして第１の信号を生成するラッチ回路と、前記デバッグモードを許可する許可コードが書き込まれると第２の信号を生成するレジスタ回路とを含み、前記第１の信号と前記第２の信号に基づいて前記制御信号を生成し、パワーオンリセット発生時の前記デバッグ信号のレベルにより決まる第1段階のモードと、前記第１段階のモードが特定モードの場合にアクセス可能な前記レジスタ回路に前記許可コードを書き込むことで決まる第２段階のモードの２段階によってデバッグモードを制御することを特徴とする半導体集積回路によって達成できる。
【００２４】
上記の課題は、パワーオンリセット発生時のモード端子の入力信号レベルにより決まる第1段階のモードと、前記第1段階のモードが特定モードの場合に、アクセス可能なモードレジスタにデバッグモードを許可するコードを書き込むことで決まる第２段階のモードとを有し、前記の第１段階のモードと前記の第２段階のモードの２段階によってデバッグモードが制御されることを特徴とするデバックモード決定方法によって達成できる。
【発明の効果】
【００２５】
本発明によれば、パワーオンリセットが発生しない場合であっても、デバッグモードを適切に決定可能な半導体集積回路及びデバッグモード決定方法を実現することができる。
【発明を実施するための最良の形態】
【００２６】
本発明は、マイクロコントローラ等に内蔵される情報処理装置のデバッグを支援するデバッグ回路等のモード制御を行う回路に適用される。マイクロコントローラを構成する半導体集積回路内に設けられたデバッグ回路は、デバッグ有効モードとデバッグ無効モードを制御する機能を有する。パワーオンリセット時のマイクロコントローラのデバッグ端子の入力レベルを検出してモードを決定するデバッグモード制御において、デバッグ無効モードを指定し、且つ、パワーオンリセットが発生しない場合において、モードをデバッグ無効モードに決定する。
【００２７】
これにより、パワーオンリセットが発生しない場合であっても、デバッグモードを適切に決定可能となる。
【００２８】
以下に、本発明の半導体集積回路及びデバッグモード決定方法の各実施例を、図７以降と共に説明する。
【実施例】
【００２９】
MCU等のマイクロコントローラに代表される、CPU等の情報処理装置を含む装置において、CPUを動作させるプログラムを開発する場合、デバッグシステムを用いる。以下に説明する本発明の各実施形態においては、シングルチップMCU用のデバッグシステムの基本構成は、図１と同じであるものとする。即ち、半導体集積回路であるMCU１は、図１に示すように、外部デバッグ装置２を介してホストコンピュータ３に接続されているものとする。
【００３０】
従来は、図３に示す如きデータラッチ回路２１３を用いてパワーオンリセット時のデバッグ端子１８の信号レベルをラッチして、デバッグモード信号Pdmを生成している。しかし、パワーオンリセットが発生しない状況では、デバッグ無効モードを指定している場合にデバッグ有効モードになる可能性がある。そこで、パワーオンリセット発生の有無に依存しないで、デバッグ無効モードを指定するデバッグ端子１８に入力されるデバッグ信号PdtがLレベルであるとデバッグモード信号PdmがLレベル（デバッグ無効モード）となるメカニズムが必要である。
【００３１】
図７は、本発明の一実施形態におけるデバッグ回路を示す回路図である。図７中、図１及び図３と実質的に同じ部分には同一符号を付し、その説明は省略する。
【００３２】
図７のデバッグ回路１２Ｂは、通信機能ブロック１２１と、アンド回路１２３及びデータラッチ回路１２４を含むデバッグモード制御回路１２２−１とを有する。データラッチ回路１２４は、セット/リセットラッチ（SRラッチ）により構成されている。通信機能ブロック１２１は、外部デバッグ装置２とデバッグ回路１２間の上記通信機能を実現するためのものであり、周知の構成の通信機能ブロックを使用可能である。尚、デバッグ端子１８は、プルアップ抵抗１９を介して電源電圧VCCに接続されている。
【００３３】
デバッグ端子１８に入力されるデバッグ信号Pdtは、アンド回路１２３を介してデータラッチ回路１２４を構成するSRラッチのセット端子Ｓに入力されると共に、直接SRラッチのリセット端子Ｒに入力される。アンド回路１２３には、パワーオンリセット信号Porも入力される。データラッチ回路１２４によりラッチされた値はデバッグモード信号Pdm1として出力される。SRラッチは、セット端子Ｓに入力されるセット信号により出力端子Ｑからの出力信号がHレベルになり、リセット端子Ｒに入力されるリセット信号により出力端子Ｑからの出力信号がLレベルになる構成を有する。
【００３４】
図７のデバッグ回路１２Ｂにおいて、パワーオンリセット発生時にデバッグ端子１８にLレベルの信号が入力されると、SRラッチがセットされる。この結果、SRラッチの出力であるデバッグモード信号Pdm1はHレベル（デバッグ有効モード）となる。一方、デバッグ端子１８にHレベルの信号が入力されると、SRラッチのリセットがアクティブになる。この結果、SRラッチの出力であるデバッグモード信号はL（デバッグ無効モード）となる。このように、パワーオンリセット発生の有無に依存しないで、デバッグ無効モードを指定するデバッグ端子１８への入力信号のＨレベルであると、デバッグモード信号Pdm1がLレベル（デバッグ無効モード）になる。このため、パワーオンリセットが発生しない状況において、デバッグ無効モードを指定している場合にデバッグ無効モードになるという図３のデバッグ回路１２Ａの問題点が解決できる。
【００３５】
しかし、デバッグモードがデバッグ有効モードの場合、上記の如く、デバッグ端子１８はデバッグ回路１２Ｂのデバッグモード制御用以外に、外部デバッグ装置２とデバッグ回路１２Ｂ間の通信用としても機能する。デバッグモードがデバッグ有効モードに決定された後に、外部デバッグ装置２とデバッグ回路１２Ｂは通信を行うが、この通信によりデバッグ端子１８に入力されるデバッグ信号PdtはLレベル及びHレベルのいずれにもなり得る。このように、図７の構成では、デバッグ端子１８に入力されるデバッグ信号PdtがLレベルになると、SRラッチのリセットがアクティブになり、デバッグモード信号はLレベル（デバッグ無効モード）になり、デバッグモードを継続することができなくなる可能性がある。
【００３６】
そこで、デバッグモードを継続することができなくなる可能性があるという図７の構成の不都合をも解決できる本発明の他の実施形態を説明する。図８は、本発明の他の実施形態におけるデバッグ回路を示す回路図である。図８中、図１、図３及び図７と実質的に同じ部分には同一符号を付し、その説明は省略する。
【００３７】
デバッグ回路１２Ｃ内のデバッグモード制御回路１２２−２は、図８に示す如く接続されたアンド回路１２５、オア回路１２８及び回路部１３１，１３２を有する。回路部１３１は、図８に示す如く接続されたアンド回路１２３及びSRラッチにより構成されたデータラッチ回路１２４を有する。回路部１３２は、図８に示す如く接続されたモードレジスタ１２６及びモード許可コード一致検出回路１２７を有する。モードレジスタ１２６は、デバッグ有効モードにおいてのみアクセス可能なレジスタであり、CPU１１からモードレジスタ１２６へのアクセスはアンド回路１２５を介して行われる。オア回路１２８は、回路部１３１の出力とモード許可コード一致検出回路１２７の出力の論理和を求め、デバッグモード信号PDMとして出力する。デバッグモード信号PDMは、CPU１１及びアンド回路１２５の一方の入力端子に供給される。
【００３８】
図８のデバッグモード制御回路１２２−２で決まるデバッグ有効モードは、パワーオンリセット信号Porとデバッグ端子１８に入力されるデバッグ信号Pdtの信号レベルというハードウェア的な要因から決定することから、以後の説明ではこの第１段階のモードのことをハードウェアモード（HWモード）と言う。
【００３９】
モードレジスタ１２６は、例えば、１６ビットの多ビットレジスタであり、デバッグモード信号PDMがデバッグ有効モードとなっている場合においてのみCPU１１からアクセス可能なレジスタである。又、モードレジスタ１２６は、パワーオンリセット信号Porにより全ビットがLレベルに初期化される。
【００４０】
モード許可コード一致検出回路１２７は、モードレジスタ１２６の値がデバッグ有効モードを許可する特定コードと一致するか否かを検出する回路である。モードレジスタ１２６にデバッグ有効モードを許可する特定コードを書き込むことにより決まるデバッグ有効モードは、CPU１１からアンド回路１２５を介してソフトウェア的に決定することから、以後の説明ではこの第２段階のモードをソフトウェアモード（SWモード）と言う。
【００４１】
パワーオンリセットが発生しない場合、モードレジスタ１２６の値は不定となる。この状態で、SWモードをデバッグ有効モードにさせないためには、モードレジスタ１２６の値がデバッグ有効モードを許可する特定コードと一致しないようにする必要がある。そこで、一つ方法としては、モードレジスタ１２６の値が特定コードと一致する確率を下げるためにモードレジスタ１２６をより多くのビットで構成すれば良い。又、他の方法としては、電源投入後にリセットされない場合のフリップフロップ（FF）の出力の初期値（以下、単にFFの初期値と言う）の特性を利用すれば良い。
【００４２】
後者の、電源投入後にリセットされない場合のFFの初期値を考えると、FFの初期値は電源投入条件（電源の立ち上がり方）に大きく依存する。複数のFFを考えた場合、リセットされないFFの初期値は統計的に全てHレベル、又は、全てＬレベルに極めて多く分布し、ＨレベルとＬレベルが混在する分布には極めてなり難いことが分かっている。この特性を利用して、デバッグ有効モードを許可する特定コードを、リセットされないFFの初期値が統計的に最も分布し難いＨレベルとＬレベルが５０％ずつのコードを選択することが極めて有効であり、例えば0xAAAA，0x5555，0xA5A5，0x5A5A等のコードが候補になり得る。ここでは説明の便宜上、デバッグ有効モードを許可する特定コードが0xAA55であるものとして説明する。
【００４３】
モードレジスタ１２６が初期化されない場合の対策として、モードレジスタ１２６を１６ビットで構成し、デバッグ有効モードを許可する特定コードをＨレベルＬレベルが５０％ずつのコードにすることにより、極めて高い確率でモードレジスタ１２６の初期値が不定である時にデバッグ有効モードを許可する特定コードと一致しないようにすることができる。このため、モードレジスタ１２６の初期値が不定である時にデバッグ有効モードを許可する特定コードと一致する確率は無視できるほど小さい。これにより、パワーオンリセットが発生しないためにモードレジスタ１２６が初期化されない場合であっても、モードレジスタ１２６の値がデバッグ有効モードを許可する特定コードと一致してSWモードがデバッグ有効モードになることは実質的にはないものとして扱える。
次に、図８におけるデバッグモード制御を説明する。デバッグ有効モード又はデバッグ無効モードの指定と、パワーオンリセットが正常に発生する場合又はパワーオンリセットが正常に発生しない場合の組み合わせにより、次の４つのケースが考えられる。
【００４４】
〔１〕デバッグ無効モードを指定し、パワーオンリセットが正常に発生するケース。 
〔２〕デバッグ有効モードを指定し、パワーオンリセットが正常に発生するケース。
【００４５】
〔３〕デバッグ無効モードを指定し、パワーオンリセットが正常に発生しないケース。
【００４６】
〔４〕デバッグ有効モードを指定し、パワーオンリセットが正常に発生しないケース。
【００４７】
以下に、デバッグモード制御を〔１〕乃至〔４〕の各ケースについて、図９乃至図１３と共に説明する。図９は、  本発明の他の実施形態におけるデバッグモード制御の処理を説明するフローチャートである。図１０乃至図１３は、夫々図８のデバッグ回路１２Ｃを図１のデバッグ回路１２として用いた場合のデバッグモード制御のタイミングを示すタイムチャートである。図１０は、デバッグ無効モードを指定しパワーオンリセットが正常に発生する場合を説明するタイムチャートであり、図１１は、デバッグ有効モードを指定しパワーオンリセットが正常に発生する場合を説明するタイムチャートであり、図１２は、デバッグ無効モードを指定しパワーオンリセットが正常に発生しない場合を説明するタイムチャートであり、図１３は、デバッグ有効モードを指定しパワーオンリセットが正常に発生しない場合を説明するタイムチャートである。図１０乃至図１３において、VCCはMCU１の電源電圧、Porはパワーオンリセット信号、Pdtはデバッグ信号、RstはMCU１のリセット信号、HWは回路部１３１が出力するHWモードを示す信号、SWは回路部１３２が出力するSWモードを示す信号、PDMはデバッグモード信号を示す。
【００４８】
図９において、ステップＳ２１ではMCU１の電源が投入され、ステップＳ２２ではMCU１に外部デバッグ装置２が接続されているか否かを判定する。ステップＳ２２の判定結果がＮＯであると、ステップＳ２３ではデバッグ端子１８への入力信号（デバッグ信号Pdt）をＨレベルにする。ステップＳ２４ではHWモードによりモードをデバッグ無効モードに決定し、ステップＳ２５でSWモードによりモードを初期条体のデバッグ無効モードを決定する。ステップＳ２６ではリセット制御回路１７が出力するリセット信号RstによるMCU１のリセットを解除し、ステップＳ２７ではCPU１１がユーザプログラムを実行し、処理は終了する。
【００４９】
ステップＳ２２の判定結果がＹＥＳであると、ステップＳ２８ではデバッグ端子１８への入力信号（デバッグ信号Pdt）をＬレベルにする。ステップＳ２９ではパワーオンリセット信号Porによるパワーオンリセットが発生したか否かを判定する。ステップＳ２９の判定結果がＮＯであると、ステップＳ３０ではデバッグモードが不定であると判断されて処理は終了する。
【００５０】
ステップＳ２９の判定結果がＹＥＳであると、ステップＳ３１ではHWモードによりモードを暫定的にデバッグ有効モードに決定する。ステップＳ３２ではリセット制御回路１７が出力するリセット信号RstによるMCU１のリセットを解除し、ステップＳ３３ではCPU１１がモニタプログラムを実行する。ステップＳ３４ではモードレジスタ１２６にデバッグ有効モードを許可する特定コードを書き込む。ステップＳ３５ではSWモードによりモードを確定的にデバッグ有効モードに決定する。ステップＳ３６ではデバッグ端子１８を介して外部デバッグ装置２と通信を行い、処理は終了する。
【００５１】
デバッグ無効モードを指定し、パワーオンリセットが正常に発生するケース〔１〕では、デバッグ無効モードの指定は、MCU１に外部デバッグ装置２を接続しないことで行う。MCU１に外部デバッグ装置２を接続しないでMCU１の電源を投入すると、デバッグ端子１８のプルアップ抵抗１９によりデバッグ端子１８の入力信号（デバッグ信号Pdt）はHレベルとなる。これにより、データラッチ回路１２４を構成するSRラッチの出力はLレベルになり、HWモードによりモードはデバッグ無効モードに決定される。モードレジスタ１２６は、パワーオンリセットにより初期化されて全ビットがＬレベルであるため、デバッグ有効モードを許可する特定コード0xAA55と一致せず、SWモードによりモードはデバッグ無効モードに決定される。この結果、HWモードとSWモードの論理和であるデバッグモード信号PDMは、デバッグ無効モードを示す。
【００５２】
デバッグ無効モードでリセット制御回路１７が出力するリセット信号RstによるMCU１のリセットが解除されると、CPU１１はユーザプログラムを実行する。デバッグ無効モードでは、CPU１１はモードレジスタ１２６にアクセスできない。このため、デバッグ無効モード中はモードレジスタ１２６が常に保護され、SWモードでは必ずデバッグ無効モードを継続する。このように、HWモードもSWモードもデバッグ無効モードを継続するため、これらの論理和であるデバッグモード信号PDMも図１０に示すようにデバッグ無効モードを継続する。
【００５３】
デバッグ有効モードを指定し、パワーオンリセットが正常に発生するケース〔２〕では、デバッグ有効モードの指定は、MCU１に外部デバッグ装置２を接続して行う。MCU１に外部デバッグ装置２を接続しMCU１の電源を投入すると、外部デバッグ装置２がデバッグ端子１８にLレベルのデバッグ信号Pdtを一定期間入力する。このデバッグ端子１８へのLレベルのデバッグ信号Pdtを入力する期間は、MCU１の電源の投入からリセット制御回路１７が出力するリセット信号RstによるMCU１のリセットが解除されてCPU１１が動作を開始するまでの時間より十分長く設定されているものとする。MCU１の電源投入によりパワーオンリセットが正常に発生してパワーオンリセット信号Porが出力され、デバッグ端子１８へLレベルのデバッグ信号Pdtが入力されると、これらの信号Por，Pdtの組み合わせにより、データラッチ回路１２４を構成するSRラッチの出力はHレベルとなり、HWモードによりモードはデバッグ有効モードに決定される。これと同時にHWモードとSWモードの論理和であるデバッグモード信号PDMはデバッグ有効モードを示す。
【００５４】
デバッグ有効モードでリセット制御回路１７が出力するリセット信号RstによるMCU１のリセットが解除されると、CPU１１はMCU１内の記憶装置１３に格納されておりデバッグ機能を実現するためのモニタプログラムを実行する。モニタプログラムはその起動処理で、モードレジスタ１２６にデバッグ有効モードを許可する特定コード0xAA55を書き込む。この結果、SWモードによりモードはデバッグ有効モードに決定される。
【００５５】
デバッグモード信号PDMは、HWモードを示す回路部１３１の出力信号HWとSWモードを示す回路部１３２の出力信号SWの論理和である。ここで、外部デバッグ装置２がデバッグ端子１８にLレベルのデバッグ信号Pdtを一定期間入力した後に開始する通信によって、HWモードによるデバッグ有効モードが解除され得る。しかし、SWモードによるデバッグ有効モードはモードレジスタ１２６の値を書き換えない限りは継続する。又、モニタプログラムは、一度設定したモードレジスタ１２６の内容を変更することはない。従って、デバッグモード信号PDMは、SWモードの効果により図１１に示すようにデバッグ有効モードを継続する。
【００５６】
本ケース〔２〕では、デバッグモード信号PDMはHWモードを示す回路部１３１の出力信号HWとSWモードを示す回路部１３２の出力信号SWの論理和であるため、モードはパワーオンリセットの発生時からデバッグ有効モードに決定される。これは、見方を変えると、HWモードはデバッグ端子１８にLレベルのデバッグ信号Pdtが入力されている間、モードを暫定的にデバッグ有効モードに決定する機構であり、SWモードはHWモードによりモードがデバッグ有効モードとなっていることをトリガに、モードを確定的にデバッグ有効モードに決定する機構であると言える。このため、HWモードでは通信によってデバッグ有効モードが解除されてしまうが、SWモードではデバッグ有効モードを継続させて全体としてデバッグ有効モードを継続できるようにすることが可能となる。
【００５７】
デバッグ無効モードを指定し、パワーオンリセットが正常に発生しないケース〔３〕では、デバッグ無効モードの指定は、MCU１に外部デバッグ装置２を接続しないことで行う。MCU１に外部デバッグ装置２を接続しないで、MCU１の電源を投入すると、デバッグ端子１８のプルアップ抵抗１９によりデバッグ端子１８の入力信号（デバッグ信号Pdt）はHレベルとなる。これにより、データラッチ回路１２４を構成するSRラッチの出力はLレベルになり、HWモードによりモードはデバッグ無効モードに決定される。モードレジスタ１２６はパワーオンリセットが正常に発生しないため初期化されないが、モードレジスタ１２６の値がデバッグ有効モードを許可する特定コード0xAA55と一致する確率は極めて低いため、SWモードによりモードはデバッグ無効モードに決定される。この結果、HWモードを示す回路部１３１の出力信号HWとSWモードを示す回路部１３２の出力信号SWの論理和であるデバッグモード信号PDMは、図１２に示すようにデバッグ無効モードを示す。
【００５８】
モードレジスタ１２６は、上記ケース〔１〕の場合と同様にデバッグ無効モード中は常に保護されるため、デバッグモード信号PDMもデバッグ無効モードを継続する。
【００５９】
デバッグ有効モードを指定し、パワーオンリセットが正常に発生しないケース〔４〕では、デバッグ有効モードの指定は、MCU１に外部デバッグ装置２を接続して行う。MCU１に外部デバッグ装置２を接続してMCU１の電源を投入すると、外部デバッグ装置２がデバッグ端子１８にLレベルのデバッグ信号Pdtを一定期間入力する。MCU１の電源投入によりパワーオンリセットが正常に発生しない場合、データラッチ回路１２４を構成するSRラッチのセット条件及びリセット条件は共に成立しないためSRラッチの出力は不定となる。即ち、HWモードは不定となる。外部デバッグ装置２がデバッグ端子１８にLレベルのデバッグ信号Pdtを一定期間入力終了後、デバッグ端子１８はプルアップ抵抗１９の効果によりHレベルになる。この時、SRラッチのリセット条件が成立して、初めてSRラッチの出力が確定してHWモードが確定する。確定したHWモードにより、モードはデバッグ無効モードに決定される。
【００６０】
本ケースの場合、モードレジスタ１２６は、パワーオンリセットが正常に発生しないため初期化されないが、モードレジスタ１２６の値がデバッグ有効モードを許可する特定コード0xAA55と一致する確率は極めて低いため、SWモードによりモードはデバッグ無効モードに決定される。
【００６１】
デバッグモード信号PDMは、HWモードを示す回路部１３１の出力信号HWとSWモードを示す回路部１３２の出力信号SWの論理和である。本ケース〔４〕では、MCU１の電源投入後にデバッグモード信号PDMが不定になるため、図１３に示すように予期しない動作をする可能性が低いもののある。
【００６２】
以上説明したように、図８におけるデバッグモード制御によれば、パワーオンリセットが正常に発生する状況、即ち、上記のケース〔１〕及びケース〔２〕では、図４及び図５と共に説明した従来例と結果的には同様のモード制御を行える。更に、図６と共に説明した従来例の課題、即ち、パワーオンリセットが発生しない状況において、デバッグ無効モードを指定している場合にデバッグ無効モードになるという問題は、上記のケース〔３〕では解消される。
【００６３】
尚、図８におけるデバッグモード制御では、上記ケース〔４〕の場合に生じる不都合を回避はできていない。しかし、外部デバッグ装置２をMCU１に接続してデバッグ有効モードを指定している場合は、MCU１を搭載した装置が稼動している状況ではなく、MCU１及びMCU１を搭載した装置のデバッグ（評価）を行っているという状況である。このため、パワーオンリセットが正常に発生しないことがあっても、デバッグを行う人が再度MCU１の電源を投入する等の操作を行うことで、MCU１及びMCU１を搭載した装置を復旧することが可能である。従って、このような場合は、デバッグ無効モードを指定した場合に意図せずデバッグ有効モードになる場合と比較すると、重大な問題にはならない。
【００６４】
次に、本発明の更に他の実施形態を、図１４及び図１５と共に説明する。図１４は、本発明の更に他の実施形態におけるデバッグ回路を示す回路図であり、図１５は、本発明の更に他の実施形態におけるデバッグモード制御の処理を説明するフローチャートである。
【００６５】
図１４中、図８と同一部分には同一符号を付し、その説明は省略する。図１４に示すデバッグ回路１２Ｄは、デバッグモード制御回路１２２−３を有する。デバッグモード制御回路１２２−３は、図１４に示す如く接続されたアンド回路１２５、オア回路１２８，１２９、及び回路部１３１，１３２Ａを有する。回路部１３２Ａは、モードレジスタ１２６及びモード許可コード一致検出回路１２７−１〜１２７−４を有する。モード許可コード一致検出回路１２７−１〜１２７−４の出力は、一方ではオア回路１２９を介してオア回路１２８に供給され、他方では直接通信機能ブロック１２１Ａに供給される。
【００６６】
モードレジスタ１２６は、図８の場合は特定コード0xAA55を用いることにより、SWモードによりモードをデバッグ有効モードに決定している。しかし、特定コード0xAA55はコードの一例に過ぎず、特定コードはHレベルとLレベルが５０％ずつのビットからなるコードであれば良い。即ち、特定コードとしては、0xAA55以外にも、0xAAAAや0x5555等を利用可能である。
【００６７】
一方、モードレジスタ１２６は、例えば１６ビットの多ビットで構成されているが、このモードレジスタ１２６を１つのモードにのみ利用するのは、レジスタビットの使用効率という観点からすると有効だとは言えない。そこで、図１４の場合は、デバッグ有効モードの中で使用されるモードや設定を、このモードレジスタ１２６で実現して、レジスタビットを有効活用する。
【００６８】
具体的には、特定コードを拡張して、デバッグ有効モードというメインモードに対してサブモードを設ける。例えば、特定コードは、0xAA55、0x55AA、0xAAAA、0x5555の４つのコードでデバッグ有効モードを許可するコードとする。又、これらの４つのコードに対して、夫々デバッグ有効モード内で別のサブモードに対応させる。
【００６９】
デバッグモード制御でデバッグ有効モードを決定した後にデバッグ端子１８は通信用端子として機能するが、サブモードの一例としては、その通信時のデータレート設定に割当てる。具体的には、外部デバッグ装置２をMCU１に接続してデバッグ有効モードで動作させる前述のケース〔２〕において、周辺機能であるＭＣＵ１の汎用ポートの特定ポートをMCU１が搭載される装置（ボード）上にプルアップ処理又はプルダウン処理を施して接続し、通信のデータレート設定を特定ポートを介してMCU１に与える。デバッグ有効モードでCPU１１が実行するモニタプログラムは、その起動処理でCPU１１の特定の汎用ポートの入力値を読み出し、汎用ポートを介して与えられた通信のデータレート設定を検出し、モードレジスタ１２６に書き込む特定コードを決定してモードレジスタ１２６に書き込む。例えば、特定コードを以下のように割当てることで、通信データレートをMCU１に与える源発振クロック入力の何分周かに対応するように設定することが可能になる。
【００７０】
0xAA55：デバッグ有効モード（通信データレートは源発振クロックの４分周）。
【００７１】
0x55AA：デバッグ有効モード（通信データレートは源発振クロックの８分周）。
【００７２】
0xAAAA：デバッグ有効モード（通信データレートは源発振クロックの１６分周）。
【００７３】
0x5555：デバッグ有効モード（通信データレートは源発振クロックの３２分周）。
【００７４】
モード許可コード一致検出回路１２７−１〜１２７−４により検出された４つのコードが示すサブモードは、通信機能ブロック１２１Ａに供給される。従って、上記の例では、設定された通信データレートが通信機能ブロック１２１Ａに供給される。
【００７５】
図１５中、図９と実質的に同じステップには同一符号を付し、その説明は省略する。図１５において、ステップＳ２９の判定結果がＹＥＳであると、ステップＳ３１〜Ｓ３３が実行され、ステップＳ４１ではCPU１１の特定の汎用ポートの入力を確認する。ステップＳ４２では指定するべき通信データレートを設定するデバッグ有効モード許可コードを選択する。ステップＳ４３ではモードレジスタ１２６に選択されたデバッグ有効モード許可コードを書き込む。ステップＳ４４ではSWモードによりモードを確定的にデバッグ有効モードに決定すると共に、確定的に通信データレートを設定する。ステップＳ３６ではデバッグ端子１８を介して外部デバッグ装置２と通信を行い、処理は終了する。
【００７６】
上記の例では、通信データレートの設定（４つの設定）をモードレジスタ１２６の機能に統合した。４つの設定をモードレジスタ１２６と別のレジスタビットで実現するには２ビット必要になるが、モードレジスタ１２６に統合することで、この２ビット省略することができ、より少ないレジスタビット数でデバッグ回路１２Ｄを構成できる。
【００７７】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）
デバッグモードを指定するデバッグ信号を入力する端子と、
電源投入時にリセット信号を生成するリセット回路と、
前記デバッグ信号及び前記リセット信号に基づいて前記デバッグモードに移行させる制御信号を出力するデバッグモード制御回路と
を有し、
前記デバッグモード制御回路は、
前記デバック信号をラッチして第1の信号を生成するラッチ回路と、
許可コードが書き込まれると第２の信号を生成するレジスタ回路と
を含み、
前記第１の信号と前記第２の信号に基づいて前記制御信号が生成される
ことを特徴とする半導体集積回路。
（付記２）
前記端子にデバッグ信号が入力されず、電源投入時に前記リセット回路によりリセット信号が生成された場合は、
前記第１の信号及び前記第２の信号は共に無効で、前記デバッグモード制御回路は前記制御信号を出力しない
ことを特徴とする付記１記載の半導体集積回路。
（付記３）
前記端子にデバッグ信号が入力され、電源投入時に前記リセット回路によりリセット信号が生成された場合は、
前記第１の信号が有効となり、前記レジスタ回路に前記許可コードが書き込まれることにより前記デバックモード制御回路が前記制御信号を出力する
ことを特徴とする付記１記載の半導体集積回路。
（付記４）
前記端子にデバッグ信号が入力されず、電源投入時に前記リセット回路によりリセット信号が生成されなかった場合は、
前記第１の信号及び前記第２の信号は共に無効で、前記デバッグモード制御回路は前記制御信号を出力しない
ことを特徴とする付記１記載の半導体集積回路。
（付記５）
前記端子にデバッグ信号が入力され、電源投入時に前記リセット回路によりリセット信号が生成されなかった場合は、
前記第２の信号は無効で、前記デバッグモード制御回路は前記制御信号を出力しない
ことを特徴とする付記１記載の半導体集積回路。
（付記６）
前記ラッチ回路は、前記半導体集積回路をリセットする前記リセット信号が発生している期間に前記端子に入力されるデバッグ信号の信号レベルをラッチする
ことを特徴とする付記１記載の半導体集積回路。
（付記７）
前記デバッグモードが決まった後、デバッグ無効モードでは前記半導体集積回路のリセット解除後にユーザプログラムを実行し、デバッグ有効モードでは前記リセット解除後にデバッグ専用プログラムを実行するCPUを更に有する
ことを特徴とする付記１記載の半導体集積回路。
（付記８）
前記端子は、単一の端子からなる
ことを特徴とする付記１記載の半導体集積回路。
（付記９）
パワーオンリセット発生時のモード端子の入力信号レベルにより決まる第1段階のモードと、
前記第1段階のモードが特定モードの場合に、アクセス可能なモードレジスタにデバッグモードを許可するコードを書き込むことで決まる第２段階のモードと
を有し、
前記の第１段階のモードと前記の第２段階のモードの２段階によってデバッグモードが制御されることを特徴とするデバックモード決定方法。
（付記１０）
前記第２段階において、前記モードレジスタに書き込んだモードを許可するコードが、モードを許可しないコードに書き換えられるまで、前記特定モードを継続する
ことを特徴とする付記９記載のデバックモード決定方法。
（付記１１）
前記第２段階で前記モードレジスタに書き込むモードを許可する複数のコードを設け、前記の複数コードの全コードで特定モードを継続し、各コードでデバッグモードにおける動作を規定するサブモードを設定する
ことを特徴とする付記９記載のデバックモード決定方法。
（付記１２）
前記サブモードは、前記モード端子の通信データレートを規定することを特徴とする付記１１記載のデバックモード決定方法。
（付記１３）
前記モード端子は、単一の端子からなる
ことを特徴とする付記９記載のデバッグモード決定方法。
【００７８】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００７９】
【図１】シングルチップMCU用のデバッグシステムの構成の一例を示すブロック図である。
【図２】デバッグモード制御の処理を説明するフローチャートである。
【図３】従来のデバッグ回路の一例を示す回路図である。
【図４】デバッグ無効モードを指定する場合を説明するタイムチャートである。
【図５】デバッグ有効モードを指定する場合を説明するタイムチャートである。
【図６】パワーオンリセットが正常に発生しない場合を説明するタイムチャートである。
【図７】本発明の一実施形態におけるデバッグ回路を示す回路図である。
【図８】本発明の他の実施形態におけるデバッグ回路を示す回路図である。
【図９】本発明の他の実施形態におけるデバッグモード制御の処理を説明するフローチャートである。
【図１０】デバッグ無効モードを指定しパワーオンリセットが正常に発生する場合を説明するタイムチャートである。
【図１１】デバッグ有効モードを指定しパワーオンリセットが正常に発生する場合を説明するタイムチャートである。
【図１２】デバッグ無効モードを指定しパワーオンリセットが正常に発生しない場合を説明するタイムチャートである。
【図１３】デバッグ有効モードを指定しパワーオンリセットが正常に発生しない場合を説明するタイムチャートである。
【図１４】本発明の更に他の実施形態におけるデバッグ回路を示す回路図である。
【図１５】本発明の更に他の実施形態におけるデバッグモード制御の処理を説明するフローチャートである。
【符号の説明】
【００８０】
１      MCU
２    外部デバッグ装置
３    ホストコンピュータ
１１    CPU
１２，１２Ｂ，１２Ｃ，１２Ｄ    デバッグ回路
１６    パワーオンリセット回路
１７    リセット制御回路
１８    デバッグ端子
３１    デバッガソフトウェア
１２２−１，１２２−２，１２２−３    デバッグモード制御回路
【図１】
0005067111.tif 000002
【図２】
0005067111.tif 000003
【図３】
0005067111.tif 000004
【図４】
0005067111.tif 000005
【図５】
0005067111.tif 000006
【図６】
0005067111.tif 000007
【図７】
0005067111.tif 000008
【図８】
0005067111.tif 000009
【図９】
0005067111.tif 000010
【図１０】
0005067111.tif 000011
【図１１】
0005067111.tif 000012
【図１２】
0005067111.tif 000013
【図１３】
0005067111.tif 000014
【図１４】
0005067111.tif 000015
【図１５】
0005067111.tif 000016