説明

マイクロプロセッサ

【課題】セキュリティビットをオンにしてフラッシュROMを書き換え禁止にする手法はフラッシュROMの再書き込みができず、解除キーが入力されたときに書き換えを許可する手法は、解除キー入力の専用端子が必要になり、端子数が増加する。本発明は端子数が増加せず、かつ再書き込みができるマイクロプロセッサを提供することを目的とする。
【解決手段】リセット信号がアクティブになったときに解除キーを入力する端子を入力端子に設定し、この端子に印加されるデータと解除キーを比較し、リセット信号がインアクティブに変化したときにこの比較結果を保存して、この保存した信号でデバッグ部の動作の許可、禁止を制御した。解除キー入力端子をユーザが使用する汎用端子と兼用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバッグ機能を有するマイクロプロセッサに関し、特にセキュリティ機能を高めたマイクロプロセッサに関するものである。
【背景技術】
【0002】
CPU(Central Processing Unit)コアおよびフラッシュROM(Read Only Memory)を内蔵したマイクロプロセッサには、その動作を検証するためにJTAG(Joint Test Action Group)インターフェイスを用いたデバッグ機能を有するものが一般的になっている。また、このJTAGインターフェイスは、内蔵フラッシュROMにデータ(プログラム)を書き込む用途にも用いられる。
【0003】
このようなデバッグ機能は、マイクロプロセッサを用いた装置の開発では有用ではあるが、開発が終了してエンドユーザが装置を使用するときは不要であり、またこのデバッグ機能を用いて第3者がフラッシュROMに格納されたプログラムデータを読み出す危険性がある。このため、装置をエンドユーザに引き渡すときにデバッグ機能を無効化して、セキュリティ保護を図ることが行われている。例えば、フラッシュROMにセキュリティビットを設け、このセキュリティビットをセットすることにより、第3者がフラッシュROMを読み出せないようにしている。
【0004】
しかし、デバッグ機能を無効化した後に、装置の障害調査やフラッシュROMの再書き込みのために、一時的にデバッグ機能を有効にして、マイクロプロセッサの動作を確認し、またフラッシュROMの書き込みを行わなければならないことが発生する。
【0005】
特許文献1には、デバッグ機能を無効化した後にJTAGインターフェイスを有効化して、内蔵フラッシュROMの再書き込みが可能な半導体回路が記載されている。以下、図3に基づいてこの半導体回路を説明する。
【0006】
図3において、10はJTAGポート、11はJTAG制御部である。JTAG制御部11はTAP(Test Access Port)12を介してCPUコア14に接続され、TAP13を介してフラッシュROM15に接続される。CPUコア14はフラッシュROM15に格納されたプログラムを読み出して動作する。
【0007】
ピンスクランブル回路16には、入力端子17からデータが入力される。ピンスクランブル回路16は、入力端子17から入力されるデータが予め定められた解除キーに一致したときにその出力を高レベルにし、その他のときは低レベルにする。
【0008】
フラッシュROM15にはセキュリティビットが内蔵され、このセキュリティビットの値がSEQ端子から出力される。SEQ端子の出力およびピンスクランブル回路16の出力はANDゲート18に入力され、このANDゲート18の出力はJTAG制御部11のインヒビット端子Inhに入力される。端子Inhが低レベルのときはJTAG制御部11の動作が許可され、高レベルのときは動作が禁止される。
【0009】
装置の開発時はセキュリティビットが”0”であり、SEQ端子の出力は低レベルになる。ANDゲート18の出力は低レベルになり、JTAG制御部11は動作する。このため、JTAGポート10を用いてデバッグを行い、またフラッシュROM15にプログラムを書き込むことができる。
【0010】
フラッシュROM15にプログラムを書き込んだ後、セキュリティビットに”1”を書き込む。SEQ端子は高レベルになる。入力端子17から入力されるデータが解除キーでないとピンスクランブル回路16の出力は低レベルになるので、Inh端子には高レベルが印加される。このため、JTAG制御部11の動作は禁止され、JTAGポート10を用いてフラッシュROMを読み出し、また書き換えることはできない。
【0011】
入力端子17に解除キーを与えるとピンスクランブル回路16の出力は高レベルになり、Inh端子は低レベルになる。JTAG制御部11の動作は許可されるので、JTAGポート10を用いてフラッシュROM15を書き換えることができる。解除キーを秘密にすることにより、悪意の第3者によるフラッシュROM15の読み出し、書き換えを防止することができる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特許第3760087号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、このような半導体回路には、次のような課題があった。入力端子17をユーザが自由に用いる汎用端子と兼用すると、誤って解除キーが入力され、JTAG制御部11の動作が許可されてしまう。このようなことが発生すると悪意の第3者によってフラッシュROMの内容が読み取られるだけでなく、CPUコア14が異常動作をしてしまう危険性がある。このため、入力端子17は解除キー入力専用の端子としなければならない。また、容易に解除キーを悟られないようにするためには、入力端子17の端子数を多くして、解除キーのビット数を多くしなければならない。
【0014】
半導体回路のコストは、実装する端子数に大きく依存する。すなわち、同様な機能を有する半導体回路であっても、端子数が多くなるとコストが上昇する。図3の半導体回路は入力端子17として多くの端子を割当なければならず、かつ他の端子と共用できないので、コスト高になってしまうという課題があった。
【0015】
また、半導体回路の動作時には入力端子17は空き端子となる。このため、悪意の第3者は入力端子17を容易に識別でき、かつ半導体回路の動作を阻害することなく、自由に入力端子17に任意の信号を印加することができる。このため、たとえ解除キーを知らなくてもJTAG制御部11の動作を許可することが可能になり、フラッシュROM15の内容を読み取ることができるという課題もあった。
【0016】
本発明の目的は、解除キーを入力する端子とユーザが用いる汎用端子を兼用できるようにすることにより、端子数を少なくでき、かつ解除キーを入力する端子を容易に識別することが困難なマイクロプロセッサを実現することにある。
【課題を解決するための手段】
【0017】
このような課題を達成するために、本発明のうち請求項1記載の発明は、
デバッグ機能を有するマイクロプロセッサにおいて、
前記マイクロプロセッサの指定された端子が接続され、デバッグモード設定信号がアクティブになると前記指定された端子を入力端子に設定するIO部と、
前記指定された端子に印加されるデータと所定の解除キーを比較し、前記デバッグモード設定信号がアクティブからインアクティブに変化したときに、前記指定された端子に印加されるデータと前記解除キーの比較結果を保持し、この保持した比較結果を出力するセキュリティ保護部と、
前記マイクロプロセッサをデバッグすると共に、前記セキュリティ保護部の出力に基づいてその動作の許可および禁止が制御されるデバッグ部と、
を備えたものである。解除キーを入力する指定された端子をユーザが機能を設定して使用する汎用端子として使用できるので、マイクロプロセッサの端子数を削減できる。
【0018】
請求項2記載の発明は、請求項1に記載の発明において、
前記デバッグモード設定信号として、前記マイクロプロセッサのリセット信号を使用したものである。マイクロプロセッサに必須なリセット信号を用いるので、端子数を削減できる。
【0019】
請求項3記載の発明は、請求項1若しくは請求項2に記載の発明において、
前記マイクロプロセッサは書き換え可能なROMを内蔵し、前記デバッグ部を用いてこの書き換え可能なROMにデータを書き込むようにしたものである。第3者によるROMの読み出し、書き込みを防止できる。
【発明の効果】
【0020】
本発明によれば以下のような効果がある。
請求項1、2、および3の発明によれば、デバッグモード設定信号がアクティブになると指定された端子を入力端子に設定し、この指定された端子に印加されるデータと所定の解除キーを比較して、前記デバッグモード設定信号がアクティブからインアクティブに変化したときの比較結果を保持して、この保持した比較結果に基づいてデバッグ部の動作の許可、禁止を制御するようにした。
【0021】
デバッグモード設定信号がインアクティブのときは、指定された端子はユーザが機能を設定して使用することができる汎用端子とすることができる。このため、解除キーを入力する専用端子が不要になるので、マイクロプロセッサの端子数を削減することができ、コストダウンを図ることができるという効果がある。
【0022】
また、解除キーを入力する端子と汎用端子を兼用できるので、第3者はどの端子が解除キーを入力する端子であるかを見分けることが困難になる。このため、悪意の第3者が解除キーを入力してデバッグ機能を有効にすることが難しくなるので、よりセキュリティが向上するという効果もある。
【0023】
さらに、マイクロプロセッサのリセット信号をデバッグモード設定信号として用いると、デバッグモード設定信号を入力する端子が不要になり、かつ自動的にマイクロプロセッサを初期設定できるという効果もある。
【図面の簡単な説明】
【0024】
【図1】本発明の一実施例を示した構成図である。
【図2】図1実施例の動作を説明するための波形図である。
【図3】従来の半導体回路の構成図である。
【発明を実施するための形態】
【0025】
以下本発明を、図面を用いて詳細に説明する。図1は本発明に係るマイクロプロセッサの一実施例を示した構成図である。
【0026】
図1において、20はマイクロプロセッサであり、JTAGポート21、JTAG制御部22、CPUコア23、兼用端子24、リセット端子25、IO部26、内蔵メモリ27、内部バス28、およびセキュリティ保護部29で構成される。また、セキュリティ保護部29は、解除キー記憶部29a、比較部29b、保持部29cで構成される。なお、マイクロプロセッサ20には、兼用端子24以外にもユーザが自由にその機能を設定できる端子が備わっているが、記載を省略している。
【0027】
JTAGポート21とJTAG制御部22でデバッグ部を構成している。なお、ここで言うデバッグとは、ブレークポイントの設定、任意のアドレスからのプログラム開始、レジスタ値の参照等を行ってCPUコア23の動作の検証すること、あるいは内蔵メモリ27へのデータの書き込みのいずれかあるいは両方の操作を言う。また、兼用端子24は指定された端子に相当する。
【0028】
JTAGポート21はJTAG制御部22に接続される。このJTAG制御部22は、その動作を許可あるいは禁止するInh端子を備えている。CPUコア23はリセット信号が入力されるRST端子を具備しており、JTAG制御部22に接続される。
【0029】
JTAGは、半導体チップの内部回路を数珠つなぎして内部の状態を順番に読み出すバウンダリスキャンテストを用いて、集積回路や基板の検査、デバッグを行う仕組みである。JTAG制御部22はJTAGポート21から入力されたコマンドやデータをCPUコア23に出力し、またCPUコア23から読み出したデータをJTAGポート21に出力する。
【0030】
兼用端子24は入力端子、出力端子等ユーザが自由にその機能を選択できる端子であり、また後述するように、解除キーの入力端子としても用いられる。兼用端子24は複数個存在する。また、リセット端子25にはリセット信号が入力される。リセット信号はマイクロプロセッサを初期化するための信号であり、デバッグモード設定信号に相当する。
【0031】
IO部26には兼用端子24が接続される。IO部26は兼用端子24の動作を規定し、かつ入出力データの処理を行う。また、リセット端子25から入力されたリセット信号はCPUコア23およびIO部26のRST端子に入力される。このリセット信号がアクティブになるとCPUコア23は初期化され、またIO部26は兼用端子24を入力端子に設定する。
【0032】
27は内蔵メモリであり、RAM(Random Access Memory)やフラッシュROMで構成される。CPUコア23、IO部26、内蔵メモリ27はマイクロプロセッサ20の内部バス28に接続される。また、JTAGポート21を介して、内蔵メモリ27にデータを書き込み、また書き込んだデータを読み出すことができる。なお、フラッシュROMはデータを書き換えることができ、かつ電源が供給されなくても書き込んだデータを保持できる不揮発性メモリであり、書き換え可能なROMに相当する。
【0033】
セキュリティ保護部29は解除キー記憶部29a、比較部29b、および保持部29cで構成される。セキュリティ保護部29は、リセット信号がアクティブなときに解除キーが入力されるとJTAG制御部22の動作を許可し、解除キー以外のデータが入力されるとJTAG制御部22の動作を禁止する。なお、解除キーは第3者が容易に推測できない値に設定する。
【0034】
解除キー記憶部29aには、JTAG制御部22の動作を許可する解除キーが格納される。この解除キーは、マイクロプロセッサ20を製造するときのマスクパターンを用いて設定する、あるいは内蔵メモリ27に含まれるROMに書き込むことで設定するが、その方法は問わない。
【0035】
比較部29bには兼用端子24に印加される信号、および解除キー記憶部29aに格納された解除キーが入力される。比較部29bはまたEN端子を具備し、このEN端子にはリセット端子25から入力されたリセット信号が入力される。比較部29bは、EN端子に入力されるリセット信号がアクティブなときのみ兼用端子24に印加されるデータと解除キーを比較し、その結果を保持部29cに出力する。
【0036】
保持部29cにはリセット信号および比較部29bの出力が入力される。保持部29cはリセット信号の立ち上がりまたは立ち下がりで比較部29bの出力を保持し、この保持した出力をJTAG制御部22のInh端子に出力する。
【0037】
次に、図2に基づいてこの実施例の動作を説明する。なお、リセット信号は低レベルでアクティブになり、JTAG制御部22はそのInh端子に入力される信号が高レベルのときに動作し、低レベルのときは動作が禁止されるものとする。
【0038】
図2において、(1)は解除キーが入力された場合、(2)は解除キー以外のデータが入力された場合の動作である。なお、(A)は兼用端子24に印加されるデータ、(B)はリセット信号、(C)は比較部29bの出力、(D)は保持部29cの出力変化を表す。
【0039】
図2(1)において、時刻t3以前では保持部29cの出力が低レベルなので、JTAG制御部22の動作は禁止される。このため、JTAGポート21を介してデバッグおよび内蔵メモリ27の読み出し、書き込みを行うことはできない。
【0040】
時刻t1で兼用端子24に解除キーが印加され、時刻t2でリセット信号が低レベル(アクティブ)になる。時刻t2より前はリセット信号がインアクティブ(低レベル)なので、比較部29bの出力は低レベルである。時刻t2でリセット信号がアクティブになると、兼用端子24は入力端子に設定される。比較部29bは兼用端子24に印加されたデータと解除キー記憶部29aに記憶された解除キーを比較する。2つのデータは一致しているので、比較部29bはその出力を高レベルに変化させる。
【0041】
時刻t3でリセット信号がインアクティブ(高レベル)になる。保持部29cはリセット信号の立ち上がりで比較部29bの出力を保持するので、その出力は高レベルに変化する。JTAG制御部22のInh端子には高レベルが印加されるので、その動作は許可される。すなわち、時刻t3以降では、ユーザはJTAGポート21を経由してマイクロプロセッサをデバッグし、また内蔵メモリ27の読み出し、書き込みを行うことができる。
【0042】
図2(2)は解除キー以外のデータが入力されたときの動作を表したものである。兼用端子24に時刻t4で解除キー以外のデータが設定され、時刻t5でリセット信号がアクティブ(低レベル)になる。
【0043】
兼用端子24は入力端子に設定され、比較部29bは兼用端子24に印加されたデータと解除キーを比較する。この2つのデータは一致しないので、比較器29bの出力は低レベルを維持する。保持部29cはリセット信号が立ち上がる時刻t6で比較部29bの出力を保持するので、その出力も低レベルを維持する。JTAG制御部22はその動作が禁止されるので、JTAGポートを介したデバッグおよび内蔵メモリの読み出し、書き込みを行うことはできない。
【0044】
このように、マイクロプロセッサ20のデバッグ、または内蔵メモリ27の読み出し、書き込みを行うときは、兼用端子24に解除キーを設定してリセット信号を一定期間アクティブにする。JTAG制御部22の動作は許可されるので、デバッグや内蔵メモリ27の読み出し、書き込みを行うことができる。
【0045】
デバッグおよび内蔵メモリ27への書き込みが終了すると、兼用端子24に解除キー以外のデータを設定し、リセット信号を一定期間アクティブにする。JTAG制御部22の動作は禁止されるので、これ以降デバッグおよび内蔵メモリ27の読み出し、書き込みを行うことはできなくなる。
【0046】
解除キーを入力しないとJTAG制御部22を動作させることができないので、解除キーを知らない悪意の第3者はJTAG制御部22を動作させることができない。このため、悪意の第3者が内蔵メモリ27の内容を読み出すことを防止することができる。また、必要に応じて何度でもJTAG制御部22の動作を許可してデバッグおよび内蔵メモリ27の書き込みを行うことができる。
【0047】
また、図3実施例では、解除キーの入力のための専用端子を用意しなければならないので、マイクロプロセッサの端子数が増加し、コストアップになるという課題があった。本実施例では解除キーの入力端子とユーザが使用できる汎用端子を兼用することができるので、マイクロプロセッサの端子数を削減でき、コストダウンを図ることができる。
【0048】
また、図3実施例では解除キーを入力する端子は専用端子になるので、第3者は容易に解除キーを入力する端子を識別することが可能であった。本実施例では解除キーを入力する端子はユーザが機能を設定して使用する汎用端子と兼用されるので、第3者は解除キーを入力する端子を見分けることが困難になり、セキュリティがより向上する。
【0049】
なお、この実施例ではJTAGを用いてマイクロプロセッサ20のデバッグおよび内蔵メモリ27の書き込み、読み出しを行うようにしたが、JTAGを用いないでデバッグする構成に適用することもできる。この場合も、セキュリティ保護部29の出力でデバッグ部の動作の許可、禁止を制御すればよい。
【0050】
また、JTAG制御部22の動作が許可されると、このJTAG制御部22を用いてマイクロプロセッサの動作を知ることができるので、内蔵メモリの書き込みにJTAG制御部22を使用しない構成であっても、JTAG制御部22を動作禁止にすることは必要である。
【0051】
また、本実施例ではIO部26とセキュリティ保護部29にリセット信号を入力するようにしたが、必ずしもリセット信号でなくてもよい。リセット信号を用いない場合、IO部26はRST端子に入力する信号がインアクティブになったときに、兼用端子24の設定を元に戻すようにする。ただ、CPUコア23にはリセット信号を入力しなければならないので、リセット信号を用いた方が、構成を簡単にできる。
【0052】
また、この実施例ではリセット信号は低レベルでアクティブになる信号としたが、高レベルでアクティブになる信号であってもよい。この場合、保持部29cは立ち下がりで比較部29bの出力を保持すればよい。またJTAG制御部22のInh端子に印加する信号も、高レベルと低レベルを逆にしてもよい。
【0053】
また、図1実施例では比較部29bはリセット信号(デバッグモード設定信号)がアクティブなときのみ比較結果を出力するようにしたが、インアクティブなときも比較結果を出力するようにしてもよい。リセット信号がインアクティブなときは兼用端子24に印加されるデータは不定になるので比較結果も不定になるが、この比較結果は保持部29cに保持されないので、セキュリティ保護部29の出力には影響しない。
【0054】
さらに、マイクロプロセッサ20にはマイクロコントローラと呼ばれるものも含むとする。要は、メモリに格納されたプログラムに従って動作するものであればよい。
【符号の説明】
【0055】
20 マイクロプロセッサ
21 JTAGポート
22 JTAG制御部
23 CPUコア
24 兼用端子
25 リセット端子
26 IO部
27 内蔵メモリ
28 内部バス
29 セキュリティ保護部
29a 解除キー記憶部
29b 比較部
29c 保持部

