JP2007249323A - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP2007249323A
JP2007249323A JP2006068658A JP2006068658A JP2007249323A JP 2007249323 A JP2007249323 A JP 2007249323A JP 2006068658 A JP2006068658 A JP 2006068658A JP 2006068658 A JP2006068658 A JP 2006068658A JP 2007249323 A JP2007249323 A JP 2007249323A
Authority
JP
Japan
Prior art keywords
microcomputer
data
memory
cpu
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006068658A
Other languages
English (en)
Inventor
Yutaka Ito
裕 伊藤
Yasuhiro Nagira
康宏 柳樂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006068658A priority Critical patent/JP2007249323A/ja
Priority to US11/717,644 priority patent/US20070220337A1/en
Publication of JP2007249323A publication Critical patent/JP2007249323A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/321Display for diagnostics, e.g. diagnostic result display, self-test user interface

Abstract

【課題】デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、マイクロコンピュータのデバッグを開始する際に、デバッグ開始前の状態を維持したまま、または再現してデバッグできるようにする。
【解決手段】マイクロコンピュータ100において、外部デバッガ180が接続されると、デバッガON信号が“1”になる。セキュリティ信号は、認証が成功する前は、“1”であり、認証が成功すると“0”になる。データ変換信号が“0”の場合、データ変換部130は、分岐命令格納部160から出力される相対アドレスが0である領域に分岐する命令の命令コードをデータバスB102に出力する。データ変換信号が“1”になると、データ変換部130は、ROMバスB103のデータをデータバスB102に出力する。
【選択図】図1

Description

