(57)【要約】【課題】セキュリティビットをオンにしてフラッシュＲＯＭを書き換え禁止にする手法はフラッシュＲＯＭの再書き込みができず、解除キーが入力されたときに書き換えを許可する手法は、解除キー入力の専用端子が必要になり、端子数が増加する。本発明は端子数が増加せず、かつ再書き込みができるマイクロプロセッサを提供することを目的とする。【解決手段】リセット信号がアクティブになったときに解除キーを入力する端子を入力端子に設定し、この端子に印加されるデータと解除キーを比較し、リセット信号がインアクティブに変化したときにこの比較結果を保存して、この保存した信号でデバッグ部の動作の許可、禁止を制御した。解除キー入力端子をユーザが使用する汎用端子と兼用できる。【選択図】図１
2011243015.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ機能を有するマイクロプロセッサにおいて、
前記マイクロプロセッサの指定された端子が接続され、デバッグモード設定信号がアクティブになると前記指定された端子を入力端子に設定するＩＯ部と、
前記指定された端子に印加されるデータと所定の解除キーを比較し、前記デバッグモード設定信号がアクティブからインアクティブに変化したときに、前記指定された端子に印加されるデータと前記解除キーの比較結果を保持し、この保持した比較結果を出力するセキュリティ保護部と、
前記マイクロプロセッサをデバッグすると共に、前記セキュリティ保護部の出力に基づいてその動作の許可および禁止が制御されるデバッグ部と、
を備えたことを特徴とするマイクロプロセッサ。
【請求項２】
前記デバッグモード設定信号は、前記マイクロプロセッサのリセット信号であることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記マイクロプロセッサは書き換え可能なＲＯＭを内蔵し、前記デバッグ部を用いてこの書き換え可能なＲＯＭにデータを書き込むようにしたことを特徴とする請求項１若しくは請求項２に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバッグ機能を有するマイクロプロセッサに関し、特にセキュリティ機能を高めたマイクロプロセッサに関するものである。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）コアおよびフラッシュＲＯＭ（Read Only Memory）を内蔵したマイクロプロセッサには、その動作を検証するためにＪＴＡＧ（Joint Test Action Group）インターフェイスを用いたデバッグ機能を有するものが一般的になっている。また、このＪＴＡＧインターフェイスは、内蔵フラッシュＲＯＭにデータ（プログラム）を書き込む用途にも用いられる。
【０００３】
このようなデバッグ機能は、マイクロプロセッサを用いた装置の開発では有用ではあるが、開発が終了してエンドユーザが装置を使用するときは不要であり、またこのデバッグ機能を用いて第３者がフラッシュＲＯＭに格納されたプログラムデータを読み出す危険性がある。このため、装置をエンドユーザに引き渡すときにデバッグ機能を無効化して、セキュリティ保護を図ることが行われている。例えば、フラッシュＲＯＭにセキュリティビットを設け、このセキュリティビットをセットすることにより、第３者がフラッシュＲＯＭを読み出せないようにしている。
【０００４】
しかし、デバッグ機能を無効化した後に、装置の障害調査やフラッシュＲＯＭの再書き込みのために、一時的にデバッグ機能を有効にして、マイクロプロセッサの動作を確認し、またフラッシュＲＯＭの書き込みを行わなければならないことが発生する。
【０００５】
特許文献１には、デバッグ機能を無効化した後にＪＴＡＧインターフェイスを有効化して、内蔵フラッシュＲＯＭの再書き込みが可能な半導体回路が記載されている。以下、図３に基づいてこの半導体回路を説明する。
【０００６】
図３において、１０はＪＴＡＧポート、１１はＪＴＡＧ制御部である。ＪＴＡＧ制御部１１はＴＡＰ（Test Access Port）１２を介してＣＰＵコア１４に接続され、ＴＡＰ１３を介してフラッシュＲＯＭ１５に接続される。ＣＰＵコア１４はフラッシュＲＯＭ１５に格納されたプログラムを読み出して動作する。
【０００７】
ピンスクランブル回路１６には、入力端子１７からデータが入力される。ピンスクランブル回路１６は、入力端子１７から入力されるデータが予め定められた解除キーに一致したときにその出力を高レベルにし、その他のときは低レベルにする。
【０００８】
フラッシュＲＯＭ１５にはセキュリティビットが内蔵され、このセキュリティビットの値がＳＥＱ端子から出力される。ＳＥＱ端子の出力およびピンスクランブル回路１６の出力はＡＮＤゲート１８に入力され、このＡＮＤゲート１８の出力はＪＴＡＧ制御部１１のインヒビット端子Ｉｎｈに入力される。端子Ｉｎｈが低レベルのときはＪＴＡＧ制御部１１の動作が許可され、高レベルのときは動作が禁止される。
【０００９】
装置の開発時はセキュリティビットが”０”であり、ＳＥＱ端子の出力は低レベルになる。ＡＮＤゲート１８の出力は低レベルになり、ＪＴＡＧ制御部１１は動作する。このため、ＪＴＡＧポート１０を用いてデバッグを行い、またフラッシュＲＯＭ１５にプログラムを書き込むことができる。
【００１０】
フラッシュＲＯＭ１５にプログラムを書き込んだ後、セキュリティビットに”１”を書き込む。ＳＥＱ端子は高レベルになる。入力端子１７から入力されるデータが解除キーでないとピンスクランブル回路１６の出力は低レベルになるので、Ｉｎｈ端子には高レベルが印加される。このため、ＪＴＡＧ制御部１１の動作は禁止され、ＪＴＡＧポート１０を用いてフラッシュＲＯＭを読み出し、また書き換えることはできない。
【００１１】
入力端子１７に解除キーを与えるとピンスクランブル回路１６の出力は高レベルになり、Ｉｎｈ端子は低レベルになる。ＪＴＡＧ制御部１１の動作は許可されるので、ＪＴＡＧポート１０を用いてフラッシュＲＯＭ１５を書き換えることができる。解除キーを秘密にすることにより、悪意の第３者によるフラッシュＲＯＭ１５の読み出し、書き換えを防止することができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特許第３７６００８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、このような半導体回路には、次のような課題があった。入力端子１７をユーザが自由に用いる汎用端子と兼用すると、誤って解除キーが入力され、ＪＴＡＧ制御部１１の動作が許可されてしまう。このようなことが発生すると悪意の第３者によってフラッシュＲＯＭの内容が読み取られるだけでなく、ＣＰＵコア１４が異常動作をしてしまう危険性がある。このため、入力端子１７は解除キー入力専用の端子としなければならない。また、容易に解除キーを悟られないようにするためには、入力端子１７の端子数を多くして、解除キーのビット数を多くしなければならない。
【００１４】
半導体回路のコストは、実装する端子数に大きく依存する。すなわち、同様な機能を有する半導体回路であっても、端子数が多くなるとコストが上昇する。図３の半導体回路は入力端子１７として多くの端子を割当なければならず、かつ他の端子と共用できないので、コスト高になってしまうという課題があった。
【００１５】
また、半導体回路の動作時には入力端子１７は空き端子となる。このため、悪意の第３者は入力端子１７を容易に識別でき、かつ半導体回路の動作を阻害することなく、自由に入力端子１７に任意の信号を印加することができる。このため、たとえ解除キーを知らなくてもＪＴＡＧ制御部１１の動作を許可することが可能になり、フラッシュＲＯＭ１５の内容を読み取ることができるという課題もあった。
【００１６】
本発明の目的は、解除キーを入力する端子とユーザが用いる汎用端子を兼用できるようにすることにより、端子数を少なくでき、かつ解除キーを入力する端子を容易に識別することが困難なマイクロプロセッサを実現することにある。
【課題を解決するための手段】
【００１７】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
デバッグ機能を有するマイクロプロセッサにおいて、
前記マイクロプロセッサの指定された端子が接続され、デバッグモード設定信号がアクティブになると前記指定された端子を入力端子に設定するＩＯ部と、
前記指定された端子に印加されるデータと所定の解除キーを比較し、前記デバッグモード設定信号がアクティブからインアクティブに変化したときに、前記指定された端子に印加されるデータと前記解除キーの比較結果を保持し、この保持した比較結果を出力するセキュリティ保護部と、
前記マイクロプロセッサをデバッグすると共に、前記セキュリティ保護部の出力に基づいてその動作の許可および禁止が制御されるデバッグ部と、
を備えたものである。解除キーを入力する指定された端子をユーザが機能を設定して使用する汎用端子として使用できるので、マイクロプロセッサの端子数を削減できる。
【００１８】
請求項２記載の発明は、請求項１に記載の発明において、
前記デバッグモード設定信号として、前記マイクロプロセッサのリセット信号を使用したものである。マイクロプロセッサに必須なリセット信号を用いるので、端子数を削減できる。
【００１９】
請求項３記載の発明は、請求項１若しくは請求項２に記載の発明において、
前記マイクロプロセッサは書き換え可能なＲＯＭを内蔵し、前記デバッグ部を用いてこの書き換え可能なＲＯＭにデータを書き込むようにしたものである。第３者によるＲＯＭの読み出し、書き込みを防止できる。
【発明の効果】
【００２０】
本発明によれば以下のような効果がある。
請求項１、２、および３の発明によれば、デバッグモード設定信号がアクティブになると指定された端子を入力端子に設定し、この指定された端子に印加されるデータと所定の解除キーを比較して、前記デバッグモード設定信号がアクティブからインアクティブに変化したときの比較結果を保持して、この保持した比較結果に基づいてデバッグ部の動作の許可、禁止を制御するようにした。
【００２１】
デバッグモード設定信号がインアクティブのときは、指定された端子はユーザが機能を設定して使用することができる汎用端子とすることができる。このため、解除キーを入力する専用端子が不要になるので、マイクロプロセッサの端子数を削減することができ、コストダウンを図ることができるという効果がある。
【００２２】
また、解除キーを入力する端子と汎用端子を兼用できるので、第３者はどの端子が解除キーを入力する端子であるかを見分けることが困難になる。このため、悪意の第３者が解除キーを入力してデバッグ機能を有効にすることが難しくなるので、よりセキュリティが向上するという効果もある。
【００２３】
さらに、マイクロプロセッサのリセット信号をデバッグモード設定信号として用いると、デバッグモード設定信号を入力する端子が不要になり、かつ自動的にマイクロプロセッサを初期設定できるという効果もある。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施例を示した構成図である。
【図２】図１実施例の動作を説明するための波形図である。
【図３】従来の半導体回路の構成図である。
【発明を実施するための形態】
【００２５】
以下本発明を、図面を用いて詳細に説明する。図１は本発明に係るマイクロプロセッサの一実施例を示した構成図である。
【００２６】
図１において、２０はマイクロプロセッサであり、ＪＴＡＧポート２１、ＪＴＡＧ制御部２２、ＣＰＵコア２３、兼用端子２４、リセット端子２５、ＩＯ部２６、内蔵メモリ２７、内部バス２８、およびセキュリティ保護部２９で構成される。また、セキュリティ保護部２９は、解除キー記憶部２９ａ、比較部２９ｂ、保持部２９ｃで構成される。なお、マイクロプロセッサ２０には、兼用端子２４以外にもユーザが自由にその機能を設定できる端子が備わっているが、記載を省略している。
【００２７】
ＪＴＡＧポート２１とＪＴＡＧ制御部２２でデバッグ部を構成している。なお、ここで言うデバッグとは、ブレークポイントの設定、任意のアドレスからのプログラム開始、レジスタ値の参照等を行ってＣＰＵコア２３の動作の検証すること、あるいは内蔵メモリ２７へのデータの書き込みのいずれかあるいは両方の操作を言う。また、兼用端子２４は指定された端子に相当する。
【００２８】
ＪＴＡＧポート２１はＪＴＡＧ制御部２２に接続される。このＪＴＡＧ制御部２２は、その動作を許可あるいは禁止するＩｎｈ端子を備えている。ＣＰＵコア２３はリセット信号が入力されるＲＳＴ端子を具備しており、ＪＴＡＧ制御部２２に接続される。
【００２９】
ＪＴＡＧは、半導体チップの内部回路を数珠つなぎして内部の状態を順番に読み出すバウンダリスキャンテストを用いて、集積回路や基板の検査、デバッグを行う仕組みである。ＪＴＡＧ制御部２２はＪＴＡＧポート２１から入力されたコマンドやデータをＣＰＵコア２３に出力し、またＣＰＵコア２３から読み出したデータをＪＴＡＧポート２１に出力する。
【００３０】
兼用端子２４は入力端子、出力端子等ユーザが自由にその機能を選択できる端子であり、また後述するように、解除キーの入力端子としても用いられる。兼用端子２４は複数個存在する。また、リセット端子２５にはリセット信号が入力される。リセット信号はマイクロプロセッサを初期化するための信号であり、デバッグモード設定信号に相当する。
【００３１】
ＩＯ部２６には兼用端子２４が接続される。ＩＯ部２６は兼用端子２４の動作を規定し、かつ入出力データの処理を行う。また、リセット端子２５から入力されたリセット信号はＣＰＵコア２３およびＩＯ部２６のＲＳＴ端子に入力される。このリセット信号がアクティブになるとＣＰＵコア２３は初期化され、またＩＯ部２６は兼用端子２４を入力端子に設定する。
【００３２】
２７は内蔵メモリであり、ＲＡＭ（Random Access Memory）やフラッシュＲＯＭで構成される。ＣＰＵコア２３、ＩＯ部２６、内蔵メモリ２７はマイクロプロセッサ２０の内部バス２８に接続される。また、ＪＴＡＧポート２１を介して、内蔵メモリ２７にデータを書き込み、また書き込んだデータを読み出すことができる。なお、フラッシュＲＯＭはデータを書き換えることができ、かつ電源が供給されなくても書き込んだデータを保持できる不揮発性メモリであり、書き換え可能なＲＯＭに相当する。
【００３３】
セキュリティ保護部２９は解除キー記憶部２９ａ、比較部２９ｂ、および保持部２９ｃで構成される。セキュリティ保護部２９は、リセット信号がアクティブなときに解除キーが入力されるとＪＴＡＧ制御部２２の動作を許可し、解除キー以外のデータが入力されるとＪＴＡＧ制御部２２の動作を禁止する。なお、解除キーは第３者が容易に推測できない値に設定する。
【００３４】
解除キー記憶部２９ａには、ＪＴＡＧ制御部２２の動作を許可する解除キーが格納される。この解除キーは、マイクロプロセッサ２０を製造するときのマスクパターンを用いて設定する、あるいは内蔵メモリ２７に含まれるＲＯＭに書き込むことで設定するが、その方法は問わない。
【００３５】
比較部２９ｂには兼用端子２４に印加される信号、および解除キー記憶部２９ａに格納された解除キーが入力される。比較部２９ｂはまたＥＮ端子を具備し、このＥＮ端子にはリセット端子２５から入力されたリセット信号が入力される。比較部２９ｂは、ＥＮ端子に入力されるリセット信号がアクティブなときのみ兼用端子２４に印加されるデータと解除キーを比較し、その結果を保持部２９ｃに出力する。
【００３６】
保持部２９ｃにはリセット信号および比較部２９ｂの出力が入力される。保持部２９ｃはリセット信号の立ち上がりまたは立ち下がりで比較部２９ｂの出力を保持し、この保持した出力をＪＴＡＧ制御部２２のＩｎｈ端子に出力する。
【００３７】
次に、図２に基づいてこの実施例の動作を説明する。なお、リセット信号は低レベルでアクティブになり、ＪＴＡＧ制御部２２はそのＩｎｈ端子に入力される信号が高レベルのときに動作し、低レベルのときは動作が禁止されるものとする。
【００３８】
図２において、（１）は解除キーが入力された場合、（２）は解除キー以外のデータが入力された場合の動作である。なお、（Ａ）は兼用端子２４に印加されるデータ、（Ｂ）はリセット信号、（Ｃ）は比較部２９ｂの出力、（Ｄ）は保持部２９ｃの出力変化を表す。
【００３９】
図２（１）において、時刻ｔ３以前では保持部２９ｃの出力が低レベルなので、ＪＴＡＧ制御部２２の動作は禁止される。このため、ＪＴＡＧポート２１を介してデバッグおよび内蔵メモリ２７の読み出し、書き込みを行うことはできない。
【００４０】
時刻ｔ１で兼用端子２４に解除キーが印加され、時刻ｔ２でリセット信号が低レベル（アクティブ）になる。時刻ｔ２より前はリセット信号がインアクティブ（低レベル）なので、比較部２９ｂの出力は低レベルである。時刻ｔ２でリセット信号がアクティブになると、兼用端子２４は入力端子に設定される。比較部２９ｂは兼用端子２４に印加されたデータと解除キー記憶部２９ａに記憶された解除キーを比較する。２つのデータは一致しているので、比較部２９ｂはその出力を高レベルに変化させる。
【００４１】
時刻ｔ３でリセット信号がインアクティブ（高レベル）になる。保持部２９ｃはリセット信号の立ち上がりで比較部２９ｂの出力を保持するので、その出力は高レベルに変化する。ＪＴＡＧ制御部２２のＩｎｈ端子には高レベルが印加されるので、その動作は許可される。すなわち、時刻ｔ３以降では、ユーザはＪＴＡＧポート２１を経由してマイクロプロセッサをデバッグし、また内蔵メモリ２７の読み出し、書き込みを行うことができる。
【００４２】
図２（２）は解除キー以外のデータが入力されたときの動作を表したものである。兼用端子２４に時刻ｔ４で解除キー以外のデータが設定され、時刻ｔ５でリセット信号がアクティブ（低レベル）になる。
【００４３】
兼用端子２４は入力端子に設定され、比較部２９ｂは兼用端子２４に印加されたデータと解除キーを比較する。この２つのデータは一致しないので、比較器２９ｂの出力は低レベルを維持する。保持部２９ｃはリセット信号が立ち上がる時刻ｔ６で比較部２９ｂの出力を保持するので、その出力も低レベルを維持する。ＪＴＡＧ制御部２２はその動作が禁止されるので、ＪＴＡＧポートを介したデバッグおよび内蔵メモリの読み出し、書き込みを行うことはできない。
【００４４】
このように、マイクロプロセッサ２０のデバッグ、または内蔵メモリ２７の読み出し、書き込みを行うときは、兼用端子２４に解除キーを設定してリセット信号を一定期間アクティブにする。ＪＴＡＧ制御部２２の動作は許可されるので、デバッグや内蔵メモリ２７の読み出し、書き込みを行うことができる。
【００４５】
デバッグおよび内蔵メモリ２７への書き込みが終了すると、兼用端子２４に解除キー以外のデータを設定し、リセット信号を一定期間アクティブにする。ＪＴＡＧ制御部２２の動作は禁止されるので、これ以降デバッグおよび内蔵メモリ２７の読み出し、書き込みを行うことはできなくなる。
【００４６】
解除キーを入力しないとＪＴＡＧ制御部２２を動作させることができないので、解除キーを知らない悪意の第３者はＪＴＡＧ制御部２２を動作させることができない。このため、悪意の第３者が内蔵メモリ２７の内容を読み出すことを防止することができる。また、必要に応じて何度でもＪＴＡＧ制御部２２の動作を許可してデバッグおよび内蔵メモリ２７の書き込みを行うことができる。
【００４７】
また、図３実施例では、解除キーの入力のための専用端子を用意しなければならないので、マイクロプロセッサの端子数が増加し、コストアップになるという課題があった。本実施例では解除キーの入力端子とユーザが使用できる汎用端子を兼用することができるので、マイクロプロセッサの端子数を削減でき、コストダウンを図ることができる。
【００４８】
また、図３実施例では解除キーを入力する端子は専用端子になるので、第３者は容易に解除キーを入力する端子を識別することが可能であった。本実施例では解除キーを入力する端子はユーザが機能を設定して使用する汎用端子と兼用されるので、第３者は解除キーを入力する端子を見分けることが困難になり、セキュリティがより向上する。
【００４９】
なお、この実施例ではＪＴＡＧを用いてマイクロプロセッサ２０のデバッグおよび内蔵メモリ２７の書き込み、読み出しを行うようにしたが、ＪＴＡＧを用いないでデバッグする構成に適用することもできる。この場合も、セキュリティ保護部２９の出力でデバッグ部の動作の許可、禁止を制御すればよい。
【００５０】
また、ＪＴＡＧ制御部２２の動作が許可されると、このＪＴＡＧ制御部２２を用いてマイクロプロセッサの動作を知ることができるので、内蔵メモリの書き込みにＪＴＡＧ制御部２２を使用しない構成であっても、ＪＴＡＧ制御部２２を動作禁止にすることは必要である。
【００５１】
また、本実施例ではＩＯ部２６とセキュリティ保護部２９にリセット信号を入力するようにしたが、必ずしもリセット信号でなくてもよい。リセット信号を用いない場合、ＩＯ部２６はＲＳＴ端子に入力する信号がインアクティブになったときに、兼用端子２４の設定を元に戻すようにする。ただ、ＣＰＵコア２３にはリセット信号を入力しなければならないので、リセット信号を用いた方が、構成を簡単にできる。
【００５２】
また、この実施例ではリセット信号は低レベルでアクティブになる信号としたが、高レベルでアクティブになる信号であってもよい。この場合、保持部２９ｃは立ち下がりで比較部２９ｂの出力を保持すればよい。またＪＴＡＧ制御部２２のＩｎｈ端子に印加する信号も、高レベルと低レベルを逆にしてもよい。
【００５３】
また、図１実施例では比較部２９ｂはリセット信号（デバッグモード設定信号）がアクティブなときのみ比較結果を出力するようにしたが、インアクティブなときも比較結果を出力するようにしてもよい。リセット信号がインアクティブなときは兼用端子２４に印加されるデータは不定になるので比較結果も不定になるが、この比較結果は保持部２９ｃに保持されないので、セキュリティ保護部２９の出力には影響しない。
【００５４】
さらに、マイクロプロセッサ２０にはマイクロコントローラと呼ばれるものも含むとする。要は、メモリに格納されたプログラムに従って動作するものであればよい。
【符号の説明】
【００５５】
２０  マイクロプロセッサ
２１  ＪＴＡＧポート
２２  ＪＴＡＧ制御部
２３  ＣＰＵコア
２４  兼用端子
２５  リセット端子
２６  ＩＯ部
２７  内蔵メモリ
２８  内部バス
２９  セキュリティ保護部
２９ａ  解除キー記憶部
２９ｂ  比較部
２９ｃ  保持部
【図１】
2011243015.tif 000003
【図２】
2011243015.tif 000004
【図３】
2011243015.tif 000005