(57)【特許請求の範囲】
【請求項１】
不揮発性メモリーと、
前記不揮発性メモリーに記憶されているプログラムを実行するプロセッサーと、
前記プログラムのデバッグ機能を備えたデバッグ回路と、
前記プログラムのデバッグに使用される第１の外部端子と、
第２の外部端子と、
リセット解除から所定期間、前記第１の外部端子と前記デバッグ回路との電気的な接続を切断するマスク回路と、
前記所定期間において、前記所定期間の経過後も前記第１の外部端子と前記デバッグ回路との電気的な接続を切断するか否かを制御する制御回路と、を含み、
前記制御回路は、
前記所定期間において、前記プロセッサーが前記プログラムに含まれる第１の命令を実行した場合に、前記所定期間の経過後も前記第１の外部端子と前記デバッグ回路との電気的な接続を切断し、
前記不揮発性メモリーは、
複数の記憶領域を有し、
前記第２の外部端子に所定の信号が入力された場合に、記憶している情報を前記記憶領域ごとに消去し、前記第１の命令が記憶されている前記記憶領域の情報を最後に消去する、半導体装置。
【請求項２】
前記第１の外部端子と前記プロセッサーとの間における信号の入出力インターフェース回路をさらに含み、
前記制御回路は、
前記所定期間において、前記プロセッサーが前記第１の命令を実行した場合に、前記第１の外部端子と前記入出力インターフェース回路とを電気的に接続する、請求項１に記載の半導体装置。
【請求項３】
前記所定期間は、前記プロセッサーが前記第１の命令を実行するのに要する時間よりも長い、請求項１又は２に記載の半導体装置。
【請求項４】
前記制御回路は、
前記プロセッサーが第２の命令を実行した場合に、前記第１の外部端子と前記デバッグ回路とを電気的に接続する、請求項１乃至３のいずれか一項に記載の半導体装置。
【請求項５】
不揮発性メモリーと、
前記不揮発性メモリーに記憶されているプログラムを実行するプロセッサーと、
検査回路と、
検査に使用される第１の外部端子と、
第２の外部端子と、
リセット解除から所定期間、前記第１の外部端子と前記検査回路との電気的な接続を切断するマスク回路と、
前記所定期間において、前記所定期間の経過後も前記第１の外部端子と前記検査回路との電気的な接続を切断するか否かを制御する制御回路と、を含み、
前記制御回路は、
前記所定期間において、前記プロセッサーが前記プログラムに含まれる第１の命令を実行した場合に、前記所定期間の経過後も前記第１の外部端子と前記検査回路との電気的な接続を切断し、
前記不揮発性メモリーは、
複数の記憶領域を有し、
前記第２の外部端子に所定の信号が入力された場合に、記憶している情報を前記記憶領域ごとに消去し、前記第１の命令が記憶されている前記記憶領域の情報を最後に消去する、半導体装置。
【請求項６】
請求項１乃至５のいずれか一項に記載の半導体装置を備えた、電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び電子機器に関する。
【背景技術】
【０００２】
ＭＣＵ（Micro Controller Unit）等の半導体装置（例えば、ＩＣ（Integrated Circuit））では、プロセッサーがメモリーに記憶されているプログラムを実行することで、所望の機能を実現している。このような半導体装置では、プログラムを不正利用されることから保護することが課題となる。特許文献１では、パワー・オン・リセット時にデバッグ回路を使用不可にしてセキュリティ・リソース（レジスタ、ファームウェア、Ｉ／Ｏデバイス）へのアクセスを防止し、ブート・メモリからのシステム初期化中に選択されたセキュリティ手順を読み出すセキュリティ・コードを実行し、呼び出されたセキュリティ手順が有効であるときは、呼び出されたセキュリティ手順に応じてセキュアな環境でシステムを作動させ、呼び出されたセキュリティ手順が有効でないときは、デバッグ機能を使用可能にし、すべてのセキュリティ機能を隠す手法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００３−５２１７７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の手法を適用すれば、パワー・オン・リセット時に、プログラム（ファームウェア）へのアクセスが可能なデバッグ回路を使用不可にするため、プログラムを不正利用されることから保護することが可能かもしれない。しかしながら、特許文献１の手法では、デバッグ回路そのものを使用不可にしており、これを実現するための回路が複雑になり、半導体装置のサイズが増大しやすいという問題がある。また、特許文献１の手法では、呼び出されたセキュリティ手順が有効であるときは、セキュアな環境でシステムを作動させる（デバッグ機能を使用できない）ため、セキュリティ手順が無効の状態にしてプログラムのデバッグを行う必要があり、セキュリティ手順が有効の場合のデバッグを十分に行うことが難しいという問題もある。なお、プログラムの不正利用の保護に限らず、半導体装置に内蔵される検査回路の不正利用（意図しない使用も含む）に対する保護についても同様の問題がある。
【０００５】
本発明は、以上のような問題点に鑑みてなされたものであり、本発明のいくつかの態様によれば、コストの増加を低減しながらプログラムの不正利用のおそれを低減させることが可能な半導体装置及び電子機器を提供することができる。また、本発明のいくつかの態様によれば、プログラムの不正利用のおそれを低減させながら、デバッグを容易に行うことが可能な半導体装置及び電子機器を提供することができる。また、本発明のいくつかの態様によれば、コストの増加を低減しながら検査回路の不正利用のおそれを低減させることが可能な半導体装置及び電子機器を提供することができる。また、本発明のいくつかの態様によれば、検査回路の不正利用のおそれを低減させながら、検査を容易に行うことが可能な半導体装置及び電子機器を提供することができる。
【課題を解決するための手段】
【０００６】
本発明は前述の課題の少なくとも一部を解決するためになされたものであり、以下の態様または適用例として実現することが可能である。
【０００７】
［適用例１］
本適用例に係る半導体装置は、不揮発性メモリーと、前記不揮発性メモリーに記憶されているプログラムを実行するプロセッサーと、前記プログラムのデバッグ機能を備えたデバッグ回路と、前記プログラムのデバッグに使用される第１の外部端子と、リセット解除から所定期間、前記第１の外部端子と前記デバッグ回路との電気的な接続を切断するマスク回路と、前記所定期間において、前記所定期間の経過後も前記第１の外部端子と前記デバッグ回路との電気的な接続を切断するか否かを制御する制御回路と、を含む。
【０００８】
本適用例に係る半導体装置によれば、リセット解除からの所定期間は、マスク回路によって第１の外部端子とデバッグ回路との電気的な接続が切断され、第１の外部端子とデバッグ回路との電気的な接続が切断されている当該所定期間において、制御回路によって所定期間の経過後も切断するように制御可能であるので、第１の外部端子からデバッグ回路を介してプログラムが不正に利用されるおそれを低減させることができる。また、本適用例に係る半導体装置は、マスク回路と制御回路により第１の外部端子とデバッグ回路との電気的な接続を切断するという簡易な構成で実現することができる。従って、本適用例に係る半導体装置によれば、コストの増加を低減しながらプログラムの不正利用のおそれを低減させることができる。
【０００９】
また、本適用例に係る半導体装置によれば、第１の外部端子とデバッグ回路との電気的な接続が切断されている所定期間において、制御回路によって、所定期間の経過後は、第１の外部端子とデバッグ回路とが電気的に接続されるように制御可能であるので、第１の外部端子からデバッグ回路を介してプログラムのデバッグを容易に行うことができる。
【００１０】
［適用例２］
上記適用例に係る半導体装置において、前記制御回路は、前記所定期間において、前記プロセッサーが前記プログラムに含まれる第１の命令を実行した場合に、前記所定期間の経過後も前記第１の外部端子と前記デバッグ回路との電気的な接続を切断してもよい。
【００１１】
本適用例に係る半導体装置によれば、プログラムにおいて、リセット解除からの所定期間にプロセッサーによって実行される位置に第１の命令が組み込まれている場合には、当該所定期間の経過後も第１の外部端子とデバッグ回路との電気的な接続が切断される。従って、例えば、プログラムの所望の位置に第１の命令を組み込んでおくことで、当該プログラムの不正利用のおそれを低減させることができる。
【００１２】
［適用例３］
上記適用例に係る半導体装置は、前記第１の外部端子と前記プロセッサーとの間における信号の入出力インターフェース回路をさらに含み、前記制御回路は、前記所定期間において、前記プロセッサーが前記第１の命令を実行した場合に、前記第１の外部端子と前記入出力インターフェース回路とを電気的に接続してもよい。
【００１３】
本適用例に係る半導体装置によれば、プログラムにおいて、リセット解除からの所定期間にプロセッサーによって実行される位置に第１の命令が組み込まれている場合には、当該所定期間の経過後は、第１の外部端子とデバッグ回路との電気的な接続が切断されたまま、第１の外部端子と入出力インターフェース回路とが電気的に接続される。従って、第１の外部端子をデバッグ用の外部端子と入出力インターフェース用の外部端子として兼用することができる。
【００１４】
［適用例４］
上記適用例に係る半導体装置は、第２の外部端子をさらに含み、前記不揮発性メモリーは、前記第２の外部端子に所定の信号が入力された場合に、記憶している情報を消去して
もよい。
【００１５】
本適用例に係る半導体装置において、前記第２の外部端子に所定の信号が入力された場合に、前記プロセッサーが、前記不揮発性メモリーが記憶している情報を消去する制御を行ってもよい。
【００１６】
本適用例に係る半導体装置によれば、第２の外部端子に所定の信号を入力することにより、不揮発性メモリーが記憶している情報を消去することができる。従って、プログラムの所望の位置に第１の命令が組み込まれていた場合、当該第１の命令が消去されることにより、以降は、リセット解除後の所定期間経過後に、第１の外部端子とデバッグ回路とが電気的に接続されるため、第１の外部端子から不揮発性メモリーの情報にアクセス可能となり得るが、プログラムが消去されているため不正利用されるおそれがない。
【００１７】
また、本適用例に係る半導体装置によれば、所望の位置に第１の命令が組み込まれたプログラムが消去された後は、リセット解除後の所定期間経過後に、第１の外部端子とデバッグ回路とが電気的に接続されるため、第１の外部端子から不揮発性メモリーに情報を書き込むことが可能となる。従って、例えば、不揮発性メモリーに、消去されたプログラムを再度書き込みことや新たなプログラムに書き換えることが可能となる。
【００１８】
［適用例５］
上記適用例に係る半導体装置において、前記不揮発性メモリーは、複数の記憶領域を有し、前記第２の外部端子に所定の信号が入力された場合に、前記情報を前記記憶領域ごとに消去し、前記第１の命令が記憶されている前記記憶領域の情報を最後に消去してもよい。
【００１９】
本適用例に係る半導体装置によれば、仮に、不揮発性メモリーに記憶されている情報の消去が最後まで完了しなかった場合に、第１の命令が消去されずに残る確率が高まるので、消去されなかった情報が不正に利用されるおそれを低減させることができる。
【００２０】
［適用例６］
上記適用例に係る半導体装置において、前記所定期間は、前記プロセッサーが前記第１の命令を実行するのに要する時間よりも長くてもよい。
【００２１】
本適用例に係る半導体装置によれば、プロセッサーは、第１の外部端子とデバッグ回路との電気的な接続が切断されている所定期間中に、第１の命令を実行することができるので、当該所定期間の経過後も第１の外部端子とデバッグ回路とが切断されたままになる。従って、プログラムの不正利用のおそれを低減させることができる。
【００２２】
［適用例７］
上記適用例に係る半導体装置において、前記制御回路は、前記プロセッサーが第２の命令を実行した場合に、前記第１の外部端子と前記デバッグ回路とを電気的に接続してもよい。
【００２３】
本適用例に係る半導体装置によれば、例えば、リセット解除から所定期間が経過後も第１の外部端子とデバッグ回路との電気的な接続が切断される場合でも、プロセッサーが第２の命令を実行することで、第１の外部端子とデバッグ回路とを電気的に接続させることができる。これにより、第１の外部端子からプログラムのデバッグ等が可能となる。
【００２４】
なお、プログラムが不正に利用されるおそれを低減させるために、例えば、所定の外部端子に所定の信号が入力された場合に、プロセッサーが第２の命令を実行するようにし、
第２の命令、所定の外部端子及び所定の信号についての情報は、プログラムを使用する権限を有する正規のユーザーに対してのみ公開されるようにしてもよい。
【００２５】
［適用例８］
本適用例に係る半導体装置は、検査回路と、検査に使用される第１の外部端子と、リセット解除から所定期間、前記第１の外部端子と前記検査回路との電気的な接続を切断するマスク回路と、前記所定期間において、前記所定期間の経過後も前記第１の外部端子と前記検査回路との電気的な接続を切断するか否かを制御する制御回路と、を含む。
【００２６】
本適用例に係る半導体装置によれば、リセット解除からの所定期間は、マスク回路によって第１の外部端子と検査回路との電気的な接続が切断され、第１の外部端子と検査回路との電気的な接続が切断されている当該所定期間において、制御回路によって所定期間の経過後も切断するように制御可能であるので、第１の外部端子から検査回路が不正に利用されるおそれを低減させることができる。また、本適用例に係る半導体装置は、マスク回路と制御回路により第１の外部端子と検査回路との電気的な接続を切断するという簡易な構成で実現することができる。従って、本適用例に係る半導体装置によれば、コストの増加を低減しながら検査回路の不正利用のおそれを低減させることができる。
【００２７】
また、本適用例に係る半導体装置によれば、第１の外部端子と検査回路との電気的な接続が切断されている所定期間において、制御回路によって、所定期間の経過後は、第１の外部端子と検査回路とが電気的に接続されるように制御可能であるので、第１の外部端子から検査回路を介して半導体装置の検査を容易に行うことができる。
【００２８】
［適用例９］
上記適用例に係る半導体装置は、不揮発性メモリーと、前記不揮発性メモリーに記憶されているプログラムを実行するプロセッサーと、をさらに含み、前記制御回路は、前記所定期間において、前記プロセッサーが前記プログラムに含まれる第１の命令を実行した場合に、前記所定期間の経過後も前記第１の外部端子と前記検査回路との電気的な接続を切断してもよい。
【００２９】
本適用例に係る半導体装置によれば、プログラムにおいて、リセット解除からの所定期間にプロセッサーによって実行される位置に第１の命令が組み込まれている場合には、当該所定期間の経過後も第１の外部端子と検査回路との電気的な接続が切断される。従って、例えば、プログラムの所望の位置に第１の命令を組み込んでおくことで、検査回路の不正利用のおそれを低減させることができる。
【００３０】
また、上記適用例に係る半導体装置は、前記第１の外部端子と前記プロセッサーとの間における信号の入出力インターフェース回路をさらに含み、前記制御回路は、前記所定期間において、前記プロセッサーが前記第１の命令を実行した場合に、前記第１の外部端子と前記入出力インターフェース回路とを電気的に接続してもよい。
【００３１】
この半導体装置によれば、プログラムにおいて、リセット解除からの所定期間にプロセッサーによって実行される位置に第１の命令が組み込まれている場合には、当該所定期間の経過後は、第１の外部端子と検査回路との電気的な接続が切断されたまま、第１の外部端子と入出力インターフェース回路とが電気的に接続される。従って、第１の外部端子を検査用の外部端子と入出力インターフェース用の外部端子として兼用することができる。
【００３２】
また、上記適用例に係る半導体装置において、前記所定期間は、前記プロセッサーが前記第１の命令を実行するのに要する時間よりも長くてもよい。
【００３３】
本適用例に係る半導体装置によれば、プロセッサーは、第１の外部端子と検査回路との電気的な接続が切断されている所定期間中に、第１の命令を実行することができるので、当該所定期間の経過後も第１の外部端子と検査回路とが切断されたままになる。従って、検査回路の不正利用のおそれを低減させることができる。
【００３４】
また、上記適用例に係る半導体装置において、前記制御回路は、前記プロセッサーが第２の命令を実行した場合に、前記第１の外部端子と前記検査回路とを電気的に接続してもよい。
【００３５】
この半導体装置によれば、例えば、リセット解除から所定期間が経過後も第１の外部端子と検査回路との電気的な接続が切断される場合でも、プロセッサーが第２の命令を実行することで、第１の外部端子と検査回路とを電気的に接続させることができる。これにより、第１の外部端子から半導体装置の検査が可能となる。
【００３６】
なお、検査回路が不正に利用されるおそれを低減させるために、例えば、所定の外部端子に所定の信号が入力された場合に、プロセッサーが第２の命令を実行するようにし、第２の命令、所定の外部端子及び所定の信号についての情報は、プログラムを使用する権限を有する正規のユーザーに対してのみ公開されるようにしてもよい。
【００３７】
［適用例１０］
本適用例に係る電子機器は、上記のいずれかの半導体装置を備えている。
【００３８】
本適用例によれば、半導体装置により、コストの増加を低減しながらプログラム又は検査回路の不正利用のおそれを低減させることができるので、低コストで信頼性の高い電子機器を実現することができる。
【図面の簡単な説明】
【００３９】
【図１】第１実施形態の半導体装置の構成例を示す図。
【図２】不揮発性メモリーに記憶されるプログラムの一例を示す図。
【図３】プロセッサーが図２のプログラムを実行する場合のタイミングチャートの一例を示す図。
【図４】不揮発性メモリーに記憶されるプログラムの一例を示す図。
【図５】プロセッサーが図４のプログラムを実行する場合のタイミングチャートの一例を示す図。
【図６】不揮発性メモリーの情報が全消去される場合のタイミングチャートの一例を示す図。
【図７】不揮発性メモリーの構成例を示す図。
【図８】デバッグ端子有効命令が実行される場合のタイミングチャートの一例を示す図。
【図９】第２実施形態の半導体装置の構成例を示す図。
【図１０】第３実施形態の半導体装置の構成例を示す図。
【図１１】本実施形態の電子機器の機能ブロック図。
【図１２】本実施形態の電子機器の外観の一例を示す図。
【発明を実施するための形態】
【００４０】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００４１】
１．半導体装置
１−１．第１実施形態
［半導体装置の構成］
図１は、第１実施形態の半導体装置の構成例を示す図である。図１に示すように、第１実施形態の半導体装置１は、プロセッサー１０、不揮発性メモリー２０、ＲＡＭ（Random
Access Memory）３０、リセット回路４０、発振回路５０、ＧＰＩＯ（General Purpose Input Output）回路６０、デバッグ回路７０、マスク回路８０、制御回路９０及びこれらの要素が接続されるバス１００を含んで構成されている。なお、本実施形態の半導体装置１は、これらの要素の一部を省略又は変更し、あるいは他の要素を追加した構成としてもよい。
【００４２】
半導体装置１は、例えば、１チップのＩＣで構成されていてもよいし、複数チップのＩＣで構成されていてもよい。半導体装置１は、例えば、ＭＣＵやＳＯＣ（System On a Chip）であってもよい。
【００４３】
半導体装置１は、外部端子Ｐ０１や不図示の通信インターフェース用の外部端子（クロック端子やデータ端子等）を介してホストＣＰＵ３と通信可能に構成されている。また、半導体装置１は、外部端子ＤＢＧを介してデバッグ装置２（デバッガーを実行する装置）と通信可能に構成されている。
【００４４】
プロセッサー１０は、不揮発性メモリー２０に記憶されているプログラムを実行し、当該プログラムに応じた処理を行う。例えば、半導体装置１が電子時計に使用される場合は、プロセッサー１０は、プログラムを実行することにより、時刻の計算機能、ストップウォッチ機能、アラーム機能などを実現するための各種の処理を行ってもよい。
【００４５】
不揮発性メモリー２０は、プロセッサー１０が実行するプログラムや当該プログラムによって使用されるデータ等が記憶されている。不揮発性メモリー２０は、例えば、フラッシュメモリーやＥＥＰＲＯＭ等で実現することができる。
【００４６】
ＲＡＭ３０は、一時的に必要な情報を記憶するための揮発性のメモリーであり、プロセッサー１０が不揮発性メモリー２０に記憶されているプログラムに応じた演算を行った結果のデータ等を一時的に記憶するなど、プロセッサー１０の作業領域等として使用される。
【００４７】
リセット回路４０は、半導体装置１に電源が投入された時に、あるいは、プロセッサー１０がリセット命令を実行した場合に、ローレベルのリセット信号ｒｓｔ＿ｎを発生させ、不揮発性メモリー２０及び発振回路５０を除く各回路を初期化する。
【００４８】
発振回路５０は、半導体装置１に電源が投入されると発振動作を開始し、発振信号に基づくクロック信号ｃｌｋを出力する。本実施形態では、半導体装置１に電源が投入された時、発振回路５０の発振が安定した後にリセットが解除され（リセット信号ｒｓｔ＿ｎがハイレベルになり）、プロセッサー１０、デバッグ回路７０、マスク回路８０及び制御回路９０は、クロック信号ｃｌｋに同期して動作する。
【００４９】
例えば、リセット回路４０は、抵抗と容量を用いた時定数回路やクロック信号ｃｌｋなどのクロックパルスを所定数カウントした場合にリセット信号ｒｓｔ＿ｎをハイレベルにする回路によって実現してもよい。
【００５０】
ＧＰＩＯ回路６０は、外部端子Ｐ０１とプロセッサー１０との間における信号の入出力インターフェース回路であり、外部端子Ｐ０１から入力される信号をプロセッサー１０に伝搬させ、あるいは、プロセッサー１０が出力する所望の信号を外部端子Ｐ０１に伝搬さ
せる。例えば、外部端子Ｐ０１がハイレベにプルアップされている場合に、ホストＣＰＵ３が、外部端子Ｐ０１にローレベルの信号を供給すると、プロセッサー１０は、ＧＰＩＯ回路６０を介して、外部端子Ｐ０１がハイレベルからローレベルに変化したことを認識し、所定の割り込み処理を実行するようにしてもよい。
【００５１】
デバッグ回路７０は、不揮発性メモリー２０に記憶されているプログラムやデータのデバッグ機能（ブレークポイントの設定やステップ実行などの機能）を備えた回路である。外部端子ＤＢＧ（第１の外部端子の一例）は、当該プログラムやデータのデバッグに使用される外部端子であり、デバッグ装置２は、外部端子ＤＢＧを介してデバッグ回路７０にアクセスすることでプログラムやデータのデバッグを実行することができる。具体的には、デバッグ装置２は、外部端子ＤＢＧを介してデバッグ回路７０にデバッグ要求信号ｄｂｇｒｅｑを送信し、デバッグ回路７０は、デバッグ要求信号ｄｂｇｒｅｑを受信すると、外部端子ＤＢＧを介してデバッグ装置２にデバッグ応答信号ｄｂｇａｃｋを送信する。デバッグ装置２は、デバッグ応答信号ｄｂｇａｃｋを受信した後、外部端子ＤＢＧを介してデバッグ回路７０にデバッグ指令（ブレークポイントの設定やステップ実行などの指令）を送信し、デバッグ回路７０はデバッグ指令に応じた処理を行う。
【００５２】
マスク回路８０は、リセット解除から所定期間、外部端子ＤＢＧとデバッグ回路７０との電気的な接続を切断する回路である。本実施形態では、マスク回路８０は、この所定期間のみ、内部信号である不図示のマスク期間信号ｍａｓｋをハイレベルにする。そして、マスク回路８０は、マスク期間信号ｍａｓｋがハイレベルの期間は、外部端子ＤＢＧから入力されるデバッグ要求信号ｄｂｇｒｅｑやデバッグ指令を伝搬させず、リセット解除から所定期間経過後（マスク期間信号ｍａｓｋがローレベルになった後）は、デバッグ要求信号ｄｂｇｒｅｑやデバッグ指令を伝搬させる。これにより、本実施形態では、少なくともリセット解除から所定期間は、外部端子ＤＢＧに入力される信号がすべて無効となり、外部端子ＤＢＧからデバッグ回路７０に対するアクセスができない。
【００５３】
制御回路９０は、リセット解除から所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）において、当該所定期間の経過後も外部端子ＤＢＧとデバッグ回路７０との電気的な接続を切断するか否かを制御する回路である。例えば、制御回路９０は、所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）において、プロセッサー１０がプログラムに含まれるデバッグ端子無効命令（第１の命令の一例）を実行した場合に、当該所定期間の経過後も外部端子ＤＢＧとデバッグ回路７０との電気的な接続を切断してもよい。また、制御回路９０は、当該所定期間において、プロセッサー１０がデバッグ端子無効命令を実行しなかった場合には、当該所定期間の経過後、外部端子ＤＢＧとデバッグ回路７０とを電気的に接続するようにしてもよい。リセット解除からの所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）は、プロセッサー１０がデバッグ端子無効命令を実行するのに要する時間よりも長く設定される。
【００５４】
本実施形態では、制御回路９０は、スイッチ回路９２及び端子制御回路９４を含んで構成されている。
【００５５】
スイッチ回路９２は、端子制御回路９４からのデバッグイネーブル信号ｄｂｇｅｎがハイレベルの時は、マスク回路８０の出力信号（例えば、デバッグ要求信号ｄｂｇｒｅｑやデバッグ指令）をデバッグ回路７０に伝搬させ、あるいは、デバッグ回路７０の出力信号（例えば、デバッグ応答信号ｄｂｇａｃｋ）をマスク回路８０に伝搬させる。また、スイッチ回路９２は、デバッグイネーブル信号ｄｂｇｅｎがローレベルの時は、マスク回路８０の出力信号をデバッグ回路７０に伝搬させず、かつ、デバッグ回路７０の出力信号をマスク回路８０に伝搬させない。
【００５６】
端子制御回路９４は、リセット解除後にデバッグイネーブル信号ｄｂｇｅｎをハイレベルに設定し、プロセッサー１０がリセット解除後の所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）においてデバッグ端子無効命令を実行した場合に、これ以降、デバッグイネーブル信号ｄｂｇｅｎをローレベルに固定する。例えば、端子制御回路９４は、デバッグイネーブル信号ｄｂｇｅｎに対応するデバッグイネーブルビット（初期値は１）を含むレジスタ（不図示）を備え、デバッグ端子無効命令は、このデバッグイネーブルビットを０に設定するロード命令であってもよい。
【００５７】
このように構成された第１実施形態の半導体装置１によれば、プロセッサー１０がリセット解除後の所定期間にデバッグ端子無効命令を実行しなければ、当該所定期間の経過後は外部端子ＤＢＧからデバッグ回路７０に対するアクセスが可能になる。従って、不揮発性メモリー２０に記憶されるプログラムやデータのデバッグが可能となる。
【００５８】
一方、プロセッサー１０がリセット解除後の所定期間にデバッグ端子無効命令を実行した場合は、当該所定期間の経過後も外部端子ＤＢＧからデバッグ回路７０に対するアクセスができなくなる。従って、不揮発性メモリー２０に記憶されるプログラムやデータのデバッグが完了した後は、例えば、当該プログラムの先頭付近においてデバッグ端子無効命令を追加し、又は置き換えることにより、外部端子ＤＢＧからデバッグ回路７０に対するアクセスができなくなり、デバッグ回路７０を介したプログラムやデータの不正利用のおそれを低減させることができる。
【００５９】
［半導体装置の動作例１］
図２は、不揮発性メモリー２０に記憶されるデバッグ対象のプログラムの一例を示す図である。本実施形態では、プロセッサー１０は、リセット解除後、最初に、不揮発性メモリー２０の０ｘ００００アドレスに配置された命令を実行する。図２の例では、０ｘ００００アドレスにはベクターフェッチ命令が配置されており、プロセッサー１０は、リセット解除後、最初にこのベクターフェッチ命令を実行する。ベクターフェッチ命令は、あらかじめ決められたリセットベクター（図２の例ではｘ０１００アドレス）へのジャンプ命令であり、プロセッサー１０は、次に、０ｘ０１００アドレス以降に記憶された各命令を順番に実行する。図２の例では、０ｘ０１００アドレス以降には、ＮＯＰ命令（ｎｏｐ）、ＮＯＰ命令（ｎｏｐ）、ロード命令（ｌｄ）、ロード命令（ｌｄ）、加算命令（ａｄｄ）、ロード命令（ｌｄ）、減算命令（ｓｕｂ）、ロード命令（ｌｄ）、ジャンプ命令（ｊｐ）、論理左シフト命令（ｓｌｌ）、ロード命令（ｌｄ）、ロード命令（ｌｄ）、・・・の命令列が順に配置されている。この０ｘ０１００アドレス以降に記憶されている命令列がデバッグ対象のプログラムである。
【００６０】
図３は、プロセッサー１０が図２の例のプログラムを実行する場合のタイミングチャートの一例を示す図である。図３の例では、時刻ｔ０において、デバッグ装置２が外部端子ＤＢＧを介してデバッグ要求信号ｄｂｇｒｅｑを入力している。
【００６１】
次に、時刻ｔ１においてリセットが解除されると（リセット信号ｒｓｔ＿ｎがローレベルからハイレベルに変化すると）、マスク期間信号ｍａｓｋとデバッグイネーブル信号ｄｂｇｅｎはともにはハイレベルになっている。また、時刻ｔ１においてリセットが解除された後、プロセッサー１０は、クロック信号ｃｌｋの立ち上がりエッジに同期して、不揮発性メモリー２０の０ｘ００００アドレスに配置されているベクターフェッチ命令（図２参照）を読み出して実行する。
【００６２】
そして、プロセッサー１０は、時刻ｔ２以降において、不揮発性メモリー２０の０ｘ０１００アドレス以降に配置されている命令列（デバッグ対象のプログラム）（図２参照）を読み出して実行する。
【００６３】
その後、時刻ｔ３において、マスク期間信号ｍａｓｋがローレベルに変化し、デバッグイネーブル信号ｄｂｇｅｎがハイレベルであるため、デバッグ回路７０がデバッグ要求信号ｄｂｇｒｅｑを受け取り、外部端子ＤＢＧを介してデバッグ応答信号ｄｂｇａｃｋを出力する。
【００６４】
デバッグ装置２は、デバッグ応答信号ｄｂｇａｃｋを受け取り、時刻ｔ４において、デバッグ要求信号ｄｂｇｒｅｑを停止し、以降は、外部端子ＤＢＧを介して、デバッグ回路７０にデバッグ指令を入力可能になる。
【００６５】
この図３の例では、リセット解除後、クロック信号ｃｌｋのクロックパルスが８個分の期間はマスク期間信号ｍａｓｋがハイレベルであり、デバッグ装置２は、この期間は外部端子ＤＢＧからデバッグ回路７０へのアクセスができないが、当該期間の経過後はアクセス可能となる。
【００６６】
［半導体装置の動作例２］
図４は、図２のプログラムのデバッグが完了した後に不揮発性メモリー２０に記憶されるプログラムの一例を示す図であり、図５は、プロセッサー１０が図４の例のプログラムを実行する場合のタイミングチャートの一例を示す図である。図４の例では、図２の例において、デバッグ対象のプログラムの先頭の０ｘ０１００アドレスと０ｘ０１０２アドレスに配置されていた２つのＮＯＰ命令（ｎｏｐ）がデバッグ端子無効命令に置き換わっており、その他は図２の例と同じである。
【００６７】
図５の例でも、図３の例と同様に、時刻ｔ０において、外部端子ＤＢＧを介してデバッグ要求信号ｄｂｇｒｅｑが入力されている。また、時刻ｔ１においてリセットが解除されると、マスク期間信号ｍａｓｋとデバッグイネーブル信号ｄｂｇｅｎはともにハイレベルになっており、プロセッサー１０は、クロック信号ｃｌｋの立ち上がりエッジに同期してベクターフェッチ命令（図４参照）を読み出して実行する。
【００６８】
そして、プロセッサー１０は、時刻ｔ２以降において、不揮発性メモリー２０の０ｘ０１００アドレス以降に配置されている命令列（デバッグが完了したプログラム）（図４参照）を読み出して実行する。ここで、プロセッサー１０は、時刻ｔ２〜時刻ｔ３においてデバッグ端子無効命令を読み出して実行することで、デバッグイネーブル信号ｄｂｇｅｎがハイレベルからローレベルに変化する。
【００６９】
その後、時刻ｔ４において、マスク期間信号ｍａｓｋがローレベルに変化するが、デバッグイネーブル信号ｄｂｇｅｎがローレベルであるため、デバッグ回路７０がデバッグ要求信号ｄｂｇｒｅｑを受け取ることができず、外部端子ＤＢＧからデバッグ応答信号ｄｂｇａｃｋが出力されない。
【００７０】
この図５の例では、リセット解除後、クロック信号ｃｌｋのクロックパルスが８個分の期間はマスク期間信号ｍａｓｋがハイレベルであり、この期間は外部端子ＤＢＧからデバッグ回路７０へのアクセスができず、当該期間の経過後もデバッグイネーブル信号ｄｂｇｅｎがローレベルのため、外部端子ＤＢＧからデバッグ回路７０へのアクセスができない。従って、外部端子ＤＢＧからデバッグ回路７０を介して不揮発性メモリーに記憶されているプログラムが不正利用されるおそれを低減させることができる。
【００７１】
［半導体装置の動作例３］
本実施形態において、不揮発性メモリー２０は、外部端子Ｐ０１（第２の外部端子の一例）に所定の信号（例えば、ローレベルの信号）が入力された場合に、記憶している情報
を消去する。不揮発性メモリー２０は、記憶している情報のうち、不正利用されたくないプログラムやデータのみを消去してもよいし、記憶しているすべての情報を消去してもよい。例えば、外部端子Ｐ０１に所定の信号が入力された場合に、プロセッサー１０が、割り込み処理によって、不揮発性メモリー２０が記憶している情報を消去する制御を行ってもよい。
【００７２】
例えば、ユーザーが、不揮発性メモリー２０に記憶されているプログラムを書き換える目的などで、外部端子Ｐ０１からの入力信号ｇｐｉｏ＿ｎをハイレベルからローレベルに変化させると、これによって不揮発性メモリー２０に記憶されている情報が消去されるようにしてもよい。
【００７３】
また、半導体装置１のハイレベル又はローレベルに固定されるべき１又は複数の所定の外部端子（第２の外部端子の一例）のいずれかがハイレベルからローレベルに変化し、又はローレベルからハイレベルに変化した場合に不正なアクセスとみなして、プロセッサー１０が不揮発性メモリー２０に記憶されている情報を消去する制御を行ってもよい。
【００７４】
不揮発性メモリー２０は、例えば、消去対象の情報のすべてのビットを１にすることで消去し、すべてのビットが１のコードがＮＯＰ命令に割り当てられていてもよい。すなわち、消去された情報はすべてＮＯＰ命令になるようにしてもよい。
【００７５】
図６は、不揮発性メモリー２０の情報が全消去される場合のタイミングチャートの一例を示す図である。図６でも、図５の例と同様に、時刻ｔ０において、外部端子ＤＢＧを介してデバッグ要求信号ｄｂｇｒｅｑが入力されている。時刻ｔ１においてリセットが解除されると、マスク期間信号ｍａｓｋとデバッグイネーブル信号ｄｂｇｅｎはともにハイレベルになっており、プロセッサー１０は、時刻ｔ１以降、クロック信号ｃｌｋの立ち上がりエッジに同期して図４の例のプログラムを実行する。ここで、プロセッサー１０は、時刻ｔ２〜時刻ｔ３においてデバッグ端子無効命令を読み出して実行することで、デバッグイネーブル信号ｄｂｇｅｎがハイレベルからローレベルに変化する。
【００７６】
その後、時刻ｔ４において、マスク期間信号ｍａｓｋがローレベルに変化するが、デバッグイネーブル信号ｄｂｇｅｎがローレベルであるため、デバッグ回路７０がデバッグ要求信号ｄｂｇｒｅｑを受け取ることができず、外部端子ＤＢＧからデバッグ応答信号ｄｂｇａｃｋが出力されない。
【００７７】
そして、時刻ｔ５において、外部端子Ｐ０１からの入力信号ｇｐｉｏ＿ｎがハイレベルからローレベルに変化すると、プロセッサー１０は、時刻ｔ５〜時刻ｔ６において、割り込み処理によって、不揮発性メモリー２０に記憶されている情報を全消去する。
【００７８】
その後、時刻ｔ７において、リセット信号ｒｓｔ＿ｎがハイレベルからローレベルに変化して半導体装置１に再びリセットがかかり、時刻ｔ８において、外部端子ＤＢＧを介してデバッグ要求信号ｄｂｇｒｅｑが再び入力されている。そして、時刻ｔ９においてリセットが解除されると、マスク期間信号ｍａｓｋとデバッグイネーブル信号ｄｂｇｅｎはともにハイレベルになり、プロセッサー１０は、クロック信号ｃｌｋの立ち上がりエッジに同期して不揮発性メモリー２０の０ｘ００００アドレスに配置されている命令、すなわち、ベクターフェッチ命令が消去されることにより変化したＮＯＰ命令（ｎｏｐ）を読み出して実行する。不揮発性メモリー２０は全消去されたため、すべてのアドレスにＮＯＰ命令（ｎｏｐ）が配置されている状態となっており、プロセッサー１０は、その後、ＮＯＰ命令（ｎｏｐ）を繰り返し実行する。
【００７９】
その後、時刻ｔ１０において、マスク期間信号ｍａｓｋがローレベルに変化し、デバッ
グイネーブル信号ｄｂｇｅｎがハイレベルであるため、デバッグ回路７０がデバッグ要求信号ｄｂｇｒｅｑを受け取り、外部端子ＤＢＧを介してデバッグ応答信号ｄｂｇａｃｋを出力する。
【００８０】
このように、不揮発性メモリー２０の情報を全消去した後（あるいは、不正利用されたくないプログラムやデータを消去した後）は、マスク期間信号ｍａｓｋがローレベルの期間にデバッグ端子無効命令が実行されないため、当該期間の経過後は、外部端子ＤＢＧからデバッグ回路７０にアクセス可能となるが、不揮発性メモリー２０には有益な情報が含まれていないため、不正利用のおそれを低減させることができる。
【００８１】
さらに、当該期間の経過後は、外部端子ＤＢＧからデバッグ回路７０にアクセス可能となるため、外部端子ＤＢＧから不揮発性メモリー２０の０ｘ００００アドレスにベクターフェッチ命令を書き込み、かつ、リセットベクターのアドレス以降に、先頭付近にデバッグ端子無効命令が配置された新たなプログラムを書き込むことが可能となる。これにより、不正利用のおそれを低減させながらプログラムを書き換えることが可能となる。
【００８２】
なお、不揮発性メモリー２０は、複数の記憶領域（例えば、セクターやブロック）を有するように構成され、外部端子Ｐ０１あるいはその他の所定の外部端子に所定の信号が入力された場合に、記憶している情報を記憶領域ごとに消去し、デバッグ端子無効命令が記憶されている記憶領域の情報を最後に消去するのが好ましい。例えば、図７に示すように、不揮発性メモリー２０が、１６個のセクターを有し、セクター単位で情報の消去を行う場合において、デバッグ端子無効命令がセクター１に記憶されている場合には、セクター２〜セクター１６の情報の消去がすべて終了した後、最後に、セクター１の情報を消去する。このようにすれば、仮に、不揮発性メモリー２０に記憶されている情報の消去が最後まで完了せずに、プログラムやデータの一部が消去されなかった場合でも、デバッグ端子無効命令も消去されずに残る確率が高まるので、消去されなかったプログラムやデータが不正に利用されるおそれを低減させることができる。
【００８３】
［半導体装置の動作例４］
本実施形態において、制御回路９０は、プロセッサー１０がデバッグ端子有効命令（第２の命令）を実行した場合に、外部端子ＤＢＧとデバッグ回路７０とを電気的に接続するようにしてもよい。例えば、所定の外部端子に所定の信号が入力された場合に、プロセッサー１０が、割り込み処理によってデバッグ端子有効命令を実行してもよい。例えば、外部端子Ｐ０１からの入力信号ｇｐｉｏ＿ｎがハイレベルからローレベルに変化した場合に、プロセッサー１０がデバッグ端子有効命令を実行してもよい。
【００８４】
図８は、デバッグ端子有効命令が実行される場合のタイミングチャートの一例を示す図である。図８でも、図５の例と同様に、時刻ｔ０において、外部端子ＤＢＧを介してデバッグ要求信号ｄｂｇｒｅｑが入力されている。時刻ｔ１においてリセットが解除されると、マスク期間信号ｍａｓｋとデバッグイネーブル信号ｄｂｇｅｎはともにハイレベルになっており、プロセッサー１０は、時刻ｔ１以降、クロック信号ｃｌｋの立ち上がりエッジに同期して図４の例のプログラムを実行する。ここで、プロセッサー１０は、時刻ｔ２〜時刻ｔ３においてデバッグ端子無効命令を読み出して実行することで、デバッグイネーブル信号ｄｂｇｅｎがハイレベルからローレベルに変化する。
【００８５】
その後、時刻ｔ４において、マスク期間信号ｍａｓｋがローレベルに変化するが、デバッグイネーブル信号ｄｂｇｅｎがローレベルであるため、デバッグ回路７０がデバッグ要求信号ｄｂｇｒｅｑを受け取ることができず、外部端子ＤＢＧからデバッグ応答信号ｄｂｇａｃｋが出力されない。
【００８６】
そして、時刻ｔ５において、外部端子Ｐ０１からの入力信号ｇｐｉｏ＿ｎがハイレベルからローレベルに変化すると、プロセッサー１０は、時刻ｔ５において、割り込み処理によって、デバッグ端子有効命令を実行する。これにより、時刻ｔ６において、デバッグイネーブル信号ｄｂｇｅｎがローレベルからハイレベルに変化し、デバッグ回路７０がデバッグ要求信号ｄｂｇｒｅｑを受け取り、外部端子ＤＢＧを介してデバッグ応答信号ｄｂｇａｃｋを出力する。
【００８７】
その後、デバッグ装置２は、デバッグ応答信号ｄｂｇａｃｋを受け取り、時刻ｔ７において、デバッグ要求信号ｄｂｇｒｅｑを停止し、以降は、外部端子ＤＢＧを介して、デバッグ回路７０にデバッグ指令を入力可能になる。
【００８８】
例えば、所定の外部端子に所定の信号が入力された場合に外部端子ＤＢＧからデバッグ回路７０にアクセス可能であるという情報を正規のユーザーのみに公開しておけば、不揮発性メモリー２０に記憶されているプログラムやデータの不正利用のおそれを低減させることができる。また、正規のユーザーは、プログラムにデバッグ端子無効命令が実装された後であっても、プログラムのデバッグを行うことが可能となる。
【００８９】
［効果］
以上に説明したように、第１実施形態の半導体装置１によれば、リセット解除からの所定期間は、マスク回路８０によって外部端子ＤＢＧとデバッグ回路７０との電気的な接続が切断され、外部端子ＤＢＧとデバッグ回路７０との電気的な接続が切断されている当該所定期間において、プロセッサー１０がデバッグ端子無効命令を実行することによって、制御回路９０が、所定期間の経過後も外部端子ＤＢＧとデバッグ回路７０との電気的な切断するように制御する。従って、外部端子ＤＢＧからデバッグ回路７０を介して不揮発性メモリー２０に記憶されているプログラムが不正に利用されるおそれを低減させることができる。
【００９０】
また、第１実施形態の半導体装置１は、マスク回路８０と制御回路９０により外部端子ＤＢＧとデバッグ回路７０との電気的な接続を切断するという簡易な構成で実現することができる。従って、第１実施形態の半導体装置１によれば、コストの増加を低減しながらプログラムの不正利用のおそれを低減させることができる。
【００９１】
また、第１実施形態の半導体装置１によれば、外部端子ＤＢＧとデバッグ回路７０との電気的な接続が切断されている当該所定期間において、プロセッサー１０がデバッグ端子無効命令を実行しないことによって、制御回路９０が、所定期間の経過後は外部端子ＤＢＧとデバッグ回路７０とを電気的に接続するように制御する。従って、外部端子ＤＢＧからデバッグ回路７０を介して不揮発性メモリー２０に記憶されているプログラムのデバッグを容易に行うことができる。
【００９２】
また、第１実施形態の半導体装置１によれば、プログラムの先頭付近にデバッグ端子無効命令を配置するか否かによって、外部端子ＤＢＧとデバッグ回路７０とを電気的に接続させるか否かを制御することができる。従って、ユーザー（例えば、プログラムの開発者）が、外部端子ＤＢＧの有効／無効を任意に設定することができる。例えば、半導体装置１のリセット解除から所定期間の経過後、外部端子ＤＢＧが有効になり、デバッグ装置２が外部端子ＤＢＧからプログラムの先頭付近にデバッグ端子無効命令を書き込み、その後、半導体装置１をリセットすると外部端子ＤＢＧを無効にすることができる。
【００９３】
１−２．第２実施形態
図９は、第２実施形態の半導体装置の構成例を示す図である。図９において、図１と同様の構成要素には、同じ符号を付している。図９に示すように、第２実施形態の半導体装
置１は、プロセッサー１０、不揮発性メモリー２０、ＲＡＭ３０、リセット回路４０、発振回路５０、ＧＰＩＯ回路６０、ＧＰＩＯ回路６２、デバッグ回路７０、マスク回路８０、制御回路９０及びこれらの要素が接続されるバス１００を含んで構成されている。なお、本実施形態の半導体装置１は、これらの要素の一部を省略又は変更し、あるいは他の要素を追加した構成としてもよい。以下では、第２実施形態の半導体装置１について、第１実施形態の半導体装置１との相違点を中心に説明し、重複する説明については適宜省略又は簡略する。
【００９４】
第２実施形態の半導体装置１は、第１実施形態の半導体装置１（図１）と比較すると、制御回路９０の機能及びマスク回路８０と制御回路９０との接続関係が異なり、また、ＧＰＩＯ回路６２が追加されている。さらに第１実施形態におけるデバッグ用の外部端子ＤＢＧは、デバッグ用の外部端子ＤＢＧと汎用入出力用の外部端子Ｐ００として兼用される外部端子ＤＢＧ／Ｐ００に置き換わっている。
【００９５】
第２実施形態の半導体装置１は、第１実施形態の半導体装置１と同様に、外部端子Ｐ０１や不図示の通信インターフェース用の外部端子（クロック端子やデータ端子等）を介してホストＣＰＵ３と通信可能に構成されている。また、第２実施形態の半導体装置１は、スイッチ４が切り替えられることにより、外部端子ＤＢＧ／Ｐ００を介してデバッグ装置２（デバッガーを実行する装置）及びホストＣＰＵ３のいずれか一方と通信可能に構成されている。外部端子ＤＢＧ／Ｐ００は、スイッチ４によりデバッグ装置２と電気的に接続される時はデバッグ用の外部端子ＤＢＧとして機能し、スイッチ４によりホストＣＰＵ３と電気的に接続される時は汎用入出力用の外部端子Ｐ００として機能する。
【００９６】
ＧＰＩＯ回路６２は、外部端子ＤＢＧ／Ｐ００（第１の外部端子の一例）とプロセッサー１０との間における信号の入出力インターフェース回路であり、外部端子ＤＢＧ／Ｐ００から入力される信号をプロセッサー１０に伝搬させ、あるいは、プロセッサー１０が出力する所望の信号を外部端子ＤＢＧ／Ｐ００に伝搬させる。
【００９７】
マスク回路８０は、リセット解除から所定期間、外部端子ＤＢＧ／Ｐ００とデバッグ回路７０との電気的な接続を切断する回路である。第２実施形態でも、マスク回路８０は、この所定期間のみ、内部信号である不図示のマスク期間信号ｍａｓｋをハイレベルにする。そして、マスク回路８０は、マスク期間信号ｍａｓｋがハイレベルの期間は、外部端子ＤＢＧ／Ｐ００から入力されるデバッグ要求信号ｄｂｇｒｅｑやデバッグ指令を伝搬させず、リセット解除から所定期間経過後（マスク期間信号ｍａｓｋがローレベルになった後）は、デバッグ要求信号ｄｂｇｒｅｑやデバッグ指令を伝搬させる。これにより、本実施形態でも、少なくともリセット解除から所定期間は、外部端子ＤＢ／Ｐ００Ｇに入力される信号がすべて無効となり、外部端子ＤＢＧ／Ｐ００からデバッグ回路７０に対するアクセスができない。
【００９８】
制御回路９０は、リセット解除から所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）において、当該所定期間の経過後も外部端子ＤＢＧ／Ｐ００とデバッグ回路７０との電気的な接続を切断するか否かを制御する回路である。例えば、制御回路９０は、リセット解除後、外部端子ＤＢＧ／Ｐ００とマスク回路８０とを電気的に接続し、かつ、外部端子ＤＢＧ／Ｐ００とＧＰＩＯ６２との電気的な接続を切断する。そして、制御回路９０は、所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）において、プロセッサー１０がプログラムに含まれるデバッグ端子無効命令（第１の命令の一例）を実行した場合に、外部端子ＤＢＧ／Ｐ００とＧＰＩＯ回路６２とを電気的に接続し、かつ、外部端子ＤＢＧ／Ｐ００とデバッグ回路７０との電気的な接続を切断することにより、当該所定期間の経過後も、外部端子ＤＢＧ／Ｐ００とデバッグ回路７０との電気的な接続を切断してもよい。また、制御回路９０は、当該所定期間において、プロセッサー１０がデバッグ端子無
効命令を実行しなかった場合には、当該所定期間の経過後も、外部端子ＤＢＧ／Ｐ００とマスク回路８０とを電気的に接続し、かつ、外部端子ＤＢＧ／Ｐ００とＧＰＩＯ回路６２との電気的な接続を切断することにより、外部端子ＤＢＧ／Ｐ００とデバッグ回路７０とを電気的に接続してもよい。
【００９９】
本実施形態では、制御回路９０は、端子制御回路９４及びセレクター９６を含んで構成されている。
【０１００】
端子制御回路９４は、第１実施形態（図１）と同様に、リセット解除後にデバッグイネーブル信号ｄｂｇｅｎをハイレベルに設定し、プロセッサー１０がリセット解除後の所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）においてデバッグ端子無効命令を実行した場合に、これ以降、デバッグイネーブル信号ｄｂｇｅｎをローレベルに固定する。
【０１０１】
セレクター９６は、端子制御回路９４からのデバッグイネーブル信号ｄｂｇｅｎに応じて、外部端子ＤＢＧ／Ｐ００とデバッグ回路７０及びＧＰＩＯ回路６２のうちの一方とを電気的に接続し、外部端子ＤＢＧ／Ｐ００とデバッグ回路７０及びＧＰＩＯ回路６２のうちの他方との電気的な接続を切断する回路である。
【０１０２】
例えば、セレクター９６は、デバッグイネーブル信号ｄｂｇｅｎがハイレベルの時は、外部端子ＤＢＧ／Ｐ００からの入力信号（例えば、デバッグ要求信号ｄｂｇｒｅｑやデバッグ指令）をマスク回路８０に伝搬させ、あるいは、マスク回路８０の出力信号（デバッグ回路７０の出力信号（例えば、デバッグ応答信号ｄｂｇａｃｋ））を外部端子ＤＢＧ／Ｐ００に伝搬させる。また、セレクター９６は、デバッグイネーブル信号ｄｂｇｅｎがローレベルの時は、外部端子ＤＢＧ／Ｐ００からの入力信号をＧＰＩＯ回路６２に伝搬させ、あるいは、ＧＰＩＯ回路６２の出力信号を外部端子ＤＢＧ／Ｐ００に伝搬させる。
【０１０３】
第２実施形態の半導体装置１におけるその他の構成及び機能は、第１実施形態の半導体装置１と同様であるため、その説明を省略する。また、第２実施形態の半導体装置１の動作例は、例えば、第１実施形態で例示した動作例１〜４（図２〜図７）と同様であってもよいため、その図示及び説明を省略する。
【０１０４】
このように構成された第２実施形態の半導体装置１によれば、プロセッサー１０がリセット解除後の所定期間にデバッグ端子無効命令を実行しなければ、当該所定期間の経過後は外部端子ＤＢＧ／Ｐ００からデバッグ回路７０に対するアクセスが可能になる。従って、不揮発性メモリー２０に記憶されるプログラムやデータのデバッグが可能となる。
【０１０５】
一方、プロセッサー１０がリセット解除後の所定期間にデバッグ端子無効命令を実行した場合は、当該所定期間の経過後も外部端子ＤＢＧ／Ｐ００からデバッグ回路７０に対するアクセスができなくなる。従って、不揮発性メモリー２０に記憶されるプログラムやデータのデバッグが完了した後は、例えば、当該プログラムの先頭付近においてデバッグ端子無効命令を追加し、又は置き換えることにより、外部端子ＤＢＧ／Ｐ００からデバッグ回路７０に対するアクセスができなくなり、デバッグ回路７０を介したプログラムやデータの不正利用のおそれを低減させることができる。
【０１０６】
さらに、第２実施形態の半導体装置１によれば、１つの外部端子ＤＢＧ／Ｐ００をデバッグ用の外部端子ＤＢＧと汎用入出力用の外部端子Ｐ００として兼用するので、外部端子数に制限がある場合にも適用することができる。
【０１０７】
１−３．第３実施形態
図１０は、第３実施形態の半導体装置の構成例を示す図である。図１０において、図１
と同様の構成要素には、同じ符号を付している。図１０に示すように、第３実施形態の半導体装置１は、プロセッサー１０、不揮発性メモリー２０、ＲＡＭ３０、リセット回路４０、発振回路５０、ＧＰＩＯ回路６０、テスト回路７２、マスク回路８０、制御回路９０及びこれらの要素が接続されるバス１００を含んで構成されている。なお、本実施形態の半導体装置１は、これらの要素の一部を省略又は変更し、あるいは他の要素を追加した構成としてもよい。以下では、第３実施形態の半導体装置１について、第１実施形態の半導体装置１との相違点を中心に説明し、重複する説明については適宜省略又は簡略する。
【０１０８】
第３実施形態の半導体装置１は、第１実施形態の半導体装置１（図１）と比較すると、デバッグ回路７０がテスト回路７２に置き換わっており、また、マスク回路８０及び制御回路９０の機能が異なる。
【０１０９】
第３実施形態の半導体装置１は、第１実施形態の半導体装置１と同様に、外部端子Ｐ０１や不図示の通信インターフェース用の外部端子（クロック端子やデータ端子等）を介してホストＣＰＵ３と通信可能に構成されている。また、半導体装置１は、外部端子ＴＳＴを介して検査装置５と通信可能に構成されている。
【０１１０】
テスト回路７２は、半導体装置１に含まれる各回路が設計通りに動作するか否かをテストするための検査回路である。すなわち、外部端子ＴＳＴ（第１の外部端子の一例）は、半導体装置１の検査に使用される外部端子であり、検査装置５は、外部端子ＴＳＴを介してテスト回路７２にアクセスすることで半導体装置１の検査を実行うことができる。具体的には、検査装置５は、外部端子ＴＳＴを介してテスト回路７２にテスト指令（各回路の動作をテストする指令）を送信し、テスト回路７２はテスト指令に応じたテスト処理を行う。そして、テスト回路７２は、外部端子ＴＳＴを介して、テスト指令に応じたテスト結果を検査装置５に送信する。
【０１１１】
マスク回路８０は、リセット解除から所定期間、外部端子ＴＳＴとテスト回路７２との電気的な接続を切断する回路である。第３実施形態でも、マスク回路８０は、この所定期間のみ、内部信号である不図示のマスク期間信号ｍａｓｋをハイレベルにする。そして、マスク回路８０は、マスク期間信号ｍａｓｋがハイレベルの期間は、外部端子ＴＳＴから入力されるテスト指令を伝搬させず、リセット解除から所定期間経過後（マスク期間信号ｍａｓｋがローレベルになった後）は、テスト指令を伝搬させる。これにより、本実施形態では、少なくともリセット解除から所定期間は、外部端子ＴＳＴに入力される信号がすべて無効となり、外部端子ＴＳＴからテスト回路７２に対するアクセスができない。
【０１１２】
制御回路９０は、リセット解除から所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）において、当該所定期間の経過後も外部端子ＴＳＴとテスト回路７２との電気的な接続を切断するか否かを制御する回路である。例えば、制御回路９０は、所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）において、プロセッサー１０がプログラムに含まれるテスト端子無効命令（第１の命令の一例）を実行した場合に、当該所定期間の経過後も外部端子ＴＳＴとテスト回路７２との電気的な接続を切断してもよい。また、制御回路９０は、当該所定期間において、プロセッサー１０がテスト端子無効命令を実行しなかった場合には、当該所定期間の経過後、外部端子ＴＳＴとテスト回路７２とを電気的に接続するようにしてもよい。リセット解除からの所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）は、プロセッサー１０がテスト端子無効命令を実行するのに要する時間よりも長く設定される。
【０１１３】
第３実施形態でも、第１実施形態と同様に、制御回路９０は、スイッチ回路９２及び端子制御回路９４を含んで構成されている。
【０１１４】
スイッチ回路９２は、端子制御回路９４からのテストイネーブル信号ｔｓｔｅｎがハイレベルの時は、マスク回路８０の出力信号（例えば、テスト指令）をテスト回路７２に伝搬させ、あるいは、テスト回路７２の出力信号（例えば、テスト結果）をマスク回路８０に伝搬させる。また、スイッチ回路９２は、テストイネーブル信号ｔｓｔｅｎがローレベルの時は、マスク回路８０の出力信号をテスト回路７２に伝搬させず、かつ、テスト回路７２の出力信号をマスク回路８０に伝搬させない。
【０１１５】
端子制御回路９４は、リセット解除後にテストイネーブル信号ｔｓｔｅｎをハイレベルに設定し、プロセッサー１０がリセット解除後の所定期間（マスク期間信号ｍａｓｋがハイレベルの期間）においてテスト端子無効命令を実行した場合に、これ以降、テストイネーブル信号ｔｓｔｅｎをローレベルに固定する。例えば、端子制御回路９４は、テストイネーブル信号ｔｓｔｅｎに対応するテストイネーブルビット（初期値は１）を含むレジスタ（不図示）を備え、テスト端子無効命令は、このテストイネーブルビットを０に設定するロード命令であってもよい。
【０１１６】
第３実施形態の半導体装置１におけるその他の構成及び機能は、第１実施形態の半導体装置１と同様であるため、その説明を省略する。また、第３実施形態の半導体装置１の動作例は、例えば、第３実施形態で例示した動作例１〜４（図２〜図７）において、「デバッグ端子無効命令」を「テスト端子無効命令」に、「デバッグイネーブル信号ｄｂｇｅｎ」を「テストイネーブル信号ｔｓｔｅｎ」に、「デバッグ要求信号ｄｂｇｒｅｑ」や「デバッグ指令」をテスト指令に、「デバッグ応答信号ｄｂｇａｃｋ」を「テスト結果」に、「デバッグ端子有効命令」を「テスト端子有効命令」に、それぞれ置き換えたものと同様であってもよいため、その図示及び説明を省略する。
【０１１７】
このように構成された第３実施形態の半導体装置１によれば、プロセッサー１０がリセット解除後の所定期間にテスト端子無効命令を実行しなければ、当該所定期間の経過後は外部端子ＴＳＴからテスト回路７２に対するアクセスが可能になる。半導体装置１の検査が可能となる。
【０１１８】
一方、プロセッサー１０がリセット解除後の所定期間にテスト端子無効命令を実行した場合は、当該所定期間の経過後も外部端子ＴＳＴからテスト回路７２に対するアクセスができなくなる。従って、半導体装置１の検査が終了した後は、例えば、不揮発性メモリー２０に記憶されるプログラムの先頭付近においてテスト端子無効命令を追加し、又は置き換えることにより、外部端子ＴＳＴからテスト回路７２に対するアクセスができなくなり、テスト回路７２の不正利用（意図しない使用も含む）のおそれを低減させることができる。
【０１１９】
その他、第３実施形態の半導体装置１によれば、第１実施形態の半導体装置１と同様の効果を奏することができる。
【０１２０】
２．電子機器
図１１は、本実施形態の電子機器の構成の一例を示す機能ブロック図である。また、図１２（Ａ）は、本実施形態の電子機器の一例であるスマートフォンの外観の一例を示す図であり、図１２（Ｂ）は、本実施形態の電子機器の一例である電子時計の外観の一例を示す図である。
【０１２１】
本実施形態の電子機器３００は、半導体装置３１０、電源生成部３２０、操作部３３０、ＣＰＵ（Central Processing Unit）３４０、通信部３５０、表示部３６０及び音出力部３７０を含んで構成されている。なお、本実施形態の電子機器は、図１１の構成要素（各部）の一部を省略又は変更し、あるいは、他の構成要素を付加した構成としてもよい。
【０１２２】
電源生成部３２０は、電子機器３００で使用される各種電源を生成するためのものである。
【０１２３】
操作部３３０は、操作キーやボタンスイッチ等により構成される入力装置であり、ユーザーによる操作に応じた操作信号を半導体装置３１０あるいはＣＰＵ３４０に出力する。
【０１２４】
ＣＰＵ３４０は、各種の計算処理や制御処理を行うものであり、例えば、上記の各実施形態におけるホストＣＰＵ３であってもよい。
【０１２５】
通信部３５０は、半導体装置３１０と外部装置との間のデータ通信を成立させるための各種制御を行う。
【０１２６】
表示部３６０は、ＬＣＤ（Liquid Crystal Display）等により構成される表示装置であり、半導体装置３１０あるいはＣＰＵ３４０から入力される表示信号に基づいて各種の情報を表示する。表示部３６０には操作部３３０として機能するタッチパネルが設けられていてもよい。
【０１２７】
音出力部３７０は、半導体装置３１０あるいはＣＰＵ３４０から入力される音信号に基づいて各種の音（音声を含む）を出力するためのものであり、例えば、スピーカーやブザー等により構成される。
【０１２８】
半導体装置３１０は、操作部３３０からの操作信号に応じた各種の処理、ＣＰＵ３４０とのデータ通信に基づく各種の処理、通信部３５０を介して外部装置との間で行うデータ通信処理、表示部３６０に各種の情報を表示させるための表示信号を生成する処理、音出力部３７０に各種の音を出力させるための音出力信号を生成する処理等を行う。半導体装置３１０は、例えば、ＭＣＵであってもよい。
【０１２９】
半導体装置３１０として例えば上述した各実施形態の半導体装置１を適用することにより、不正利用のおそれを低減させた信頼性の高い電子機器を実現することができる。
【０１３０】
このような電子機器３００としては種々の電子機器が考えられ、例えば、パーソナルコンピューター（例えば、モバイル型パーソナルコンピューター、ラップトップ型パーソナルコンピューター、タブレット型パーソナルコンピューター）、スマートフォンや携帯電話機などの移動体端末、ディジタルスチールカメラ、インクジェット式吐出装置（例えば、インクジェットプリンター）、ルーターやスイッチなどのストレージエリアネットワーク機器、ローカルエリアネットワーク機器、移動体端末基地局用機器、テレビ、ビデオカメラ、ビデオレコーダー、カーナビゲーション装置、電子時計、リアルタイムクロック装置、ページャー、電子手帳（通信機能付も含む）、電子辞書、電卓、電子ゲーム機器、ゲーム用コントローラー、ワードプロセッサー、ワークステーション、テレビ電話、防犯用テレビモニター、電子双眼鏡、ＰＯＳ端末、医療機器（例えば電子体温計、血圧計、血糖計、心電図計測装置、超音波診断装置、電子内視鏡）、魚群探知機、各種測定機器、計器類（例えば、車両、航空機、船舶の計器類）、フライトシミュレーター、ヘッドマウントディスプレイ、モーショントレース、モーショントラッキング、モーションコントローラー、ＰＤＲ（歩行者位置方位計測）等が挙げられる。
【０１３１】
本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１３２】
例えば、上記の第３実施形態の半導体装置１は、テスト回路７２の不正利用からの保護
を可能とするように、第１実施形態の半導体装置１を変形したものであったが、本発明は、テスト回路７２の不正利用からの保護を可能とするように、第１実施形態の半導体装置１を第３実施形態の半導体装置１に変形したのと同様の方法により、第２実施形態の半導体装置１を変形した半導体装置にも適用することができる。
【０１３３】
上述した実施形態および変形例は一例であって、これらに限定されるわけではない。例えば、各実施形態および各変形例を適宜組み合わせることも可能である。
【０１３４】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【０１３５】
１  半導体装置、２  デバッグ装置、３  ホストＣＰＵ、４  スイッチ、５  検査装置、１０  プロセッサー、２０  不揮発性メモリー、３０  ＲＡＭ、４０  リセット回路、５０  発振回路、６０  ＧＰＩＯ回路、６２  ＧＰＩＯ回路、７０  デバッグ回路、７２  テスト回路、８０  マスク回路、９０  制御回路、９２  スイッチ回路、９４  端子制御回路、９６  セレクター、１００  バス、３００  電子機器、３１０  半導体装置、３２０  電源生成部、３３０  操作部、３４０  ＣＰＵ、３５０  通信部、３６０  表示部、３７０  音出力部
【図１】
0006390840.tif 000002
【図２】
0006390840.tif 000003
【図３】
0006390840.tif 000004
【図４】
0006390840.tif 000005
【図５】
0006390840.tif 000006
【図６】
0006390840.tif 000007
【図７】
0006390840.tif 000008
【図８】
0006390840.tif 000009
【図９】
0006390840.tif 000010
【図１０】
0006390840.tif 000011
【図１１】
0006390840.tif 000012
【図１２】
0006390840.tif 000013