(57)【要約】【課題】デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、マイクロコンピュータのデバッグを開始する際に、デバッグ開始前の状態を維持したまま、または再現してデバッグできるようにする。【解決手段】マイクロコンピュータ１００において、外部デバッガ１８０が接続されると、デバッガＯＮ信号が“１”になる。セキュリティ信号は、認証が成功する前は、“１”であり、認証が成功すると“０”になる。データ変換信号が“０”の場合、データ変換部１３０は、分岐命令格納部１６０から出力される相対アドレスが０である領域に分岐する命令の命令コードをデータバスＢ１０２に出力する。データ変換信号が“１”になると、データ変換部１３０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。【選択図】図１
2007249323.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
上記メモリに記憶された記憶データを解読し、命令を実行するＣＰＵとを備えたマイクロコンピュータであって、
マイクロコンピュータに接続された外部デバッグ指示装置からの指示に応じて、マイクロコンピュータにデバッグ動作を行わせるデバッグ制御部と、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記デバッグ動作が行われることを許可するかどうかの認証を行う認証部と、
を備え、
上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記メモリの記憶データがマイクロコンピュータの外部に出力されることが阻止されるように構成されていることを特徴とするマイクロコンピュータ。
【請求項２】
請求項１のマイクロコンピュータであって、さらに、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するメモリ制御部を備えていることを特徴とするマイクロコンピュータ。
【請求項３】
請求項２のマイクロコンピュータであって、
上記メモリ制御部は、上記メモリに、上記記憶データに係わらず所定のデータを出力させることによって、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とするマイクロコンピュータ。
【請求項４】
請求項３のマイクロコンピュータであって、
上記所定のデータは、上記ＣＰＵによって解読された場合に、相対アドレスが０である領域に分岐する命令と解読されるデータであることを特徴とするマイクロコンピュータ。
【請求項５】
請求項４のマイクロコンピュータであって、
さらに、上記ＣＰＵによって分岐命令が実行されることを検出する分岐命令検出部を備え、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記分岐命令検出部によって分岐命令が検出されてから、上記認証が成功するまでの間、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とするマイクロコンピュータ。
【請求項６】
請求項４のマイクロコンピュータであって、
さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記保護領域がアクセスされたことが検出されてから、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とするマイクロコンピュータ。
【請求項７】
請求項６のマイクロコンピュータであって、
上記メモリの保護領域以外の領域に、割り込み処理の命令が記憶されていることを特徴とするマイクロコンピュータ。
【請求項８】
請求項４のマイクロコンピュータであって、
さらに、上記メモリ制御部が上記メモリに上記所定のデータを出力させている間、上記ＣＰＵに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とするマイクロコンピュータ。
【請求項９】
請求項３のマイクロコンピュータであって、
上記所定のデータは、上記ＣＰＵによって解読された場合に、何も実行しないことを示す命令と解読されるデータであることを特徴とするマイクロコンピュータ。
【請求項１０】
請求項３のマイクロコンピュータであって、
さらに、上記ＣＰＵを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記メモリ制御部は、上記外部デバッグ指示装置が接続されてから上記認証が成功するまでの間であって、さらに上記ダイレクトメモリアクセスコントローラによる上記メモリへのアクセスが行われる場合に、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とするマイクロコンピュータ。
【請求項１１】
請求項２のマイクロコンピュータであって、
上記メモリ制御部は、上記外部デバッグ装置が接続された後であってかつ所定のタイミング以降に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とするマイクロコンピュータ。
【請求項１２】
請求項１１のマイクロコンピュータであって、
上記所定のタイミングは、一連の命令が連続して実行されないことが許容されるタイミングであることを特徴とするマイクロコンピュータ。
【請求項１３】
請求項１２のマイクロコンピュータであって、
上記メモリの一連の命令が連続して実行されないことが許容されるタイミングは、上記ＣＰＵに対する割り込み要求信号がマスクされていないタイミングであることを特徴とするマイクロコンピュータ。
【請求項１４】
請求項１２のマイクロコンピュータであって、
上記所定のタイミングは、上記ＣＰＵが分岐命令を実行するタイミングであることを特徴とするマイクロコンピュータ。
【請求項１５】
請求項１１のマイクロコンピュータであって、
上記所定のタイミングは、上記ＣＰＵが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とするマイクロコンピュータ。
【請求項１６】
請求項１１のマイクロコンピュータであって、
さらに、上記ＣＰＵを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリへのアクセスを開始するタイミングであることを特徴とするマイクロコンピュータ。
【請求項１７】
請求項２のマイクロコンピュータであって、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、所定のタイミング毎に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とするマイクロコンピュータ。
【請求項１８】
請求項１７のマイクロコンピュータであって、
上記所定のタイミングは、上記ＣＰＵが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とするマイクロコンピュータ。
【請求項１９】
請求項１８のマイクロコンピュータであって、
上記メモリ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続された後の最初の読み出しサイクルで、上記メモリに、上記記憶データを、上記ＣＰＵによって解読された場合に所定のサブルーチンに分岐する命令と解読されるデータに置き換えて出力させるように構成されていることを特徴とするマイクロコンピュータ。
【請求項２０】
請求項１９のマイクロコンピュータであって、
上記所定のサブルーチンの最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とするマイクロコンピュータ。
【請求項２１】
請求項１８のマイクロコンピュータであって、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記ＣＰＵは割り込み処理を実行することを特徴とするマイクロコンピュータ。
【請求項２２】
請求項２１のマイクロコンピュータであって、
上記割り込み処理の最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とするマイクロコンピュータ。
【請求項２３】
請求項２１のマイクロコンピュータであって、上記ＣＰＵに発生する上記割り込みは、ノンマスカブル割り込みであることを特徴とするマイクロコンピュータ。
【請求項２４】
請求項１７のマイクロコンピュータであって、
さらに、上記ＣＰＵを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリにアクセスするタイミングであることを特徴とするマイクロコンピュータ。
【請求項２５】
請求項２のマイクロコンピュータであって、
さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
上記メモリ制御部は、上記外部デバッグ指示装置が接続された後であって、かつ上記保護領域がアクセスされたことが検出されている間、上記保護領域に記憶された記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とするマイクロコンピュータ。
【請求項２６】
請求項２のマイクロコンピュータであって、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記ＣＰＵに入力される割り込み要求信号がマスクされるように構成されていることを特徴とするマイクロコンピュータ。
【請求項２７】
請求項１のマイクロコンピュータであって、
上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記ＣＰＵの動作を停止させるように構成されていることを特徴とするマイクロコンピュータ。
【請求項２８】
請求項２７のマイクロコンピュータであって、
さらに、上記ＣＰＵの動作が停止している間、上記ＣＰＵに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とするマイクロコンピュータ。
【請求項２９】
請求項１のマイクロコンピュータであって、
上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、マイクロコンピュータから上記外部デバッグ指示装置へデータが出力されるのを阻止するようになっていることを特徴とするマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータが内蔵する不揮発性メモリ等に記憶されたプログラムやデータを、不正な読み出しから保護する技術に関するものである。
【背景技術】
【０００２】
マイクロコンピュータには、デバッグ機能と認証機能を有するものがある（特許文献１参照。）。
【０００３】
それは、リセットされた後、メモリに記憶されたプログラムのデバッグが不可能な状態、すなわちマイクロコンピュータのメモリの情報が外部から読み出されないセキュリティ状態になり、そして、認証が成功することによって、デバッグ可能な状態になるものである。
【特許文献１】特開２０００−３４７９４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のようなマイクロコンピュータでは、デバッグを開始するのにリセットが必要とされるために、基板に実装されて通常動作をしている時に生じた不具合の原因を調べるためのデバッグが困難であった。なぜなら、デバッグ時には、不具合が生じた時の状態がリセットによって消去されているからである。
【０００５】
本発明は、上記の点に鑑み、デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、リセット後の状態ではなく通常動作時の状態でデバッグを開始できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決するため、請求項１の発明は、
メモリと、
上記メモリに記憶された記憶データを解読し、命令を実行するＣＰＵとを備えたマイクロコンピュータであって、
マイクロコンピュータに接続された外部デバッグ指示装置からの指示に応じて、マイクロコンピュータにデバッグ動作を行わせるデバッグ制御部と、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記デバッグ動作が行われることを許可するかどうかの認証を行う認証部と、
を備え、
上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記メモリの記憶データがマイクロコンピュータの外部に出力されることが阻止されるように構成されていることを特徴とする。
【０００７】
これにより、通常動作時に外部デバッグ指示装置が接続された後、認証が行われるので、通常動作時の状態でデバッグできる。また、認証が成功するまでの間、メモリの記憶データが、マイクロコンピュータの外部から読み出されない。
【０００８】
請求項２の発明は、
請求項１のマイクロコンピュータであって、さらに、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するメモリ制御部を備えていることを特徴とする。
【０００９】
請求項３の発明は、
請求項２のマイクロコンピュータであって、
上記メモリ制御部は、上記メモリに、上記記憶データに係わらず所定のデータを出力させることによって、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とする。
【００１０】
これらにより、メモリの記憶データは、メモリ自体から出力されることがないので、マイクロコンピュータの外部に読み出されることが確実に防止される。
【００１１】
請求項４の発明は、
請求項３のマイクロコンピュータであって、
上記所定のデータは、上記ＣＰＵによって解読された場合に、相対アドレスが０である領域に分岐する命令と解読されるデータであることを特徴とする。
【００１２】
これにより、外部デバッグ指示装置が接続されてから認証が成功するまでの間、外部デバッグ指示装置が接続された時にＣＰＵがアクセスしていたメモリのアドレスへの分岐命令が、メモリから出力されてＣＰＵに実行され続ける。この間、メモリの記憶内容の読み出しが防止されるとともに、プログラムカウンタの値が同じ値に保たれる。したがって、認証成功後、外部デバッグ指示装置が接続された時にＣＰＵがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
【００１３】
請求項５の発明は、
請求項４のマイクロコンピュータであって、
さらに、上記ＣＰＵによって分岐命令が実行されることを検出する分岐命令検出部を備え、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記分岐命令検出部によって分岐命令が検出されてから、上記認証が成功するまでの間、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とする。
【００１４】
これにより、上記ＣＰＵによって解読された場合に、相対アドレスが０である領域に分岐する命令と解読されるデータをＣＰＵが実行することで、パイプライン動作が乱れて命令実行タイミングが変わってしまうことを回避することができる。
【００１５】
請求項６の発明は、
請求項４のマイクロコンピュータであって、
さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記保護領域がアクセスされたことが検出されてから、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とする。
【００１６】
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをＣＰＵに実行させることができる。そして、保護領域がアクセスされた後に、メモリの記憶データの不正な読み出しからの保護が開始される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
【００１７】
請求項７の発明は、
請求項６のマイクロコンピュータであって、
上記メモリの保護領域以外の領域に、割り込み処理の命令が記憶されていることを特徴とする。
【００１８】
これにより、外部デバッグ指示装置が接続されてからメモリの所定の領域がアクセスされるまでの認証手続き中にも、割り込み処理の命令をＣＰＵに実行させることができる。
【００１９】
請求項８の発明は、
請求項４のマイクロコンピュータであって、
さらに、上記メモリ制御部が上記メモリに上記所定のデータを出力させている間、上記ＣＰＵに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とする。
【００２０】
これにより、メモリ制御部がメモリに所定のデータを出力させている間、ＣＰＵは割り込み処理を行えないことになるが、割り込み要求自体がマスクされて未受け付けのままにされるので、割り込み処理の欠落を回避できる。
【００２１】
請求項９の発明は、
請求項３のマイクロコンピュータであって、
上記所定のデータは、上記ＣＰＵによって解読された場合に、何も実行しないことを示す命令と解読されるデータであることを特徴とする。
【００２２】
請求項１０の発明は、
請求項３のマイクロコンピュータであって、
さらに、上記ＣＰＵを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記メモリ制御部は、上記外部デバッグ指示装置が接続されてから上記認証が成功するまでの間であって、さらに上記ダイレクトメモリアクセスコントローラによる上記メモリへのアクセスが行われる場合に、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とする。
【００２３】
これにより、ダイレクトメモリアクセスコントローラがメモリへのアクセスを開始してから、メモリの記憶データの不正な読み出しからの保護が開始される。したがって、ダイレクトメモリアクセスコントローラによるメモリの記憶データの読み出しは必ず防止される。
【００２４】
請求項１１の発明は、
請求項２のマイクロコンピュータであって、
上記メモリ制御部は、上記外部デバッグ装置が接続された後であってかつ所定のタイミング以降に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とする。
【００２５】
請求項１２の発明は、
請求項１１のマイクロコンピュータであって、
上記所定のタイミングは、一連の命令が連続して実行されないことが許容されるタイミングであることを特徴とする。
【００２６】
請求項１３の発明は、
請求項１２のマイクロコンピュータであって、
上記メモリの一連の命令が連続して実行されないことが許容されるタイミングは、上記ＣＰＵに対する割り込み要求信号がマスクされていないタイミングであることを特徴とする。
【００２７】
請求項１４の発明は、
請求項１２のマイクロコンピュータであって、
上記所定のタイミングは、上記ＣＰＵが分岐命令を実行するタイミングであることを特徴とする。
【００２８】
これらにより、パイプライン処理において連続して実行されるべき命令の途中で実行が中断されることが防がれる。
【００２９】
請求項１５の発明は、
請求項１１のマイクロコンピュータであって、
上記所定のタイミングは、上記ＣＰＵが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とする。
【００３０】
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをＣＰＵに実行させることができる。そして、保護領域がアクセスされた後に、メモリの記憶データの不正な読み出しからの保護が開始される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
【００３１】
請求項１６の発明は、
請求項１１のマイクロコンピュータであって、
さらに、上記ＣＰＵを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリへのアクセスを開始するタイミングであることを特徴とする。
【００３２】
これにより、ダイレクトメモリアクセスコントローラがメモリへのアクセスを開始してから、メモリの記憶データの不正な読み出しからの保護が開始される。したがって、ダイレクトメモリアクセスコントローラによるメモリの記憶データの読み出しは必ず防止される。
【００３３】
請求項１７の発明は、
請求項２のマイクロコンピュータであって、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、所定のタイミング毎に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とする。
【００３４】
請求項１８の発明は、
請求項１７のマイクロコンピュータであって、
上記所定のタイミングは、上記ＣＰＵが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とする。
【００３５】
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをＣＰＵに実行させることができる。そして、保護領域がアクセスされている間、メモリの記憶データが不正な読み出しから保護される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
【００３６】
請求項１９の発明は、
請求項１８のマイクロコンピュータであって、
上記メモリ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続された後の最初の読み出しサイクルで、上記メモリに、上記記憶データを、上記ＣＰＵによって解読された場合に所定のサブルーチンに分岐する命令と解読されるデータに置き換えて出力させるように構成されていることを特徴とする。
【００３７】
これにより、外部デバッグ指示装置が接続されると最初の読み出しサイクルで、ＣＰＵは、その時にアクセス中のアドレスをスタックに退避させる。
【００３８】
請求項２０の発明は、
請求項１９のマイクロコンピュータであって、
上記所定のサブルーチンの最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とする。
【００３９】
これにより、認証成功後、スタックに退避されていた戻り番地がプログラムカウンタに戻されるので、外部デバッグ指示装置が接続された時にＣＰＵがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
【００４０】
請求項２１の発明は、
請求項１８のマイクロコンピュータであって、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記ＣＰＵは割り込み処理を実行することを特徴とする。
【００４１】
これにより、外部デバッグ指示装置が接続されると、ＣＰＵは、割り込み処理を開始し、その時にアクセス中のアドレスをスタックに退避させる。
【００４２】
請求項２２の発明は、
請求項２１のマイクロコンピュータであって、
上記割り込み処理の最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とする。
【００４３】
これにより、認証成功後、スタックに退避されていた戻り番地がプログラムカウンタに戻されるので、外部デバッグ指示装置が接続された時にＣＰＵがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
【００４４】
請求項２３の発明は、
請求項２１のマイクロコンピュータであって、上記ＣＰＵに発生する上記割り込みは、ノンマスカブル割り込みであることを特徴とする。
【００４５】
これにより、外部デバッグ指示装置が接続された時に発生する割り込みの処理は確実に実行される。
【００４６】
請求項２４の発明は、
請求項１７のマイクロコンピュータであって、
さらに、上記ＣＰＵを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリにアクセスするタイミングであることを特徴とする。
【００４７】
これにより、ダイレクトメモリアクセスコントローラがメモリにアクセスする時に、メモリの記憶データの不正な読み出しからの保護が行われるので、外部デバッグ指示装置が接続されてから認証が成功するまでの間であっても、ダイレクトメモリアクセスコントローラがメモリにアクセスしていない時は、ＣＰＵはメモリの命令コードを読み出して、命令を実行できる。
【００４８】
請求項２５の発明は、
請求項２のマイクロコンピュータであって、
さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
上記メモリ制御部は、上記外部デバッグ指示装置が接続された後であって、かつ上記保護領域がアクセスされたことが検出されている間、上記保護領域に記憶された記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とする。
【００４９】
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをＣＰＵに実行させることができる。そして、保護領域がアクセスされている間、メモリの記憶データが不正な読み出しから保護される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
【００５０】
請求項２６の発明は、
請求項２のマイクロコンピュータであって、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記ＣＰＵに入力される割り込み要求信号がマスクされるように構成されていることを特徴とする。
【００５１】
これにより、メモリの記憶データが不正な読み出しから保護されている間、ＣＰＵには割り込み要求信号が入力されないので、ＣＰＵから割り込みを受け入れたことを示す信号が出力されたにもかかわらず、割り込み処理が行われないことによる割り込み処理の欠落を回避できる。
【００５２】
請求項２７の発明は、
請求項１のマイクロコンピュータであって、
上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記ＣＰＵの動作を停止させるように構成されていることを特徴とする。
【００５３】
これにより、外部デバッグ指示装置が接続されてから認証が成功するまでの間、ＣＰＵは動作を停止する。したがって、認証が成功するまでの間、ＣＰＵの命令の実行によってメモリの記憶データがマイクロコンピュータの外部に出力されることがない。この間、プログラムカウンタの値は同じ値に保たれる。よって、認証成功後、外部デバッグ指示装置が接続された時にＣＰＵがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
【００５４】
請求項２８の発明は、
請求項２７のマイクロコンピュータであって、
さらに、上記ＣＰＵの動作が停止している間、上記ＣＰＵに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とする。
【００５５】
これにより、メモリの記憶データが不正な読み出しから保護されている間、ＣＰＵは割り込み処理を行えないことになるが、割り込み要求自体がマスクされて未受け付けのままにされるので、割り込み処理の欠落を回避できる。
【００５６】
請求項２９の発明は、
請求項１のマイクロコンピュータであって、
上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、マイクロコンピュータから上記外部デバッグ指示装置へデータが出力されるのを阻止するようになっていることを特徴とする。
【００５７】
これにより、外部デバッグ指示装置が接続されてから、認証が成功するまでの間、マイクロコンピュータから外部デバッガへデータが出力されることがない。
【発明の効果】
【００５８】
本発明によると、デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、リセット後の状態ではなく通常動作時の状態でデバッグを開始できる。
【発明を実施するための最良の形態】
【００５９】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の各実施形態において、他の実施形態と同様の機能を有する構成要素については同一の符号を付して説明を省略する。
【００６０】
《発明の実施形態１》
図１は、本発明の実施形態１に係るマイクロコンピュータ１００の構成を示すブロック図である。
【００６１】
マイクロコンピュータ１００は、ＣＰＵ１１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、内蔵不揮発性メモリ１２０（メモリ）、データ変換部１３０（メモリ制御部）、ＯＣＤ回路１４０（Ｏｎ  Ｃｈｉｐ  Ｄｅｂｕｇ回路）（デバッグ制御部）、認証部１５０、分岐命令格納部１６０、およびＥｘｃｌｕｓｉｖｅ  ＯＲ回路１７０を備えている。また、デバッグ時にはマイクロコンピュータ１００の外部にある外部デバッガ１８０（外部デバッグ指示装置）と接続される。
【００６２】
ＣＰＵ１１０は、内蔵不揮発性メモリ１２０から命令コードを読み出して解読し、命令を実行することにより、各種制御を行うようになっている。命令コードの読み出しは、アドレスバスＢ１０１に、読み出す命令コードが格納されている領域のアドレスを出力し、さらにリードイネーブル信号を値“１”にすることによって行われる。読み出された命令コードは、ＲＯＭバスＢ１０３およびデータバスＢ１０２を介して、ＣＰＵ１１０に読み込まれる。さらに、ＣＰＵ１１０にはＤＭＡＣ１４１からバス要求信号が入力されており、ＣＰＵ１１０はバス要求信号の値が“１”になると、動作を停止するようになっている。
【００６３】
内蔵不揮発性メモリ１２０は、命令コードおよびその他のデータを記憶しており、リードイネーブル信号が値“１”である場合、アドレスバスＢ１０１に出力されているアドレスによって指定されるメモリ領域に格納されている命令コードやその他のデータをＲＯＭバスＢ１０３に出力するようになっている。ＲＯＭバスＢ１０３は、データ変換部１３０にしかつながっていない。
【００６４】
データ変換部１３０は、データ変換信号の値が“１”の場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力し、データ変換信号の値が“０”の場合には、分岐命令出力バスＢ１０４のデータをデータバスＢ１０２に出力するようになっている。
【００６５】
ＯＣＤ回路１４０は、外部デバッガ１８０にシリアル信号を出力したり、外部デバッガ１８０からシリアル信号を受信するようになっている。また、外部デバッガ１８０から受信した信号に応じて、マイクロコンピュータ１００の内部状態をモニターするようになっている。また、ＯＣＤ回路１４０は、デバッガＯＮ信号を出力し、外部デバッガ１８０と接続されていない場合にはデバッガＯＮ信号の値を“０”にし、外部デバッガ１８０と接続されている場合にはデバッガＯＮ信号の値を“１”にするようになっている。さらに、ＯＣＤ回路１４０は、アドレスバスＢ１０１とデータバスＢ１０２に接続されたＤＭＡＣ１４１（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）を備えている。
【００６６】
ＤＭＡＣ１４１は、外部デバッガ１８０にシリアル信号を出力したり、外部デバッガ１８０からシリアル信号を受信するようになっている。そして、外部デバッガ１８０による所定の制御により、内蔵不揮発性メモリ１２０に記憶されているデータをＣＰＵ１１０を介さずに読み出し、シリアル信号に変換して外部デバッガ１８０に出力するようになっている。ＤＭＡＣ１４１は、このように内蔵不揮発性メモリ１２０のデータをＣＰＵ１１０を介さずに読み出す際、外部デバッガ１８０による制御によって、バス要求信号の値を“１”にし、ＣＰＵ１１０の動作を停止させるようになっている。そして、ＣＰＵ１１０が動作を停止すると、アドレスバスＢ１０１に、内蔵不揮発性メモリ１２０における読み出したい命令コードが格納されているアドレスを出力し、さらにリードイネーブル信号を値“１”にすることによって内蔵不揮発性メモリ１２０のデータをデータバスＢ１０２から読み出すようになっている。
【００６７】
認証部１５０は、セキュリティ信号を出力し、認証が成功するまでセキュリティ信号を初期値の“１”にし、認証が成功するとセキュリティ信号を値“０”にするようになっている。なお、セキュリティ信号等、種々の信号が初期化されるのは、例えば、マイクロコンピュータ１００の電源がＯＮになる時や、外部デバッガ１８０が接続された時である。
認証部１５０で行う認証の方法としては、例えば、認証部にあらかじめ格納された認証コードとデバッガから入力される認証コードとを比較する方法が用いられる。
【００６８】
分岐命令格納部１６０は、ＣＰＵ１１０によって解読された場合に、相対アドレスが０である領域に分岐する命令と解読される命令コードを記憶しており、その命令コードを分岐命令出力バスＢ１０４に出力するようになっている。ここで、相対アドレスが０である領域に分岐する命令と解読される命令コードとは、すなわちＣＰＵ１１０がアクセス中のアドレスへの分岐命令を示す命令コードであり、例えば、“ｊｒ  ＋０”といった命令である。
【００６９】
Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０は、入力される２つの信号の排他的論理和をデータ変換信号として出力するようになっている。本実施形態では、デバッガＯＮ信号とセキュリティ信号がＥｘｃｌｕｓｉｖｅ  ＯＲ回路１７０に入力される。
【００７０】
−動作−
まず、上記のように構成されたマイクロコンピュータ１００におけるＣＰＵ１１０の命令実行動作について説明する。なお、この動作は、以下の各実施形態において同様である。
【００７１】
ＣＰＵ１１０は、内蔵不揮発性メモリ１２０から命令コードを読み出すために、アドレスバスＢ１０１に読み出す命令コードが格納されているアドレス、例えばアドレス“１００Ｈ”（“Ｈ”は１６進表記であることを示す。）を出力し、さらにリードイネーブル信号を値“１”にする。そして、データバスＢ１０２から命令コードを読み出して解読し、命令を実行する。
【００７２】
次に、ＤＭＡＣ１４１によって、内蔵不揮発性メモリ１２０に記憶されているデータが読み出される動作について説明する。この動作も、以下の各実施形態において同様である。
【００７３】
ＤＭＡＣ１４１は、内蔵不揮発性メモリ１２０からデータを読み出すために、バス要求信号の値を“１”にするとともに、アドレスバスＢ１０１に読み出したい命令コードが格納されているアドレス、例えばアドレス“１００Ｈ”を出力し、さらにリードイネーブル信号を値“１”にする。そして、データバスＢ１０２からデータを読み出し、シリアル信号に変換して外部デバッガ１８０に出力する。
【００７４】
次に、マイクロコンピュータ１００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行動作が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功する場合の動作について説明する。
【００７５】
まず、マイクロコンピュータ１００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。
【００７６】
この時、認証部１５０は、まだ認証が成功していないので、セキュリティ信号として“１”を出力し、ＯＣＤ回路１４０は、外部デバッガ１８０が接続されていないので、デバッガＯＮ信号として“０”を出力する。セキュリティ信号が“１”、デバッガＯＮ信号が“０”なので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“１”となり、データ変換部１３０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０はＲＯＭバスＢ１０３のデータ、すなわち、内蔵不揮発性メモリ１２０から出力されたデータを読み出す。読み出したデータが命令コードである場合、解読して命令を実行する。
【００７７】
次に、マイクロコンピュータ１００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ１８０が接続された時に、ＣＰＵ１１０のアクセス中のアドレスが“１００Ｈ”である場合について説明する。
【００７８】
この間、認証部１５０は、まだ認証が成功していないので、セキュリティ信号として“１”を出力し、ＯＣＤ回路１４０は、外部デバッガ１８０が接続されたので、デバッガＯＮ信号として“１”を出力する。セキュリティ信号が“１”、デバッガＯＮ信号が“１”なので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“０”となり、データ変換部１３０は、分岐命令出力バスＢ１０４のデータをデータバスＢ１０２に出力する。分岐命令出力バスＢ１０４のデータ、すなわち、分岐命令格納部１６０に記憶された命令コードは、ＣＰＵ１１０によって読み出されて解読され、命令が実行される。
【００７９】
このように、認証が成功していない場合は、内蔵不揮発性メモリ１２０から出力された命令コードの命令が実行されないので、内蔵不揮発性メモリ１２０に記憶されたデータをＩ／ＯデータバスＢ１０５に出力する命令、例えば、“ｍｏｖ  ｍｅｍ  ｒｅｇ, ｍｏｖ  ｒｅｇ  ｏｕｔ”というような命令が実行されることがない。つまり、内蔵不揮発性メモリ１２０に記憶されたデータが、ＣＰＵ１１０の命令の実行による不正な読み出しから保護される。
【００８０】
さらに、データバスＢ１０２に出力されているデータは内蔵不揮発性メモリ１２０から出力されたものではないので、内蔵不揮発性メモリ１２０から出力されたデータが、ＤＭＡＣ１４１によって読み出されることもない。したがって、認証が成功するまで、内蔵不揮発性メモリ１２０のデータがＤＭＡＣ１４１を介して外部デバッガ１８０に出力されることも防止される。
【００８１】
また、この間にＣＰＵ１１０が読み出す分岐命令格納部１６０に記憶された命令コードは、ＣＰＵ１１０によって解読された場合に、相対アドレスが０である領域に分岐する命令と解読される命令コードである。したがって、外部デバッガ１８０がマイクロコンピュータ１００に接続された時に、ＣＰＵ１１０のアクセス中のアドレス、すなわちプログラムカウンタの値は“１００Ｈ”なので、ＣＰＵ１１０は、１００Ｈ番地への分岐命令に相当する命令を実行する。すなわち、ＣＰＵ１１０は、分岐命令の実行動作として、アドレスバスＢ１０１にアドレス“１００Ｈ”を出力し、リードイネーブル信号を値“１”にする。ＣＰＵ１１０は認証が成功するまで、上記分岐命令格納部１６０に記憶された命令コードの読み込みと分岐命令の実行動作とを繰り返す。
【００８２】
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
【００８３】
認証成功後、認証部１５０はセキュリティ信号として“０”を出力し、ＯＣＤ回路１４０は、外部デバッガ１８０が接続されたままなので、デバッガＯＮ信号として“１”を出力する。セキュリティ信号が“０”、デバッガＯＮ信号が“１”なので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“１”となり、データ変換部１３０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０はＲＯＭバスＢ１０３のデータ、すなわち、内蔵不揮発性メモリ１２０から出力された命令コードを解読し、命令を実行する。ここで、認証が成功した時、データバスＢ１０２に出力される命令コードはＲＯＭバスＢ１０３のデータとなるが、アドレスバスＢ１０１にはアドレス“１００Ｈ”が出力されているため、ＲＯＭバスＢ１０３のデータは内蔵不揮発性メモリ１２０の１００Ｈ番地に格納された命令コードとなる。したがって、認証成功後、ＣＰＵ１１０は、１００Ｈ番地に格納された命令コードから順に、読み出して解読し、命令を実行する。
【００８４】
このように、認証が成功するまでの間、ＣＰＵ１１０がアクセス中のアドレスへの分岐命令を実行し続けるように構成されることによって、上記のようにＣＰＵ１１０の命令の実行中に外部デバッガ１８０が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、認証成功時に、外部デバッガ１８０がマイクロコンピュータ１００に接続された際のプログラムカウンタの値でデバッグを開始することができる。
【００８５】
《発明の実施形態２》
図２は、本発明の実施形態２に係るマイクロコンピュータ２００の構成を示すブロック図である。同図に示すように、マイクロコンピュータ２００は、実施形態１のマイクロコンピュータ１００の構成に加え、解読部２１０、および分岐保持部２２０を備えている。
【００８６】
解読部２１０（分岐命令検出部）は、ＣＰＵ１１０の内部に備えられ、ＣＰＵ１１０がデータバスＢ１０２から読み出した命令コードを解読し、分岐命令の命令コードであれば“１”、分岐命令の命令コードでなければ“０”を分岐信号として出力するようになっている。
【００８７】
分岐保持部２２０（メモリ制御部の一部）は、初期値が“０”で、デバッガＯＮ信号が“１”の状態で分岐信号が“１”になると、その後初期化されるまで“１”のままになる分岐保持信号を出力するようになっている。
【００８８】
−動作−
次に、マイクロコンピュータ２００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功する場合のマイクロコンピュータ２００の動作について説明する。
【００８９】
まず、マイクロコンピュータ２００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。
【００９０】
この時、実施形態１の場合と同様に、認証部１５０は、セキュリティ信号として“１”を出力し、ＯＣＤ回路１４０は、デバッガＯＮ信号として“０”を出力している。デバッガＯＮ信号が“０”なので、分岐信号の値に関わらず、分岐保持部２２０は分岐保持信号として“０”を出力する。また、セキュリティ信号が“１”であり、分岐保持信号が“０”なので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“１”となり、データ変換部１３０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。
【００９１】
次に、マイクロコンピュータ２００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。
【００９２】
この間、実施形態１の場合と同様に、認証部１５０はセキュリティ信号として“１”を出力し、ＯＣＤ回路１４０は、デバッガＯＮ信号として“１”を出力する。外部デバッガ１８０が接続されてから初めて分岐命令の命令コードが解読されるまでは、分岐信号が“０”であり、分岐保持信号は“０”となるので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“１”となり、データ変換部１３０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。また、分岐命令の命令コードが解読部２１０によって解読されると、分岐信号が“１”となり、分岐保持信号は“１”となるので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“０”となり、データ変換部１３０は、分岐命令出力バスＢ１０４のデータをデータバスＢ１０２に出力する。例えば、外部デバッガ１８０が接続された後に内蔵不揮発性メモリ１２０からＣＰＵ１１０に出力されるデータが、２００Ｈ番地への分岐命令の命令コードになると、ＣＰＵ１１０の解読部２１０が、当該命令コードを解読し、分岐信号として“１”を出力するとともに、ＣＰＵ１１０は、解読された分岐命令を実行する。ここで、分岐信号が“１”となったためにデータバスＢ１０２には分岐命令出力バスＢ１０４のデータ、すなわち分岐命令格納部１６０に記憶された命令コードが出力されている。したがって、ＣＰＵ１１０が分岐命令を実行し、アドレス“２００Ｈ”をアドレスバスＢ１０１に出力しても、２００Ｈ番地の命令コードを読み込むことはできない。ＣＰＵ１１０が読み込むのは、分岐命令格納部１６０から出力されるデータ、すなわち、ＣＰＵ１１０によって解読された場合に、相対アドレスが０である領域に分岐する命令と解読される命令コードである。また、その後も分岐保持信号は“１”であり続けるので、データ変換部１３０は、分岐命令出力バスＢ１０４のデータをデータバスＢ１０２に出力し続ける。したがって、認証が成功するまでＣＰＵ１１０は２００Ｈ番地への分岐命令を実行し続ける。この間、内蔵不揮発性メモリ１２０に記憶されたデータは、外部からの不正な読み出しから保護される。すなわち、実施形態１で説明したように、ＣＰＵ１１０の命令の実行によって不正に読み出されたり、ＤＭＡＣ１４１を介して外部デバッガ１８０に不正に出力されることがない。また、不正な読み出しからの保護が分岐命令の命令コードが解読された後に開始されることにより、ＣＰＵ１１０におけるパイプライン動作が乱れて命令実行タイミングが変わってしまうことを回避することができる。
【００９３】
さらに、その後所定の認証手続きが行われて認証が成功した後の動作について説明する。
【００９４】
認証成功後、認証部１５０はセキュリティ信号として“０”を出力する。一方、分岐保持信号は“１”であり続けるので、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は“１”となり、データ変換部１３０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。上記例のように、認証が成功するまでＣＰＵ１１０が２００Ｈ番地への分岐命令を実行し続けていた場合、認証が成功すると、２００Ｈ番地の命令コードから順に、読み出されて解読され、命令の実行が行われる。
【００９５】
このように、認証が成功するまでの間、ＣＰＵ１１０がアクセス中のアドレスへの分岐命令を実行し続けるように構成されることによって、上記のようにＣＰＵ１１０の命令の実行中に外部デバッガ１８０が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ１８０がマイクロコンピュータ２００に接続された際のプログラムカウンタの値で、認証成功時にデバッグを開始することができる。さらに、外部デバッガ１８０が接続された後、分岐命令が解読されてから、内蔵不揮発性メモリ１２０から出力されるデータが相対アドレスが０である領域に分岐する命令の命令コードに置換されるので、認証成功後、外部デバッガ１８０が接続された時と同じパイプラインの状態で、分岐命令以降の命令が実行されるとともに、デバッグを開始することができる。より詳しくは、認証後に実行される命令は、外部デバッガ１８０が接続されなかった場合と同じく、直前の分岐命令によってパイプラインがフラッシュされた状態でフェッチされて実行されることになる。すなわち、命令の実行タイミングに関して、外部デバッガ１８０の接続の有無による動作の相異を回避することができる。
【００９６】
《実施形態３》
図３は、本発明の実施形態３に係るマイクロコンピュータ３００の構成を示すブロック図である。同図に示すように、マイクロコンピュータ３００は、実施形態１のマイクロコンピュータ１００のデータ変換部１３０に代えて、データ変換部３１０（メモリ制御部と保護領域アクセス検出部）を備えている。また、マイクロコンピュータ３００においては、外部デバッガ１８０が接続されてから認証が成功するまでの間であっても内蔵不揮発性メモリ１２０の一部の領域のデータは外部から読み出される。以下、上記一部の領域を非保護領域、それ以外の領域を保護領域と呼ぶ。
【００９７】
データ変換部３１０には、データ変換信号だけでなく、アドレスバスＢ１０１に出力されているアドレスが入力されるようになっている。データ変換部３１０は、マイクロコンピュータ１００のデータ変換部１３０と同様に、データ変換信号の値が“１”の場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力するようになっている。データ変換部３１０がデータ変換部１３０と異なっているのは、データ変換信号の値が“０”の場合でも、アドレスバスＢ１０１に出力されているアドレスが、内蔵不揮発性メモリ１２０の非保護領域を示すアドレスである場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力するようになっている点である。データ変換信号の値が“０”で、アドレスバスＢ１０１に出力されているアドレスが内蔵不揮発性メモリ１２０の保護領域を示すアドレスである場合には、分岐命令出力バスＢ１０４のデータをデータバスＢ１０２に出力するようになっている。
【００９８】
−動作−
次に、マイクロコンピュータ３００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行動作が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功する場合の動作について説明する。
【００９９】
マイクロコンピュータ３００に外部デバッガ１８０が接続されていない状態で命令が実行されている時の動作、および認証が成功した後の動作は、実施形態１と同様であるので説明を省略する。
【０１００】
以下、マイクロコンピュータ３００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。ＣＰＵ１１０が内蔵不揮発性メモリ１２０の１００Ｈ番地にアクセスしている時に外部デバッガ１８０が接続される場合を例として説明する。
【０１０１】
マイクロコンピュータ３００に外部デバッガ１８０が接続されると、認証が成功するまでの間、データ変換信号が“０”となるのは、実施形態１と同様である。外部デバッガ１８０が接続された時、ＣＰＵ１１０は、１００Ｈ番地の命令コードを読み出すため、アドレスバスＢ１０１にアドレス“１００Ｈ”を出力し、リードイネーブル信号を値“１”にする。
【０１０２】
アドレスバスＢ１０１に出力されているアドレス、すなわち内蔵不揮発性メモリ１２０の１００Ｈ番地が非保護領域である場合、データ変換部３１０により、ＲＯＭバスＢ１０３のデータがデータバスＢ１０２に出力され、１００Ｈ番地の命令コードがＣＰＵ１１０に読み出されて解読され、命令が実行される。そして、ＣＰＵ１１０がアクセスする内蔵不揮発性メモリ１２０の領域が保護領域とならなければ、ＲＯＭバスＢ１０３のデータがデータバスＢ１０２に出力され続ける。したがって、内蔵不揮発性メモリ１２０の命令コードの命令がＣＰＵ１１０に実行され続ける。
【０１０３】
一方、アドレスバスＢ１０１に出力されているアドレス、すなわち内蔵不揮発性メモリ１２０の１００Ｈ番地が保護領域である場合、データ変換部３１０により、分岐命令出力バスＢ１０４のデータがデータバスＢ１０２に出力される。分岐命令出力バスＢ１０４のデータは、分岐命令格納部１６０から出力されるＣＰＵ１１０がアクセス中のアドレスへの分岐命令の命令コードなので、１００Ｈ番地への分岐命令に相当する命令を実行する。したがって、不揮発性メモリ１２０の１００Ｈ番地に記憶されたデータがＣＰＵ１１０によって読み出されることはなく、ＣＰＵ１１０は、再びアドレスバスＢ１０１にアドレス“１００Ｈ”を出力し、リードイネーブル信号を値“１”にする。そして、認証が成功するまで、１００Ｈ番地への分岐命令に相当する命令の実行を繰り返す。このように、認証が成功するまでの間は、内蔵不揮発性メモリ１２０の保護領域に記憶されたデータが、ＣＰＵ１１０の命令の実行によって不正に読み出されたり、ＤＭＡＣ１４１を介して外部デバッガ１８０に不正に出力されることはない。したがって、不正な読み出しから保護したいデータは、内蔵不揮発性メモリ１２０の保護領域に記憶させておけば、秘匿性を確保することができる。
【０１０４】
上記のように、内蔵不揮発性メモリ１２０のデータが、そのアドレスに応じて、データバスＢ１０２に出力されたりされなかったりするように構成することによって、保護したいデータを不正な読み出しから保護しつつ、外部デバッガ１８０がマイクロコンピュータ３００に接続されてから認証が成功するまでの間も、保護の必要がない命令コードをＣＰＵ１１０に実行させることができる。例えば、どんな状況においても即実行される必要がある割り込み処理等の命令コードを非保護領域に記憶させておいてもよい。
【０１０５】
《実施形態４》
図４は、本発明の実施形態４に係るマイクロコンピュータ４００の構成を示すブロック図である。同図に示すように、マイクロコンピュータ４００は、実施形態１のマイクロコンピュータ１００の構成に加え、割り込み制御部４１０を備えている。
【０１０６】
割り込み制御部４１０は、図示しない他の回路から割り込み要求があると割り込み要求信号として“１”をＣＰＵ１１０に出力し、それ以外の場合は“０”を出力するようになっている。また、複数種類の割り込み要求が発生した場合にはそれらを調停するようになっている。さらに、割り込み制御部４１０は、デバッガＯＮ信号が“１”でかつセキュリティ信号が“１”の時は、割り込み要求の有無にかかわらず、割り込み要求信号を“０”にして、ＣＰＵ１１０における割り込み処理を禁止するようになっている。本実施形態では、図４に示すように、デバッガＯＮ信号が“１”でかつセキュリティ信号が“１”となっているかどうかを示す信号として、データ変換信号が割り込み制御部４１０に入力されるようになっている。データ変換信号が“０”の場合は、割り込み要求の有無にかかわらず、割り込み要求信号を“０”にし、データ変換信号が“１”の場合は、割り込み要求があると割り込み要求信号を“１”にするようになっている。
【０１０７】
ＣＰＵ１１０は、入力される割り込み要求信号が“１”になると、その時点でのプログラムカウンタの値をスタックに退避させ、割り込み処理の命令コードが記憶されている領域の先頭のアドレスをアドレスバスＢ１０１に出力し、割り込み処理の命令コードの読み出しを開始するようになっている。また、入力される割り込み要求信号が“１”になると、割り込みを受け入れたことを示す信号を出力するようになっている。
【０１０８】
−動作−
本実施形態においては、データバスＢ１０２に出力される命令コードが切り替えられる等の主な動作および効果は、実施形態１と同様なので説明を省略し、割り込み制御部４１０に関する動作について説明する。以下、マイクロコンピュータ４００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功する場合の主として割り込み制御部４１０の制御によるマイクロコンピュータ４００の動作について説明する。
【０１０９】
まず、マイクロコンピュータ４００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。この時、実施形態１の場合と同様に、データ変換信号は“１”になっている。データ変換信号が“１”なので、割り込み制御部４１０は、割り込み要求が発生すると、割り込み要求信号として“１”をＣＰＵ１１０に出力する。それに応じて、ＣＰＵ１１０は、その時点でのプログラムカウンタの値をスタックに退避させ、割り込み処理の命令コードが記憶されているアドレスをアドレスバスＢ１０１に出力し、割り込み処理の命令コードの読み出しを開始する。このように、外部デバッガ１８０が接続されるまで、ＣＰＵ１１０は、割り込み制御部４１０の制御によって、割り込み要求が発生し次第、割り込み処理の命令を実行する。
【０１１０】
次に、マイクロコンピュータ４００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。この間、データ変換信号は“０”になっている。データ変換信号が“０”なので、割り込み制御部４１０は、割り込み要求があっても、割り込み要求信号として“０”を出力する。それにより、ＣＰＵ１１０において割り込み処理が行われなくなる。また、この時、分岐命令格納部１６０のデータがデータバスＢ１０２に出力されている。したがって、ＣＰＵ１１０は、割り込み処理の命令コードを読み出す動作に移ることなく、分岐命令格納部１６０のデータ、すなわち、ＣＰＵ１１０によって解読された場合に、相対アドレスが０である領域に分岐する命令と解読される命令コードが読み出される。このように、マイクロコンピュータ１００に外部デバッガ１８０が接続されてから認証が成功するまでの間は、割り込み要求信号が“１”にならないので、割り込みを受け入れたことを示す信号がＣＰＵ１１０から外部に出力されることもない。よって、ＣＰＵ１１０から割り込みを受け入れたことを示す信号が出力されたにもかかわらず、割り込み処理が行われないことによる割り込み処理の欠落を回避できる。また、認証成功まで内蔵不揮発性メモリ１２０に記憶されたデータが、外部からの不正な読み出しから保護されるのは実施形態１と同様である。
【０１１１】
さらに、その後所定の認証手続きが行われて認証が成功した後の動作について説明する。認証成功後、データ変換信号は“１”になる。データ変換信号が“１”なので、割り込み制御部４１０は、割り込みが発生すると、割り込み要求信号として“１”をＣＰＵ１１０に出力する。それによって、ＣＰＵ１１０は、その時点でのプログラムカウンタの値をスタックに退避させ、割り込み処理の命令コードが記憶されているアドレスをアドレスバスＢ１０１に出力し、割り込み処理の命令コードの読み出しを開始する。このように、認証成功後、ＣＰＵ１１０は、割り込み制御部４１０の制御によって、割り込みが発生し次第、割り込み処理の命令を実行する。
【０１１２】
《発明の実施形態５》
図５は、本発明の実施形態５に係るマイクロコンピュータ５００の構成を示すブロック図である。同図に示すように、マイクロコンピュータ５００は、データ変換部１３０に代えてデータ無効化部５１０（メモリ制御部）を備え、分岐命令保持部１６０を備えておらず、バス要求保持部５２０を備えている点で実施形態１のマイクロコンピュータ１００と異なっている。また、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０に代えて、入力されるバス要求保持信号とセキュリティ信号の排他的論理和を反転させ、データ無効化信号として出力するＥｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０を備えている。
【０１１３】
データ無効化部５１０は、データ無効化信号の値が“０”の場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力し、データ無効化信号の値が“１”の場合には、上記ＣＰＵ１１０によって解読された場合に、何も実行しないことを示す命令と解読される命令コードを出力するようになっている。
【０１１４】
バス要求保持部５２０は、初期状態においてはバス要求保持信号として“０”を出力し、バス要求信号が“１”になると初期化されるまでバス要求保持信号として“１”の値を保持し、出力し続けるようになっている。
【０１１５】
ＣＰＵ１１０は、入力されるデータ無効化信号が“１”の時、すべての動作を停止するようになっている。
【０１１６】
−動作−
次に、マイクロコンピュータ５００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功した場合のマイクロコンピュータ５００の動作について説明する。
【０１１７】
まず、マイクロコンピュータ５００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。
【０１１８】
この時、認証部１５０はセキュリティ信号として“１”を出力し、ＤＭＡＣ１４１は、外部デバッガ１８０が接続されていないのでバス要求信号として“０”を出力する。したがって、バス要求保持部５２０は、初期値の“０”をバス要求保持信号として出力し続ける。セキュリティ信号が“１”、バス要求保持信号が“０”なので、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号は“０”となり、データ無効化部５１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０はＲＯＭバスＢ１０３のデータ、すなわち、内蔵不揮発性メモリ１２０から出力された命令コードを解読し、命令を実行する。
【０１１９】
次に、マイクロコンピュータ５００に外部デバッガ１８０が接続されてから、ＤＭＡＣ１４１がバス要求信号の値を“０”から“１”にするまでの間の動作について説明する。      
【０１２０】
この間、認証部１５０はセキュリティ信号として値“１”を出力し、ＤＭＡＣ１４１は、バス要求信号として“０”を出力し続けている。したがって、バス要求保持部５２０は、初期値の“０”をバス要求保持信号として出力し続ける。セキュリティ信号が“１”、バス要求保持信号の値が“０”なので、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号の値は“０”となり、データ無効化部５１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、外部デバッガ１８０が接続されても、ＤＭＡＣ１４１がバス要求信号の値として“０”を出力し続けている限り、ＣＰＵ１１０はＲＯＭバスＢ１０３のデータ、すなわち、内蔵不揮発性メモリ１２０から出力された命令コードを解読し、命令を実行する。
【０１２１】
次に、ＤＭＡＣ１４１が外部デバッガ１８０の制御に応じて、ＤＭＡ（ダイレクトメモリアクセス）により内蔵不揮発性メモリ１２０のデータを読み出そうとした後、認証が成功するまでの動作について説明する。以下、例として、ＤＭＡが開始された時（バス要求信号の値が“１”になった時）に、ＣＰＵ１１０のアクセス中のアドレス、すなわちプログラムカウンタの値が“１００Ｈ”である場合について説明する。
【０１２２】
バス要求信号の値が“１”になると、バス要求保持部５２０は、“１”の値を保持し、出力し続けるようになる。一方、セキュリティ信号は、まだ認証が成功していないので“１”の値のままである。したがって、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号の値は“１”となり、ＣＰＵ１１０は動作を停止し、データ無効化部５１０は、上記ＣＰＵ１１０によって解読された場合に、何も実行しないことを示す命令と解読される無効命令コードを、データバスＢ１０２に出力する。そこで、ＤＭＡＣ１４１が何らかのアドレスをアドレスバスＢ１０１に出力し、リード信号を“１”にしても、実際にデータ無効化部５１０から出力されるのは、無効命令コードとなる。このように、認証が成功するまではデータバスＢ１０２に内蔵不揮発性メモリ１２０のデータが出力されないので、内蔵不揮発性メモリ１２０のデータが、ＣＰＵ１１０の命令の実行によって不正に読み出されたり、ＤＭＡＣ１４１を介して外部デバッガ１８０から不正に読み出されることが防止される。さらに外部デバッガ１８０が接続された直後から、ＤＭＡＣ１４１がバス要求信号を出力するまでの間は、ＣＰＵ１１０が停止することがないため、この期間に緊急性の高い処理を実行する必要がある場合にも実行することが可能となり、リアルタイム性の低下を低減できる。
【０１２３】
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
【０１２４】
認証成功後、認証部１５０はセキュリティ信号として“０”を出力する。バス要求保持部５２０は、“１”の値を出力し続けている。したがって、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号の値は“０”となり、データ無効化部５１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。
【０１２５】
このようにＲＯＭバスＢ１０３のデータがデータバスＢ１０２に出力されるので、内蔵不揮発性メモリ１２０のデータをＤＭＡＣ１４１を介して外部デバッガ１８０から読み出すことが可能になる。
【０１２６】
一方、データ無効化信号の値が“０”となったので、ＣＰＵ１１０は再び動作を開始する。ＣＰＵ１１０の動作が停止した時のアクセス中のアドレスは“１００Ｈ”であったので、１００Ｈ番地に記憶されている命令コードから読み出し、解読、および命令の実行が行われる。このように、認証が成功するまでの間、ＣＰＵ１１０が動作を停止し続けるように構成されることによって、上記のようにＣＰＵ１１０の命令の実行中に外部デバッガ１８０が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ１８０がマイクロコンピュータ１００に接続された際のプログラムカウンタの値で、認証成功時にデバッグを開始することができる。
【０１２７】
また、バス要求信号の値が“０”になった後も、バス要求保持部５２０は、“１”の値を出力し続けるのでデータ無効化信号の値は“０”のままとなり、データ無効化部５１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。このように、一旦認証が成功すると、ＣＰＵ１１０の命令の実行によって、内蔵不揮発性メモリ１２０のデータを外部から読み出すこと、および内蔵不揮発性メモリ１２０のデータをＤＭＡＣ１４１を介して外部デバッガ１８０から読み出すことのいずれもが可能になる。
【０１２８】
《発明の実施形態６》
図６は、本発明の実施形態６に係るマイクロコンピュータ６００の構成を示すブロック図である。同図に示すように、マイクロコンピュータ６００は、データ変換部１３０に代えてデータ無効化部５１０（メモリ制御部）を備え、分岐命令保持部１６０を備えていない点で実施形態１のマイクロコンピュータ１００と異なっている。
【０１２９】
本実施形態のＣＰＵ１１０には、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号が入力され、ＣＰＵ１１０は、データ無効化信号の値が“１”の時、すべての動作を停止するようになっている。
【０１３０】
−動作−
次に、マイクロコンピュータ６００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功する場合のマイクロコンピュータ６００の動作について説明する。
【０１３１】
まず、マイクロコンピュータ６００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。
【０１３２】
この時、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号は、実施形態１の場合と同様に、“０”となっている。データ無効化信号が“０”なので、データ無効化部５１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０は動作を停止することなく、データバスＢ１０２に出力されるＲＯＭバスＢ１０３のデータの命令コード、すなわち内蔵不揮発性メモリ１２０から出力される命令コードの読み出し、解読、および命令の実行を継続する。
【０１３３】
次に、マイクロコンピュータ６００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ１８０が接続された時に、ＣＰＵ１１０のアクセス中のアドレスが“１００Ｈ”である場合について説明する。
【０１３４】
マイクロコンピュータ６００に外部デバッガ１８０が接続されると、実施形態１の場合と同様に、認証が成功するまでの間、データ無効化信号は“１”となる。データ無効化信号が“１”なので、データ無効化部５１０は、上記ＣＰＵ１１０によって解読された場合に、何も実行しないことを示す命令と解読される命令コードを出力する。これにより、認証が成功するまではデータバスＢ１０２に内蔵不揮発性メモリ１２０のデータが出力されないので、内蔵不揮発性メモリ１２０のデータが不正に読み出されることが防止される。すなわち、実施形態１で説明したように、ＤＭＡＣ１４１を介して外部デバッガ１８０に不正に出力されることがない。一方、データ無効化信号が“１”なので、ＣＰＵ１１０はすべての動作を停止する。
【０１３５】
さらに、その後所定の認証手続きが行われて認証が成功した後の動作について説明する。
【０１３６】
認証成功後、データ無効化信号は“０”となる。データ無効化信号が“０”なので、データ無効化部５１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。一方、データ無効化信号が“０”なので、ＣＰＵ１１０は動作を開始する。ＣＰＵ１１０の動作が停止した時、つまり外部デバッガ１８０が接続された時のアクセス中のアドレスは“１００Ｈ”であったので、１００Ｈ番地に記憶されている命令コードから読み出し、解読、および命令の実行が行われる。
【０１３７】
このように、一旦認証が成功すると、ＣＰＵ１１０が、命令の実行によって内蔵不揮発性メモリ１２０のデータを外部から読み出せるようになる。また、内蔵不揮発性メモリ１２０のデータをＤＭＡＣ１４１を介して外部デバッガ１８０から読み出すことも可能になる。
【０１３８】
また、上記のように、認証が成功するまでの間、ＣＰＵ１１０が動作を停止し続けるように構成されることによって、上記のようにＣＰＵ１１０の命令の実行中に外部デバッガ１８０が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ１８０がマイクロコンピュータ１００に接続された際のプログラムカウンタの値およびパイプラインの状態で、認証成功時にＣＰＵ１１０に動作を開始させ、デバッグを開始することができる。
【０１３９】
なお、本実施形態において、ＣＰＵ１１０は、データ無効化信号が“１”の時、すべての動作を停止するようになっているが、プログラムカウンタの値を更新する動作が停止されるようになっていれば、必ずしもすべての動作が停止されるようになっていなくてもよい。
【０１４０】
《発明の実施形態７》
図７は、本発明の実施形態７に係るマイクロコンピュータ７００の構成を示すブロック図である。同図に示すように、マイクロコンピュータ７００は、分岐命令格納部１６０に代えてサブルーチン分岐命令格納部７１０を備えている点で実施形態１と異なっている。また、実施形態１のデータ変換部１３０に代えて、データ変換部７２０（メモリ制御部と保護領域アクセス検出部）を備えている。データ変換部７２０は、外部デバッガ１８０が接続されてから認証が成功するまでの間であっても内蔵不揮発性メモリ１２０の一部の領域（非保護領域）のデータはデータバスＢ１０２に出力するようになっている。そして、非保護領域には、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードが記憶されている。
【０１４１】
サブルーチン分岐命令格納部７１０は、上記ＣＰＵ１１０によって解読された場合に内蔵不揮発性メモリ１２０の非保護領域の例えば先頭のアドレスに分岐する命令と解読される命令コードを記憶しており、その命令コードをサブルーチン分岐命令出力バスＢ７０１に出力するようになっている。
【０１４２】
内蔵不揮発性メモリ１２０の非保護領域には、サブルーチン分岐命令格納部７１０に格納された分岐命令の分岐先アドレスの命令で開始し、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令で終了するサブルーチンの命令コードが記憶されている。
【０１４３】
データ変換部７２０は、データ変換信号の値が“１”の場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力するようになっている。データ変換信号の値が“０”になると、ＣＰＵ１１０の最初の読み出し１サイクルでは、サブルーチン分岐命令出力バスＢ７０１のデータをデータバスＢ１０２に出力するようになっている。データ変換信号の値が“０”になってから２サイクル目以降は、アドレスバスＢ１０１に出力されているアドレスが内蔵不揮発性メモリ１２０の非保護領域を示すアドレスである場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力し、保護領域を示すアドレスである場合には、ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードに相当するデータをデータバスＢ１０２に出力するようになっている。
【０１４４】
ＣＰＵ１１０は、データバスＢ１０２からサブルーチンに分岐する命令の命令コードを読み出して解読すると、その時アクセスしているアドレス（プログラムカウンタの値）を記憶し（スタックに退避し）、上記命令の分岐先のアドレスをアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を値“１”にするようになっている。また、データバスＢ１０２からスタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを読み出して解読すると、スタックに退避されていた戻り番地をプログラムカウンタに戻し、その番地（アドレス）をアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を値“１”にするようになっている。
【０１４５】
−動作−
次に、マイクロコンピュータ７００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行が開始され、命令の実行中に外部デバッガ１８０が接続され、その後認証が成功した場合の動作について説明する。
【０１４６】
まず、マイクロコンピュータ７００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。この時、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０の出力であるデータ変換信号は、実施形態１の場合と同様に、“１”となっている。データ変換信号が“１”なので、データ変換部７２０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０は、データバスＢ１０２に出力されるＲＯＭバスＢ１０３のデータの命令コード、すなわち内蔵不揮発性メモリ１２０から出力される命令コードを読み出して解読し、命令を実行する。
【０１４７】
次に、マイクロコンピュータ７００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ１８０が接続された時に、ＣＰＵ１１０のアクセス中のアドレスが“１００Ｈ”である場合について説明する。
【０１４８】
マイクロコンピュータ７００に外部デバッガ１８０が接続されると、認証が成功するまでの間、データ変換信号は“０”となる。したがって、データ変換部７２０は、データ変換信号が“０”になってから最初のＣＰＵ１１０の読み出し１サイクルの期間、サブルーチン分岐命令出力バスＢ７０１のデータ、すなわち上記ＣＰＵ１１０によって解読された場合に内蔵不揮発性メモリ１２０の非保護領域の先頭のアドレスに分岐する命令と解読される命令コードをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０は、データバスＢ１０２から、上記非保護領域の先頭のアドレスに分岐する命令の命令コードを読み出して解読し、アクセス中のアドレス“１００Ｈ”を記憶し（スタックに退避し）、非保護領域の先頭のアドレスをアドレスバスＢ１０１に出力するとともに、リードイネーブル信号の値を“１”にする。データ変換信号が“０”になってから２サイクル目では、アドレスバスＢ１０１に出力されているアドレスが、非保護領域のアドレスであるため、データ変換部７２０は、ＲＯＭバスＢ１０３に出力されている命令コードをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０は、非保護領域の先頭のアドレスに記憶されている命令コードをデータバスＢ１０２から読み出して解読し、命令を実行する。以降、アドレスバスＢ１０１に出力されているアドレスが非保護領域のアドレスである限り、データバスＢ１０２にはＲＯＭバスＢ１０３のデータの命令コード、すなわち内蔵不揮発性メモリ１２０の非保護領域から出力される命令コードがＣＰＵ１１０によって読み出されて解読され、命令が実行される。
【０１４９】
ここで、ＣＰＵ１１０によって読み出された命令コードが、保護領域の所定のデータを読み出す命令の命令コードであった場合に、保護領域のデータが読み出されることなく保護される動作について説明する。
【０１５０】
ＣＰＵ１１０は、保護領域に記憶されたデータを読み出す命令の命令コードを非保護領域から読み出して解読すると、読み出すデータが記憶されているアドレスをアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を“１”にする。一方、データ変換部７２０は、データ変換信号が“０”になってから２サイクル目以降であり、アドレスバスＢ１０１に出力されているアドレスが保護領域のアドレスであるため、ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードに相当するデータをデータバスＢ１０２に出力する。
【０１５１】
また、ＣＰＵ１１０によって読み出された命令コードが、保護領域の所定のアドレスに分岐する命令の命令コードであった場合に、保護領域の命令コードが読み出されることなく保護される動作について説明する。
【０１５２】
ＣＰＵ１１０は、保護領域の所定のアドレスに分岐する命令の命令コードを非保護領域から読み出して解読すると、分岐先のアドレスをアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を“１”にする。一方、データ変換部７２０は、データ変換信号が“０”になってから２サイクル目以降であり、アドレスバスＢ１０１に出力されているアドレスが保護領域のアドレスであるため、ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードをデータバスＢ１０２に出力する。ＣＰＵ１１０は、データバスＢ１０２から上記命令コードを読み出して解読し、何も実行しない。
【０１５３】
このように、外部デバッガ１８０が接続されてから認証が成功するまでの間、保護領域のデータはデータバスＢ１０２に出力されないので、ＤＭＡＣ１４１を介して外部デバッガ１８０から不正に読み出されたり、ＣＰＵ１１０の命令の実行によって外部から読み出されることがない。
【０１５４】
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
【０１５５】
認証成功後、データ変換信号は“１”となる。データ変換信号が“１”なので、データ変換部７２０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、認証成功後は、内蔵不揮発性メモリ１２０から保護領域のデータを読み出すことができる。
【０１５６】
ここで、認証成功後、ＣＰＵ１１０が、外部デバッガ１８０が接続された時にアクセスしていたアドレス“１００Ｈ”へのアクセスを再開する動作について説明する。マイクロコンピュータ７００に外部デバッガ１８０が接続されてから認証が成功するまでの間、非保護領域から出力される命令コードがＣＰＵ１１０によって読み出されて解読され、命令の実行が行われている。ＣＰＵ１１０は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを非保護領域から読み出して解読すると、マイクロコンピュータ７００に外部デバッガ１８０が接続された時に記憶したアドレス“１００Ｈ”をアドレスバスＢ１０１に出力するとともに、リードイネーブル信号の値を“１”にする。このように、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードが非保護領域に記憶されているので、ＣＰＵ１１０は、認証成功後、戻り命令を実行することによって、外部デバッガ１８０が接続された時にアクセスしていたアドレス“１００Ｈ”の命令コードの読み出しを再開できる。したがって、上記のようにＣＰＵ１１０の命令の実行中に外部デバッガ１８０が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ１８０がマイクロコンピュータ１００に接続された際のプログラムカウンタの値で、認証成功後、デバッグを開始することができる。
【０１５７】
上記のように、本実施形態では、実施形態３と同様に、内蔵不揮発性メモリ１２０のデータが、そのアドレスに応じて、データバスＢ１０２に出力されたりされなかったりするように構成されているので、保護したいデータを不正な読み出しから保護しつつ、外部デバッガ１８０がマイクロコンピュータ７００に接続されてから認証が成功するまでの間も、マイクロコンピュータ７００を暴走させることなく、保護の必要がない命令コードをＣＰＵ１１０に実行させることができる。例えば、どんな状況においても即実行される必要がある割り込み処理等の命令コードを非保護領域に記憶させておいてもよい。
【０１５８】
また、本実施形態には、ＣＰＵ１１０が分岐命令を実行する際にその時アクセスしているアドレスをスタックに退避させ、戻り命令を実行する際に退避させていたアドレスをプログラムカウンタに戻すという一般的なＣＰＵ１１０に備えられている仕組みを利用するので、新たな回路を搭載させる必要がなく、回路面積が増大しないという利点がある。
【０１５９】
《発明の実施形態８》
図８は、本発明の実施形態８に係るマイクロコンピュータ８００の構成を示すブロック図である。同図に示すように、同図に示すように、マイクロコンピュータ８００は、データ変換部１３０に代えて、データ無効化部８１０（メモリ制御部と保護領域アクセス検出部）を備え、分岐命令保持部１６０を備えておらず、割り込み制御部８２０を備えている点で実施形態１のマイクロコンピュータ１００と異なっている。
【０１６０】
データ無効化部８１０は、外部デバッガ１８０が接続されてから認証が成功するまでの間であっても内蔵不揮発性メモリ１２０の一部の領域（非保護領域）のデータはデータバスＢ１０２に出力するようになっている。データ無効化信号の値が“０”の場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力するようになっている。データ無効化信号の値が“１”の場合には、アドレスバスＢ１０１に出力されているアドレスが非保護領域を示すアドレスである場合には、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力し、保護領域を示すアドレスである場合には、上記ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードを、データバスＢ１０２に出力するようになっている。
【０１６１】
割り込み制御部８２０は、割り込み要求があると割り込み要求信号として“１”をＣＰＵ１１０に出力し、それ以外の場合は“０”を出力するようになっている。また、複数種類の割り込み要求が発生した場合にはそれらを調停するようになっている。さらに、デバッガＯＮ信号が“１”になったときにも、割り込み要求信号を“１”にするようになっている。
【０１６２】
ここでは、説明を簡単にするために、非保護領域には、デバッガＯＮ信号が“１”になった時に実行される割り込み処理の命令コード（割り込み処理ルーチン）が記憶されているとする。また、割り込み処理の最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令（割り込み復帰命令）であるものとする。
【０１６３】
ＣＰＵ１１０は、入力される割り込み要求信号の値が“１”になると、その時アクセスしているアドレス（プログラムカウンタの値）を記憶し（スタックに退避し）、割り込み処理の命令コードが記憶されているアドレスをアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を値“１”にして、割り込み処理の命令コードの読み出しを開始するようになっている。また、データバスＢ１０２からスタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを読み出して解読すると、スタックに退避されていた戻り番地をプログラムカウンタに戻し、その番地（アドレス）をアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を値“１”にするようになっている。
【０１６４】
−動作−
次に、マイクロコンピュータ８００に外部デバッガ１８０が接続されていない状態でＣＰＵ１１０による命令の実行が開始され、命令の実行途中に外部デバッガ１８０が接続され、その後認証が成功した場合の動作について説明する。
【０１６５】
まず、マイクロコンピュータ８００に外部デバッガ１８０が接続されていない状態で、命令が実行されている時の動作について説明する。
【０１６６】
この時、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０の出力であるデータ無効化信号の値は、実施形態１の場合と同様に、“０”となっている。データ無効化信号が“０”なので、データ無効化部８１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０は、データバスＢ１０２に出力されるＲＯＭバスＢ１０３のデータの命令コード、すなわち内蔵不揮発性メモリ１２０から出力される命令コードを読み出して解読し、命令を実行する。
【０１６７】
次に、マイクロコンピュータ８００に外部デバッガ１８０が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ１８０が接続された時に、ＣＰＵ１１０のアクセス中のアドレスが“１００Ｈ”であり、デバッガＯＮ信号が“１”になった時に実行される割り込み処理の命令コードが非保護領域の２００Ｈ番地に記憶されている場合について説明する。
【０１６８】
外部デバッガ１８０が接続されると、デバッガＯＮ信号が“１”となり、割り込み要求が発生し、割り込み制御部８２０は割り込み要求信号として“１”を出力する。割り込み要求信号が“１”なので、ＣＰＵ１１０は、アクセス中のアドレス“１００Ｈ”を記憶するとともに、１００Ｈ番地からの命令コードの読み出しを中断し、割り込み処理の命令コードが記憶されているアドレス“２００Ｈ”をアドレスバスＢ１０１に出力し、さらにリードイネーブル信号を値“１”にする。そして、割り込み処理の命令コードの読み出しを開始する。また、この時のデータ無効化信号の値は“１”で、かつアドレスバスＢ１０１に出力されているアドレスは非保護領域のアドレス“２００Ｈ”なので、データ無効化部８１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。したがって、ＣＰＵ１１０は、データバスＢ１０２に出力されるＲＯＭバスＢ１０３のデータ、すなわち内蔵不揮発性メモリ１２０の非保護領域から出力される割り込み処理の命令コードを読み出して解読し、命令を実行する。
【０１６９】
ここで、ＣＰＵ１１０によって非保護領域から読み出された命令コードが、保護領域の所定のデータを読み出す命令の命令コードであった場合に、保護領域のデータが読み出されることなく保護される動作について説明する。
【０１７０】
ＣＰＵ１１０は、保護領域の所定のデータを読み出す命令の命令コードを読み出して解読すると、所定のデータを読み出すために、所定のデータが記憶されているアドレスをアドレスバスＢ１０１に出力するとともに、リードイネーブル信号を“１”にする。データ無効化部８１０は、データ無効化信号の値は“１”で、かつアドレスバスＢ１０１に出力されているアドレスが、内蔵不揮発性メモリ１２０の保護領域を示すアドレスなので、ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードを、データバスＢ１０２に出力する。このように、外部デバッガ１８０が接続されてから認証が成功するまでの間、保護領域のデータはデータバスＢ１０２に出力されないので、ＤＭＡＣ１４１を介して外部デバッガ１８０から不正に読み出されたり、ＣＰＵ１１０の命令の実行によって外部から読み出されることがない。
【０１７１】
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
【０１７２】
認証成功後、データ無効化信号は“０”となるので、データ無効化部８１０は、ＲＯＭバスＢ１０３のデータをデータバスＢ１０２に出力する。そして、ＣＰＵ１１０は、内蔵不揮発性メモリ１２０から出力される命令コードをデータバスＢ１０２から読み出して解読し、命令を実行する。このように、認証成功後、ＣＰＵ１１０は内蔵不揮発性メモリ１２０から保護領域のデータも読み出すことができる。
【０１７３】
ここで、認証成功後、ＣＰＵ１１０が、外部デバッガ１８０が接続された時にアクセスしていたアドレス“１００Ｈ”へのアクセスを再開する動作について説明する。
【０１７４】
マイクロコンピュータ８００に外部デバッガ１８０が接続されてから認証が成功するまでの間、非保護領域から出力される命令コードがＣＰＵ１１０によって読み出されて解読され、命令が実行されている。ここで、ＣＰＵ１１０は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを非保護領域から読み出して解読すると、マイクロコンピュータ７００に外部デバッガ１８０が接続された時に記憶したアドレス“１００Ｈ”をアドレスバスＢ１０１に出力するとともに、リードイネーブル信号の値を“１”にする。このように、ＣＰＵ１１０は、認証成功後、外部デバッガ１８０が接続された時にアクセスしていたアドレス“１００Ｈ”の命令コードの読み出しを再開する。したがって、上記のようにＣＰＵ１１０の命令の実行中に外部デバッガ１８０が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ１８０がマイクロコンピュータ１００に接続された際のプログラムカウンタの値で、認証成功後、デバッグを開始することができる。
【０１７５】
上記のように、本実施形態では、実施形態３と同様に、内蔵不揮発性メモリ１２０のデータが、そのアドレスに応じて、データバスＢ１０２に出力されたりされなかったりするように構成されているので、保護したいデータを不正な読み出しから保護しつつ、外部デバッガ１８０がマイクロコンピュータ８００に接続されてから認証が成功するまでの間も、マイクロコンピュータ８００を暴走させることなく、保護の必要がない命令コードをＣＰＵ１１０に実行させることができる。例えば、どんな状況においても即実行される必要がある割り込み処理等の命令コードを非保護領域に記憶させておいてもよい。
【０１７６】
また、外部デバッガ１８０が接続された場合は、他の割り込み要因によって割り込み処理が禁止されて欠落することなく、必ず割り込み処理が行われるように、外部デバッガが接続された際に発生する割り込みをノンマスカブル割り込みにしてもよい。この方法であれば、一般的な割り込み制御回路に新たな機能を付加することなく、実施形態４と同様に、外部デバッガ１８０が接続されてから認証が成功するまでの間、ＣＰＵ１１０が他の割り込み要因による割り込みを受け付けないため、他の割り込み要因による割り込み処理の欠落を防止できる。
【０１７７】
また、本実施形態には、割り込みが発生するとその時アクセスしているアドレスをスタックに退避させ、戻り命令を実行する際に退避させていたアドレスをプログラムカウンタに戻すという一般的なＣＰＵ１１０に備えられている仕組みを利用するので、新たな回路を搭載させる必要がなく、回路面積が増大しないという利点がある。
【０１７８】
《その他の実施形態》
上記各実施形態に係るマイクロコンピュータは、１チップで構成されてもよいし、複数のチップで構成されるとともに、ＣＰＵ１１０と内蔵不揮発性メモリ１２０との間のバスの信号を外部から物理的に読み出せないようになっているものであってもよい。
【０１７９】
また、実施形態２においては、連続して実行されるべき内蔵不揮発性メモリ１２０の一連の命令の途中で実行が中断されることを防止するために、分岐命令の命令コードが解読された後に、不正な読み出しからの保護が開始されるようにしているが、これに限るものではない。つまり、一連の命令が連続して実行されないことが許容されるタイミング以降に不正な読み出しからの保護が開始されるようにすればよいので、例えば、ＣＰＵ１１０に割り込み要求信号が入力されてもマスクされないタイミングで保護が開始されるようにしてもよい。
【０１８０】
また、実施形態３、７、８の図３、７、８では内蔵不揮発性メモリ１２０が２つの領域に分割されているが、２つに限らず、３つ以上の領域に分割されていてもよい。また、各領域は、外部デバッガ１８０がマイクロコンピュータ３００に接続されてから認証が成功するまでの間、読み出し可能とするかどうかが固定的に設定されるのに限らず、可変に設定できるようにしてもよい。具体的には、例えばＩ／ＯデータバスＢ１０５によって設定可能なレジスタの値に応じて、読み出し可能かどうかが判別されるようにしてもよい。さらに、内蔵不揮発性メモリ１２０を複数の領域に分割するのではなく、複数の内蔵不揮発性メモリを用いるようにしたりしてもよい。
【０１８１】
なお、実施形態５、６、７、８において、データ無効化部５１０、データ変換部７２０、およびデータ無効化部８１０は、それぞれ、内蔵不揮発性メモリ１２０から出力されるＲＯＭバスＢ１０３のデータに代えて、上記ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードをデータバスＢ１０２に出力することによって、内蔵不揮発性メモリ１２０のデータが内蔵不揮発性メモリ１２０の外部から読み出されることを防止していたが、データが読み出されることを防止できれば必ずしも上記方法でなくてもよい。例えば、リードイネーブル信号が“１”にならないようにしたり、ＣＰＵ１１０が出力するアドレスが内蔵不揮発性メモリ１２０に入力されないようにすることによって、内蔵不揮発性メモリ１２０のデータが読み出されることを防止してもよい。また、上記ＣＰＵ１１０によって解読された場合に何も実行しないことを示す命令と解読される命令コードではなく、他の所定のデータがＲＯＭバスＢ１０３のデータに代えてデータバスＢ１０２に出力されるようにしてもよい。
【０１８２】
また、実施形態５のバス要求保持部５２０において、バス要求保持信号がＥｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０に入力されるようになっていたが、バス要求保持信号に代えて、バス要求信号がＥｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０に直接入力されるようにしてもよい。すなわち、実施形態５では、ＤＭＡＣ１４１が一度ＣＰＵ１１０にアクセスすると認証が成功するまでずっと内蔵不揮発性メモリ１２０のデータが外部から読み出されない状態になっていたのに対し、バス要求信号がＥｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０に直接入力されるようにバス要求保持部５２０を構成した場合、ＤＭＡＣ１４１がＣＰＵ１１０にアクセスするタイミング毎に、内蔵不揮発性メモリ１２０のデータが外部から読み出されない状態になる。
【０１８３】
また、実施形態５では、ＤＭＡが開始される時に、内蔵不揮発性メモリ１２０のデータの保護が開始される例を示したが、これに限らず、保護開始のタイミングは、外部デバッガ１８０の接続後、内蔵不揮発性メモリ１２０の保護すべきデータが外部デバッガ１８０からの制御によって外部から読み出されるおそれがある動作が開始されるまでの間であってもよい。
【０１８４】
あるいは、内蔵不揮発性メモリ１２０の保護すべきデータが外部デバッガ１８０からの制御によって外部から読み出されるおそれがある動作が開始されてから認証が成功するまでの間、保護状態が継続されるのに限らず、上記動作が行われる期間毎に保護状態になるようにしてもよい。
【０１８５】
また、実施形態６のようにＣＰＵ１１０を停止する場合に、実施形態４のように割り込み制御部によって割り込み要求信号がマスクされるように構成されていてもよい。
【０１８６】
さらに、上記すべての実施形態においては、データ変換部やデータ無効化部によって内蔵不揮発性メモリ１２０から出力されるデータが所定のデータに置き換えられることによって、内蔵不揮発性メモリ１２０のデータがマイクロコンピュータの外部に出力されることが阻止されていたが、その他の方法で阻止されるようにしてもよい。例えば、外部デバッガ１８０からマイクロコンピュータにデータが入力されたり出力されることが阻止されるようにすることによって、内蔵不揮発性メモリ１２０のデータがマイクロコンピュータの外部に出力されることを阻止してもよい。
【０１８７】
また、各実施形態において、Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路１７０に代えて、ＮＡＮＤ回路を用いてもよい。同様に、Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路５３０に代えて、ＡＮＤ回路を用いてもよい。ＮＡＮＤ回路やＡＮＤ回路を用いた場合、認証成功後にデバッグが終了して外部デバッガ１８０をマイクロコンピュータから外した後も、内蔵不揮発性メモリ１２０のデータをマイクロコンピュータの外部から読み出すことが可能となる。
【０１８８】
なお、上記実施形態で説明した構成要素は、論理的に可能な範囲で種々組み合わせてもよい。例えば、実施形態１、２、３、５、６、７のうちのいずれかのマイクロコンピュータの構成で、さらに、実施形態４で示したように、内蔵不揮発性メモリ１２０のデータが外部からの読み出しから保護される間、割り込みがマスクされるようになっていてもよい。あるいは、実施形態２、４、５、６の各マイクロコンピュータを、実施形態３のように、内蔵不揮発性メモリ１２０の保護領域のデータは外部からの読み出しから保護されるが、非保護領域のデータは常に読み出されるように構成してもよい。
【産業上の利用可能性】
【０１８９】
本発明に係るマイクロコンピュータは、デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、リセット後の状態ではなく通常動作時の状態でデバッグを開始できるという効果を有し、例えば、マイクロコンピュータが内蔵する不揮発性メモリ等に記憶されたプログラムやデータを、不正な読み出しから保護する技術等として有用である。
【図面の簡単な説明】
【０１９０】
【図１】本発明の実施形態１に係るマイクロコンピュータ１００の構成を示すブロック図である。
【図２】本発明の実施形態２に係るマイクロコンピュータ２００の構成を示すブロック図である。
【図３】本発明の実施形態３に係るマイクロコンピュータ３００の構成を示すブロック図である。
【図４】本発明の実施形態４に係るマイクロコンピュータ４００の構成を示すブロック図である。
【図５】本発明の実施形態５に係るマイクロコンピュータ５００の構成を示すブロック図である。
【図６】本発明の実施形態６に係るマイクロコンピュータ６００の構成を示すブロック図である。
【図７】本発明の実施形態７に係るマイクロコンピュータ７００の構成を示すブロック図である。
【図８】本発明の実施形態８に係るマイクロコンピュータ８００の構成を示すブロック図である。
【符号の説明】
【０１９１】
１００  マイクロコンピュータ
１１０  ＣＰＵ
１２０  内蔵不揮発性メモリ
１３０  データ変換部
１４０  ＯＣＤ回路
１４１  ＤＭＡＣ
１５０  認証部
１６０  分岐命令格納部
１７０  Ｅｘｃｌｕｓｉｖｅ  ＯＲ回路
２００  マイクロコンピュータ
２１０  解読部
２２０  分岐保持部
３００  マイクロコンピュータ
３１０  データ変換部
４００  マイクロコンピュータ
４１０  割り込み制御部
５００  マイクロコンピュータ
５１０  データ無効化部
５２０  バス要求保持部
５３０  Ｅｘｃｌｕｓｉｖｅ  ＮＯＲ回路
６００  マイクロコンピュータ
７００  マイクロコンピュータ
７１０  サブルーチン分岐命令格納部
７２０  データ変換部
８００  マイクロコンピュータ
８１０  データ無効化部
８２０  割り込み制御部
Ｂ１０１  アドレスバス
Ｂ１０２  データバス
Ｂ１０３  ＲＯＭバス
Ｂ１０４  分岐命令出力バス
Ｂ１０５  Ｉ／Ｏデータバス
Ｂ７０１  サブルーチン分岐命令出力バス
【図１】
2007249323.tif 000003
【図２】
2007249323.tif 000004
【図３】
2007249323.tif 000005
【図４】
2007249323.tif 000006
【図５】
2007249323.tif 000007
【図６】
2007249323.tif 000008
【図７】
2007249323.tif 000009
【図８】
2007249323.tif 000010