(57)【要約】【課題】セキュリティ解除に用いるプログラムが更新された場合においても、煩雑な作業なしに、デバッグを開始するためのセキュリティ解除を行うこと。【解決手段】本発明にかかるマイクロコンピュータは、複数の格納領域を備えプログラムが前記複数の格納領域に分散して格納される不揮発性メモリ２０３と、プログラムを実行する中央演算処理装置２７０とを有するマイクロコンピュータ２０１であって、プログラムのデバッグを行うために使用するデバッグ用装置６００を接続するためのデバッグ用端子と、複数の格納領域の各々に対応付けられた複数のデバッグ機能設定値を格納するデバッグ機能設定用メモリ２０６と、デバッグ機能設定値に基づいて選択される格納領域に格納されたプログラムの一部とデバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセスの許否を判断するデバッグ判断部２６０とを備える。【選択図】図１
2008123106.tif 000002
【特許請求の範囲】
【請求項１】
複数の格納領域を備えプログラムが前記複数の格納領域に分散して格納される不揮発性メモリと、
前記プログラムを実行する中央演算処理装置とを有するマイクロコンピュータであって、
前記プログラムのデバッグを行うために使用するデバッグ用装置を接続するためのデバッグ用端子と、
前記複数の格納領域の各々に対応付けられたデバッグ機能設定値を格納するデバッグ機能設定用メモリと、
前記デバッグ機能設定値に基づいて選択される前記格納領域に格納された前記プログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセスの許否を判断するデバッグ判断部とを備えるマイクロコンピュータ。
【請求項２】
前記デバッグ判断部は、
前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとが一致する場合にデバッグを許可する
ことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記デバッグ機能設定値は前記複数の格納領域の各々に対応付けられた複数のデバッグ機能設定値を有し、
前記デバッグ判断部は、
前記デバッグ機能設定値が第１の値の場合は、前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとが一致するか否かの一致判定に基づき前記デバッグを許可し、前記デバッグ機能設定値が第２の値の場合は当該一致判定を行わず前記デバッグを許可する
ことを特徴とする請求項１又は２項記載のマイクロコンピュータ。
【請求項４】
前記複数の格納領域のうち、任意の前記格納領域に格納されているプログラムの一部が前記中央演算処理装置によって書き換えられるものであり、
前記書き換えられる前記格納領域に格納されているプログラムの一部に対応する前記デバッグ機能設定値は前記第２の値に設定される
ことを特徴とする請求項３記載のマイクロコンピュータ。
【請求項５】
前記デバッグ判断部は、
全ての前記格納領域において、前記格納領域のそれぞれに格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセス許否を判断する
ことを特徴とする請求項１乃至４のいずれか１項記載のマイクロコンピュータ。
【請求項６】
マイクロコンピュータと、
前記マイクロコンピュータのデバッグを行うデバッグ装置とを有し、
前記マイクロコンピュータは、
複数の格納領域を備えプログラムが前記複数の格納領域に分散して格納される不揮発性メモリと、
前記プログラムを実行する中央演算処理装置とを有するマイクロコンピュータであって、
前記プログラムのデバッグを行うために使用するデバッグ用装置を接続するためのデバッグ用端子と、
前記複数の格納領域の各々に対応付けられたデバッグ機能設定値を格納するデバッグ機能設定用メモリと、
前記デバッグ機能設定値に基づいて選択される前記格納領域に格納された前記プログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセスの許否を判断するデバッグ判断部とを備えるデバッグシステム。
【請求項７】
前記デバッグ判断部は、
前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとが一致する場合にデバッグを許可する
ことを特徴とする請求項６記載のデバッグシステム。
【請求項８】
前記デバッグ機能設定値は前記複数の格納領域の各々に対応付けられた複数のデバッグ機能設定値を有し、
前記デバッグ判断部は、
前記デバッグ機能設定値が第１の値の場合は、前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとが一致するか否かの一致判定に基づき前記デバッグを許可し、前記デバッグ機能設定値が第２の値の場合は当該一致判定を行わず前記デバッグを許可する
ことを特徴とする請求項６又は７項記載のデバッグシステム。
【請求項９】
前記複数の格納領域のうち、任意の前記格納領域に格納されているプログラムの一部が前記中央演算処理装置によって書き換えられるものであり、
前記書き換えられる前記格納領域に格納されているプログラムの一部に対応する前記デバッグ機能設定値は前記第２の値に設定される
ことを特徴とする請求項８記載のデバッグシステム。
【請求項１０】
前記デバッグ判断部は、
全ての前記格納領域において、前記格納領域のそれぞれに格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセス許否を判断する
ことを特徴とする請求項６乃至９のいずれか１項記載のデバッグシステム。
【請求項１１】
複数の格納領域を備え、プログラムが前記複数の格納領域に分散して格納される不揮発性メモリと、前記プログラムを実行する中央演算処理装置とを有するマイクロコンピュータのデバッグ方法であって、
前記プログラムのデバッグを行うために使用するデバッグ用装置をデバッグ用端子に接続し、
デバッグ機能設定用メモリに格納され、前記複数の格納領域の各々に対応付けられたデバッグ機能設定値に基づいて選択される前記格納領域に格納された前記プログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、
当該比較の結果に基づいて、外部からのアクセスの許否を判断するマイクロコンピュータのデバッグ方法。
【請求項１２】
前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとが一致する場合にデバッグを許可する
ことを特徴とする請求項１１記載のマイクロコンピュータのデバッグ方法。
【請求項１３】
前記デバッグ機能設定値は前記複数の格納領域の各々に対応付けられた複数のデバッグ機能設定値を有し、
前記デバッグ機能設定値が第１の値の場合は、前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとが一致するか否かの一致判定に基づき前記デバッグを許可し、前記デバッグ機能設定値が第２の値の場合は当該一致判定を行わず前記デバッグを許可する
ことを特徴とする請求項１１又は１２項記載のマイクロコンピュータのデバッグ方法。
【請求項１４】
前記複数の格納領域のうち、任意の前記格納領域に格納されているプログラムの一部が前記中央演算処理装置によって書き換えられるものであり、
前記書き換えられる前記格納領域に格納されているプログラムの一部に対応する前記デバッグ機能設定値は前記第２の値に設定される
ことを特徴とする請求項１３記載のマイクロコンピュータのデバッグ方法。
【請求項１５】
前記デバッグ判断部は、
全ての前記格納領域において、前記格納領域に格納されているプログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセス許否を判断する
ことを特徴とする請求項１１乃至１４のいずれか１項記載のマイクロコンピュータのデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータのデバッグにおいてメモリに書き込まれたプログラムの読み出し許可のセキュリティ確保が可能なマイクロコンピュータ及びプログラムのデバッグ方法に関する。
【背景技術】
【０００２】
マイクロコンピュータのプログラム開発においては、マイクロコンピュータとパーソナルコンピュータ等のホストＰＣとを接続して、作成したプログラムに問題がないかを検証又は修正するデバッグによってプログラムの完成度を高めていく。このデバッグにおいてプログラムが格納されているメモリを読み出す必要がある。すなわち、デバッグではメモリに格納されているプログラムを読み出すことができるため、悪意のある第三者等にマイクロコンピュータのプログラムが漏洩するという問題点があった。
【０００３】
デバッグの際にマイクロコンピュータのプログラムが第三者に漏洩することを防止するために、プログラムのアクセスキーが一致した場合にのみマイクロコンピュータ内のプログラムを読み出してデバッグする方法が特許文献１に記載されている。図５に特許文献１に記載のオンチップデバッグセキュリティの構成について示す。オンチップデバッグとは、マイクロコンピュータをユーザ基板に搭載した状態のまま、ユーザ基板のデバッグを行うことである。
【０００４】
図５に示すマイクロコンピュータ９０１は、周辺Ｉ／Ｏ（Input/Output）９０２と、ＣＰＵ（Central Processing Unit）９０３と、ＲＯＭ（Read Only Memory）９０４と、ＲＡＭ（Random Access Memory）９０５と、デバッグ機能制御回路９０６と、デバッグＩＦ（Interface）端子９０７と、これらの機器を接続する内部バス９０８と、内部バスを制御するバス制御回路９０９と、バス制御回路に接続された外部バス端子９１０とを有している。デバッグ機能制御回路９０６は、内部バスに接続されたリソースアクセス回路９１１及びＣＰＵ制御回路９１２と、リソースアクセス回路９１１及びＣＰＵ制御回路９１２に接続されたプロテクトチェック回路９１３と、プロテクトチェック回路９１３に接続されたアクセスキーレジスタ９１４、デバッグＩ／Ｆ入出力回路９１５を有している。
【０００５】
デバッグにはＪＴＡＧ−ＩＣＥ（Joint Test Action Group In−Circuit Emulator）が使用されている。ＩＣＥは、マイクロコンピュータのシステム状態の設定及び変更機能、システムの実行状態が確認できるトレース機能、プログラムの特定部分においてプログラムの実行を中断させるブレーク機能等を有するデバイスである。また、ＪＴＡＧとは、バウンダリスキャンテスト（ＢＳＴ：Boundary Scan Test：境界走査試験)のテスト規格であってこのバウンダリスキャンの機能を有するＩＣＥをＪＴＡＧ−ＩＣＥという。このＪＴＡＧ−ＩＣＥはデバッグＩＦ端子９０７を介してマイクロコンピュータ９０１と接続されている。
【０００６】
このマイクロコンピュータ９０１において、ＲＯＭ９０４のオンチップデバッグ時におけるプログラムの読み出しを、アクセスキーレジスタ９１４及び機能制限モードレジスタ９１６によって制限している。すなわち、アクセスキーレジスタ９１４に、プロテクトチェック回路９１３の後述する機能制限モードを解除するための、ＲＯＭ９０４又はＲＡＭ９０５から読み出されたアクセスキーが格納されている。ここで、機能制限モードレジスタ９１６には、マイクロコンピュータ内のデータを読み出す機能を制限すること（以下、機能制限モードという。）を示す値（以下、機能制限モード設定値という。）又はマイクロコンピュータ内のデータを読み出す機能を制限しないことを示す値（以下、機能制限モード非設定値という。）が格納されている。
【０００７】
次に、デバッグにおいてＲＯＭ９０４からプログラムを読み出す際のセキュリティ確保の手順を説明する。まず、ＪＴＡＧ−ＩＣＥを用いてユーザがアクセスキーを入力すると、入力されたアクセスキーがプロテクトチェック回路９１３に送られる。次に、プロテクトチェック回路９１３においてアクセスキーレジスタ９１４に予め設定されたセキュリティコードとホストＰＣ９１７から送出されたキーとの比較を行う。この比較の結果、セキュリティコードとホストＰＣ９１７から送出されたキーとが一致した場合、機能制限モードレジスタ９１６は機能制限モード非設定値に設定される。すなわち、リソースアクセス回路９１１、あるいはＣＰＵ制御回路９１２を通じてＲＯＭ９０４に格納されているプログラムの読み出し、実行、及び書換え等の処理を行うことができる。一方、比較の結果、セキュリティコードとホストＰＣ９１７から送出されたキーとが一致しない場合、機能制限モードレジスタ９１６は機能制限モード設定値に設定される。すなわち、ＲＯＭ９０４に格納されているプログラムの読み出し、実行、及び書換え等ができない。
【０００８】
しかしながら、特許文献１に記載のマイクロコンピュータのオンチップデバッグセキュリティにおいては、セキュリティ確保のために、デバッグの際にセキュリティコードを用いてマイクロコンピュータのセキュリティを解除する必要があった。すなわち、プログラムだけでなくセキュリティコードも管理する必要があった。これにより、ユーザは管理する対象が増えることにより、デバッグの際のデバッグ操作の工数が増えるという問題があった。
【０００９】
そこで、特許文献２に、ユーザがセキュリティコードを用いずにＲＯＭに格納されているデータと入力したデータとの一致又は不一致に基づいて、ＲＯＭに格納されたデータのセキュリティを確保するＲＯＭに格納されたデータの読み出し方法が記載されている。特許文献２に記載のプログラムの読み出し方法に用いるマイクロコンピュータを図６に示す。図６に示すマイクロコンピュータ９２０は、ＲＯＭ９２１と、ＲＯＭデータラッチ回路９２２と、一致検出回路９２３と、入力データラッチ回路９２４と、入力回路９２５と、制御回路９２６と、出力回路９２７とを有している。テスト状態においてこのマイクロコンピュータ９２０に電源が投入されると、比較用の入力データが入力回路９２５に入力され、入力データラッチ回路９２４に出力される。そして、ＲＯＭ９２１から読み出したデータがＲＯＭデータラッチ回路９２２に出力される。次に、ＲＯＭデータラッチ回路９２２と、入力データラッチ回路９２４の出力が一致した場合にＲＯＭ９２１のデータを読み出すことができる。
【特許文献１】特開２００３−１８６６９３号公報
【特許文献２】特開平２−０５０２２６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
昨今、マイクロコンピュータが搭載される最終製品は、より高機能化し、当該最終製品が市場に出荷された後においても、機能追加のためにマイクロコンピュータに格納されたプログラムの更新が行われる場合がある。また、高機能化及び製品のライフサイクルが短くなるにつれ、製品出荷前の動作確認テストが十分に行うことができず、製品の出荷後に、修正プログラムを配布して、マイクロコンピュータに格納されたプログラムのバグ修正を行う場合もある。このような場合、マイクロコンピュータに書き換え可能な不揮発性メモリを搭載することによって、当該不揮発性メモリにプログラムを格納し、機能追加やバグ修正のためのプログラムの更新に対応できるようにしている。
【００１１】
このように、不揮発性メモリに格納されるプログラムは、機能追加やバグ修正等のために更新され、製品の出荷前と製品の出荷後とでは異なる場合があり、さらに更新されたプログラムのパターンは、機能追加やバグ修正のためのプログラム更新の回数分存在することになる。
【００１２】
しかしながら、特許文献２のマイクロコンピュータ９２０は、このようなプログラムの更新が複数回にわたって行われる可能性があることを全く想定していない。すなわち、特許文献２に記載のＲＯＭ９２１が書き換え可能な不揮発性メモリであり、ＲＯＭ９２１にマイクロコンピュータが実行するプログラムが格納されている場合、このＲＯＭ９２１に格納されたプログラムが書き換えられてしまう場合について、何ら記載されていない。
【００１３】
特許文献２においては、製品出荷後の不具合解析のためにＲＯＭ９２１に格納されたプログラムのデバッグが必要になった場合、不具合品として回収された製品に搭載されたＲＯＭ９２１に格納されたプログラムと、入力回路９２５から入力される比較用データとの一致が必要になる。しかし、前述の通り、不具合品として回収された製品に搭載されたＲＯＭに格納されたプログラムが、どのようなプログラムに更新されているか判断することができない。そのため、考えられる全てのプログラム（出荷の際の元々のプログラムと複数の更新プログラム）を準備し、全てのプログラムに対し比較の結果が一致するまで、当該比較作業を実行しなければならない。その際、プログラムの更新が多ければ多いほど、また、対象となる不具合品が多ければ多いほど、デバッグのためのセキュリティ解除の作業が煩雑となってしまう。
【課題を解決するための手段】
【００１４】
上述した課題を解決するために、複数の格納領域を備えプログラムが前記複数の格納領域に分散して格納される不揮発性メモリと、前記プログラムを実行する中央演算処理装置とを有するマイクロコンピュータであって、前記プログラムのデバッグを行うために使用するデバッグ用装置を接続するためのデバッグ用端子と、前記複数の格納領域の各々に対応付けられた複数のデバッグ機能設定値を格納するデバッグ機能設定用メモリと、前記デバッグ機能設定値に基づいて選択される前記格納領域に格納された前記プログラムの一部と前記デバッグ用端子から入力されるデータとを比較し、当該比較の結果に基づいて、外部からのアクセスの許否を判断するデバッグ判断部とを備えることを特徴とする。
【００１５】
本発明においては、マイクロコンピュータのメモリに書き込まれたプログラムの一部とマイクロコンピュータの外部機器に格納されているプログラムの一部とが一致するか否かによってデバッグを行うか否かを判断する。
【発明の効果】
【００１６】
本発明によれば、セキュリティ解除に用いるプログラムが更新された場合においても、煩雑な作業なしに、デバッグを開始するためのセキュリティ解除を行うことができる。
【発明を実施するための最良の形態】
【００１７】
実施の形態１．
以下、実施の形態１について、図面を参照しながら詳細に説明する。まず、図１（ａ）に実施の形態１にかかるマイクロコンピュータのデバッグシステムの全体構成を示す。図１（ａ）に示すように、実施の形態１にかかるマイクロコンピュータのデバッグシステムは、マイクロコンピュータ２０１、及び、例えばＵＳＢコントローラ等のＩＣ５００を有するユーザ基板１００と、プログラムのブレーク機能等を有するデバッグ用装置６００と、書き込み用装置７００と、プログラムのデバッグ及びプログラムの書き込み等を行うＥＷＳ（Engineering Workstation）パーソナルコンピュータ８００（以下ホストＰＣという。）とからなる。デバッグ用装置６００は、ユーザ基板１００に形成された接続端子３０２に接続され、後述するデバッグ判断部２６０とデバッグ用通信路３００を介して接続されている。また、書込み用装置７００は、ユーザ基板１００に形成された接続端子４０２に接続され、後述する書込み用通信路４００を介してマイクロコンピュータ２０１の書込み用回路２５０と接続されている。ホストＰＣ８００は、デバッグ用装置６００を介してマイクロコンピュータ２０１に格納されているプログラムのデバッグを行なう。また、書込み用装置７００を介して、デバッグを行なったプログラムをマイクロコンピュータ２０１に書き込む。
【００１８】
マイクロコンピュータ２０１は、プログラムの格納等を行うメモリ２０２と、メモリ２０２にプログラムを書き込むための書き込み用回路２５０と、後述するデバッグ機能設定用メモリ２０６の値に応じてメモリ２０２に格納されているプログラムとデバッグを行うホストＰＣ８００に格納されているプログラムとの比較結果に基づきデバッグの許否を判断するデバッグ判断部２６０と、プログラムを実行する中央演算処理装置（ＣＰＵ）２７０とを有する。その他に、インターバル割り込みやＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）出力等ができるタイマ２２０と、通信用のＵＡＲＴ（Universal Asynchronous Receiver Transmitter）２２１と、その他周辺機能を有する回路２３０と、マイクロコンピュータに外付けで素子を接続する際の仲介装置である外部バスＩ／Ｆ２４０等を有する。ここで、マイクロコンピュータ２０１が有する機器等は内部バス２８０によって相互に接続されている。また、ＣＰＵ２７０とデバッグ判断部２６０は専用バス２９０で接続されている。さらに、マイクロコンピュータ２０１はユーザ基板１００と接続するための接続端子３０１及び接続端子４０１等を有している。
【００１９】
また、マイクロコンピュータ２０１のメモリ２０２は、書き換え可能な不揮発性メモリ（以下、不揮発性メモリという。）２０３、ＲＡＭ２０４、ＳＦＲ（Special Function Register）２０５、及びデバッグ機能設定用メモリ２０６を有する。ＳＦＲ２０５は、特殊機能レジスタであって、マイクロコンピュータ２０１のタイマ２２０、ＵＡＲＴ２２１、及びその他周辺回路２３０等の制御を行うためのレジスタである。ＲＡＭ２０４はマイクロコンピュータ２０１で演算した結果等のデータを保持する。また、ＲＡＭ２０４はプログラムを実行する際にも使用可能であり、プログラム実行の際にデータの一時保存等を行う。
【００２０】
不揮発性メモリ２０３はマイクロコンピュータ２０１のプログラムやデータを格納するメモリである。この不揮発性メモリ２０３のデータは、書き込み用回路２５０によってプログラム等が書き込まれる。また、機能追加やバグ修正のためのプログラム更新が行われた場合にもデバッグを可能にするために、不揮発性メモリ２０３を複数のブロックに分ける。そして、１つのプログラムを複数のブロックに分けて格納する。すなわち、プログラムの一部を複数のブロックにそれぞれ格納する。ここで不揮発性メモリ２０３のブロックのサイズはマイクロコンピュータ設計者が任意に決定することができる。
【００２１】
デバッグ機能設定用メモリ２０６には、不揮発性メモリ２０３のブロック毎に設定されたデバッグ機能設定値が格納されている。デバッグ機能設定値は、デバッグの許否の判断を行なうか否かを示す値である。
【００２２】
ここで、図１（ｂ）に不揮発性メモリ２０３とデバッグ機能設定用メモリ２０６の関係を示す。不揮発性メモリ２０３の各ブロックに対応したデバッグ機能設定値がデバッグ機能設定用メモリ２０６に格納されている。すなわち、１つのプログラムを不揮発性メモリ２０３の複数のブロックに分けて格納し、デバッグ機能設定用メモリ２０６に、不揮発性メモリ２０３の各ブロックに格納されているプログラムの一部に対応したデバッグ機能設定値を設定し格納する。これにより、デバッグの許否の判断を行うか否かを不揮発性メモリ２０３のブロック単位で設定することができる。さらに、プログラムの更新を行う不揮発性メモリ２０３のブロックに格納されているプログラムの一部はデバッグの許否の判断を行わない設定にすることができ、プログラムの更新を行った場合でもデバッグを行うことができる。
【００２３】
プログラムの更新が行われる不揮発性メモリ２０３のブロックはプログラム設計者が予めわかっているため、ユーザはプログラムの更新が行われない不揮発性メモリ２０３のブロックに対応するデバッグ機能設定用メモリ２０６のデバッグ機能設定値を０にする。これにより、プログラムの更新が行われる不揮発性メモリ２０３のブロックに格納されているプログラムの一部はデバッグの許否判断を行わない。このため、プログラムの更新を行った場合でもデバッグを行うことができる。
【００２４】
例えば、実施の形態１ではデバッグ機能設定用メモリ２０６に格納するデバッグ機能設定値は、不揮発性メモリ２０３に格納されているデータ、すなわちプログラムの一部と、当該プログラムの一部に対応しホストＰＣ８００に格納されているプログラムの一部（以下、比較用データという。）との一致判定を行なって、デバッグの許否を判断する場合を０に対応させる。そして、ホストＰＣ８００が格納している比較用データと、不揮発性メモリ２０３に格納されているプログラムの一部とを比較せずに、デバッグを許可する場合を１に対応させることとする。
【００２５】
すなわち、後述するようにホストＰＣ８００からデバッグ判断部２６０にデバッグ開始信号が送信される。そして、デバッグ判断部２６０は、デバッグの許否の判断を行うか否かを判断するために、不揮発性メモリ２０３のそれぞれのブロック（Ａｒｅａ０乃至Ａｒｅａ３）に対応するデバッグ機能設定用メモリ２０６のデバッグ機能設定値を読み出す。デバッグ機能設定値が１の場合は、一致判定を行わずにデバッグを許可する。一方、デバッグ機能設定値が０の場合は、ホストＰＣ８００に格納されている比較用データと、不揮発性メモリ２０３のブロックに格納されているプログラムの一部とを比較して一致判定を行う。この一致判定において、ホストＰＣ８００に格納されている比較用データと不揮発性メモリ２０３に格納されているプログラムの一部が一致することを確認する。そして、不揮発性メモリ２０３のブロック全てにおいて、格納されているプログラムの一部と、ホストＰＣ８００に格納されている比較用データと一致した場合にデバッグを許可する。
【００２６】
また、実施の形態１ではデバッグ判断部２６０がデバッグ機能設定用メモリ２０６に格納されているデバッグ機能設定値を読み出してその値に応じて不揮発性メモリ２０３に格納されているプログラムの一部と、このプログラムに対応し、ホストＰＣ８００に格納されている比較用データとの一致判定を行って、デバッグの許否を判断することとしたが、例えばＣＰＵ２７０がこの判断を行ってもよい。さらに、実施の形態１において、デバッグ機能設定用メモリ２０６に格納されているデバッグ機能設定値が０の場合、ホストＰＣ８００に格納されている比較用データと、不揮発性メモリ２０３に格納されているプログラムの一部との一致判定を行なって、デバッグの許否を判断し、デバッグ機能設定値が１の場合、ホストＰＣ８００が格納している比較用データと、不揮発性メモリ２０３に格納されているプログラムの一部とを比較せずに、デバッグを許可することとするが、デバッグ機能設定値が１の場合にプログラムの一致判定を行い、デバッグ機能設定値が０の場合はプログラムの一致判定を行うことなくデバッグを許可することとしてもよい。
【００２７】
以上のことから、不揮発性メモリ２０３のそれぞれのブロックにおいて、デバッグ機能設定用メモリ２０６に１が格納されている場合は、デバッグ判断部２６０が不揮発性メモリ２０３に格納されたプログラムの一部とホストＰＣ８００からデバッグ用装置６００を経由して送られてきた比較用データとの比較を行うことなく、デバッグを許可する。一方、デバッグ機能設定用メモリ２０６に０が格納されている場合は、デバッグ判断部２６０が、不揮発性メモリ２０３に格納されているプログラムの一部とホストＰＣ８００からデバッグ用装置６００を経由して送られてきた比較用データとを比較する。不揮発性メモリ２０３のブロック全てにおいて、ホストＰＣ８００から送られる比較用データと一致する場合は、そのままデバッグを許可する。そして、プログラムの比較の結果、少なくとも１以上ブロックにおいて比較が一致しない場合は、デバッグ判断部２６０がデバッグを許可しないためホストＰＣ８００はデバッグを行えない。すなわち、プログラム自体を、デバッグを行う際のセキュリティコードとして、ホストＰＣ８００が格納している比較用データと不揮発性メモリ２０３に格納されているプログラムの一部とを比較して、両者が一致した場合にのみホストＰＣ８００は、デバッグを行うことができる。また、プログラムが一致しない場合は、ホストＰＣ８００はデバッグを行えないため、マイクロコンピュータ２０１のＲＡＭ２０４及びＳＦＲ２０５等に格納されているデータ及びＣＰＵ２７０等の内部の状態を示すデータが漏洩することを防止することができる。
【００２８】
ここで、上述のマイクロコンピュータのデバッグシステムを用いて、ユーザがマイクロコンピュータのプログラムの開発を行い、プログラムの書き込み、プログラムのデバッグ、そして製品として出荷するまでの手順を以下に説明する。まず、プログラムの開発を行う。すなわち、ユーザは、ユーザが作成するシステムに合わせてマイクロコンピュータ２０１の動作を規定する。そして、ホストＰＣ８００を用いてマイクロコンピュータ用プログラムのコーディング（作成）を行う。
【００２９】
次に、コーディングしたプログラムの書き込みを行う。ユーザはコーディングしたプログラムを、書き込み用装置７００を介してホストＰＣ８００からマイクロコンピュータ２０１の書き込み用回路２５０に転送する。書き込み用回路２５０は、ホストＰＣ８００から送信されたプログラムを受け取り、マイクロコンピュータ２０１の不揮発性メモリ２０３にホストＰＣ８００から送られてきたプログラムを書き込む。実施の形態１では、マイクロコンピュータ２０１上にメモリ２０２及びデバッグ判断部２６０等の素子を形成した後、ホストＰＣ８００から書き込み用装置７００及び書き込み用回路２５０を介して不揮発性メモリ２０３にプログラムを書き込むこととしたが、マイクロコンピュータ２０１の製造過程において、例えば書き込み用の装置を直接不揮発性メモリ２０３に接続して、ホストＰＣ８００等を介さずにプログラムを書き込むことも可能である。
【００３０】
また、不揮発性メモリ２０３にプログラムが書き込まれる際にデバッグ機能設定用メモリ２０６に格納するデバッグ機能設定値を決めることができる。すなわち、上述したように、デバッグ機能設定用メモリ２０６には０又は１のデバッグ機能設定値が格納される。ここで、プログラムの開発中及びプログラムのデバッグ中は、頻繁にデバッグ機能を利用するため、デバッグ機能設定用メモリ２０６のデバッグ機能設定値は１にすることが好ましい。すなわち、プログラムの開発中及びプログラムのデバッグ中は、不揮発性メモリ２０３の各ブロックに格納されているプログラム一部とホストＰＣ８００からデバッグ用装置６００を経由して送られてきた比較用データとの一致判定を行なわずに、デバッグの要請があった場合にはそのままデバッグを許可することが好ましい。これにより、デバッグ作業の時間短縮をすることができる。
【００３１】
プログラムのコーディング終了後、マイクロコンピュータ２０１の不揮発性メモリ２０３の各ブロックに格納するプログラムの一部の書き込みを全てのブロックで行う。このとき、不揮発性メモリ２０３の各ブロックに対応するデバッグ機能設定値を設定し、ブロック毎に０又は１のデバッグ機能設定値を格納する。実施の形態１では、デバッグ機能設定値が１の場合、プログラムの比較を行うことなくデバッグを行い、デバッグ機能設定値が０の場合はプログラムの比較を行うこととするが、デバッグ機能設定値が１の場合にプログラムの比較を行い、デバッグ機能設定値が０の場合はプログラムの比較を行うことなくデバッグを行うこととしてもよい。また、プログラムの開発中及びデバッグ中においては、頻繁にデバッグ機能を利用することを考慮してデバッグ機能設定値は１にすることが好ましい。これにより、不揮発性メモリ２０３の各ブロックに格納されているプログラムの一部とホストＰＣ８００から送られる比較用データとの一致判定を行わずに、デバッグの要請があった場合にはデバッグを行うため、プログラム開発及びデバッグ作業に要する時間を短縮することができる。
【００３２】
次に、プログラムのデバッグ時のマイクロコンピュータ２０１の動作フローを図２に示す。図２を用いてプログラムのデバッグの動作を詳細に説明する。まず、マイクロコンピュータ２０１のデバッグ判断部２６０は、デバッグ用装置６００を介してホストＰＣ８００と接続され、ホストＰＣ８００がデバッグ開始信号を送信する。デバッグ判断部２６０はこの開始信号を受信する（ステップＳ１０１）。これにより、デバッグ判断部２６０が動作する。そして、不揮発性メモリ２０３の任意のブロックに対応し、デバッグ機能設定用メモリ２０６に格納されているデバッグ機能設定値を読み出し（ステップＳ１０２）、当該デバッグ機能設定用メモリ２０６の不揮発性メモリ２０３のブロックに対応するデバッグ機能設定値が０又は１のどちらの値が格納されているか判断する（ステップＳ１０３）。ここで、一般的にデータを格納したメモリのブロックを表す数値（番地）であるメモリアドレスが使用される。実施の形態１は例えば、不揮発性メモリ２０３のメモリアドレスが小さい値の下位のブロックからプログラムの比較が必要かどうかの判断を行う。
【００３３】
そして、当該不揮発性メモリ２０３の任意のブロックに対応するデバッグ機能設定値が１である場合は、当該不揮発性メモリ２０３のブロックに格納されているプログラムの一部とホストＰＣ８００に格納されている比較用データとの一致判定を行わないことを表すＡＣＫ信号を、デバッグ判断部２６０を介してホストＰＣ８００に送信する（ステップＳ１１０）。そして、ステップＳ１０８に移る。
【００３４】
一方、当該不揮発性メモリ２０３の任意のブロックに対応するデバッグ機能設定値が０である場合は、先ず、当該不揮発性メモリ２０３に格納されているプログラムの一部と、このプログラムの一部に対応し、ホストＰＣ８００に格納されている比較用データとを比較する。この場合、デバッグ判断部２０６は、当該不揮発性メモリ２０３に格納されているプログラムの一部に対応し、ホストＰＣ８００に格納されている比較用データを送信するように要求する（ステップＳ１０４）。そして、ホストＰＣ８００はホストＰＣ８００に格納されている比較用のプログラムをデバッグ判断部２６０に送信し、デバッグ判断部２６０はその比較用のプログラムを受信する（ステップＳ１０５）。ここで、受信したプログラムは一時的にＲＡＭ２０４に保存される。
【００３５】
そして、デバッグ判断部２６０において、ＲＡＭ２０４に保存された比較用データと不揮発性メモリ２０３に格納されているプログラムの一部との一致判定を行う（ステップＳ１０６）。この判定の結果、不揮発性メモリ２０３に格納されているプログラムの一部とホストＰＣ８００に格納されている比較用データとが一致しない場合は、デバッグを許可しないため、デバッグモード不許可のＮＡＣＫ信号をホストＰＣ８００に送信する（ステップＳ１１１）。そして、デバッグモード不許可の通知を表示してデバッグ作業を終了する。すなわち、デバッグ判断部２６０を停止させる（ステップＳ１１２）。
【００３６】
一方、ステップＳ１０６において不揮発性メモリ２０３に格納されているプログラムの一部と比較用データとの一致判定の結果、プログラムが一致する場合は、当該一致判定を行った不揮発性メモリ２０３のブロックはデバッグを許可する。すなわち、当該一致判定を行った不揮発性メモリ２０３のブロックのデバッグモード許可のＡＣＫ信号を、デバッグ判断部２６０を介してホストＰＣ８００に送信する（ステップＳ１０７）。そして、ステップＳ１０８に移る。
【００３７】
ステップＳ１０８では、不揮発性メモリ２０３のブロック全てにおいて、このブロックに対応するデバッグ機能設定値が０又は１のどちらの値がデバッグ機能設定用メモリ２０６に格納されているかを判断する。そして、不揮発性メモリ２０３のブロック全てにおいて、ステップＳ１０３が行われていない場合は、残りのブロックにおいても当該ブロックに対応するデバッグ機能設定用メモリ２０６の値を読み出し、プログラムの一致判定を行うか否かの判断を行う必要がある。すなわち、全ての不揮発性メモリ２０３のブロックにおいてステップＳ１０３が行われていない場合は、ステップＳ１０２に戻り、ステップＳ１０３が行われていない不揮発性メモリ２０３のブロックに対応するデバッグ機能設定用メモリ２０６のデバッグ機能設定値を読み出す。そして、デバッグ機能設定値を読み出した後のステップは上述のステップＳ１０３乃至ステップＳ１０８及びステップＳ１１０乃至ステップＳ１１２と同様である。
【００３８】
すなわち、ステップＳ１０３において、不揮発性メモリ２０３のブロックに対応するデバッグ機能設定値は、０又は１のどちらの値が格納されているか判断し、判断の結果、デバッグ機能設定値が１である場合は、当該ブロックに格納されているプログラムの一部のデバッグを許可し、ステップＳ１０８に移る。一方、デバッグ機能設定用メモリ２０６に０が格納されている場合は、デバッグ許否の判断を行う。すなわち、不揮発性メモリ２０３のブロックに格納されているプログラムの一部と、ホストＰＣ８００に格納されていて当該不揮発性メモリ２０３のブロックに格納されているプログラムの一部に対応するプログラムの一部と、一致判定を行う。判定の結果、一致する場合は、ステップＳ１０８に移る。一方、一致しない場合は、デバッグを終了する。
【００３９】
そして、ステップＳ１０８においてデバッグ機能設定用メモリ２０６に格納されているデバッグ機能設定値が全て１である場合、又は不揮発性メモリ２０３のブロックに格納されているプログラムの一部に対応するデバッグ機能設定値が０である場合の比較用データと不揮発性メモリ２０３に格納されているプログラムの一部とが全て一致した場合のみ、デバッグ判断部２０６はデバッグを許可する（ステップＳ１０９）。
【００４０】
ここで、実施の形態１では、不揮発性メモリ２０３の全てのブロックにおいてデバッグ機能設定値を判断する（ステップＳ１０８）こととした。すなわち、不揮発性メモリ２０３の全てのブロック（Ａｒｅａ０乃至Ａｒｅａ３）においてデバッグ機能設定値に基づいてデバッグの許否の判断をすることとしたが、例えば、不揮発性メモリ２０３のブロックのうち一部のブロック（例えば、Ａｒｅａ１）のみデバッグ許否を判断し、当該一部のブロックでデバッグが許可された場合に、デバッグを行うこととしてもよい。すなわち、Ａｒｅａ０乃至Ａｒｅａ３全てのデバッグ機能設定値を判断するのではなく、Ａｒｅａ１のみデバッグ機能設定値を判断すればよい。このため、デバッグのためのセキュリティ解除の作業の煩雑さがより解消され、デバッグ作業の時間が短縮される。また、実施の形態１では、デバッグ機能設定用メモリ２０６に、不揮発性メモリ２０３のブロックに対応するデバッグ機能設定値（０又は１）がそれぞれ格納されているとしたが、例えば、デバッグ機能設定値を４ビットとし、デバッグ機能設定値が００００の場合はＡｒｅａ０、１１１１の場合は、Ａｒｅａ１乃至３に格納されているプログラムの一部のデバッグ許否を判断し、それ以外のブロックはデバッグの許否の判断をしないとしてもよい。また、デバッグ機能設定値を２ビットにし、デバッグ機能設定値が００の場合はＡｒｅａ０、デバッグ機能設定値が１１の場合は、Ａｒｅａ１及びＡｒｅａ３においてデバッグの許否の判断を行い、それ以外のブロックにおいてはデバッグの許否判断を行わないとしてもよい。
【００４１】
以上のように、実施の形態１のマイクロコンピュータ２０１は、複数のブロックで構成された不揮発性メモリ２０３と、不揮発性メモリ２０３の各ブロックに対応するデバッグ機能設定値を格納しているデバッグ機能設定用メモリ２０６とを有する。すなわち、１つのプログラムを不揮発性メモリ２０３のブロック毎に分けて格納し、不揮発性メモリ２０３の各ブロックに対応するデバッグ機能設定値を格納するデバッグ機能設定用メモリ２０６を設ける。そして、不揮発性メモリ２０３の各ブロックに対応するデバッグ機能設定値（０又は１）をデバッグ機能設定用メモリに格納する。これにより、不揮発性メモリ２０３のブロック毎、すなわち、プログラムの部分毎にデバッグの許否の判断を行うか否かを判断することができる。
【００４２】
例えば、プログラムの更新を行う不揮発性メモリ２０３のブロックに対応するデバッグ機能設定値は、プログラムの比較を行わないデバッグ機能設定値を格納し、プログラムの更新を行わない不揮発性メモリ２０３のブロックに対応するデバッグ機能設定値は、プログラムの比較を行うデバッグ機能設定値を格納する。これによりプログラムの更新によって不揮発性メモリ２０３のプログラムが書き換えられた場合であっても、その書き換えられた不揮発性メモリ２０３のブロックはプログラムの一致判定を行わずにデバッグを行い、プログラムの更新を行わない不揮発性メモリ２０３のブロックのみプログラムの一致判定を行い、プログラムが一致した場合にホストＰＣ８００はデバッグを行うことができる。すなわち、不揮発性メモリ２０３のブロック毎にデバッグの許否の判断を行うか否かを判断することができるため、プログラミングの更新を行った場合でも煩雑な作業なしにデバッグを開始するためのセキュリティ解除を行うことができる。また、デバッグを行う際のセキュリティ確保の方法として、マイクロコンピュータのプログラム自体をセキュリティコードとするため、ユーザはプログラムのみを管理すればよいため、プログラム管理を簡素化することができる。
【００４３】
実施の形態２．
次に実施の形態２について説明する。上述の実施の形態１ではプログラムの更新が行われることを前提としているが、プログラムの更新が行われない場合は、例えば、不揮発性メモリを複数のブロックにわけなくてもよい。すなわち、不揮発性メモリは１つのブロックのみ有し、このブロックにプログラム全てを格納する。そして、ユーザがデバッグを行う際は、この不揮発性メモリに格納されているプログラム全てが一致しているか否かを判断する。以下に実施の形態２のマイクロコンピュータのデバッグシステムの構成及びプログラムの開発からシステムの出荷までの手順について詳細に説明する。ここで、実施の形態１と同一の構成要素には同一の符号を付し、その詳細な説明は省略する。
【００４４】
図３に実施の形態２にかかるマイクロコンピュータのデバッグシステムの全体構成を示す。図３に示すように、実施の形態２にかかるマイクロコンピュータのデバッグシステムは、メモリ２１０、タイマ２２０、ＵＡＲＴ２２１、その他周辺回路２３０、外部バスＩ／Ｆ２４０、書き込み用回路２５０、デバッグ判断部２６０、及びＣＰＵ２７０等からなるマイクロコンピュータ２００及びＩＣ５００とを有するユーザ基板１００と、デバッグ用装置６００と、書き込み用装置７００と、プログラムのデバッグ及びプログラムの書き込み等を行うＥＷＳパーソナルコンピュータ８００（以下ホストＰＣという。）とからなる。デバッグ用装置６００は、ホストＰＣ８００及びデバッグ判断部２６０と接続されている。また、書き込み用装置７００はホストＰＣ８００及び書き込み用回路２５０と接続されている。
【００４５】
ここで、メモリ２１０は、ＳＦＲ２１１、ＲＡＭ２１２、不揮発性メモリ２１３、及びデバッグ機能設定用メモリ２１４を有する。ここで、不揮発性メモリ２１３は一つのブロックで構成されていて、マイクロコンピュータのプログラム全てが格納されている。
【００４６】
そして、実施の形態２にかかるマイクロコンピュータ２００は、デバッグ機能設定値が格納されたデバッグ機能設定用メモリ２１４を有する。デバッグ機能設定値は、デバッグの許否の判断を行なうか否かを示す値である。例えば、実施の形態２ではデバッグ機能設定用メモリ２１４は１ｂｉｔとし、ホストＰＣ８００に格納されているプログラムと、不揮発性メモリ２１３に格納されているプログラムとの一致判定を行なって、デバッグの許否を判断する場合のデバッグ機能設定値を０に対応させる。そして、ホストＰＣ８００が格納しているプログラムと、不揮発性メモリ２１３に格納されているプログラムとを比較せずに、デバッグを許可する場合のデバッグ機能設定値を１に対応させることとする。
【００４７】
すなわち、後述するようにホストＰＣ８００からデバッグ判断部２６０にデバッグ開始信号が送信される。そして、デバッグ判断部２６０は、デバッグの許否の判断を行うか否かを判断するためにデバッグ機能設定用メモリ２１４のデバッグ機能設定値を読み出す。デバッグ機能設定値が１の場合は、一致判定を行わずにデバッグを許可する。一方、デバッグ機能設定値が０の場合は、ホストＰＣ８００に格納されているプログラムと不揮発性メモリ２１３に格納されているプログラムとを比較して一致判定を行う。この一致判定において、ホストＰＣ８００に格納されているプログラム全部と不揮発性メモリ２１３に格納されているプログラム全部が一致した場合にデバッグを許可する。
【００４８】
実施の形態２においては実施の形態１と同様に、デバッグ機能設定用メモリ２１４に格納されているデバッグ機能設定値が０の場合、ホストＰＣ８００に格納されているプログラムと、不揮発性メモリ２１３に格納されているプログラムとの一致判定を行なって、デバッグの許否を判断し、デバッグ機能設定値が１の場合、ホストＰＣ８００が格納しているプログラムと、不揮発性メモリ２１３に格納されているプログラムとを比較せずに、デバッグを許可することとするが、デバッグ機能設定値が１の場合にプログラムの一致判定を行い、デバッグ機能設定値が０の場合はプログラムの一致判定を行うことなくデバッグを行うこととしてもよい。
【００４９】
以上のことから、デバッグ機能設定用メモリ２１４に１が格納されている場合は、デバッグ判断部２６０が不揮発性メモリ２１３に格納されたプログラムとホストＰＣ８００からデバッグ用装置６００を経由して送られてきたプログラムとの比較を行うことなく、ホストＰＣ８００はデバッグを行う。一方、デバッグ機能設定用メモリ２１４に０が格納されている場合は、デバッグ判断部２０６が、不揮発性メモリ２１３に格納されているプログラムとホストＰＣ８００からデバッグ用装置６００を経由して送られてきたプログラムとを比較する。両者のプログラム全部が一致する場合は、ホストＰＣ８００はそのままデバッグを行う。そして、プログラムの比較の結果、両者が一致しない場合は、ホストＰＣ８００はデバッグを行わない。すなわち、プログラム自体を、デバッグを行う際のセキュリティコードとして、ホストＰＣ８００が格納しているプログラムと不揮発性メモリ２１３に格納されているプログラムとを比較して、両者が一致した場合にのみデバッグを行うことができる。
【００５０】
また、デバッグ機能設定用メモリ２１４は、再書き込み可能なメモリであることが好ましい。後述するように、例えば、プログラムを開発する段階ではホストＰＣ８００に格納されているプログラムと、不揮発性メモリ２１３に格納されているプログラムとを比較せずにデバックを許可する値に設定しておく。一方、デバッグの要請を行う際はプログラムの一致判定を行なって、一致した場合にのみデバッグを許可する値に設定することが好ましい。このため、デバッグ機能設定用メモリ２１４は、再書き込み可能なメモリであることが好ましい。
【００５１】
ここで、上述のマイクロコンピュータのデバッグシステムを用いて、ユーザが行うプログラムの開発、プログラムの書き込み、プログラムのデバッグ、そして製品として出荷するまでの手順を以下に説明する。まず、プログラムの開発を行う。すなわち、ユーザは、ユーザが作成するシステムに合わせてマイクロコンピュータ２００の動作を規定する。そして、ホストＰＣ８００を用いてマイクロコンピュータ用プログラムのコーディング（作成）を行う。
【００５２】
次に、コーディングしたプログラムの書き込みを行う。ユーザはコーディングしたプログラムを、書き込み用装置７００を介してホストＰＣ８００からマイクロコンピュータ２００の書き込み用回路２５０に転送する。書き込み用回路２５０は、ホストＰＣ８００から送信されたプログラムを受け取り、マイクロコンピュータ２００の不揮発性メモリ２１３にホストＰＣ８００から送られてきたプログラムを書き込む。実施の形態２では、マイクロコンピュータ２００上にメモリ２１０及びデバッグ判断部２６０等の素子を形成した後、ホストＰＣ８００から書き込み用装置７００及び書き込み用回路２５０を介して不揮発性メモリ２１３にプログラムを書き込むこととしたが、マイクロコンピュータ２００の製造過程において、例えば書き込み用の装置を直接不揮発性メモリ２１３に接続して、ホストＰＣ８００等を介さずにプログラムを書き込むことも可能である。
【００５３】
また、不揮発性メモリ２１３にプログラムが書き込まれる際にデバッグ機能設定用メモリ２１４に格納するデバッグ機能設定値を決めることができる。すなわち、上述したように、デバッグ機能設定用メモリ２１４には０又は１のデバッグ機能設定値が格納される。ここで、プログラムの開発中及びプログラムのデバッグ中は、頻繁にデバッグ機能を利用するため、デバッグ機能設定用メモリ２１４のデバッグ機能設定値は１にすることが好ましい。すなわち、プログラムの開発中及びプログラムのデバッグ中は、不揮発性メモリ２１３に格納されているプログラムとホストＰＣ８００からデバッグ用装置６００を経由して送られてきたプログラムとの一致判定を行なわずに、デバッグの要請があった場合にはそのままデバッグを許可することが好ましい。これにより、デバッグ作業の時間短縮をすることができる。
【００５４】
次に、マイクロコンピュータ２００のデバッグについて説明する。デバッグにおけるマイクロコンピュータ２００の動作フローを図４に示す。まず、ユーザはデバッグ用装置６００を介してマイクロコンピュータ２００とホストＰＣ８００とを接続する。そして、ユーザはホストＰＣ８００からデバッグ開始信号を送信する。マイクロコンピュータ２００のデバッグ判断部２６０は、デバッグ用装置６００を介してデバッグ開始信号を受信する（ステップＳ２０１）。
【００５５】
デバッグ判断部２６０は、デバッグ開始信号を受信すると、デバッグ機能設定用メモリ２１４のデバッグ機能設定値を読み出す（ステップＳ２０２）。そして、デバッグ機能設定用メモリ２１４に０又は１のどちらの値が格納されているか判断する（ステップＳ２０３）。そして、デバッグ機能設定用メモリ２１４に１が格納されている場合は、デバッグ用装置６００を介してホストＰＣ８００にデバッグモード許可を表すＡＣＫ（Acknowledgement）信号を送信し（ステップＳ２０９）、ホストＰＣ８００がデバッグを行う（ステップＳ２１０）。
【００５６】
一方、デバッグ機能設定用メモリ２１４に０が格納されている場合は、先ず、不揮発性メモリ２１３のプログラムとホストＰＣ８００に格納されているプログラムとを比較する。この場合、デバッグ判断部２６０はデバッグ用装置６００を介してホストＰＣ８００に格納されているプログラムを送信するように要求する（ステップＳ２０４）。そして、ホストＰＣ８００は、デバッグ判断部２６０からプログラム送信要求を受けると格納されているプログラムをマイクロコンピュータ２００のデバッグ判断部２６０へ送信する。そして、デバッグ判断部２６０はホストＰＣ８００から送られてきた比較用のプログラムを受信する（ステップＳ２０５）。受信したプログラムは一時的にＲＡＭ２１２に保存される。
【００５７】
次に、デバッグ判断部２６０において、ＲＡＭ２１２に保存された比較用のプログラムと不揮発性メモリ２１３に格納されているプログラムとの一致判定をする（ステップＳ２０６）。このとき、例えば、ＲＡＭ２１２に保存される比較用のプログラムの容量が大きく、ＲＡＭ２１２に入りきらない場合、比較用のプログラムを複数回に分けてＲＡＭ２１２に格納する。すなわち、まず、プログラムの一部のデータをＲＡＭ２１２に格納し、比較が終わった部分のデータから破棄し、残りのデータを順次ＲＡＭ２１２に格納して比較する。そして、マイクロコンピュータ２００のデバッグ判断部２６０が、ＲＡＭ２１２に保存された比較用のプログラムと不揮発性メモリ２１３に格納されているプログラムとを比較した結果、プログラムの内容が全部一致していれば、デバッグモード許可を表すＡＣＫ信号をホストＰＣ８００へ送信する（ステップＳ２０７）。ホストＰＣ８００がデバッグモード許可を表すＡＣＫ信号を受信した場合は、デバッグを行う（ステップＳ２０８）。
【００５８】
一方、ステップ１０６において、ＲＡＭ２１２に保存された比較用のプログラムと不揮発性メモリ２１３に格納されているプログラムとの比較結果が一致していない場合は、デバッグモード不許可をあらわすＮＡＣＫ信号をホストＰＣ８００に送信（ステップＳ２１１）する。そして、ユーザにデバッグモード不許可を伝えるメッセージをホストＰＣ８００に表示してデバッグを終了する。すなわちデバッグ判断部２６０を停止させ（ステップＳ２１２）、ホストＰＣ８００がデバッグを行うことなくホストＰＣ８００の処理を終了させる。
【００５９】
また、マイクロコンピュータ２００のデバッグ判断部２６０は、ホストＰＣ８００がデバッグを行う場合（ステップＳ２０８、ステップＳ２１０）、不揮発性メモリ２１３に格納されているプログラムの読み出しを許可する。すなわち、プログラムの読み出しが可能となる。ユーザはホストＰＣ８００を操作してマイクロコンピュータ２００の不揮発性メモリ２１３に格納されているプログラムを読み出し、あるいは実行、修正等のデバッグの操作を行い、プログラムの修正を行う。そして、プログラムを修正した場合、修正後のプログラムをホストＰＣ８００に格納する。
【００６０】
このように、デバッグ判断部２６０は、デバッグ機能設定用メモリ２１４に０が格納されている場合は、マイクロコンピュータの不揮発性メモリ２１３に格納されているプログラムとホストＰＣ８００に格納されているプログラムとを比較し、一致判定を行う。そして、両者のプログラムが一致しなければデバッグを許可しない。一方、両者のプログラムが一致する場合はデバッグを許可する。また、デバッグ機能設定用メモリ２１４に１が格納されている場合は、デバッグ判断部２６０は、不揮発性メモリ２１３に格納されているプログラムとホストＰＣ８００が格納しているプログラムとの一致判定を行なわずにデバッグを許可する。
【００６１】
このデバッグ機能設定値を使用することにより、例えば、デバッグ及び書込みを頻繁に繰り返す場合は、比較作業の時間短縮の為に、デバッグ機能設定用メモリ２１４を１に設定し、マイクロコンピュータ２００の不揮発性メモリ２１３に格納されているプログラムとホストＰＣタ８００に格納されているプログラムとの比較を行わないようにすることも可能である。
【００６２】
そして、プログラムのデバッグを行った後、ユーザはマイクロコンピュータ２００を使ったシステムを出荷する。出荷後、マイクロコンピュータを使ったシステムが不良となった場合、ユーザは上述したようにホストＰＣ８００からデバッグ開始信号をマイクロコンピュータ２００のデバッグ判断部２６０に送信し、デバッグを行う。これにより、マイクロコンピュータの不良の解析を行うことができる。また、デバッグ機能設定用メモリ２１４を０に設定することによって、プログラムを知らない第三者が不正にマイクロコンピュータ２００の不揮発性メモリ２１３を読み出すことを防止することができる。さらに、マイクロコンピュータ２００のその他のメモリであるＳＦＲ２１１、及びＣＰＵ２７０等の内部状態を示すデータ等の漏洩を防止することができる。
【００６３】
なお、実施の形態２においては、プログラムの更新が行われる場合には、当該プログラムの更新の際に、デバッグ用設定値の値を１（比較しない）に変更するようにしてもよい。このような構成にすれば、不揮発性メモリ２１３に格納されているプログラムとホストＰＣ８００が格納しているプログラムとの一致判定を行わずに、ホストＰＣ８００はデバッグを許可することができるため、デバッグのためのセキュリティ解除の際に煩雑な作業を伴うことはない。なお、その際は、従来技術のＩＤ及びパスワード等をマイクロコンピュータ２００のセキュリティコードとすることが好ましい。
【００６４】
以上のように、実施の形態２においては、マイクロコンピュータ２００のプログラム自体をマイクロコンピュータ２００のセキュリティコードとする。すなわち、マイクロコンピュータ２００のプログラムのデバッグを行う際、まずデバッグ機能設定用メモリ２１４のデバッグ機能設定値を読み出し、その値に応じて、不揮発性メモリ２１３に格納されているプログラムとホストＰＣ８００に格納されているプログラムとを比較するか否かを判断し、この判断結果に応じてデバッグを行うか否か判断する。プログラムの比較を行わない場合は、デバッグ判断部２６０はそのままデバッグを許可する。また、プログラムの比較を行う場合はホストＰＣ８００に格納されているプログラムと不揮発性メモリ２１３に格納されているプログラムの一致判定を行う。そして、プログラムが一致した場合にのみ、デバッグ判断部２６０はデバッグを許可する。一方、プログラムの比較の結果、プログラムが一致しない場合は、デバッグ判断部２６０はデバッグを許可しない。すなわち、マイクロコンピュータ２００のプログラム自体をセキュリティコードとすることにより、ユーザはプログラムのみを管理すればよいため、プログラム管理の簡素化をすることができる。また、マイクロコンピュータ２００のプログラムを知らない第三者にプログラムが漏洩することを防ぐことができる。そして、プログラムの更新が行われた場合にはデバッグ機能設定値をプログラムの比較を行わない値に設定することにより、煩雑な作業を行わずに、デバッグを開始するためのセキュリティ解除を行うことができる。
【００６５】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、実施の形態１と実施の形態２を組み合わせてもよい。すなわち、実施の形態１及び実施の形態２の機能を有するマイクロコンピュータであってもよい。例えば、プログラムの更新が行われるまでは実施の形態２を用いて、プログラム全体の比較を行う。そして、プログラムの更新が行われた後は、実施の形態１を用いて不揮発性メモリのブロックに格納されているプログラムの一部とホストＰＣに格納されているプログラムの一部との比較を行うこととしてもよい。
【図面の簡単な説明】
【００６６】
【図１】実施の形態１のマイクロコンピュータのデバッグシステムを示すブロック図である。
【図２】実施の形態１のマイクロコンピュータのデバッグ時の動作を示す動作フロー図である。
【図３】実施の形態２のマイクロコンピュータのデバッグシステムを示すブロック図である。
【図４】実施の形態２のマイクロコンピュータのデバッグ時の動作を示す動作フロー図である。
【図５】従来のマイクロコンピュータのデバッグシステムを示すブロック図である。
【図６】従来のマイクロコンピュータの動作を示す概略図である。
【符号の説明】
【００６７】
１００、９００  ユーザ基板
２００、２０１、９０１、９２０  マイクロコンピュータ
２０２、２１０  メモリ
２０３、２１３  不揮発性メモリ
２０４、２１２、９０５  ＲＡＭ
２０５、２１１  ＳＦＲ
２０６、２１４  デバッグ機能設定用メモリ
２２０  タイマ
２２１  ＵＡＲＴ
２３０  その他周辺回路
２４０  外部バスＩ／Ｆ
２５０  書き込み用回路
２６０  デバッグ判断部
２７０、９０３  ＣＰＵ
２８０、９０８  内部バス
３００  デバッグ用通信回路
４００  書き込み用通信路
５００  その他のＩＣ
６００  デバッグ用装置
７００  書き込み用装置
８００、９１７  ホストＰＣ
９０２  周辺Ｉ／Ｏ
９０４、９２１  ＲＯＭ
９０６  デバッグ機能制御回路
９０７  デバッグＩＦ端子
９０９  バス制御回路
９１０  外部バス端子
９１１  リソースアクセス回路
９１２  ＣＰＵ制御回路
９１３  プロテクトチェック回路
９１４  アクセスキーレジスタ
９１５  デバッグＩ／Ｆ入出力回路
９１６  機能制御モードレジスタ
９２２  ＲＯＭデータラッチ回路
９２３  一致検出回路
９２４  入力データラッチ回路
９２５  入力回路
９２６  制御回路
９２７  出力回路
【図１】
2008123106.tif 000003
【図２】
2008123106.tif 000004
【図３】
2008123106.tif 000005
【図４】
2008123106.tif 000006
【図５】
2008123106.tif 000007
【図６】
2008123106.tif 000008