本発明は、マイクロコンピュータが内蔵する不揮発性メモリ等に記憶されたプログラムやデータを、不正な読み出しから保護する技術に関するものである。
マイクロコンピュータには、デバッグ機能と認証機能を有するものがある(特許文献1参照。)。
それは、リセットされた後、メモリに記憶されたプログラムのデバッグが不可能な状態、すなわちマイクロコンピュータのメモリの情報が外部から読み出されないセキュリティ状態になり、そして、認証が成功することによって、デバッグ可能な状態になるものである。
特開2000−347942号公報
しかしながら、上記のようなマイクロコンピュータでは、デバッグを開始するのにリセットが必要とされるために、基板に実装されて通常動作をしている時に生じた不具合の原因を調べるためのデバッグが困難であった。なぜなら、デバッグ時には、不具合が生じた時の状態がリセットによって消去されているからである。
本発明は、上記の点に鑑み、デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、リセット後の状態ではなく通常動作時の状態でデバッグを開始できるようにすることを目的とする。
上記の課題を解決するため、請求項1の発明は、
メモリと、
上記メモリに記憶された記憶データを解読し、命令を実行するCPUとを備えたマイクロコンピュータであって、
マイクロコンピュータに接続された外部デバッグ指示装置からの指示に応じて、マイクロコンピュータにデバッグ動作を行わせるデバッグ制御部と、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記デバッグ動作が行われることを許可するかどうかの認証を行う認証部と、
を備え、
上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記メモリの記憶データがマイクロコンピュータの外部に出力されることが阻止されるように構成されていることを特徴とする。
これにより、通常動作時に外部デバッグ指示装置が接続された後、認証が行われるので、通常動作時の状態でデバッグできる。また、認証が成功するまでの間、メモリの記憶データが、マイクロコンピュータの外部から読み出されない。
請求項2の発明は、
請求項1のマイクロコンピュータであって、さらに、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するメモリ制御部を備えていることを特徴とする。
請求項3の発明は、
請求項2のマイクロコンピュータであって、
上記メモリ制御部は、上記メモリに、上記記憶データに係わらず所定のデータを出力させることによって、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とする。
これらにより、メモリの記憶データは、メモリ自体から出力されることがないので、マイクロコンピュータの外部に読み出されることが確実に防止される。
請求項4の発明は、
請求項3のマイクロコンピュータであって、
上記所定のデータは、上記CPUによって解読された場合に、相対アドレスが0である領域に分岐する命令と解読されるデータであることを特徴とする。
これにより、外部デバッグ指示装置が接続されてから認証が成功するまでの間、外部デバッグ指示装置が接続された時にCPUがアクセスしていたメモリのアドレスへの分岐命令が、メモリから出力されてCPUに実行され続ける。この間、メモリの記憶内容の読み出しが防止されるとともに、プログラムカウンタの値が同じ値に保たれる。したがって、認証成功後、外部デバッグ指示装置が接続された時にCPUがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
請求項5の発明は、
請求項4のマイクロコンピュータであって、
さらに、上記CPUによって分岐命令が実行されることを検出する分岐命令検出部を備え、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記分岐命令検出部によって分岐命令が検出されてから、上記認証が成功するまでの間、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とする。
これにより、上記CPUによって解読された場合に、相対アドレスが0である領域に分岐する命令と解読されるデータをCPUが実行することで、パイプライン動作が乱れて命令実行タイミングが変わってしまうことを回避することができる。
請求項6の発明は、
請求項4のマイクロコンピュータであって、
さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記保護領域がアクセスされたことが検出されてから、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とする。
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをCPUに実行させることができる。そして、保護領域がアクセスされた後に、メモリの記憶データの不正な読み出しからの保護が開始される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
請求項7の発明は、
請求項6のマイクロコンピュータであって、
上記メモリの保護領域以外の領域に、割り込み処理の命令が記憶されていることを特徴とする。
これにより、外部デバッグ指示装置が接続されてからメモリの所定の領域がアクセスされるまでの認証手続き中にも、割り込み処理の命令をCPUに実行させることができる。
請求項8の発明は、
請求項4のマイクロコンピュータであって、
さらに、上記メモリ制御部が上記メモリに上記所定のデータを出力させている間、上記CPUに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とする。
これにより、メモリ制御部がメモリに所定のデータを出力させている間、CPUは割り込み処理を行えないことになるが、割り込み要求自体がマスクされて未受け付けのままにされるので、割り込み処理の欠落を回避できる。
請求項9の発明は、
請求項3のマイクロコンピュータであって、
上記所定のデータは、上記CPUによって解読された場合に、何も実行しないことを示す命令と解読されるデータであることを特徴とする。
請求項10の発明は、
請求項3のマイクロコンピュータであって、
さらに、上記CPUを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記メモリ制御部は、上記外部デバッグ指示装置が接続されてから上記認証が成功するまでの間であって、さらに上記ダイレクトメモリアクセスコントローラによる上記メモリへのアクセスが行われる場合に、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とする。
これにより、ダイレクトメモリアクセスコントローラがメモリへのアクセスを開始してから、メモリの記憶データの不正な読み出しからの保護が開始される。したがって、ダイレクトメモリアクセスコントローラによるメモリの記憶データの読み出しは必ず防止される。
請求項11の発明は、
請求項2のマイクロコンピュータであって、
上記メモリ制御部は、上記外部デバッグ装置が接続された後であってかつ所定のタイミング以降に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とする。
請求項12の発明は、
請求項11のマイクロコンピュータであって、
上記所定のタイミングは、一連の命令が連続して実行されないことが許容されるタイミングであることを特徴とする。
請求項13の発明は、
請求項12のマイクロコンピュータであって、
上記メモリの一連の命令が連続して実行されないことが許容されるタイミングは、上記CPUに対する割り込み要求信号がマスクされていないタイミングであることを特徴とする。
請求項14の発明は、
請求項12のマイクロコンピュータであって、
上記所定のタイミングは、上記CPUが分岐命令を実行するタイミングであることを特徴とする。
これらにより、パイプライン処理において連続して実行されるべき命令の途中で実行が中断されることが防がれる。
請求項15の発明は、
請求項11のマイクロコンピュータであって、
上記所定のタイミングは、上記CPUが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とする。
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをCPUに実行させることができる。そして、保護領域がアクセスされた後に、メモリの記憶データの不正な読み出しからの保護が開始される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
請求項16の発明は、
請求項11のマイクロコンピュータであって、
さらに、上記CPUを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリへのアクセスを開始するタイミングであることを特徴とする。
これにより、ダイレクトメモリアクセスコントローラがメモリへのアクセスを開始してから、メモリの記憶データの不正な読み出しからの保護が開始される。したがって、ダイレクトメモリアクセスコントローラによるメモリの記憶データの読み出しは必ず防止される。
請求項17の発明は、
請求項2のマイクロコンピュータであって、
上記メモリ制御部は、上記外部デバッグ装置が接続された後、所定のタイミング毎に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とする。
請求項18の発明は、
請求項17のマイクロコンピュータであって、
上記所定のタイミングは、上記CPUが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とする。
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをCPUに実行させることができる。そして、保護領域がアクセスされている間、メモリの記憶データが不正な読み出しから保護される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
請求項19の発明は、
請求項18のマイクロコンピュータであって、
上記メモリ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続された後の最初の読み出しサイクルで、上記メモリに、上記記憶データを、上記CPUによって解読された場合に所定のサブルーチンに分岐する命令と解読されるデータに置き換えて出力させるように構成されていることを特徴とする。
これにより、外部デバッグ指示装置が接続されると最初の読み出しサイクルで、CPUは、その時にアクセス中のアドレスをスタックに退避させる。
請求項20の発明は、
請求項19のマイクロコンピュータであって、
上記所定のサブルーチンの最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とする。
これにより、認証成功後、スタックに退避されていた戻り番地がプログラムカウンタに戻されるので、外部デバッグ指示装置が接続された時にCPUがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
請求項21の発明は、
請求項18のマイクロコンピュータであって、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記CPUは割り込み処理を実行することを特徴とする。
これにより、外部デバッグ指示装置が接続されると、CPUは、割り込み処理を開始し、その時にアクセス中のアドレスをスタックに退避させる。
請求項22の発明は、
請求項21のマイクロコンピュータであって、
上記割り込み処理の最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とする。
これにより、認証成功後、スタックに退避されていた戻り番地がプログラムカウンタに戻されるので、外部デバッグ指示装置が接続された時にCPUがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
請求項23の発明は、
請求項21のマイクロコンピュータであって、上記CPUに発生する上記割り込みは、ノンマスカブル割り込みであることを特徴とする。
これにより、外部デバッグ指示装置が接続された時に発生する割り込みの処理は確実に実行される。
請求項24の発明は、
請求項17のマイクロコンピュータであって、
さらに、上記CPUを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリにアクセスするタイミングであることを特徴とする。
これにより、ダイレクトメモリアクセスコントローラがメモリにアクセスする時に、メモリの記憶データの不正な読み出しからの保護が行われるので、外部デバッグ指示装置が接続されてから認証が成功するまでの間であっても、ダイレクトメモリアクセスコントローラがメモリにアクセスしていない時は、CPUはメモリの命令コードを読み出して、命令を実行できる。
請求項25の発明は、
請求項2のマイクロコンピュータであって、
さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
上記メモリ制御部は、上記外部デバッグ指示装置が接続された後であって、かつ上記保護領域がアクセスされたことが検出されている間、上記保護領域に記憶された記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とする。
これにより、外部デバッグ指示装置が接続された後、メモリの保護領域以外の領域がアクセスされている間は、保護の必要がない命令コードをCPUに実行させることができる。そして、保護領域がアクセスされている間、メモリの記憶データが不正な読み出しから保護される。保護領域に記憶されたデータは、マイクロコンピュータの外部に読み出されることが防止される。
請求項26の発明は、
請求項2のマイクロコンピュータであって、
マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記CPUに入力される割り込み要求信号がマスクされるように構成されていることを特徴とする。
これにより、メモリの記憶データが不正な読み出しから保護されている間、CPUには割り込み要求信号が入力されないので、CPUから割り込みを受け入れたことを示す信号が出力されたにもかかわらず、割り込み処理が行われないことによる割り込み処理の欠落を回避できる。
請求項27の発明は、
請求項1のマイクロコンピュータであって、
上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記CPUの動作を停止させるように構成されていることを特徴とする。
これにより、外部デバッグ指示装置が接続されてから認証が成功するまでの間、CPUは動作を停止する。したがって、認証が成功するまでの間、CPUの命令の実行によってメモリの記憶データがマイクロコンピュータの外部に出力されることがない。この間、プログラムカウンタの値は同じ値に保たれる。よって、認証成功後、外部デバッグ指示装置が接続された時にCPUがアクセスしていたメモリのアドレスから、デバッグを開始することができる。
請求項28の発明は、
請求項27のマイクロコンピュータであって、
さらに、上記CPUの動作が停止している間、上記CPUに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とする。
これにより、メモリの記憶データが不正な読み出しから保護されている間、CPUは割り込み処理を行えないことになるが、割り込み要求自体がマスクされて未受け付けのままにされるので、割り込み処理の欠落を回避できる。
請求項29の発明は、
請求項1のマイクロコンピュータであって、
上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、マイクロコンピュータから上記外部デバッグ指示装置へデータが出力されるのを阻止するようになっていることを特徴とする。
これにより、外部デバッグ指示装置が接続されてから、認証が成功するまでの間、マイクロコンピュータから外部デバッガへデータが出力されることがない。
本発明によると、デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、リセット後の状態ではなく通常動作時の状態でデバッグを開始できる。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の各実施形態において、他の実施形態と同様の機能を有する構成要素については同一の符号を付して説明を省略する。
《発明の実施形態1》
図1は、本発明の実施形態1に係るマイクロコンピュータ100の構成を示すブロック図である。
マイクロコンピュータ100は、CPU110(Central Processing Unit)、内蔵不揮発性メモリ120(メモリ)、データ変換部130(メモリ制御部)、OCD回路140(On Chip Debug回路)(デバッグ制御部)、認証部150、分岐命令格納部160、およびExclusive OR回路170を備えている。また、デバッグ時にはマイクロコンピュータ100の外部にある外部デバッガ180(外部デバッグ指示装置)と接続される。
CPU110は、内蔵不揮発性メモリ120から命令コードを読み出して解読し、命令を実行することにより、各種制御を行うようになっている。命令コードの読み出しは、アドレスバスB101に、読み出す命令コードが格納されている領域のアドレスを出力し、さらにリードイネーブル信号を値“1”にすることによって行われる。読み出された命令コードは、ROMバスB103およびデータバスB102を介して、CPU110に読み込まれる。さらに、CPU110にはDMAC141からバス要求信号が入力されており、CPU110はバス要求信号の値が“1”になると、動作を停止するようになっている。
内蔵不揮発性メモリ120は、命令コードおよびその他のデータを記憶しており、リードイネーブル信号が値“1”である場合、アドレスバスB101に出力されているアドレスによって指定されるメモリ領域に格納されている命令コードやその他のデータをROMバスB103に出力するようになっている。ROMバスB103は、データ変換部130にしかつながっていない。
データ変換部130は、データ変換信号の値が“1”の場合には、ROMバスB103のデータをデータバスB102に出力し、データ変換信号の値が“0”の場合には、分岐命令出力バスB104のデータをデータバスB102に出力するようになっている。
OCD回路140は、外部デバッガ180にシリアル信号を出力したり、外部デバッガ180からシリアル信号を受信するようになっている。また、外部デバッガ180から受信した信号に応じて、マイクロコンピュータ100の内部状態をモニターするようになっている。また、OCD回路140は、デバッガON信号を出力し、外部デバッガ180と接続されていない場合にはデバッガON信号の値を“0”にし、外部デバッガ180と接続されている場合にはデバッガON信号の値を“1”にするようになっている。さらに、OCD回路140は、アドレスバスB101とデータバスB102に接続されたDMAC141(Direct Memory Access Controller)を備えている。
DMAC141は、外部デバッガ180にシリアル信号を出力したり、外部デバッガ180からシリアル信号を受信するようになっている。そして、外部デバッガ180による所定の制御により、内蔵不揮発性メモリ120に記憶されているデータをCPU110を介さずに読み出し、シリアル信号に変換して外部デバッガ180に出力するようになっている。DMAC141は、このように内蔵不揮発性メモリ120のデータをCPU110を介さずに読み出す際、外部デバッガ180による制御によって、バス要求信号の値を“1”にし、CPU110の動作を停止させるようになっている。そして、CPU110が動作を停止すると、アドレスバスB101に、内蔵不揮発性メモリ120における読み出したい命令コードが格納されているアドレスを出力し、さらにリードイネーブル信号を値“1”にすることによって内蔵不揮発性メモリ120のデータをデータバスB102から読み出すようになっている。
認証部150は、セキュリティ信号を出力し、認証が成功するまでセキュリティ信号を初期値の“1”にし、認証が成功するとセキュリティ信号を値“0”にするようになっている。なお、セキュリティ信号等、種々の信号が初期化されるのは、例えば、マイクロコンピュータ100の電源がONになる時や、外部デバッガ180が接続された時である。
認証部150で行う認証の方法としては、例えば、認証部にあらかじめ格納された認証コードとデバッガから入力される認証コードとを比較する方法が用いられる。
分岐命令格納部160は、CPU110によって解読された場合に、相対アドレスが0である領域に分岐する命令と解読される命令コードを記憶しており、その命令コードを分岐命令出力バスB104に出力するようになっている。ここで、相対アドレスが0である領域に分岐する命令と解読される命令コードとは、すなわちCPU110がアクセス中のアドレスへの分岐命令を示す命令コードであり、例えば、“jr +0”といった命令である。
Exclusive OR回路170は、入力される2つの信号の排他的論理和をデータ変換信号として出力するようになっている。本実施形態では、デバッガON信号とセキュリティ信号がExclusive OR回路170に入力される。
−動作−
まず、上記のように構成されたマイクロコンピュータ100におけるCPU110の命令実行動作について説明する。なお、この動作は、以下の各実施形態において同様である。
CPU110は、内蔵不揮発性メモリ120から命令コードを読み出すために、アドレスバスB101に読み出す命令コードが格納されているアドレス、例えばアドレス“100H”(“H”は16進表記であることを示す。)を出力し、さらにリードイネーブル信号を値“1”にする。そして、データバスB102から命令コードを読み出して解読し、命令を実行する。
次に、DMAC141によって、内蔵不揮発性メモリ120に記憶されているデータが読み出される動作について説明する。この動作も、以下の各実施形態において同様である。
DMAC141は、内蔵不揮発性メモリ120からデータを読み出すために、バス要求信号の値を“1”にするとともに、アドレスバスB101に読み出したい命令コードが格納されているアドレス、例えばアドレス“100H”を出力し、さらにリードイネーブル信号を値“1”にする。そして、データバスB102からデータを読み出し、シリアル信号に変換して外部デバッガ180に出力する。
次に、マイクロコンピュータ100に外部デバッガ180が接続されていない状態でCPU110による命令の実行動作が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功する場合の動作について説明する。
まず、マイクロコンピュータ100に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。
この時、認証部150は、まだ認証が成功していないので、セキュリティ信号として“1”を出力し、OCD回路140は、外部デバッガ180が接続されていないので、デバッガON信号として“0”を出力する。セキュリティ信号が“1”、デバッガON信号が“0”なので、Exclusive OR回路170の出力であるデータ変換信号は“1”となり、データ変換部130は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110はROMバスB103のデータ、すなわち、内蔵不揮発性メモリ120から出力されたデータを読み出す。読み出したデータが命令コードである場合、解読して命令を実行する。
次に、マイクロコンピュータ100に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ180が接続された時に、CPU110のアクセス中のアドレスが“100H”である場合について説明する。
この間、認証部150は、まだ認証が成功していないので、セキュリティ信号として“1”を出力し、OCD回路140は、外部デバッガ180が接続されたので、デバッガON信号として“1”を出力する。セキュリティ信号が“1”、デバッガON信号が“1”なので、Exclusive OR回路170の出力であるデータ変換信号は“0”となり、データ変換部130は、分岐命令出力バスB104のデータをデータバスB102に出力する。分岐命令出力バスB104のデータ、すなわち、分岐命令格納部160に記憶された命令コードは、CPU110によって読み出されて解読され、命令が実行される。
このように、認証が成功していない場合は、内蔵不揮発性メモリ120から出力された命令コードの命令が実行されないので、内蔵不揮発性メモリ120に記憶されたデータをI/OデータバスB105に出力する命令、例えば、“mov mem reg, mov reg out”というような命令が実行されることがない。つまり、内蔵不揮発性メモリ120に記憶されたデータが、CPU110の命令の実行による不正な読み出しから保護される。
さらに、データバスB102に出力されているデータは内蔵不揮発性メモリ120から出力されたものではないので、内蔵不揮発性メモリ120から出力されたデータが、DMAC141によって読み出されることもない。したがって、認証が成功するまで、内蔵不揮発性メモリ120のデータがDMAC141を介して外部デバッガ180に出力されることも防止される。
また、この間にCPU110が読み出す分岐命令格納部160に記憶された命令コードは、CPU110によって解読された場合に、相対アドレスが0である領域に分岐する命令と解読される命令コードである。したがって、外部デバッガ180がマイクロコンピュータ100に接続された時に、CPU110のアクセス中のアドレス、すなわちプログラムカウンタの値は“100H”なので、CPU110は、100H番地への分岐命令に相当する命令を実行する。すなわち、CPU110は、分岐命令の実行動作として、アドレスバスB101にアドレス“100H”を出力し、リードイネーブル信号を値“1”にする。CPU110は認証が成功するまで、上記分岐命令格納部160に記憶された命令コードの読み込みと分岐命令の実行動作とを繰り返す。
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
認証成功後、認証部150はセキュリティ信号として“0”を出力し、OCD回路140は、外部デバッガ180が接続されたままなので、デバッガON信号として“1”を出力する。セキュリティ信号が“0”、デバッガON信号が“1”なので、Exclusive OR回路170の出力であるデータ変換信号は“1”となり、データ変換部130は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110はROMバスB103のデータ、すなわち、内蔵不揮発性メモリ120から出力された命令コードを解読し、命令を実行する。ここで、認証が成功した時、データバスB102に出力される命令コードはROMバスB103のデータとなるが、アドレスバスB101にはアドレス“100H”が出力されているため、ROMバスB103のデータは内蔵不揮発性メモリ120の100H番地に格納された命令コードとなる。したがって、認証成功後、CPU110は、100H番地に格納された命令コードから順に、読み出して解読し、命令を実行する。
このように、認証が成功するまでの間、CPU110がアクセス中のアドレスへの分岐命令を実行し続けるように構成されることによって、上記のようにCPU110の命令の実行中に外部デバッガ180が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、認証成功時に、外部デバッガ180がマイクロコンピュータ100に接続された際のプログラムカウンタの値でデバッグを開始することができる。
《発明の実施形態2》
図2は、本発明の実施形態2に係るマイクロコンピュータ200の構成を示すブロック図である。同図に示すように、マイクロコンピュータ200は、実施形態1のマイクロコンピュータ100の構成に加え、解読部210、および分岐保持部220を備えている。
解読部210(分岐命令検出部)は、CPU110の内部に備えられ、CPU110がデータバスB102から読み出した命令コードを解読し、分岐命令の命令コードであれば“1”、分岐命令の命令コードでなければ“0”を分岐信号として出力するようになっている。
分岐保持部220(メモリ制御部の一部)は、初期値が“0”で、デバッガON信号が“1”の状態で分岐信号が“1”になると、その後初期化されるまで“1”のままになる分岐保持信号を出力するようになっている。
−動作−
次に、マイクロコンピュータ200に外部デバッガ180が接続されていない状態でCPU110による命令の実行が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功する場合のマイクロコンピュータ200の動作について説明する。
まず、マイクロコンピュータ200に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。
この時、実施形態1の場合と同様に、認証部150は、セキュリティ信号として“1”を出力し、OCD回路140は、デバッガON信号として“0”を出力している。デバッガON信号が“0”なので、分岐信号の値に関わらず、分岐保持部220は分岐保持信号として“0”を出力する。また、セキュリティ信号が“1”であり、分岐保持信号が“0”なので、Exclusive OR回路170の出力であるデータ変換信号は“1”となり、データ変換部130は、ROMバスB103のデータをデータバスB102に出力する。
次に、マイクロコンピュータ200に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。
この間、実施形態1の場合と同様に、認証部150はセキュリティ信号として“1”を出力し、OCD回路140は、デバッガON信号として“1”を出力する。外部デバッガ180が接続されてから初めて分岐命令の命令コードが解読されるまでは、分岐信号が“0”であり、分岐保持信号は“0”となるので、Exclusive OR回路170の出力であるデータ変換信号は“1”となり、データ変換部130は、ROMバスB103のデータをデータバスB102に出力する。また、分岐命令の命令コードが解読部210によって解読されると、分岐信号が“1”となり、分岐保持信号は“1”となるので、Exclusive OR回路170の出力であるデータ変換信号は“0”となり、データ変換部130は、分岐命令出力バスB104のデータをデータバスB102に出力する。例えば、外部デバッガ180が接続された後に内蔵不揮発性メモリ120からCPU110に出力されるデータが、200H番地への分岐命令の命令コードになると、CPU110の解読部210が、当該命令コードを解読し、分岐信号として“1”を出力するとともに、CPU110は、解読された分岐命令を実行する。ここで、分岐信号が“1”となったためにデータバスB102には分岐命令出力バスB104のデータ、すなわち分岐命令格納部160に記憶された命令コードが出力されている。したがって、CPU110が分岐命令を実行し、アドレス“200H”をアドレスバスB101に出力しても、200H番地の命令コードを読み込むことはできない。CPU110が読み込むのは、分岐命令格納部160から出力されるデータ、すなわち、CPU110によって解読された場合に、相対アドレスが0である領域に分岐する命令と解読される命令コードである。また、その後も分岐保持信号は“1”であり続けるので、データ変換部130は、分岐命令出力バスB104のデータをデータバスB102に出力し続ける。したがって、認証が成功するまでCPU110は200H番地への分岐命令を実行し続ける。この間、内蔵不揮発性メモリ120に記憶されたデータは、外部からの不正な読み出しから保護される。すなわち、実施形態1で説明したように、CPU110の命令の実行によって不正に読み出されたり、DMAC141を介して外部デバッガ180に不正に出力されることがない。また、不正な読み出しからの保護が分岐命令の命令コードが解読された後に開始されることにより、CPU110におけるパイプライン動作が乱れて命令実行タイミングが変わってしまうことを回避することができる。
さらに、その後所定の認証手続きが行われて認証が成功した後の動作について説明する。
認証成功後、認証部150はセキュリティ信号として“0”を出力する。一方、分岐保持信号は“1”であり続けるので、Exclusive OR回路170の出力であるデータ変換信号は“1”となり、データ変換部130は、ROMバスB103のデータをデータバスB102に出力する。上記例のように、認証が成功するまでCPU110が200H番地への分岐命令を実行し続けていた場合、認証が成功すると、200H番地の命令コードから順に、読み出されて解読され、命令の実行が行われる。
このように、認証が成功するまでの間、CPU110がアクセス中のアドレスへの分岐命令を実行し続けるように構成されることによって、上記のようにCPU110の命令の実行中に外部デバッガ180が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ180がマイクロコンピュータ200に接続された際のプログラムカウンタの値で、認証成功時にデバッグを開始することができる。さらに、外部デバッガ180が接続された後、分岐命令が解読されてから、内蔵不揮発性メモリ120から出力されるデータが相対アドレスが0である領域に分岐する命令の命令コードに置換されるので、認証成功後、外部デバッガ180が接続された時と同じパイプラインの状態で、分岐命令以降の命令が実行されるとともに、デバッグを開始することができる。より詳しくは、認証後に実行される命令は、外部デバッガ180が接続されなかった場合と同じく、直前の分岐命令によってパイプラインがフラッシュされた状態でフェッチされて実行されることになる。すなわち、命令の実行タイミングに関して、外部デバッガ180の接続の有無による動作の相異を回避することができる。
《実施形態3》
図3は、本発明の実施形態3に係るマイクロコンピュータ300の構成を示すブロック図である。同図に示すように、マイクロコンピュータ300は、実施形態1のマイクロコンピュータ100のデータ変換部130に代えて、データ変換部310(メモリ制御部と保護領域アクセス検出部)を備えている。また、マイクロコンピュータ300においては、外部デバッガ180が接続されてから認証が成功するまでの間であっても内蔵不揮発性メモリ120の一部の領域のデータは外部から読み出される。以下、上記一部の領域を非保護領域、それ以外の領域を保護領域と呼ぶ。
データ変換部310には、データ変換信号だけでなく、アドレスバスB101に出力されているアドレスが入力されるようになっている。データ変換部310は、マイクロコンピュータ100のデータ変換部130と同様に、データ変換信号の値が“1”の場合には、ROMバスB103のデータをデータバスB102に出力するようになっている。データ変換部310がデータ変換部130と異なっているのは、データ変換信号の値が“0”の場合でも、アドレスバスB101に出力されているアドレスが、内蔵不揮発性メモリ120の非保護領域を示すアドレスである場合には、ROMバスB103のデータをデータバスB102に出力するようになっている点である。データ変換信号の値が“0”で、アドレスバスB101に出力されているアドレスが内蔵不揮発性メモリ120の保護領域を示すアドレスである場合には、分岐命令出力バスB104のデータをデータバスB102に出力するようになっている。
−動作−
次に、マイクロコンピュータ300に外部デバッガ180が接続されていない状態でCPU110による命令の実行動作が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功する場合の動作について説明する。
マイクロコンピュータ300に外部デバッガ180が接続されていない状態で命令が実行されている時の動作、および認証が成功した後の動作は、実施形態1と同様であるので説明を省略する。
以下、マイクロコンピュータ300に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。CPU110が内蔵不揮発性メモリ120の100H番地にアクセスしている時に外部デバッガ180が接続される場合を例として説明する。
マイクロコンピュータ300に外部デバッガ180が接続されると、認証が成功するまでの間、データ変換信号が“0”となるのは、実施形態1と同様である。外部デバッガ180が接続された時、CPU110は、100H番地の命令コードを読み出すため、アドレスバスB101にアドレス“100H”を出力し、リードイネーブル信号を値“1”にする。
アドレスバスB101に出力されているアドレス、すなわち内蔵不揮発性メモリ120の100H番地が非保護領域である場合、データ変換部310により、ROMバスB103のデータがデータバスB102に出力され、100H番地の命令コードがCPU110に読み出されて解読され、命令が実行される。そして、CPU110がアクセスする内蔵不揮発性メモリ120の領域が保護領域とならなければ、ROMバスB103のデータがデータバスB102に出力され続ける。したがって、内蔵不揮発性メモリ120の命令コードの命令がCPU110に実行され続ける。
一方、アドレスバスB101に出力されているアドレス、すなわち内蔵不揮発性メモリ120の100H番地が保護領域である場合、データ変換部310により、分岐命令出力バスB104のデータがデータバスB102に出力される。分岐命令出力バスB104のデータは、分岐命令格納部160から出力されるCPU110がアクセス中のアドレスへの分岐命令の命令コードなので、100H番地への分岐命令に相当する命令を実行する。したがって、不揮発性メモリ120の100H番地に記憶されたデータがCPU110によって読み出されることはなく、CPU110は、再びアドレスバスB101にアドレス“100H”を出力し、リードイネーブル信号を値“1”にする。そして、認証が成功するまで、100H番地への分岐命令に相当する命令の実行を繰り返す。このように、認証が成功するまでの間は、内蔵不揮発性メモリ120の保護領域に記憶されたデータが、CPU110の命令の実行によって不正に読み出されたり、DMAC141を介して外部デバッガ180に不正に出力されることはない。したがって、不正な読み出しから保護したいデータは、内蔵不揮発性メモリ120の保護領域に記憶させておけば、秘匿性を確保することができる。
上記のように、内蔵不揮発性メモリ120のデータが、そのアドレスに応じて、データバスB102に出力されたりされなかったりするように構成することによって、保護したいデータを不正な読み出しから保護しつつ、外部デバッガ180がマイクロコンピュータ300に接続されてから認証が成功するまでの間も、保護の必要がない命令コードをCPU110に実行させることができる。例えば、どんな状況においても即実行される必要がある割り込み処理等の命令コードを非保護領域に記憶させておいてもよい。
《実施形態4》
図4は、本発明の実施形態4に係るマイクロコンピュータ400の構成を示すブロック図である。同図に示すように、マイクロコンピュータ400は、実施形態1のマイクロコンピュータ100の構成に加え、割り込み制御部410を備えている。
割り込み制御部410は、図示しない他の回路から割り込み要求があると割り込み要求信号として“1”をCPU110に出力し、それ以外の場合は“0”を出力するようになっている。また、複数種類の割り込み要求が発生した場合にはそれらを調停するようになっている。さらに、割り込み制御部410は、デバッガON信号が“1”でかつセキュリティ信号が“1”の時は、割り込み要求の有無にかかわらず、割り込み要求信号を“0”にして、CPU110における割り込み処理を禁止するようになっている。本実施形態では、図4に示すように、デバッガON信号が“1”でかつセキュリティ信号が“1”となっているかどうかを示す信号として、データ変換信号が割り込み制御部410に入力されるようになっている。データ変換信号が“0”の場合は、割り込み要求の有無にかかわらず、割り込み要求信号を“0”にし、データ変換信号が“1”の場合は、割り込み要求があると割り込み要求信号を“1”にするようになっている。
CPU110は、入力される割り込み要求信号が“1”になると、その時点でのプログラムカウンタの値をスタックに退避させ、割り込み処理の命令コードが記憶されている領域の先頭のアドレスをアドレスバスB101に出力し、割り込み処理の命令コードの読み出しを開始するようになっている。また、入力される割り込み要求信号が“1”になると、割り込みを受け入れたことを示す信号を出力するようになっている。
−動作−
本実施形態においては、データバスB102に出力される命令コードが切り替えられる等の主な動作および効果は、実施形態1と同様なので説明を省略し、割り込み制御部410に関する動作について説明する。以下、マイクロコンピュータ400に外部デバッガ180が接続されていない状態でCPU110による命令の実行が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功する場合の主として割り込み制御部410の制御によるマイクロコンピュータ400の動作について説明する。
まず、マイクロコンピュータ400に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。この時、実施形態1の場合と同様に、データ変換信号は“1”になっている。データ変換信号が“1”なので、割り込み制御部410は、割り込み要求が発生すると、割り込み要求信号として“1”をCPU110に出力する。それに応じて、CPU110は、その時点でのプログラムカウンタの値をスタックに退避させ、割り込み処理の命令コードが記憶されているアドレスをアドレスバスB101に出力し、割り込み処理の命令コードの読み出しを開始する。このように、外部デバッガ180が接続されるまで、CPU110は、割り込み制御部410の制御によって、割り込み要求が発生し次第、割り込み処理の命令を実行する。
次に、マイクロコンピュータ400に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。この間、データ変換信号は“0”になっている。データ変換信号が“0”なので、割り込み制御部410は、割り込み要求があっても、割り込み要求信号として“0”を出力する。それにより、CPU110において割り込み処理が行われなくなる。また、この時、分岐命令格納部160のデータがデータバスB102に出力されている。したがって、CPU110は、割り込み処理の命令コードを読み出す動作に移ることなく、分岐命令格納部160のデータ、すなわち、CPU110によって解読された場合に、相対アドレスが0である領域に分岐する命令と解読される命令コードが読み出される。このように、マイクロコンピュータ100に外部デバッガ180が接続されてから認証が成功するまでの間は、割り込み要求信号が“1”にならないので、割り込みを受け入れたことを示す信号がCPU110から外部に出力されることもない。よって、CPU110から割り込みを受け入れたことを示す信号が出力されたにもかかわらず、割り込み処理が行われないことによる割り込み処理の欠落を回避できる。また、認証成功まで内蔵不揮発性メモリ120に記憶されたデータが、外部からの不正な読み出しから保護されるのは実施形態1と同様である。
さらに、その後所定の認証手続きが行われて認証が成功した後の動作について説明する。認証成功後、データ変換信号は“1”になる。データ変換信号が“1”なので、割り込み制御部410は、割り込みが発生すると、割り込み要求信号として“1”をCPU110に出力する。それによって、CPU110は、その時点でのプログラムカウンタの値をスタックに退避させ、割り込み処理の命令コードが記憶されているアドレスをアドレスバスB101に出力し、割り込み処理の命令コードの読み出しを開始する。このように、認証成功後、CPU110は、割り込み制御部410の制御によって、割り込みが発生し次第、割り込み処理の命令を実行する。
《発明の実施形態5》
図5は、本発明の実施形態5に係るマイクロコンピュータ500の構成を示すブロック図である。同図に示すように、マイクロコンピュータ500は、データ変換部130に代えてデータ無効化部510(メモリ制御部)を備え、分岐命令保持部160を備えておらず、バス要求保持部520を備えている点で実施形態1のマイクロコンピュータ100と異なっている。また、Exclusive OR回路170に代えて、入力されるバス要求保持信号とセキュリティ信号の排他的論理和を反転させ、データ無効化信号として出力するExclusive NOR回路530を備えている。
データ無効化部510は、データ無効化信号の値が“0”の場合には、ROMバスB103のデータをデータバスB102に出力し、データ無効化信号の値が“1”の場合には、上記CPU110によって解読された場合に、何も実行しないことを示す命令と解読される命令コードを出力するようになっている。
バス要求保持部520は、初期状態においてはバス要求保持信号として“0”を出力し、バス要求信号が“1”になると初期化されるまでバス要求保持信号として“1”の値を保持し、出力し続けるようになっている。
CPU110は、入力されるデータ無効化信号が“1”の時、すべての動作を停止するようになっている。
−動作−
次に、マイクロコンピュータ500に外部デバッガ180が接続されていない状態でCPU110による命令の実行が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功した場合のマイクロコンピュータ500の動作について説明する。
まず、マイクロコンピュータ500に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。
この時、認証部150はセキュリティ信号として“1”を出力し、DMAC141は、外部デバッガ180が接続されていないのでバス要求信号として“0”を出力する。したがって、バス要求保持部520は、初期値の“0”をバス要求保持信号として出力し続ける。セキュリティ信号が“1”、バス要求保持信号が“0”なので、Exclusive NOR回路530の出力であるデータ無効化信号は“0”となり、データ無効化部510は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110はROMバスB103のデータ、すなわち、内蔵不揮発性メモリ120から出力された命令コードを解読し、命令を実行する。
次に、マイクロコンピュータ500に外部デバッガ180が接続されてから、DMAC141がバス要求信号の値を“0”から“1”にするまでの間の動作について説明する。
この間、認証部150はセキュリティ信号として値“1”を出力し、DMAC141は、バス要求信号として“0”を出力し続けている。したがって、バス要求保持部520は、初期値の“0”をバス要求保持信号として出力し続ける。セキュリティ信号が“1”、バス要求保持信号の値が“0”なので、Exclusive NOR回路530の出力であるデータ無効化信号の値は“0”となり、データ無効化部510は、ROMバスB103のデータをデータバスB102に出力する。したがって、外部デバッガ180が接続されても、DMAC141がバス要求信号の値として“0”を出力し続けている限り、CPU110はROMバスB103のデータ、すなわち、内蔵不揮発性メモリ120から出力された命令コードを解読し、命令を実行する。
次に、DMAC141が外部デバッガ180の制御に応じて、DMA(ダイレクトメモリアクセス)により内蔵不揮発性メモリ120のデータを読み出そうとした後、認証が成功するまでの動作について説明する。以下、例として、DMAが開始された時(バス要求信号の値が“1”になった時)に、CPU110のアクセス中のアドレス、すなわちプログラムカウンタの値が“100H”である場合について説明する。
バス要求信号の値が“1”になると、バス要求保持部520は、“1”の値を保持し、出力し続けるようになる。一方、セキュリティ信号は、まだ認証が成功していないので“1”の値のままである。したがって、Exclusive NOR回路530の出力であるデータ無効化信号の値は“1”となり、CPU110は動作を停止し、データ無効化部510は、上記CPU110によって解読された場合に、何も実行しないことを示す命令と解読される無効命令コードを、データバスB102に出力する。そこで、DMAC141が何らかのアドレスをアドレスバスB101に出力し、リード信号を“1”にしても、実際にデータ無効化部510から出力されるのは、無効命令コードとなる。このように、認証が成功するまではデータバスB102に内蔵不揮発性メモリ120のデータが出力されないので、内蔵不揮発性メモリ120のデータが、CPU110の命令の実行によって不正に読み出されたり、DMAC141を介して外部デバッガ180から不正に読み出されることが防止される。さらに外部デバッガ180が接続された直後から、DMAC141がバス要求信号を出力するまでの間は、CPU110が停止することがないため、この期間に緊急性の高い処理を実行する必要がある場合にも実行することが可能となり、リアルタイム性の低下を低減できる。
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
認証成功後、認証部150はセキュリティ信号として“0”を出力する。バス要求保持部520は、“1”の値を出力し続けている。したがって、Exclusive NOR回路530の出力であるデータ無効化信号の値は“0”となり、データ無効化部510は、ROMバスB103のデータをデータバスB102に出力する。
このようにROMバスB103のデータがデータバスB102に出力されるので、内蔵不揮発性メモリ120のデータをDMAC141を介して外部デバッガ180から読み出すことが可能になる。
一方、データ無効化信号の値が“0”となったので、CPU110は再び動作を開始する。CPU110の動作が停止した時のアクセス中のアドレスは“100H”であったので、100H番地に記憶されている命令コードから読み出し、解読、および命令の実行が行われる。このように、認証が成功するまでの間、CPU110が動作を停止し続けるように構成されることによって、上記のようにCPU110の命令の実行中に外部デバッガ180が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ180がマイクロコンピュータ100に接続された際のプログラムカウンタの値で、認証成功時にデバッグを開始することができる。
また、バス要求信号の値が“0”になった後も、バス要求保持部520は、“1”の値を出力し続けるのでデータ無効化信号の値は“0”のままとなり、データ無効化部510は、ROMバスB103のデータをデータバスB102に出力する。このように、一旦認証が成功すると、CPU110の命令の実行によって、内蔵不揮発性メモリ120のデータを外部から読み出すこと、および内蔵不揮発性メモリ120のデータをDMAC141を介して外部デバッガ180から読み出すことのいずれもが可能になる。
《発明の実施形態6》
図6は、本発明の実施形態6に係るマイクロコンピュータ600の構成を示すブロック図である。同図に示すように、マイクロコンピュータ600は、データ変換部130に代えてデータ無効化部510(メモリ制御部)を備え、分岐命令保持部160を備えていない点で実施形態1のマイクロコンピュータ100と異なっている。
本実施形態のCPU110には、Exclusive NOR回路530の出力であるデータ無効化信号が入力され、CPU110は、データ無効化信号の値が“1”の時、すべての動作を停止するようになっている。
−動作−
次に、マイクロコンピュータ600に外部デバッガ180が接続されていない状態でCPU110による命令の実行が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功する場合のマイクロコンピュータ600の動作について説明する。
まず、マイクロコンピュータ600に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。
この時、Exclusive NOR回路530の出力であるデータ無効化信号は、実施形態1の場合と同様に、“0”となっている。データ無効化信号が“0”なので、データ無効化部510は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110は動作を停止することなく、データバスB102に出力されるROMバスB103のデータの命令コード、すなわち内蔵不揮発性メモリ120から出力される命令コードの読み出し、解読、および命令の実行を継続する。
次に、マイクロコンピュータ600に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ180が接続された時に、CPU110のアクセス中のアドレスが“100H”である場合について説明する。
マイクロコンピュータ600に外部デバッガ180が接続されると、実施形態1の場合と同様に、認証が成功するまでの間、データ無効化信号は“1”となる。データ無効化信号が“1”なので、データ無効化部510は、上記CPU110によって解読された場合に、何も実行しないことを示す命令と解読される命令コードを出力する。これにより、認証が成功するまではデータバスB102に内蔵不揮発性メモリ120のデータが出力されないので、内蔵不揮発性メモリ120のデータが不正に読み出されることが防止される。すなわち、実施形態1で説明したように、DMAC141を介して外部デバッガ180に不正に出力されることがない。一方、データ無効化信号が“1”なので、CPU110はすべての動作を停止する。
さらに、その後所定の認証手続きが行われて認証が成功した後の動作について説明する。
認証成功後、データ無効化信号は“0”となる。データ無効化信号が“0”なので、データ無効化部510は、ROMバスB103のデータをデータバスB102に出力する。一方、データ無効化信号が“0”なので、CPU110は動作を開始する。CPU110の動作が停止した時、つまり外部デバッガ180が接続された時のアクセス中のアドレスは“100H”であったので、100H番地に記憶されている命令コードから読み出し、解読、および命令の実行が行われる。
このように、一旦認証が成功すると、CPU110が、命令の実行によって内蔵不揮発性メモリ120のデータを外部から読み出せるようになる。また、内蔵不揮発性メモリ120のデータをDMAC141を介して外部デバッガ180から読み出すことも可能になる。
また、上記のように、認証が成功するまでの間、CPU110が動作を停止し続けるように構成されることによって、上記のようにCPU110の命令の実行中に外部デバッガ180が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ180がマイクロコンピュータ100に接続された際のプログラムカウンタの値およびパイプラインの状態で、認証成功時にCPU110に動作を開始させ、デバッグを開始することができる。
なお、本実施形態において、CPU110は、データ無効化信号が“1”の時、すべての動作を停止するようになっているが、プログラムカウンタの値を更新する動作が停止されるようになっていれば、必ずしもすべての動作が停止されるようになっていなくてもよい。
《発明の実施形態7》
図7は、本発明の実施形態7に係るマイクロコンピュータ700の構成を示すブロック図である。同図に示すように、マイクロコンピュータ700は、分岐命令格納部160に代えてサブルーチン分岐命令格納部710を備えている点で実施形態1と異なっている。また、実施形態1のデータ変換部130に代えて、データ変換部720(メモリ制御部と保護領域アクセス検出部)を備えている。データ変換部720は、外部デバッガ180が接続されてから認証が成功するまでの間であっても内蔵不揮発性メモリ120の一部の領域(非保護領域)のデータはデータバスB102に出力するようになっている。そして、非保護領域には、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードが記憶されている。
サブルーチン分岐命令格納部710は、上記CPU110によって解読された場合に内蔵不揮発性メモリ120の非保護領域の例えば先頭のアドレスに分岐する命令と解読される命令コードを記憶しており、その命令コードをサブルーチン分岐命令出力バスB701に出力するようになっている。
内蔵不揮発性メモリ120の非保護領域には、サブルーチン分岐命令格納部710に格納された分岐命令の分岐先アドレスの命令で開始し、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令で終了するサブルーチンの命令コードが記憶されている。
データ変換部720は、データ変換信号の値が“1”の場合には、ROMバスB103のデータをデータバスB102に出力するようになっている。データ変換信号の値が“0”になると、CPU110の最初の読み出し1サイクルでは、サブルーチン分岐命令出力バスB701のデータをデータバスB102に出力するようになっている。データ変換信号の値が“0”になってから2サイクル目以降は、アドレスバスB101に出力されているアドレスが内蔵不揮発性メモリ120の非保護領域を示すアドレスである場合には、ROMバスB103のデータをデータバスB102に出力し、保護領域を示すアドレスである場合には、CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードに相当するデータをデータバスB102に出力するようになっている。
CPU110は、データバスB102からサブルーチンに分岐する命令の命令コードを読み出して解読すると、その時アクセスしているアドレス(プログラムカウンタの値)を記憶し(スタックに退避し)、上記命令の分岐先のアドレスをアドレスバスB101に出力するとともに、リードイネーブル信号を値“1”にするようになっている。また、データバスB102からスタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを読み出して解読すると、スタックに退避されていた戻り番地をプログラムカウンタに戻し、その番地(アドレス)をアドレスバスB101に出力するとともに、リードイネーブル信号を値“1”にするようになっている。
−動作−
次に、マイクロコンピュータ700に外部デバッガ180が接続されていない状態でCPU110による命令の実行が開始され、命令の実行中に外部デバッガ180が接続され、その後認証が成功した場合の動作について説明する。
まず、マイクロコンピュータ700に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。この時、Exclusive OR回路170の出力であるデータ変換信号は、実施形態1の場合と同様に、“1”となっている。データ変換信号が“1”なので、データ変換部720は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110は、データバスB102に出力されるROMバスB103のデータの命令コード、すなわち内蔵不揮発性メモリ120から出力される命令コードを読み出して解読し、命令を実行する。
次に、マイクロコンピュータ700に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ180が接続された時に、CPU110のアクセス中のアドレスが“100H”である場合について説明する。
マイクロコンピュータ700に外部デバッガ180が接続されると、認証が成功するまでの間、データ変換信号は“0”となる。したがって、データ変換部720は、データ変換信号が“0”になってから最初のCPU110の読み出し1サイクルの期間、サブルーチン分岐命令出力バスB701のデータ、すなわち上記CPU110によって解読された場合に内蔵不揮発性メモリ120の非保護領域の先頭のアドレスに分岐する命令と解読される命令コードをデータバスB102に出力する。したがって、CPU110は、データバスB102から、上記非保護領域の先頭のアドレスに分岐する命令の命令コードを読み出して解読し、アクセス中のアドレス“100H”を記憶し(スタックに退避し)、非保護領域の先頭のアドレスをアドレスバスB101に出力するとともに、リードイネーブル信号の値を“1”にする。データ変換信号が“0”になってから2サイクル目では、アドレスバスB101に出力されているアドレスが、非保護領域のアドレスであるため、データ変換部720は、ROMバスB103に出力されている命令コードをデータバスB102に出力する。したがって、CPU110は、非保護領域の先頭のアドレスに記憶されている命令コードをデータバスB102から読み出して解読し、命令を実行する。以降、アドレスバスB101に出力されているアドレスが非保護領域のアドレスである限り、データバスB102にはROMバスB103のデータの命令コード、すなわち内蔵不揮発性メモリ120の非保護領域から出力される命令コードがCPU110によって読み出されて解読され、命令が実行される。
ここで、CPU110によって読み出された命令コードが、保護領域の所定のデータを読み出す命令の命令コードであった場合に、保護領域のデータが読み出されることなく保護される動作について説明する。
CPU110は、保護領域に記憶されたデータを読み出す命令の命令コードを非保護領域から読み出して解読すると、読み出すデータが記憶されているアドレスをアドレスバスB101に出力するとともに、リードイネーブル信号を“1”にする。一方、データ変換部720は、データ変換信号が“0”になってから2サイクル目以降であり、アドレスバスB101に出力されているアドレスが保護領域のアドレスであるため、CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードに相当するデータをデータバスB102に出力する。
また、CPU110によって読み出された命令コードが、保護領域の所定のアドレスに分岐する命令の命令コードであった場合に、保護領域の命令コードが読み出されることなく保護される動作について説明する。
CPU110は、保護領域の所定のアドレスに分岐する命令の命令コードを非保護領域から読み出して解読すると、分岐先のアドレスをアドレスバスB101に出力するとともに、リードイネーブル信号を“1”にする。一方、データ変換部720は、データ変換信号が“0”になってから2サイクル目以降であり、アドレスバスB101に出力されているアドレスが保護領域のアドレスであるため、CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードをデータバスB102に出力する。CPU110は、データバスB102から上記命令コードを読み出して解読し、何も実行しない。
このように、外部デバッガ180が接続されてから認証が成功するまでの間、保護領域のデータはデータバスB102に出力されないので、DMAC141を介して外部デバッガ180から不正に読み出されたり、CPU110の命令の実行によって外部から読み出されることがない。
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
認証成功後、データ変換信号は“1”となる。データ変換信号が“1”なので、データ変換部720は、ROMバスB103のデータをデータバスB102に出力する。したがって、認証成功後は、内蔵不揮発性メモリ120から保護領域のデータを読み出すことができる。
ここで、認証成功後、CPU110が、外部デバッガ180が接続された時にアクセスしていたアドレス“100H”へのアクセスを再開する動作について説明する。マイクロコンピュータ700に外部デバッガ180が接続されてから認証が成功するまでの間、非保護領域から出力される命令コードがCPU110によって読み出されて解読され、命令の実行が行われている。CPU110は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを非保護領域から読み出して解読すると、マイクロコンピュータ700に外部デバッガ180が接続された時に記憶したアドレス“100H”をアドレスバスB101に出力するとともに、リードイネーブル信号の値を“1”にする。このように、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードが非保護領域に記憶されているので、CPU110は、認証成功後、戻り命令を実行することによって、外部デバッガ180が接続された時にアクセスしていたアドレス“100H”の命令コードの読み出しを再開できる。したがって、上記のようにCPU110の命令の実行中に外部デバッガ180が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ180がマイクロコンピュータ100に接続された際のプログラムカウンタの値で、認証成功後、デバッグを開始することができる。
上記のように、本実施形態では、実施形態3と同様に、内蔵不揮発性メモリ120のデータが、そのアドレスに応じて、データバスB102に出力されたりされなかったりするように構成されているので、保護したいデータを不正な読み出しから保護しつつ、外部デバッガ180がマイクロコンピュータ700に接続されてから認証が成功するまでの間も、マイクロコンピュータ700を暴走させることなく、保護の必要がない命令コードをCPU110に実行させることができる。例えば、どんな状況においても即実行される必要がある割り込み処理等の命令コードを非保護領域に記憶させておいてもよい。
また、本実施形態には、CPU110が分岐命令を実行する際にその時アクセスしているアドレスをスタックに退避させ、戻り命令を実行する際に退避させていたアドレスをプログラムカウンタに戻すという一般的なCPU110に備えられている仕組みを利用するので、新たな回路を搭載させる必要がなく、回路面積が増大しないという利点がある。
《発明の実施形態8》
図8は、本発明の実施形態8に係るマイクロコンピュータ800の構成を示すブロック図である。同図に示すように、同図に示すように、マイクロコンピュータ800は、データ変換部130に代えて、データ無効化部810(メモリ制御部と保護領域アクセス検出部)を備え、分岐命令保持部160を備えておらず、割り込み制御部820を備えている点で実施形態1のマイクロコンピュータ100と異なっている。
データ無効化部810は、外部デバッガ180が接続されてから認証が成功するまでの間であっても内蔵不揮発性メモリ120の一部の領域(非保護領域)のデータはデータバスB102に出力するようになっている。データ無効化信号の値が“0”の場合には、ROMバスB103のデータをデータバスB102に出力するようになっている。データ無効化信号の値が“1”の場合には、アドレスバスB101に出力されているアドレスが非保護領域を示すアドレスである場合には、ROMバスB103のデータをデータバスB102に出力し、保護領域を示すアドレスである場合には、上記CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードを、データバスB102に出力するようになっている。
割り込み制御部820は、割り込み要求があると割り込み要求信号として“1”をCPU110に出力し、それ以外の場合は“0”を出力するようになっている。また、複数種類の割り込み要求が発生した場合にはそれらを調停するようになっている。さらに、デバッガON信号が“1”になったときにも、割り込み要求信号を“1”にするようになっている。
ここでは、説明を簡単にするために、非保護領域には、デバッガON信号が“1”になった時に実行される割り込み処理の命令コード(割り込み処理ルーチン)が記憶されているとする。また、割り込み処理の最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令(割り込み復帰命令)であるものとする。
CPU110は、入力される割り込み要求信号の値が“1”になると、その時アクセスしているアドレス(プログラムカウンタの値)を記憶し(スタックに退避し)、割り込み処理の命令コードが記憶されているアドレスをアドレスバスB101に出力するとともに、リードイネーブル信号を値“1”にして、割り込み処理の命令コードの読み出しを開始するようになっている。また、データバスB102からスタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを読み出して解読すると、スタックに退避されていた戻り番地をプログラムカウンタに戻し、その番地(アドレス)をアドレスバスB101に出力するとともに、リードイネーブル信号を値“1”にするようになっている。
−動作−
次に、マイクロコンピュータ800に外部デバッガ180が接続されていない状態でCPU110による命令の実行が開始され、命令の実行途中に外部デバッガ180が接続され、その後認証が成功した場合の動作について説明する。
まず、マイクロコンピュータ800に外部デバッガ180が接続されていない状態で、命令が実行されている時の動作について説明する。
この時、Exclusive NOR回路530の出力であるデータ無効化信号の値は、実施形態1の場合と同様に、“0”となっている。データ無効化信号が“0”なので、データ無効化部810は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110は、データバスB102に出力されるROMバスB103のデータの命令コード、すなわち内蔵不揮発性メモリ120から出力される命令コードを読み出して解読し、命令を実行する。
次に、マイクロコンピュータ800に外部デバッガ180が接続されてから認証が成功するまでの間の動作について説明する。以下、例として、外部デバッガ180が接続された時に、CPU110のアクセス中のアドレスが“100H”であり、デバッガON信号が“1”になった時に実行される割り込み処理の命令コードが非保護領域の200H番地に記憶されている場合について説明する。
外部デバッガ180が接続されると、デバッガON信号が“1”となり、割り込み要求が発生し、割り込み制御部820は割り込み要求信号として“1”を出力する。割り込み要求信号が“1”なので、CPU110は、アクセス中のアドレス“100H”を記憶するとともに、100H番地からの命令コードの読み出しを中断し、割り込み処理の命令コードが記憶されているアドレス“200H”をアドレスバスB101に出力し、さらにリードイネーブル信号を値“1”にする。そして、割り込み処理の命令コードの読み出しを開始する。また、この時のデータ無効化信号の値は“1”で、かつアドレスバスB101に出力されているアドレスは非保護領域のアドレス“200H”なので、データ無効化部810は、ROMバスB103のデータをデータバスB102に出力する。したがって、CPU110は、データバスB102に出力されるROMバスB103のデータ、すなわち内蔵不揮発性メモリ120の非保護領域から出力される割り込み処理の命令コードを読み出して解読し、命令を実行する。
ここで、CPU110によって非保護領域から読み出された命令コードが、保護領域の所定のデータを読み出す命令の命令コードであった場合に、保護領域のデータが読み出されることなく保護される動作について説明する。
CPU110は、保護領域の所定のデータを読み出す命令の命令コードを読み出して解読すると、所定のデータを読み出すために、所定のデータが記憶されているアドレスをアドレスバスB101に出力するとともに、リードイネーブル信号を“1”にする。データ無効化部810は、データ無効化信号の値は“1”で、かつアドレスバスB101に出力されているアドレスが、内蔵不揮発性メモリ120の保護領域を示すアドレスなので、CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードを、データバスB102に出力する。このように、外部デバッガ180が接続されてから認証が成功するまでの間、保護領域のデータはデータバスB102に出力されないので、DMAC141を介して外部デバッガ180から不正に読み出されたり、CPU110の命令の実行によって外部から読み出されることがない。
さらに、所定の認証手続きが行われて認証が成功した後の動作について説明する。
認証成功後、データ無効化信号は“0”となるので、データ無効化部810は、ROMバスB103のデータをデータバスB102に出力する。そして、CPU110は、内蔵不揮発性メモリ120から出力される命令コードをデータバスB102から読み出して解読し、命令を実行する。このように、認証成功後、CPU110は内蔵不揮発性メモリ120から保護領域のデータも読み出すことができる。
ここで、認証成功後、CPU110が、外部デバッガ180が接続された時にアクセスしていたアドレス“100H”へのアクセスを再開する動作について説明する。
マイクロコンピュータ800に外部デバッガ180が接続されてから認証が成功するまでの間、非保護領域から出力される命令コードがCPU110によって読み出されて解読され、命令が実行されている。ここで、CPU110は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令の命令コードを非保護領域から読み出して解読すると、マイクロコンピュータ700に外部デバッガ180が接続された時に記憶したアドレス“100H”をアドレスバスB101に出力するとともに、リードイネーブル信号の値を“1”にする。このように、CPU110は、認証成功後、外部デバッガ180が接続された時にアクセスしていたアドレス“100H”の命令コードの読み出しを再開する。したがって、上記のようにCPU110の命令の実行中に外部デバッガ180が接続された場合、すなわち、いわゆる活線挿抜が行われた場合でも、外部デバッガ180がマイクロコンピュータ100に接続された際のプログラムカウンタの値で、認証成功後、デバッグを開始することができる。
上記のように、本実施形態では、実施形態3と同様に、内蔵不揮発性メモリ120のデータが、そのアドレスに応じて、データバスB102に出力されたりされなかったりするように構成されているので、保護したいデータを不正な読み出しから保護しつつ、外部デバッガ180がマイクロコンピュータ800に接続されてから認証が成功するまでの間も、マイクロコンピュータ800を暴走させることなく、保護の必要がない命令コードをCPU110に実行させることができる。例えば、どんな状況においても即実行される必要がある割り込み処理等の命令コードを非保護領域に記憶させておいてもよい。
また、外部デバッガ180が接続された場合は、他の割り込み要因によって割り込み処理が禁止されて欠落することなく、必ず割り込み処理が行われるように、外部デバッガが接続された際に発生する割り込みをノンマスカブル割り込みにしてもよい。この方法であれば、一般的な割り込み制御回路に新たな機能を付加することなく、実施形態4と同様に、外部デバッガ180が接続されてから認証が成功するまでの間、CPU110が他の割り込み要因による割り込みを受け付けないため、他の割り込み要因による割り込み処理の欠落を防止できる。
また、本実施形態には、割り込みが発生するとその時アクセスしているアドレスをスタックに退避させ、戻り命令を実行する際に退避させていたアドレスをプログラムカウンタに戻すという一般的なCPU110に備えられている仕組みを利用するので、新たな回路を搭載させる必要がなく、回路面積が増大しないという利点がある。
《その他の実施形態》
上記各実施形態に係るマイクロコンピュータは、1チップで構成されてもよいし、複数のチップで構成されるとともに、CPU110と内蔵不揮発性メモリ120との間のバスの信号を外部から物理的に読み出せないようになっているものであってもよい。
また、実施形態2においては、連続して実行されるべき内蔵不揮発性メモリ120の一連の命令の途中で実行が中断されることを防止するために、分岐命令の命令コードが解読された後に、不正な読み出しからの保護が開始されるようにしているが、これに限るものではない。つまり、一連の命令が連続して実行されないことが許容されるタイミング以降に不正な読み出しからの保護が開始されるようにすればよいので、例えば、CPU110に割り込み要求信号が入力されてもマスクされないタイミングで保護が開始されるようにしてもよい。
また、実施形態3、7、8の図3、7、8では内蔵不揮発性メモリ120が2つの領域に分割されているが、2つに限らず、3つ以上の領域に分割されていてもよい。また、各領域は、外部デバッガ180がマイクロコンピュータ300に接続されてから認証が成功するまでの間、読み出し可能とするかどうかが固定的に設定されるのに限らず、可変に設定できるようにしてもよい。具体的には、例えばI/OデータバスB105によって設定可能なレジスタの値に応じて、読み出し可能かどうかが判別されるようにしてもよい。さらに、内蔵不揮発性メモリ120を複数の領域に分割するのではなく、複数の内蔵不揮発性メモリを用いるようにしたりしてもよい。
なお、実施形態5、6、7、8において、データ無効化部510、データ変換部720、およびデータ無効化部810は、それぞれ、内蔵不揮発性メモリ120から出力されるROMバスB103のデータに代えて、上記CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードをデータバスB102に出力することによって、内蔵不揮発性メモリ120のデータが内蔵不揮発性メモリ120の外部から読み出されることを防止していたが、データが読み出されることを防止できれば必ずしも上記方法でなくてもよい。例えば、リードイネーブル信号が“1”にならないようにしたり、CPU110が出力するアドレスが内蔵不揮発性メモリ120に入力されないようにすることによって、内蔵不揮発性メモリ120のデータが読み出されることを防止してもよい。また、上記CPU110によって解読された場合に何も実行しないことを示す命令と解読される命令コードではなく、他の所定のデータがROMバスB103のデータに代えてデータバスB102に出力されるようにしてもよい。
また、実施形態5のバス要求保持部520において、バス要求保持信号がExclusive NOR回路530に入力されるようになっていたが、バス要求保持信号に代えて、バス要求信号がExclusive NOR回路530に直接入力されるようにしてもよい。すなわち、実施形態5では、DMAC141が一度CPU110にアクセスすると認証が成功するまでずっと内蔵不揮発性メモリ120のデータが外部から読み出されない状態になっていたのに対し、バス要求信号がExclusive NOR回路530に直接入力されるようにバス要求保持部520を構成した場合、DMAC141がCPU110にアクセスするタイミング毎に、内蔵不揮発性メモリ120のデータが外部から読み出されない状態になる。
また、実施形態5では、DMAが開始される時に、内蔵不揮発性メモリ120のデータの保護が開始される例を示したが、これに限らず、保護開始のタイミングは、外部デバッガ180の接続後、内蔵不揮発性メモリ120の保護すべきデータが外部デバッガ180からの制御によって外部から読み出されるおそれがある動作が開始されるまでの間であってもよい。
あるいは、内蔵不揮発性メモリ120の保護すべきデータが外部デバッガ180からの制御によって外部から読み出されるおそれがある動作が開始されてから認証が成功するまでの間、保護状態が継続されるのに限らず、上記動作が行われる期間毎に保護状態になるようにしてもよい。
また、実施形態6のようにCPU110を停止する場合に、実施形態4のように割り込み制御部によって割り込み要求信号がマスクされるように構成されていてもよい。
さらに、上記すべての実施形態においては、データ変換部やデータ無効化部によって内蔵不揮発性メモリ120から出力されるデータが所定のデータに置き換えられることによって、内蔵不揮発性メモリ120のデータがマイクロコンピュータの外部に出力されることが阻止されていたが、その他の方法で阻止されるようにしてもよい。例えば、外部デバッガ180からマイクロコンピュータにデータが入力されたり出力されることが阻止されるようにすることによって、内蔵不揮発性メモリ120のデータがマイクロコンピュータの外部に出力されることを阻止してもよい。
また、各実施形態において、Exclusive OR回路170に代えて、NAND回路を用いてもよい。同様に、Exclusive NOR回路530に代えて、AND回路を用いてもよい。NAND回路やAND回路を用いた場合、認証成功後にデバッグが終了して外部デバッガ180をマイクロコンピュータから外した後も、内蔵不揮発性メモリ120のデータをマイクロコンピュータの外部から読み出すことが可能となる。
なお、上記実施形態で説明した構成要素は、論理的に可能な範囲で種々組み合わせてもよい。例えば、実施形態1、2、3、5、6、7のうちのいずれかのマイクロコンピュータの構成で、さらに、実施形態4で示したように、内蔵不揮発性メモリ120のデータが外部からの読み出しから保護される間、割り込みがマスクされるようになっていてもよい。あるいは、実施形態2、4、5、6の各マイクロコンピュータを、実施形態3のように、内蔵不揮発性メモリ120の保護領域のデータは外部からの読み出しから保護されるが、非保護領域のデータは常に読み出されるように構成してもよい。
本発明に係るマイクロコンピュータは、デバッガが接続されてから認証が成功するまでは、メモリの情報が外部から読み出されないように保護しつつ、リセット後の状態ではなく通常動作時の状態でデバッグを開始できるという効果を有し、例えば、マイクロコンピュータが内蔵する不揮発性メモリ等に記憶されたプログラムやデータを、不正な読み出しから保護する技術等として有用である。
本発明の実施形態1に係るマイクロコンピュータ100の構成を示すブロック図である。 本発明の実施形態2に係るマイクロコンピュータ200の構成を示すブロック図である。 本発明の実施形態3に係るマイクロコンピュータ300の構成を示すブロック図である。 本発明の実施形態4に係るマイクロコンピュータ400の構成を示すブロック図である。 本発明の実施形態5に係るマイクロコンピュータ500の構成を示すブロック図である。 本発明の実施形態6に係るマイクロコンピュータ600の構成を示すブロック図である。 本発明の実施形態7に係るマイクロコンピュータ700の構成を示すブロック図である。 本発明の実施形態8に係るマイクロコンピュータ800の構成を示すブロック図である。
符号の説明
100 マイクロコンピュータ
110 CPU
120 内蔵不揮発性メモリ
130 データ変換部
140 OCD回路
141 DMAC
150 認証部
160 分岐命令格納部
170 Exclusive OR回路
200 マイクロコンピュータ
210 解読部
220 分岐保持部
300 マイクロコンピュータ
310 データ変換部
400 マイクロコンピュータ
410 割り込み制御部
500 マイクロコンピュータ
510 データ無効化部
520 バス要求保持部
530 Exclusive NOR回路
600 マイクロコンピュータ
700 マイクロコンピュータ
710 サブルーチン分岐命令格納部
720 データ変換部
800 マイクロコンピュータ
810 データ無効化部
820 割り込み制御部
B101 アドレスバス
B102 データバス
B103 ROMバス
B104 分岐命令出力バス
B105 I/Oデータバス
B701 サブルーチン分岐命令出力バス

