(57)【要約】  【課題】ＲＯＭに記憶されているデータが、外部からＣＰＵを経由して間接的に読み出されるのを防止することができるマイクロコントローラを提供する。  【解決手段】本発明のマイクロコントローラは、ＣＰＵと、ＣＰＵが使用するデータが記憶されているＲＯＭと、デバッグ用回路とを備えるもので、外部から、デバッグ用回路を経由して与えられる命令に従って、ＣＰＵがＲＯＭに記憶されているデータを読み出す時に、ＣＰＵから供給される、インストラクション・フェッチ・サイクルである場合にアクティブ状態となるＩＦ信号が非アクティブ状態である場合、ＲＯＭから読み出されるデータをマスク、もしくは暗号化して出力するマスク／暗号化回路を備える。【選択図】図１
2005285053.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、このＣＰＵが使用するデータが記憶されているＲＯＭと、デバッグ用回路とを備えるマイクロコントローラであって、
外部から、前記デバッグ用回路を経由して与えられる命令に従って、前記ＣＰＵが前記ＲＯＭに記憶されているデータを読み出す時に、前記ＣＰＵから供給される、インストラクション・フェッチ・サイクルである場合にアクティブ状態となるＩＦ信号が非アクティブ状態である場合、前記ＲＯＭから読み出されるデータをマスク、もしくは暗号化して出力するマスク／暗号化回路を備えることを特徴とするマイクロコントローラ。
【請求項２】
さらに、前記インストラクション・フェッチ・サイクルである場合に加えて、割り込み処理の時に、前記ＣＰＵが前記ＲＯＭに記憶されている割り込みテーブルのデータを読み出す場合にもアクティブ状態となるＩＦ信号を生成するＩＦ信号生成回路を備え、
前記マスク／暗号化回路は、前記ＩＦ信号生成回路から供給されるＩＦ信号に応じて動作する請求項１に記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（セントラル・プロセッシング・ユニット）と、ＣＰＵが使用するデータが記憶されているＲＯＭ（リード・オンリ・メモリ）と、デバッグ用回路とを備えるシステムを搭載するマイクロコントローラに関するものである。
【背景技術】
【０００２】
例えば、携帯電話の制御部などのように、ＣＰＵと、このＣＰＵが使用するデータが記憶されている、マスクＲＯＭやフラッシュＲＯＭなどのＲＯＭとを備えるシステムを搭載するマイクロコントローラが知られている。
【０００３】
特許文献１に示されているように、マイクロコントローラの内部には、ＣＰＵやＲＯＭの他に、プログラムの動作検証およびハードウェアの動作確認のために、デバッグ作業支援を目的としたデバッグ用の回路ブロック、例えばＴＡＰ（テスト・アクセス・ポート）やＪＴＡＧ（ジョイント・テスト・アクション・グループ）制御回路などがあらかじめ搭載されているのが一般的である。
【０００４】
ところで、従来のマイクロコントローラでは、外部のデバッガから、その内部に搭載されているデバッグ用回路を経由して、ＲＯＭに記憶されているデータ（プログラムコードが主である）を直接的に読み出す、あるいは外部からデバッグ用回路を経由してＣＰＵにメモリリード命令を与えることによって、ＲＯＭに記憶されているデータをＣＰＵを経由して間接的に読み出すことが可能であった。
【０００５】
このことは、ＲＯＭの内容が第三者に読み出されるという、セキュリティ上の問題が存在することを意味する。特許文献１は、ＲＯＭに記憶されているデータが直接的に読み出されることを防止するものではあるが、ＲＯＭに記憶されているデータがＣＰＵを経由して間接的に読み出されることを防止することはできない。このため、簡単にＲＯＭの内容を読み出すことができるという問題があった。
【０００６】
【特許文献１】特開２００２−３２２６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、前記従来技術に基づく問題点を解消し、ＲＯＭに記憶されているデータが、外部からＣＰＵを経由して間接的に読み出されるのを防止することができるマイクロコントローラを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、ＣＰＵと、このＣＰＵが使用するデータが記憶されているＲＯＭと、デバッグ用回路とを備えるマイクロコントローラであって、
外部から、前記デバッグ用回路を経由して与えられる命令に従って、前記ＣＰＵが前記ＲＯＭに記憶されているデータを読み出す時に、前記ＣＰＵから供給される、インストラクション・フェッチ・サイクルである場合にアクティブ状態となるＩＦ信号が非アクティブ状態である場合、前記ＲＯＭから読み出されるデータをマスク、もしくは暗号化して出力するマスク／暗号化回路を備えることを特徴とするマイクロコントローラを提供するものである。
【０００９】
ここで、さらに、前記インストラクション・フェッチ・サイクルである場合に加えて、割り込み処理の時に、前記ＣＰＵが前記ＲＯＭに記憶されている割り込みテーブルのデータを読み出す場合にもアクティブ状態となるＩＦ信号を生成するＩＦ信号生成回路を備え、
前記マスク／暗号化回路は、前記ＩＦ信号生成回路から供給されるＩＦ信号に応じて動作するのが好ましい。
【発明の効果】
【００１０】
本発明のマイクロコントローラでは、例えば外部のデバッガなどから、デバッグ用回路を経由してＣＰＵにメモリリード命令を与えても、ＲＯＭに記憶されているデータをＣＰＵを経由して間接的に読み出すことはできない。このため、本発明によれば、非常に簡単かつ経済的な手法で、第三者に対するセキュリティを確保することができる。
【発明を実施するための最良の形態】
【００１１】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のマイクロコントローラを詳細に説明する。
【００１２】
図１は、本発明のマイクロコントローラの内部構成を表す一実施形態のブロック図である。同図に示すマイクロコントローラ１０は、例えば外部のデバッガなどから、ＣＰＵを経由して、ＲＯＭに記憶されているデータを間接的に読み出すことを禁止する機構を有するもので、ＣＰＵ１２と、このＣＰＵ１２が使用するデータが記憶されているＲＯＭ１４と、デバッグ用回路であるＪＴＡＧ制御回路及びＴＡＰ１６と、ＩＦ信号生成回路１８と、マスク／暗号化回路２０とを備えている。
【００１３】
マイクロコントローラ１０において、ＣＰＵ１２、ＲＯＭ１４、およびＪＴＡＧ制御回路及びＴＡＰ１６は、従来公知の構成要素であるから、ここではその詳細な説明は省略する。
【００１４】
ここで、ＪＴＡＧ制御回路及びＴＡＰ１６は、マイクロコントローラ１０のＪＴＡＧ端子と相互に接続されている。また、ＣＰＵ１２は、ＪＴＡＧ制御回路及びＴＡＰ１６と相互に接続されているとともに、内部のデータバスとも相互に接続され、ＣＰＵ１２の出力信号はＩＦ信号生成回路１８に入力されている。また、ＲＯＭ１４から読み出されるデータ出力はマスク／暗号化回路２０に入力されている。
【００１５】
ＲＯＭ１４には、ＣＰＵ１２が使用する各種のデータが記憶されている。ＲＯＭ１４に記憶されるデータは、ＣＰＵ１２が使用するどのようなデータであってもよいし、そのビット幅やメモリ容量も何ら限定されない。本実施形態の場合、ＲＯＭ１４の内部には、ＣＰＵ１２を動作させるためのプログラムコードと、割り込み処理の時に使用する割り込みテーブルのデータとを含む、各種のデータが記憶されている。
【００１６】
ＩＦ信号生成回路１８は、ＣＰＵ１２の出力信号（ＣＰＵ１２から出力されるＩＦ信号、割り込み処理関連の信号を含む）に従って、インストラクション・フェッチ・サイクル（以下、ＩＦサイクルという）である場合に加えて、割り込み処理の時に、ＣＰＵ１２がＲＯＭ１４から割り込みテーブルのデータを読み出す場合にもアクティブ状態となるＩＦ信号を生成する。このＩＦ信号は、マスク／暗号化回路２０に入力されている。
【００１７】
ここで、ＣＰＵ１２が、ＲＯＭ１４に記憶されているデータを読み出す場合、命令コード（インストラクション）として読み出す（フェッチする）場合と、単純にデータとして読み出す（リードする）場合の２通りがある。ＣＰＵが命令を実行する場合、まず、命令コードをＲＯＭ１４からフェッチするが、このサイクルをＩＦサイクルと呼ぶ。本実施形態では、ＩＦ信号がアクティブ状態である場合、論理「１」となる。
【００１８】
一般的に、ＣＰＵ１２の内部では、ＩＦサイクルであることを表すＩＦ信号が使用されている。従って、ＣＰＵ１２の内部で使用されているＩＦ信号をＣＰＵ１２の外部に出力して使用することができる。割り込み処理の場合を考慮しないときには、ＣＰＵ１２から出力されるＩＦ信号を直接マスク／暗号化回路２０に入力すればよい。
【００１９】
なお、ＩＦ信号生成回路１８は、ＣＰＵ１２の出力信号、例えばＣＰＵ１２内部のステートマシンの情報をＣＰＵ１２から出力し、これをデコードすることで実現することができる。しかし、ＩＦ信号生成回路１８の具体的な回路構成は何ら限定されず、上記と同様の機能を果たす各種の回路構成のものを使用することができる。また、ＩＦ信号の極性も適宜変更してもよい。
【００２０】
続いて、マスク／暗号化回路２０は、ＣＰＵ１２がＲＯＭ１４に記憶されているデータを読み出す時に、ＣＰＵ１２又はＩＦ信号生成回路１８から供給されるＩＦ信号がアクティブ状態である場合、ＲＯＭ１４から読み出されるデータ出力をそのままデータバス上に出力し、ＩＦ信号生成回路１８から供給されるＩＦ信号が非アクティブ状態である場合、ＲＯＭ１４から読み出されるデータ出力をマスク、もしくは暗号化してデータバス上に出力する。
【００２１】
図２は、ＲＯＭ１４の出力データが３２ビットの場合のマスク／暗号化回路２０の例であり、図示省略しているが、実際には３２個のＡＮＤゲート２２で構成されている。３２個のＡＮＤゲート２２の一方の入力端子にはＣＰＵ１２又はＩＦ信号生成回路１８から供給されるＩＦ信号が入力され、その他方の入力端子には、ＲＯＭ１４のデータ出力［３１：０］がそれぞれ入力されている。また、図示省略しているが、ＡＮＤゲート２２のデータ出力［３１：０］は、ＣＰＵ１２がＲＯＭ１４のデータを読み出した場合にデータバス上に出力される。
【００２２】
図２に示すマスク／暗号化回路２０は、ＩＦ信号がアクティブ状態である論理「１」の時、ＲＯＭ１４のデータ出力［３１：０］が、ＡＮＤゲート２２のデータ出力［３１：０］としてそのまま出力される。一方、ＩＦ信号が非アクティブ状態である論理「０」の時、ＲＯＭ１４のデータ出力［３１：０］はマスクされ、ＡＮＤゲート２２のデータ出力［３１：０］は全て論理「０」となる。
【００２３】
なお、マスク／暗号化回路２０は図示例の構成に限定されず、ＩＦ信号に従って、ＲＯＭ１４のデータ出力をどのようにマスクしてもよいし、あるいはＲＯＭ１４のデータ出力をさらに複雑に暗号化するものでもよい。
【００２４】
また、図１に示すマイクロコントローラ１０において、実際には、ＣＰＵ１２からＲＯＭ１４に対して、アドレスや、メモリリード信号、メモリライト信号などが入力されているが、図面の煩雑さを避けるために省略してある。また、マイクロコントローラ１０は、通常、例えばＲＡＭ（ランダム・アクセス・メモリ）などの他の各種の構成要素を含んでいるが、これも図面の煩雑さを避けるために省略してある。
【００２５】
次に、図１に示すマイクロコントローラ１０の動作を説明する。
【００２６】
図３のタイミングチャートの左側部に示すように、ＣＰＵ１２がＲＯＭ１４からデータを読み出す場合に、ＩＦサイクルである、もしくは割り込み処理の時に、割り込みテーブルのデータを読み出す場合であれば、システムクロックに同期してＣＰＵ１２から出力されるメモリリード信号（ローアクティブ）がローレベルになるとともに、ＣＰＵ１２又はＩＦ信号生成回路１８から出力されるＩＦ信号が論理「１」となる。この場合、マスク／暗号化回路２０からは、ＲＯＭ１４の有効（ＶＡＬＩＤ）なデータ出力［３１：０］が、マスク／暗号化回路２０のデータ出力［３１：０］としてそのままデータバス上に出力される。
【００２７】
すなわち、ＣＰＵ１２は、ＲＯＭ１４から正しいデータ（命令コード、もしくは割り込みテーブルのデータ）を読み出すことができる。従って、マイクロコントローラ１０では、ＣＰＵ１２がＲＯＭ１４に記憶されている命令コードを実行する通常動作の場合、および割り込み処理の場合、マスク／暗号化回路２０は、ＣＰＵ１２およびＲＯＭ１４の動作に何ら影響を与えない。
【００２８】
一方、図３のタイミングチャートの右側部に示すように、ＣＰＵ１２がＲＯＭ１４からデータを読み出す場合に、メモリリード信号はローレベルになるが、ＩＦサイクルではなく、また割り込み処理の時に割り込みテーブルのデータを読み出す場合でもなければ、ＩＦ信号は論理「０」となる。この場合、マスク／暗号化回路２０からは、ＲＯＭ１４のデータ出力［３１：０］に関わらず、マスク／暗号化回路２０のデータ出力［３１：０］として、全て論理「０」のデータがデータバス上に出力される。
【００２９】
すなわち、ＣＰＵ１２は、ＲＯＭ１４から正しいデータを読み出すことができない。例えば、外部のデバッガなどから、ＪＴＡＧ制御回路及びＴＡＰ１６を経由してＣＰＵ１２にメモリリード命令を与えても、ＲＯＭ１４に記憶されているデータをＣＰＵ１２を経由して間接的に読み出すことはできない。このため、マイクロコントローラ１０は、非常に簡単かつ経済的な手法で、第３者に対するセキュリティを確保することができる。
【００３０】
次に、マイクロコントローラ１０の割り込み処理の場合の動作を説明する。
【００３１】
マイクロコントローラ１０は、図４のタイミングチャートに示すように、割り込み信号を除きシステムクロックに同期して動作する。また、例えばＣＰＵ１２が、ＰＣ（プログラムカウンタ）に対応するＲＯＭ１４のアドレスからデータ（命令コード）を読み出す（フェッチする）場合（＊４）に示すように、メモリリード信号はローアクティブの信号であり、ＩＦ信号はハイアクティブの信号とする。また、割り込み信号はローアクティブの信号とする。
【００３２】
割り込み処理の場合、ＣＰＵ１２に対して入力される割り込み信号がローレベルになると、外部Ｉ／Ｏ（入出力）から割り込みベクトルの読み込みが行われる（＊５）。次いで、現在実行中のＰＣの値が、スタック（スタックポインタＳＰに対応するＲＡＭ（図示省略）のアドレス）に退避（データライト）するためにＣＰＵ１２からデータバス上に出力される（外部データ出力）。
【００３３】
続いて、割り込みベクトルによって指定される、ＲＯＭ１４内部の割り込みテーブルのアドレスに記憶されている、割り込みルーチンの先頭アドレスの下位アドレスおよび上位アドレスの読み込みが順次行われる（＊１および＊６，＊２および＊７）。続いて、＊６，＊７で読み込まれた割り込みルーチンの先頭アドレスにジャンプする。すなわち、ＲＯＭ１４から割り込みルーチンの先頭アドレスのデータがＣＰＵ１２に読み込まれる（＊３および＊８）。
【００３４】
図４のタイミングチャートに示すように、マイクロコントローラ１０では、割り込みルーチンの先頭アドレスの下位アドレスおよび上位アドレスの読み込み（＊１および＊６，＊２および＊７）、および割り込みルーチンの先頭アドレスのデータの読み込み（＊３および＊８）の期間、上記メモリリード信号はローレベルとなり、ＩＦ信号はハイレベルとなる。
【００３５】
図４のタイミングチャートにおいて、ＩＦ信号のうち、点線で示す部分は、ＣＰＵ１２から出力されるＩＦ信号と等しい部分を表す。すなわち、ＣＰＵ１２からは、割り込み処理の場合、割込認識サイクルの＊３および＊８において、割り込みルーチンの先頭アドレスの命令コードを読み出す時（ＩＦサイクル）だけＩＦ信号が出力される。これに対し、本実施形態のＩＦ信号生成回路１８からは、＊１および＊６，＊２および＊７の、割り込みルーチンの先頭アドレスを読み出す場合（データリード）もＩＦ信号が出力される。
【００３６】
これにより、割り込み処理を利用するシステムであって、割り込み処理の時に使用する割り込みテーブルのデータがＲＯＭ１４内部に記憶されている場合も、マスク／暗号化回路２０が設けられていない場合と同様に正常に動作させることができる。
【００３７】
なお、本発明では、外部から、ＪＴＡＧ制御回路及びＴＡＰ１６を経由して、ＲＯＭ１４に記憶されたデータが直接的に読み出されるのを防止するために、例えば特許文献１に記載の手法を含む、従来公知の各種の手法を利用することができる。
【００３８】
本発明は、基本的に以上のようなものである。
以上、本発明のマイクロコントローラについて詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【図面の簡単な説明】
【００３９】
【図１】本発明のマイクロコントローラの内部構成を表す一実施形態のブロック図である。
【図２】図１に示すマスク／暗号化回路の内部構成を表す回路図である。
【図３】図１に示すマイクロコントローラの動作を表すタイミングチャートである。
【図４】図１に示すマイクロコントローラの動作を表すタイミングチャートである。
【符号の説明】
【００４０】
１０  マイクロコントローラ
１２  ＣＰＵ
１４  ＲＯＭ
１６  ＪＴＡＧ制御回路及びＴＡＰ
１８  ＩＦ信号生成回路
２０  マスク／暗号化回路
２２  ＡＮＤゲート
【図１】
2005285053.tif 000003
【図２】
2005285053.tif 000004
【図３】
2005285053.tif 000005
【図４】
2005285053.tif 000006