(57)【要約】【課題】  システムを開発した正当なユーザにはプログラムデータなどを記憶する書き換え可能なメモリへのアクセスを可能としながら、不正なユーザには少ない付加回路規模でメモリアクセスを困難にして不正アクセスを防止する。【解決手段】  本発明の開発ツールは、フラッシュＭＣＵ７００の書き換え可能なフラッシュメモリ５００へのアクセスで、メモリアドレスやデータに加えてアクセス対象アドレスの書込み済みのデータをフラッシュＭＣＵ７００の通信回路３００に送信し、受信した通信回路３００がメモリアクセスを行う時、セキュリティ回路４００において書込み済みデータとフラッシュメモリ５００の読出しデータとを比較し、一致した時のみフラッシュメモリ５００のメモリアクセスが行えるよう制御する。【選択図】  図１
2007140879.tif 000002
【特許請求の範囲】
【請求項１】
ホストＰＣと、内蔵メモリとデバッグ情報の入出力手段を有するＭＣＵとが通信回線により接続されてなるマイコン開発ツールであって、
メモリアドレスと、メモリアクセスコマンドと、前記メモリアクセスコマンドに応じて付加される書込みデータからなるメモリアクセス情報、及び前記メモリアドレスに対応する書込み済みデータを前記ＭＣＵに送信するホストＰＣと、
前記ホストＰＣより送信された前記書込み済みデータが、内蔵メモリの前記メモリアドレスからの読み出しデータと一致するか判定し、一致した場合には、前記メモリアクセス情報に従って内蔵メモリへの書込みまたは読み出しを行うＭＣＵと
を備えたことを特徴とするマイコン開発ツール。
【請求項２】
ホストＰＣと、内蔵メモリとデバッグ情報の入出力手段を有するＭＣＵとが通信回線により接続されてなるマイコン開発ツールの半導体装置であって、
前記内蔵メモリに供給するメモリアドレスと、メモリアクセスコマンドと、前記メモリアクセスコマンドに応じて付加される書込みデータと、前記内蔵メモリの前記メモリアドレスに対応する書込み済みデータからなるメモリアクセス情報を受信する通信手段と、
前記通信手段と前記ＭＣＵの内蔵メモリとの間に設けられたセキュリティ回路と
を備え、
前記セキュリティ回路は、
第１のメモリアクセスで前記内蔵メモリの前記メモリアドレスから読み出した読出しデータと前記書込み済みデータとを比較する比較手段と、
前記比較手段から出力される比較結果を記憶する比較結果記憶手段と、
前記比較結果記憶手段に記憶された比較結果が一致である時、前記第１のメモリアクセスに続く第２のメモリアクセスを前記メモリアクセスコマンドに従って行ない、前記比較結果記憶手段に記憶された比較結果が不一致である時、前記第２のメモリアクセスを行わないように制御する制御手段と
を有することを特徴とする半導体装置。
【請求項３】
前記第２のメモリアクセスが前記内蔵メモリへの書込みである場合は前記通信手段を介して受信した前記書込みデータを前記内蔵メモリに書込み、前記第２のメモリアクセスが前記内蔵メモリからの読み出しである場合は前記内蔵メモリから読み出したデータを記憶する双方向の記憶手段を更に有することを特徴とする請求項２に記載の半導体装置。
【請求項４】
ホストＰＣと、内蔵メモリとデバッグ情報の入出力手段を有するＭＣＵとが通信回線により接続されてなるマイコン開発ツールの通信方法であって、
前記ホストＰＣから前記ＭＣＵへ、少なくともメモリアドレスと、メモリアクセスコマンドと、前記メモリアクセスコマンドに応じて付加される書込みデータと、前記内蔵メモリの前記メモリアドレスに対応する書込み済みのデータを含むメモリアクセス情報を送信し、
前記書込み済みデータが前記内蔵メモリの前記メモリアドレスからの読み出しデータと一致する場合、前記メモリアクセスコマンドが読み出しであれば、少なくとも前記メモリアクセスコマンドの読み出しデータを含む読出し情報を前記ＭＣＵから受信する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイコン開発ツールおよび半導体装置に係り、特にワンチップマイクロコンピュータに内蔵された不揮発性メモリに対する不正読出し防止機構を備えたマイコン開発ツール、半導体装置および通信方法に関する。
【背景技術】
【０００２】
マイクロコントローラ（以下ＭＣＵと記す）を用いたシステム開発では、インサーキットエミュレータ（以下、ＩＣＥと記す）を含むマイクロコントローラ開発ツール（以下、マイコン開発ツールと記す）が用いられている。このマイコン開発ツールは、ケーブルで接続されるシステム開発装置とエミュレータで構成される。システム開発装置は、ホストＰＣとそのホストＰＣ上で動作するプログラムとから構成されていて、プログラム作成やデバッグを行う。エミュレータは、開発中のシステムのＭＣＵの代わりに装着されて、そのＭＣＵの機能をエミュレーションする。そして、前記ＩＣＥを用いることで、開発中のシステムを動作させた時のデバッグに係るデータを得ることができて、システムの開発効率が向上する。
【０００３】
ところで、エミュレータにＭＣＵのエバリュエータチップなどを用いたＩＣＥは、高価であったり、ＩＣＥのコネクタやケーブルによって生じる負荷で、動作周波数の高いＭＣＵでは高速動作への追随が困難となったりする問題がある。また、開発中のシステムの実機としての環境に影響を与えて、システムの動作が変化したりする問題がある。このため、ＭＣＵに外部とシリアルデータ入出力（ＪＴＡＧ規格などのインターフェース）回路とデバッグ用の回路などを付加した、オンボードデバッグシステムが使用されるようになってきている（例えば、特許文献１参照。）。
【０００４】
オンボードデバッグシステムに対応したＭＣＵは、デバッガの機能でＭＣＵに内蔵される不揮発性メモリなどに書込まれたプログラムデータの読出しや書き換えができるため、システム開発後に発見されるバグなどへの対応が容易となる利点があるが、一方では、保護されるべきプログラムデータなどへの不正アクセスも容易となってしまう問題が発生する虞がある。
【０００５】
その不正アクセス対策として、例えば開発終了時に特定の操作を行ってセキュリティコードを入力してセキュリティビットを設定すると、その設定を解除しない限り、外部からシリアル入出力回路を介して内部のメモリなどへのアクセスができないようにして、プログラムデータなどへの不正アクセスを困難とする技術がある（例えば、特許文献２参照。）。
【特許文献１】特開２００３−１５９０９号公報（第４頁、第１図）
【特許文献２】特開２００２−１８３１０８号公報（第４−５頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２のような、ＭＣＵに内蔵されたプログラムデータなどを記憶するメモリへの不正アクセスを防止する方法は、セキュリティコードの入力方法などが知られると、限られたビット数のセキュリティコードが有限時間内に解析されて、セキュリティ性能が低下する問題がある。また、セキュリティ性能向上のため、セキュリティコードのビット数を増やすと、セキュリティのために付加する回路規模が増加する問題となる。
【０００７】
本発明は、上記問題を解決するためになされたもので、システムを開発した正当なユーザにはプログラムデータなどを記憶するメモリへのアクセスを可能としながら、少ない付加回路規模で不正なユーザにはメモリアクセスを困難にして不正アクセスを防止するマイコン開発ツール、半導体装置、および通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の開発ツールは、ホストＰＣと、内蔵メモリとデバッグ情報の入出力手段を有するＭＣＵとが通信回線により接続されてなるマイコン開発ツールであって、メモリアドレスと、メモリアクセスコマンドと、前記メモリアクセスコマンドに応じて付加される書込みデータからなるメモリアクセス情報、及び前記メモリアドレスに対応する書込み済みデータを前記ＭＣＵに送信するホストＰＣと、前記ホストＰＣより送信された前記書込み済みデータが、内蔵メモリの前記メモリアドレスからの読み出しデータと一致するか判定し、一致した場合には、前記メモリアクセス情報に従って内蔵メモリへの書込みまたは読み出しを行うＭＣＵとを備えたことを特徴とする。
【０００９】
また、本発明の半導体装置は、ホストＰＣと、内蔵メモリとデバッグ情報の入出力手段を有するＭＣＵとが通信回線により接続されてなるマイコン開発ツールの半導体装置であって、前記内蔵メモリに供給するメモリアドレスと、メモリアクセスコマンドと、前記メモリアクセスコマンドに応じて付加される書込みデータと、前記内蔵メモリの前記メモリアドレスに対応する書込み済みデータからなるメモリアクセス情報を受信する通信手段と、前記通信手段と前記ＭＣＵの内蔵メモリとの間に設けられたセキュリティ回路とを備え、前記セキュリティ回路は、第１のメモリアクセスで前記内蔵メモリの前記メモリアドレスから読み出した読出しデータと前記書込み済みデータとを比較する比較手段と、前記比較手段から出力される比較結果を記憶する比較結果記憶手段と、前記比較結果記憶手段に記憶された比較結果が一致である時、前記第１のメモリアクセスに続く第２のメモリアクセスを前記メモリアクセスコマンドに従って行ない、前記比較結果記憶手段に記憶された比較結果が不一致である時、前記第２のメモリアクセスを行わないように制御する制御手段とを有することを特徴とする。
【００１０】
また、本発明の通信方法は、ホストＰＣと、内蔵メモリとデバッグ情報の入出力手段を有するＭＣＵとが通信回線により接続されてなるマイコン開発ツールの通信方法であって、前記ホストＰＣから前記ＭＣＵへ、少なくともメモリアドレスと、メモリアクセスコマンドと、前記メモリアクセスコマンドに応じて付加される書込みデータと、前記内蔵メモリの前記メモリアドレスに対応する書込み済みのデータを含むメモリアクセス情報を送信し、前記書込み済みデータが前記内蔵メモリの前記メモリアドレスからの読み出しデータと一致する場合、前記メモリアクセスコマンドが読み出しであれば、少なくとも前記メモリアクセスコマンドの読み出しデータを含む読出し情報を前記ＭＣＵから受信することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、小規模なセキュリティ回路とメモリアクセスに比較ステップを付加することで、正当なユーザにはマイコン開発ツールを用いて内蔵メモリに書込まれたプログラムのデバッグを可能としながら、不正ユーザには内蔵メモリへのアクセスを困難とすることができるので、内蔵メモリへの不正アクセスを防止することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施例を説明する。
【実施例】
【００１３】
本発明の実施例に係るマイコン開発ツール、半導体装置および通信方法を、図１乃至図１０を参照して説明する。
【００１４】
図１は、本発明の実施例に係る書き換え可能な内蔵メモリを有するＭＣＵを用いたマイコン開発ツールのブロック図である。図２は、図１のセキュリティ回路の詳細なブロック図である。図３および図４は、ホストＰＣによるメモリアクセス手順を示すフローチャートである。図５および図６は、メモリへの書込みおよび読出し動作時のセキュリティ回路を中心とする動作を示すフローチャートである。図７乃至図１０は、メモリへの書込みおよび読出し動作時のセキュリティ回路の主要な信号のタイミング図である。
【００１５】
まず、図１に示すマイコン開発ツール１００は、マイコン開発用ソフトを実行するホストＰＣ２００と、通信回路３００とセキュリティ回路４００とフラッシュメモリ５００とＭＣＵ６００を内蔵したフラッシュＭＣＵ７００とが、通信回線８００を介して接続されて構成される。
【００１６】
ホストＰＣ２００は、デバッグ操作を行うマイコン開発用制御プログラム（デバッガ）をインストールしている。そして、フラッシュＭＣＵ７００のプログラムデバッグを行う操作者から入力されたデバッグ操作命令をホストＰＣ２００が解釈すると、通信回路３００が受信できる通信手順に変換し、通信回線８００を介してフラッシュＭＣＵ７００の通信回路３００に送信する。また、フラッシュＭＣＵ７００の通信回路３００から送信されるデバッグ操作結果やデータをホストＰＣ２００が受信すると、ホストＰＣ２００は、そのデバッグ操作結果やデータを操作者が理解できる形式に変換して表示出力する。
【００１７】
通信回路３００は、ホストＰＣ２００から受信したメモリアクセス命令に従ってメモリアクセス動作を行う時は、セキュリティ回路４００を介してフラッシュメモリ５００への読出し書込みアクセスを行う。また、デバッグ操作命令がフラッシュＭＣＵ７００のデバッグ仕様で定められたＭＣＵ６００内部のレジスタなどへのアクセス動作の場合は、ＭＣＵ６００内のレジスタのデータの読出し書込みアクセスを行い、結果を通信手順に従ってホストＰＣ２００へ送信する。
【００１８】
セキュリティ回路４００は、通信回路３００がフラッシュメモリ５００へメモリアクセス動作を行った場合におけるセキュリティ機能を実現する。即ち、通信回路３００からフラッシュメモリ５００へのメモリアクセス動作で、一定のセキュリティ解除条件を満たした時には、セキュリティ回路４００は通信回路３００からのフラッシュメモリ５００へのメモリアクセス動作が行えるように信号を制御する。しかしながら、不正アクセス等でセキュリティ解除条件が満たされない時には、セキュリティ回路４００はメモリアクセス動作の信号を抑止する。
【００１９】
フラッシュメモリ５００は、汎用のフラッシュメモリと同様の構成であるが、セキュリティ回路４００とＭＣＵ６００からのメモリアクセスが競合しないように、図示しない選択回路やバス構造の回路が、メモリ周辺またはＭＣＵ６００とセキュリティ回路４００に付加されている。また、本説明ではセキュリティ機能に係わらないフラッシュメモリ５００へのメモリアクセスにおいて、必要である特殊な制御信号や電圧発生回路などは省略してスタティックメモリへのアクセスのように記述している。
【００２０】
ＭＣＵ６００は、マイクロコントローラであり、フラッシュメモリ５００に書き込まれたプログラムを実行して、データ処理や図示しないＩＯポートなどを介してフラッシュＭＣＵ７００の外部周辺回路との間で信号を入出力する。
【００２１】
次に、フラッシュメモリ５００に書き込まれたメモリ内容を把握しているユーザ（以下、正当なユーザと定義する）が、フラッシュメモリ５００に書込みを行う時のマイコン開発ツール１００の動作を説明する。
【００２２】
正当なユーザであるか否かを検証するセキュリティ回路４００は、図２に示すような構成となっている。
【００２３】
通信回路３００からのアドレス出力（以下、アドレスと称する）３１０は、フラッシュメモリ５００のアドレス入力（ＡＤＲ）に接続され、メモリデータ入出力（以下、データと称する）３２０は、双方向バッファ回路４１０を介してフラッシュメモリ５００のデータ入出力（ＤＡＴＡ）５２０に接続される。また、通信回路３００からのデータ３２０とフラッシュメモリ５００からのＤＡＴＡ５２０は、比較回路４２０の比較データ入力にそれぞれ入力され、比較される。
【００２４】
通信回路３００からの比較制御出力（以下、ベリファイ信号と称する）３３０は、通信回路３００から比較回路４２０の一方に入力されるデータ３２０の値と、アドレス３１０で指定されるフラッシュメモリ５００のアドレスから読み出され比較回路４２０の他方に入力されるＤＡＴＡ５２０の値とを比較させる信号であり、比較回路４２０の出力制御入力ＯＥとＡＮＤゲート４５２の一方に入力される。
【００２５】
通信回路３００からのメモリ読出し制御出力（以下、リードと称する）３４０とメモリ書込み制御出力（以下、ライトと称する）３５０は、フラッシュメモリ５００の読出し制御信号入力（Ｒ）５４０と書込み制御信号入力（Ｗ）５５０にそれぞれバッファゲート４４１、４４２を介して入力されて、フラッシュメモリ５００の読出しおよび書込み動作を制御する。
【００２６】
双方向バッファ４１０は、ＤＩＲ入力信号とＧ入力信号によってバッファ回路の入出力方向と出力イネーブル（出力が有効である）が決定される。例えば、バッファゲート４４１、４４２がＯＮ状態で、リード３４０がアクティブ（以下の説明で特に断らない場合は、信号レベルが「０」の状態を指す）の時は、バッファゲート４４１の出力は「０」となる。一方、ライト３５０は、同時にアクティブにならないように制御されるので「１」でありバッファゲート４４２からの出力は「１」となり、データ入出力方向を示すＤＩＲ入力信号は「１」となる。そして、バッファゲート４４１、４４２の出力を入力とするＡＮＤゲート４５１の出力はバッファゲート４４１の出力が「０」であるため「０」となり、双方向バッファ４１０の出力が有効であることを示すＧ入力信号が「０」となる。このため、双方向バッファ４１０は、フラッシュメモリ５００から読出したＤＡＴＡ５２０の値を、通信回路３００のデータ３２０に出力するように動作する。
【００２７】
また、バッファゲート４４１、４４２がＯＮ状態で、ライト３５０がアクティブの時は、バッファゲート４４２の出力は「０」であるから、データ入出力方向を示すＤＩＲ入力信号が「０」となる。更に、バッファゲート４４２の出力「０」が入力されるＡＮＤゲート４５１の出力は「０」で、出力が有効であることを示すＧ入力信号が「０」となる。このため、双方向バッファ４１０は、通信回路３００からのデータ３２０をフラッシュメモリ５００のＤＡＴＡ５２０へ出力するように動作する。
【００２８】
更にまた、バッファゲート４４１、４４２がＯＮ状態で、リード３４０とライト３５０とが「１」の時は、バッファゲート４４１および４４２の出力が共に「１」となる。その出力を受けるＡＮＤゲート４５１の出力は「１」となるため、双方向バッファ４１０のＧ入力信号が「１」となる。したがって、双方向バッファ４１０は、両方向の出力がイネーブルでなく、ハイインピーダンス状態となってデータ３２０とＤＡＴＡ５２０のデータ線を論理的に切り離すように動作する。
【００２９】
比較回路４２０は、通信回路３００からのベリファイ信号３３０がアクティブな時、データ３２０とＤＡＴＡ５２０の値を比較し、その値が一致した時は、出力信号４２１をアクティブとする。その出力信号４２１は、Ｄタイプのフリップフロップ（ＦＦ）４３０のプリセット（ＰＲ）に入力される。
【００３０】
Ｄタイプのフリップフロップ（ＦＦ）４３０がプリセットされると、そのＱ出力は「１」となる。Ｑ出力である一致信号４３１は、そのクロック入力（ＣＫ）に入力される信号のアクティブエッジ（信号レベルが「０」から「１」に変化する状態）が入力されるまで、「１」に維持する。この一致信号４３１が「１」の時、バッファ４４１とバッファ４４２はＯＮ状態となって、各バッファゲート４４１、４４２の入力信号（リード３４０、ライト３５０）をそのまま出力する。なお、一致信号４３１が「０」となりバッファゲート４４１とバッファゲート４４２がＯＦＦ状態の場合、各バッファゲート４４１、４４２はそれぞれの入力信号によらず「１」を出力する。
【００３１】
（データの書き込み）
次に、ホストＰＣ２００が、上述のセキュリティ回路４００を有するフラッシュＭＣＵ７００のフラッシュメモリ５００にデータを書き込む場合の通信ならびに処理手順を、図３を参照して説明する。
【００３２】
まず、ホストＰＣ２００は、通信回路３００にメモリ書込みコマンドを送信する（ステップＳ１００）。
【００３３】
次に、ホストＰＣ２００は、通信回路３００にメモリアドレスと、その「メモリアドレス」に「書込み済みデータ」と、「新規書込みデータ」と、「コマンド実行命令」を送信する（ステップＳ１１０）。
【００３４】
次に、ホストＰＣ２００は、全ての新規書込みデータの送信が終了したか調べ（ステップＳ１２０）、新規書込みデータの送信が終了していない時は、ステップ１１０に戻り、全ての書込みデータの送信が終了している時は書込み処理を終了する。
【００３５】
（データの読み出し）
次に、ホストＰＣ２００が、上述のセキュリティ回路４００を有するフラッシュＭＣＵ７００のフラッシュメモリ５００からデータを読み出す場合の通信ならびに処理手順を、図４を参照して説明する。
【００３６】
まず、ホストＰＣ２００は、通信回路３００に「メモリ読出しコマンド」を送信する（ステップＳ２００）。
【００３７】
次に、ホストＰＣ２００は、通信回路３００に「メモリアドレス」と、そのメモリアドレスに「書込み済みデータ」と、「コマンド実行命令」を送信する（ステップＳ２１０）。
【００３８】
次に、ホストＰＣ２００は、通信回路３００から送信される読出しデータを受信する（ステップＳ２２０）。
【００３９】
次に、ホストＰＣ２００は、セキュリティ回路４００から「読出したデータ」と「書込み済みデータ」の比較結果（ステップＳ２３０）を見て、一致しない時はメモリ読出し処理を異常終了する。
【００４０】
そして、「読出したデータ」と「書込み済みデータ」が一致した時は、ホストＰＣ２００は、全ての読出しデータの受信が終了したか調べ（ステップＳ２４０）、読出しデータの受信が終了していない時は、ステップ２１０に戻り、全ての読出しデータの受信が終了した時は読出し処理を正常終了する。
【００４１】
上述したように、本発明のセキュリティ回路４００を有するフラッシュＭＣＵ７００へのメモリアクセスを行う時、ホストＰＣ２００は所定の通信手順で、「メモリアドレス」と書込み時は「書込みデータ」と「アクセスコマンド」に加えて、アクセス対象のアドレスに「書込み済みデータ」を含めて通信回路３００に送信する。
【００４２】
そして、送信された「書込み済みデータ」（データ３２０）がフラッシュメモリ５００から読み出されたＤＡＴＡ５２０と比較回路４２０で比較され、一致した時は、セキュリティ回路４００のＤタイプのフリップフロップ（ＦＦ）４３０の一致信号４３１が「１」となってバッファゲート４４１、４４２をＯＮ状態とする。これにより、リード３４０またはライト３５０がフラッシュメモリ５００に伝達される。したがって、各制御信号（リード又はライト）と同時に送信されるメモリアクセス動作がフラッシュメモリ５００で実行される。
【００４３】
しかしながら、比較回路４２０で一致しない時は、Ｄタイプのフリップフロップ（ＦＦ）４３０からの一致信号４３１が「０」のままであるため、バッファゲート４４１、４４２がＯＦＦ状態となり、リード３４０またはライト３５０がフラッシュメモリ５００に伝達されない。したがって、各制御信号（リード又はライト）と同時に送信されるメモリアクセス動作が行われない。
【００４４】
次に、セキュリティ回路４００の動作を、図５乃至図１０のフローチャートおよびタイミング図を用いて説明する。
【００４５】
まず、正当なユーザによる書込み動作は、図５のステップＳ４００〜ステップＳ４７０ａへの動作フローおよび図７に示すタイミングで行われる。
【００４６】
通信回路３００は、ホストＰＣ２００が図３のステップＳ１１０で示される書込み動作を行うと、ホストＰＣ２００から「メモリアドレス」、「書込み済みデータ」、「書込みデータ」、「コマンド実行命令」を受信する（ステップＳ４００）。
【００４７】
（ベリファイ動作）
次に、通信回路３００は、ホストＰＣ２００から受信した「メモリアドレス」をアドレス３１０に出力しフラッシュメモリ５００のＡＤＲに入力する。次に、「書込み済みデータ」をデータ３２０に出力する（ステップＳ４１０）。
【００４８】
次に、通信回路３００は、ベリファイ信号３３０をアクティブとする（ステップＳ４２０）。
【００４９】
ベリファイ信号３３０がアクティブとなると、フラッシュメモリ５００のＲ入力５４０がアクティブになり、フラッシュメモリ５００のＡＤＲに入力されているメモリアドレスのデータがフラッシュメモリ５００から読み出されてＤＡＴＡ５２０に出力される（ステップＳ４３０）。
【００５０】
また、比較回路４２０の出力イネーブルＯＥに入力されるベリファイ信号３３０がアクティブであるので、比較回路４２０はフラッシュメモリ５００からのＤＡＴＡ５２０と「書込み済みデータ」のデータ３２０を比較して、比較結果４２１に出力する。
【００５１】
この時、正当なユーザが送信した「書込み済みデータ」とフラッシュメモリ５００から読出されたＤＡＴＡ５２０は一致するので、比較回路４２０の比較結果４２１はアクティブとなり、Ｄタイプのフリップフロップ（ＦＦ）４３０をプリセットする。これにより、フリップフロップ（ＦＦ）４３０の一致信号４３１が「１」となる（ステップＳ４４０）。
【００５２】
次に、通信回路３００は、定められた時間後「書込み済みデータ」出力を停止するとともに、ベリファイ信号３３０を非アクティブにする。これにより、フラッシュメモリ５００の読出し動作は終了する。
【００５３】
（書込み動作成功）
次に、通信回路３００は、受信した書込みコマンドに従って「書込みデータ」をデータ３２０に出力するとともに、ライト３５０をアクティブにする（ステップＳ４５０ａ）。
【００５４】
この時、フリップフロップ（ＦＦ）４３０の一致信号４３１が「１」のため、バッファゲート４４２をＯＮ状態とし、ライト３５０はフラッシュメモリ５００のＷ５５０に入力される（ステップＳ４６０ａ）。
【００５５】
上述のように、一致信号４３１が「１」で、ライト３５０がアクティブになると、双方向バッファ４１０はデータ３２０の「書込みデータ」を入力してフラッシュメモリ５００のＤＡＴＡへ出力する。そして、フラッシュメモリ５００のＷ５５０がアクティブになると、ＤＡＴＡ５２０に入力された「書込みデータ」がＡＤＲに入力されたアドレスに書込まれ、フラッシュメモリ５００への書込み動作が行われる（ステップＳ４７０ａ）。
【００５６】
次に、通信回路３００は、定められた時間後にライト３５０を非アクティブにするとともに、データ３２０からの「書込みデータ」の出力を停止する。ライト３５０が非アクティブとなると、フラッシュメモリ５００のＷ５５０が非アクティブとなり、双方向バッファ４１０の出力が行われなくなり、メモリの書込み動作が終了する。また、ライト３５０が非アクティブとなる時に、ＡＮＤゲート４６１の出力が「０」から「１」に変化して、フリップフロップ（ＦＦ）４３０のクロックＣＫに入力される。これにより、フリップフロップ（ＦＦ）４３０はＤ入力「０」が出力Ｑされて、一致信号４３１は「０」となる。
【００５７】
「書込み済みデータ」を知ることができない不正ユーザによるメモリ書込み動作は、図５のステップＳ４００〜ステップＳ４７０ｂへの動作フローおよび図８に示すタイミングで行われる。
【００５８】
ベリファイ動作のステップＳ４００〜ステップＳ４３０の動作、対応する信号変化のタイミングは上述したものと同様であるので、その説明を省略する。
【００５９】
ステップＳ４４０において、比較回路４２０の出力イネーブルＯＥに入力されるベリファイ信号３３０がアクティブであるので、比較回路４２０はＤＡＴＡ５２０と「書込み済みデータ」のデータ３２０を比較して、比較結果４２１に出力する。この時、不正ユーザが送信した「書込み済みデータ」のデータ３２０とフラッシュメモリ５００から読出されたＤＡＴＡ５２０が一致しないので、比較回路４２０の比較結果４２１は非アクティブ「１」であり、Ｄタイプのフリップフロップ（ＦＦ）４３０は変化しない。これにより、フリップフロップ（ＦＦ）４３０のＱ出力の一致信号４３１は「０」のままであり、バッファゲート４４１，４４２をＯＦＦ状態とする（ステップＳ４４０）。
【００６０】
次に、通信回路３００は、定められた時間後「書込み済みデータ」出力を停止するとともに、ベリファイ信号３３０を非アクティブにする。これにより、フラッシュメモリ５００の読出し動作は終了する。
【００６１】
（書込み動作不成功）
次に、通信回路３００は、受信した書込みコマンドに従って「書込みデータ」をデータ３２０に出力するとともに、ライト３５０をアクティブにする（ステップＳ４５０ｂ）。
【００６２】
上述の通り、フリップフロップ（ＦＦ）４３０の一致信号４３１が「０」のため、バッファゲート４４２はＯＦＦ状態であり、ライト３５０はフラッシュメモリ５００のＷ５５０に入力されない（ステップＳ４６０ｂ）。
【００６３】
また、バッファゲート４４１、４４２がＯＦＦ状態であることから、その出力は非アクティブ「１」となり、ライト３５０がアクティブになっても、双方向バッファ４１０のＧ入力信号は「１」である。したがって、双方向バッファ４１０はハイインピーダンス状態となって、データ３２０およびＤＡＴＡ５２０の出力は行わない。そして、Ｗ５５０は非アクティブのままで変化しないため、フラッシュメモリ５００への書込み動作は行われない（ステップＳ４７０ｂ）。
【００６４】
次に、通信回路３００は、定められた時間後にライト３５０を非アクティブにするとともに、「書込みデータ」の出力を停止する。
【００６５】
このように、不正ユーザによるメモリアクセスの場合は、通信回路３００から出力された「書込みデータ」のフラッシュメモリ５００への書込み動作は行われない。
【００６６】
以上の書込み動作と同様に、図４のステップＳ２１０の読出し動作においても、図６と図９および図１０に示すように、「書込み済みデータ」(データ３２０）と「読出しデータ」（ＤＡＴＡ５２０）が一致すれば、フラッシュメモリ５００からの読出し動作が行われるが、一致しない時は、フラッシュメモリ５００からの読出し動作が行われることはない。
【００６７】
フラッシュメモリ５００からの読出し動作が行われない時、通信回路３００のデータ入力の値は、双方向バッファ４１０がデータ３２０へ出力しない時の値（不定値）となる。また、図９および図１０においては中間の値が入力されるように記述しているが、ＭＣＵの設計においてノイズ対策などの関係で信号線をフローティング状態としないように制御することがあり、この場合は回路構成によるが全ての読出しデータが「０」または「１」になる。
【００６８】
なお、フラッシュメモリ５００のデータ初期状態は、メモリ製造段階においてＭＣＵユーザに開放されない方法や手段で書込み読出し試験が行われ、その時にａｌｌ「０」またはａｌｌ「１」が書き込まれることが知られていて、最初にプログラムをメモリに書込む場合は、フラッシュメモリ５００のブロックを製造したメーカが提示するその「書込み済みデータ」の値を利用する。
【００６９】
上述した本実施形態によれば、システムを開発した正当なユーザについてはプログラムデータなどを記憶するフラッシュメモリ５００へのアクセスを可能とし、通信手順を何らかの方法で知りえても、「書込み済みデータ」を知られることはないので、不正なユーザによるフラッシュメモリ５００への不正アクセスを少ない付加回路規模で防止することができる。
【００７０】
なお、通信回路３００からフラッシュメモリ５００へのデータ幅は、ＭＣＵ６００からフラッシュメモリ５００へのデータ幅と同一とする必要はなく、例えば２倍のデータ幅とすれば付加回路は増加するものの、必要な書込み済みデータの値の組み合わせが増大することから、繰り返しアクセスして値を得ることは非常に困難となる。
【００７１】
また、Ｄタイプフリップフロップ（ＦＦ）４３０の代わりにカウンタで構成して、ベリファイ信号３３０による比較を連続して複数回行い、その比較結果が一致する時カウントアップし一定の回数に達した時、一致信号４３１を出力するように構成しても良い。そして、途中の比較で一致しない場合はカウンタの値をクリアするように制御し、一致信号４３１が出力された後は、メモリアクセス動作を行う度に、カウンタをカウントダウンしてカウンタが０となるまで一致信号４３１を出力するように制御してもよく、この場合は、更に少ない追加回路で、不正アクセスを防止することができる。
【００７２】
更に、本発明は、上述した各実施例に限定されるものではなく、本発明の主旨を逸脱しない範囲で種々に変形して実施することができる。
【図面の簡単な説明】
【００７３】
【図１】本発明のセキュリティ回路を内蔵したマイクロコンピュータおよびマイコン開発ツールの構成図。
【図２】セキュリティ回路のブロック図。
【図３】メモリ書込み手順を示すフローチャート。
【図４】メモリ読出し手順を示すフローチャート。
【図５】セキュリティ回路を中心としたメモリ書込み動作を示すフローチャート。
【図６】セキュリティ回路を中心としたメモリ読出し動作を示すフローチャート。
【図７】セキュリティ回路における書込み動作のタイミング図（比較データ一致時）。
【図８】セキュリティ回路における書込み動作のタイミング図（比較データ不一致時）。
【図９】セキュリティ回路における読出し動作のタイミング図（比較データ一致時）。
【図１０】セキュリティ回路における読出し動作のタイミング図（比較データ不一致時）。
【符号の説明】
【００７４】
１００  マイコン開発ツール
２００  ホストＰＣ
３００  通信回路
３１０  メモリの読出し書込みアドレス（アドレス）
３２０  メモリとの書込み読出しデータ（データ）
３３０  比較制御信号（ベリファイ）
３４０  メモリへの読出し制御信号（リード）
３５０  メモリへの書込み制御信号（ライト）
４００  セキュリティ回路
４１０  双方向性バッファ
４２０  比較回路
４３０  フリップフロップ
４３１  一致信号
４４１、４４２  バッファゲート
５００  フラッシュメモリ
５２０  メモリの読出し書込みデータ
５４０  メモリの読出し制御信号
５５０  メモリの書込み制御信号
６００  ＭＣＵ
７００  フラッシュＭＣＵ
【図１】
2007140879.tif 000003
【図２】
2007140879.tif 000004
【図３】
2007140879.tif 000005
【図４】
2007140879.tif 000006
【図５】
2007140879.tif 000007
【図６】
2007140879.tif 000008
【図７】
2007140879.tif 000009
【図８】
2007140879.tif 000010
【図９】
2007140879.tif 000011
【図１０】
2007140879.tif 000012