Claims (29)

  1. メモリと、
    上記メモリに記憶された記憶データを解読し、命令を実行するCPUとを備えたマイクロコンピュータであって、
    マイクロコンピュータに接続された外部デバッグ指示装置からの指示に応じて、マイクロコンピュータにデバッグ動作を行わせるデバッグ制御部と、
    マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記デバッグ動作が行われることを許可するかどうかの認証を行う認証部と、
    を備え、
    上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記メモリの記憶データがマイクロコンピュータの外部に出力されることが阻止されるように構成されていることを特徴とするマイクロコンピュータ。
  2. 請求項1のマイクロコンピュータであって、さらに、
    マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、上記認証部による認証が成功するまでの間、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するメモリ制御部を備えていることを特徴とするマイクロコンピュータ。
  3. 請求項2のマイクロコンピュータであって、
    上記メモリ制御部は、上記メモリに、上記記憶データに係わらず所定のデータを出力させることによって、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とするマイクロコンピュータ。
  4. 請求項3のマイクロコンピュータであって、
    上記所定のデータは、上記CPUによって解読された場合に、相対アドレスが0である領域に分岐する命令と解読されるデータであることを特徴とするマイクロコンピュータ。
  5. 請求項4のマイクロコンピュータであって、
    さらに、上記CPUによって分岐命令が実行されることを検出する分岐命令検出部を備え、
    上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記分岐命令検出部によって分岐命令が検出されてから、上記認証が成功するまでの間、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とするマイクロコンピュータ。
  6. 請求項4のマイクロコンピュータであって、
    さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
    上記メモリ制御部は、上記外部デバッグ装置が接続された後、さらに上記保護領域がアクセスされたことが検出されてから、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とするマイクロコンピュータ。
  7. 請求項6のマイクロコンピュータであって、
    上記メモリの保護領域以外の領域に、割り込み処理の命令が記憶されていることを特徴とするマイクロコンピュータ。
  8. 請求項4のマイクロコンピュータであって、
    さらに、上記メモリ制御部が上記メモリに上記所定のデータを出力させている間、上記CPUに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とするマイクロコンピュータ。
  9. 請求項3のマイクロコンピュータであって、
    上記所定のデータは、上記CPUによって解読された場合に、何も実行しないことを示す命令と解読されるデータであることを特徴とするマイクロコンピュータ。
  10. 請求項3のマイクロコンピュータであって、
    さらに、上記CPUを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
    上記メモリ制御部は、上記外部デバッグ指示装置が接続されてから上記認証が成功するまでの間であって、さらに上記ダイレクトメモリアクセスコントローラによる上記メモリへのアクセスが行われる場合に、上記所定のデータを上記メモリに出力させるように構成されていることを特徴とするマイクロコンピュータ。
  11. 請求項2のマイクロコンピュータであって、
    上記メモリ制御部は、上記外部デバッグ装置が接続された後であってかつ所定のタイミング以降に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とするマイクロコンピュータ。
  12. 請求項11のマイクロコンピュータであって、
    上記所定のタイミングは、一連の命令が連続して実行されないことが許容されるタイミングであることを特徴とするマイクロコンピュータ。
  13. 請求項12のマイクロコンピュータであって、
    上記メモリの一連の命令が連続して実行されないことが許容されるタイミングは、上記CPUに対する割り込み要求信号がマスクされていないタイミングであることを特徴とするマイクロコンピュータ。
  14. 請求項12のマイクロコンピュータであって、
    上記所定のタイミングは、上記CPUが分岐命令を実行するタイミングであることを特徴とするマイクロコンピュータ。
  15. 請求項11のマイクロコンピュータであって、
    上記所定のタイミングは、上記CPUが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とするマイクロコンピュータ。
  16. 請求項11のマイクロコンピュータであって、
    さらに、上記CPUを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
    上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリへのアクセスを開始するタイミングであることを特徴とするマイクロコンピュータ。
  17. 請求項2のマイクロコンピュータであって、
    上記メモリ制御部は、上記外部デバッグ装置が接続された後、所定のタイミング毎に、上記記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止することを特徴とするマイクロコンピュータ。
  18. 請求項17のマイクロコンピュータであって、
    上記所定のタイミングは、上記CPUが上記メモリの所定の保護領域にアクセスするタイミングであることを特徴とするマイクロコンピュータ。
  19. 請求項18のマイクロコンピュータであって、
    上記メモリ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続された後の最初の読み出しサイクルで、上記メモリに、上記記憶データを、上記CPUによって解読された場合に所定のサブルーチンに分岐する命令と解読されるデータに置き換えて出力させるように構成されていることを特徴とするマイクロコンピュータ。
  20. 請求項19のマイクロコンピュータであって、
    上記所定のサブルーチンの最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とするマイクロコンピュータ。
  21. 請求項18のマイクロコンピュータであって、
    マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されたときに、上記CPUは割り込み処理を実行することを特徴とするマイクロコンピュータ。
  22. 請求項21のマイクロコンピュータであって、
    上記割り込み処理の最後の命令は、スタックに退避されていた戻り番地をプログラムカウンタに戻す戻り命令であることを特徴とするマイクロコンピュータ。
  23. 請求項21のマイクロコンピュータであって、上記CPUに発生する上記割り込みは、ノンマスカブル割り込みであることを特徴とするマイクロコンピュータ。
  24. 請求項17のマイクロコンピュータであって、
    さらに、上記CPUを介することなく上記メモリにアクセスするダイレクトメモリアクセスコントローラを備え、
    上記所定のタイミングは、上記ダイレクトメモリアクセスコントローラが上記メモリにアクセスするタイミングであることを特徴とするマイクロコンピュータ。
  25. 請求項2のマイクロコンピュータであって、
    さらに、上記メモリの所定の保護領域がアクセスされることを検出する保護領域アクセス検出部を備え、
    上記メモリ制御部は、上記外部デバッグ指示装置が接続された後であって、かつ上記保護領域がアクセスされたことが検出されている間、上記保護領域に記憶された記憶データが上記メモリからマイクロコンピュータ内部で出力されるのを阻止するように構成されていることを特徴とするマイクロコンピュータ。
  26. 請求項2のマイクロコンピュータであって、
    マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記CPUに入力される割り込み要求信号がマスクされるように構成されていることを特徴とするマイクロコンピュータ。
  27. 請求項1のマイクロコンピュータであって、
    上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、上記CPUの動作を停止させるように構成されていることを特徴とするマイクロコンピュータ。
  28. 請求項27のマイクロコンピュータであって、
    さらに、上記CPUの動作が停止している間、上記CPUに入力される割り込み要求信号をマスクする割り込み制御部を備えたことを特徴とするマイクロコンピュータ。
  29. 請求項1のマイクロコンピュータであって、
    上記デバッグ制御部は、マイクロコンピュータが通常動作をしている状態で上記外部デバッグ指示装置が接続されてから、認証が成功するまでの間、マイクロコンピュータから上記外部デバッグ指示装置へデータが出力されるのを阻止するようになっていることを特徴とするマイクロコンピュータ。