【特許請求の範囲】
【請求項1】
デバッグ機能を有するマイクロプロセッサにおいて、
前記マイクロプロセッサの指定された端子が接続され、デバッグモード設定信号がアクティブになると前記指定された端子を入力端子に設定するIO部と、
前記指定された端子に印加されるデータと所定の解除キーを比較し、前記デバッグモード設定信号がアクティブからインアクティブに変化したときに、前記指定された端子に印加されるデータと前記解除キーの比較結果を保持し、この保持した比較結果を出力するセキュリティ保護部と、
前記マイクロプロセッサをデバッグすると共に、前記セキュリティ保護部の出力に基づいてその動作の許可および禁止が制御されるデバッグ部と、
を備えたことを特徴とするマイクロプロセッサ。
【請求項2】
前記デバッグモード設定信号は、前記マイクロプロセッサのリセット信号であることを特徴とする請求項1に記載のマイクロプロセッサ。
【請求項3】
前記マイクロプロセッサは書き換え可能なROMを内蔵し、前記デバッグ部を用いてこの書き換え可能なROMにデータを書き込むようにしたことを特徴とする請求項1若しくは請求項2に記載のマイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2011−243015(P2011−243015A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−114952(P2010−114952)
【出願日】平成22年5月19日(2010.5.19)
【出願人】(000006507)横河電機株式会社 (4,443)
【Fターム(参考)】