JP2006068658A 2006-03-14 2006-03-14 マイクロコンピュータ Pending JP2007249323A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006068658A JP2007249323A (ja) 2006-03-14 2006-03-14 マイクロコンピュータ
US11/717,644 US20070220337A1 (en) 2006-03-14 2007-03-14 Microcomputer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006068658A JP2007249323A (ja) 2006-03-14 2006-03-14 マイクロコンピュータ

Publications (1)

Publication Number Publication Date
JP2007249323A true JP2007249323A (ja) 2007-09-27

Family

ID=38519384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006068658A Pending JP2007249323A (ja) 2006-03-14 2006-03-14 マイクロコンピュータ

Country Status (2)

Country Link
US (1) US20070220337A1 (ja)
JP (1) JP2007249323A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013037654A (ja) * 2011-08-11 2013-02-21 Fuji Electric Co Ltd 半導体集積回路およびデータ漏洩防止方法
JP2014048904A (ja) * 2012-08-31 2014-03-17 Fuji Electric Co Ltd 制御装置、そのデータ保護方法およびデータ保護解除方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2446831B (en) * 2007-02-22 2011-06-15 Advanced Risc Mach Ltd Selective disabling of diagnostic functions within a data processing system
JP2008226083A (ja) * 2007-03-15 2008-09-25 Nec Electronics Corp オンチップ・デバッグ・エミュレータおよびデバッグ方法並びにマイクロコンピュータ
US9141776B2 (en) 2008-04-30 2015-09-22 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for secure hardware analysis
JP5400443B2 (ja) 2009-03-25 2014-01-29 スパンション エルエルシー 集積回路、デバッグ回路、デバッグコマンド制御方法
KR101554326B1 (ko) 2009-05-21 2015-09-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US8484451B2 (en) * 2010-03-11 2013-07-09 St-Ericsson Sa Method and apparatus for software boot revocation
EP2831787B1 (en) 2012-03-30 2020-07-08 Irdeto B.V. Method and system for preventing and detecting security threats
KR101992234B1 (ko) 2012-05-22 2019-06-24 삼성전자주식회사 디버깅 회로를 위한 클럭 제어 회로를 구비하는 집적 회로 및 이를 포함하는 시스템-온-칩
US9423843B2 (en) * 2012-09-21 2016-08-23 Atmel Corporation Processor maintaining reset-state after reset signal is suspended
US9471091B2 (en) * 2012-11-28 2016-10-18 Nvidia Corporation Periodic synchronizer using a reduced timing margin to generate a speculative synchronized output signal that is either validated or recalled
US9569613B2 (en) * 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
JP5955482B1 (ja) * 2015-01-28 2016-07-20 三菱電機株式会社 ユニット及びプログラマブルロジックコントローラシステム
KR20160095688A (ko) * 2015-02-03 2016-08-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 상태 확인 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4260984B2 (ja) * 1999-06-04 2009-04-30 株式会社東芝 情報処理装置および情報処理方法
JP4437881B2 (ja) * 2001-06-22 2010-03-24 富士通マイクロエレクトロニクス株式会社 デバッグサポートユニットを有するマイクロコントローラ
US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
JP4182740B2 (ja) * 2002-12-06 2008-11-19 沖電気工業株式会社 マイクロコンピュータ
CA2536610C (en) * 2004-02-05 2013-04-30 Research In Motion Limited Debugging port security interface

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013037654A (ja) * 2011-08-11 2013-02-21 Fuji Electric Co Ltd 半導体集積回路およびデータ漏洩防止方法
JP2014048904A (ja) * 2012-08-31 2014-03-17 Fuji Electric Co Ltd 制御装置、そのデータ保護方法およびデータ保護解除方法

Also Published As

Publication number Publication date
US20070220337A1 (en) 2007-09-20

Similar Documents

Publication Publication Date Title
JP2007249323A (ja) マイクロコンピュータ
JP5044387B2 (ja) 情報処理装置及びそのスタックポインタ更新方法
TW201015323A (en) Secure information processing
JP2007249933A (ja) データ処理装置内コンテンツへのアクセス管理
US20070136565A1 (en) Stack underflow debug with sticky base
JP2013250980A (ja) プロセッサ資源および実行保護の方法および装置
JP2009129394A (ja) 情報処理装置及びそのプログラム実行制御方法
JP4893427B2 (ja) マイクロコンピュータシステム
KR100204850B1 (ko) 특정저장영역의 기입보호기능을 구비한 정보처리장치 및 그방법
JP5414057B2 (ja) マイクロコンピュータ
US6968410B2 (en) Multi-threaded processing of system management interrupts
US6725362B2 (en) Method for encoding an instruction set with a load with conditional fault instruction
JP5215655B2 (ja) データ処理装置及びデータ処理装置におけるバスアクセス制御方法
JP2006338426A (ja) 計算機システム
JP5737290B2 (ja) データ処理装置および方法、そのプロセッサユニット
JP5644380B2 (ja) 情報処理装置
JP2007058588A (ja) プログラム保護機能を持つプロセッサ
JP2008140124A (ja) データ処理装置
JP2007052481A (ja) Icカード用lsi
JP2009271597A (ja) プロセッサ
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JPH0475137A (ja) データ処理装置
JP5756413B2 (ja) 制御装置
JP4543505B2 (ja) マイクロコンピュータの制御方法及び異常監視装置