この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[実施の形態1]
実施の形態1では、IPベンダまたはプログラム製作者がエンドユーザに対するプロテクトを目的とするプロテクト機能について説明する。
図1は、実施の形態1に従う半導体装置101の概略構成図である。
図1を参照して、半導体装置101は、データバス98と、演算部(CPU:Central Processing Unit;以下、CPUと称す)90と、不揮発性メモリ1と、読出部12と、制御部10と、電源部97とからなる。
データバス98は、CPU90、制御部10、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU90は、データバス98を介して不揮発性メモリ1との間でデータの授受を行なう。そして、CPU90は、外部からリセット信号を受けると、後述する動作モードに応じて、不揮発性メモリ1または外部メモリ(図示しない)に格納されているプログラムを読出して起動する。さらに、CPU90は、不揮発性メモリ1からプログラムを読出して起動する場合には、そのモード信号を制御部10へ出力する。
不揮発性メモリ1は、フラッシュメモリやEEPROMなどの半導体からなり、複数のブロックに分割されたデータ領域1.1とプロテクト情報領域1.2とを含む。
データ領域1.1は、ブロック1,2,・・・,Nに分割されており、それぞれデータ1,2,・・・,Nが格納される。
プロテクト情報領域1.2は、データ領域1.1におけるブロックに対応するように分割されており、データ領域のそれぞれのブロックに対するプロテクト設定が格納される。実施の形態1におけるプロテクト情報領域1.2には、それぞれ1ビットからなる全体保護フラグ1a,2a,・・・,Naが格納され、このフラグ値(「0」または「1」)に応じて、データ領域1.1のそれぞれのブロックに対するプロテクト設定の有無が判断される。
読出部12は、不揮発性メモリ1のプロテクト情報領域1.2に格納されている全体保護フラグ1a,2a,・・・,Naを読出し、制御部10へ出力する。そして、読出部12は、読出回路16と、読出レジスタ18とからなる。
読出回路16は、外部からのリセット信号や電源部97からの投入信号を受けて、プロテクト情報領域1.2に格納されている全体保護フラグ1a,2a,・・・,Naを読出し、読出レジスタ18へ出力する。
読出レジスタ18は、全体保護フラグ1a,2a,・・・,Naのそれぞれを一旦格納し、その値を制御部10へ出力する。読出レジスタ18は、読出回路16から新たに全体保護フラグを受けるまで、その値を保持する。そのため、読出レジスタ18から出力される値は、外部からのリセット信号や電源部97からの投入信号を受けるタイミングでのみ更新される。
制御部10は、OR回路15と、起動モード判断部(判断部a)14と、制御回路11とからなる。
OR回路15は、読出レジスタ18から全体保護フラグ1a,2a,・・・,Naを受けて論理和(OR)演算を行ない、全体保護フラグ1a,2a,・・・,Naのうちいずれか1つでもプロテクト設定がなされていれば、起動モード判断部14へ「ON」を出力する。
起動モード判断部14は、OR回路15から「ON」を受けている場合には、データ領域1.1のすべてのブロックに対する読出しおよび書込み(以下、アクセスとも称す)を禁止させるプロテクト制御信号を制御回路11へ出力する。そして、起動モード判断部14は、例外的にCPU90からモード信号を受けている場合においては、そのアクセスを禁止させるプロテクト制御信号をマスクする。これは、CPU90は、不揮発性メモリ1に格納されているプログラムを読出して起動するため、アクセスの禁止が解除されていないと、CPU90が起動できないという問題が生じるからである。
制御回路11は、データバスを介して、データ領域1.1のいずれかのブロックに対するプロテクトの設定解除の要求を受けると、当該ブロックに格納されているデータを消去し、そのデータが消去されたことを確認した後に、プロテクト情報領域1.2に格納されている当該ブロックに対応する保護フラグの値を変更し、プロテクトの設定を解除する。また、制御回路11は、データバスを介して、データ領域1.1のいずれかのブロックに対するアクセスの要求を受けると、起動モード判断部14からアクセスを禁止するプロテクト制御信号を受けているか否かを判断する。そして、制御回路11は、アクセスを禁止するプロテクト制御信号を受けていなければ、そのアクセスを許可し、その要求先のブロックに格納されているデータを読出し、またはその要求先のブロックへデータを書込む。さらに、制御回路11は、データバスを介して、データ領域1.1のいずれかのブロックに対するプロテクトの設定要求を受けると、プロテクト情報領域1.2に格納されている当該ブロックに対応する全体保護フラグの値を変更し、プロテクトを設定する。
電源部97は、外部からの指令を受けて、半導体装置101の各部への電源供給を開始し、かつ、その電源供給の開始と同時に投入信号を読出回路16へ出力する。
上述したように、半導体装置101は、複数の動作モードを有し、その動作モードに応じて、プロテクト設定の有効および無効を判断する必要がある。
図2は、半導体装置101の動作モードを説明するための図である。
図2(a)は、マイコン内蔵メモリプログラム起動モードである。
図2(b)は、マイコン外部メモリプログラム起動モードである。
図2(c)は、CPU非動作起動モードである。
図2(a)を参照して、「マイコン内蔵メモリプログラム起動モード」では、CPU90は、不揮発性メモリ1からデータバス98を介してプログラムを読出し、起動する。そのため、CPU90が起動できるように、不揮発性メモリ1のプロテクト設定を一時的に無効にする必要がある。
図2(b)を参照して、「マイコン外部メモリプログラム起動モード」では、半導体装置101にデータバス98を介して、外部メモリ200が接続される。そして、CPU90は、外部メモリ200からデータバス98を介してプログラムを読出し、起動する。ここで、IPベンダおよびプログラム製作者以外の何人でも外部メモリ200にプログラムを書込むことが可能であるので、プロテクト設定されたブロックに格納されているデータを読出すような悪意のあるプログラムが実行されるおそれがある。そのため、「マイコン外部メモリプログラム起動モード」では、CPU90の処理状態にかかわらず不揮発性メモリ1のプロテクト設定を常時有効とする。
図2(c)を参照して、「CPU非動作起動モード」では、半導体装置101のデータバス98に外部装置202が接続される。そして、外部装置202は、CPU90の処理にかかわらず、不揮発性メモリ1に対して直接アクセスを行なう。ここで、IPベンダおよびプログラム製作者以外の何人でも半導体装置101に外部装置202を接続できるので、悪意のある第三者が不揮発性メモリ1に格納されているデータを直接読出すおそれがある。そのため、「CPU非動作起動モード」では、CPU90の処理状態にかかわらず不揮発性メモリ1のプロテクト設定を常時有効とする。
(プロテクト設定)
データ領域1.1のいずれのブロックに対してもプロテクトが設定されていない状態において、CPU90または外部からプロテクト対象のデータが転送されると、制御回路11は、転送されたデータを所定のブロックに書込む。さらに、CPU90または外部から当該データに対するプロテクトの設定が要求されると、制御回路11は、データを格納したブロックに対応するプロテクト情報領域1.2の全体保護フラグの値を変更し、プロテクト設定を行なう。以下、同様の処理により、不揮発性メモリ1に格納されるすべてのデータをプロテクトすることができる。
なお、制御回路11は、プロテクトされているブロックに対するデータの読出し要求を受けると、格納されているデータと異なるデータを応答する。また、制御回路11は、プロテクトされているブロックに対するデータの書込み要求を受けると、何らの動作も行なわない(無視)、または、その要求を違反動作として扱う。
(プロテクト解除)
CPU90または外部からデータ領域1.1のいずれかのブロックに対するプロテクトの設定解除が要求されると、制御回路11は、指定されたブロックに格納されているデータを消去する。そして、制御回路11は、消去ベリファイ動作などにより、格納されているデータの消去が完了したことを確認した後、そのブロックに対応するプロテクト情報領域1.2の全体保護フラグの値を変更し、当該ブロックのプロテクト設定を解除する。
一方、制御回路11は、データ領域1.1のいずれかのブロックに対するプロテクト設定がされていれば、起動モード判断部14からアクセスを禁止するプロテクト制御信号を受けるため、すべてのブロックに対するアクセスを禁止する。そのため、1つのブロックに対するプロテクト設定が解除されたとしても、プロテクト設定がされている他のブロックが存在すれば、データ領域1.1のすべてのブロックに対してプロテクトが設定されていることになる。すなわち、制御回路11は、データ領域1.1のすべてのブロックに対してプロテクトの設定を解除しなければ、データ領域1.1のいずれのブロックに対してもアクセスを許可しない。
そこで、CPU90または外部から、データ領域1.1のすべてのブロックに対して、プロテクトの設定解除が要求され、すべてのブロックに格納されているデータが消去されて、初めてデータ領域1.1へのアクセスが可能となる。
なお、読出部12は、外部からのリセット信号や電源部97からの投入信号を受けるまで、保護フラグの値を更新しないので、プロテクト設定または設定解除は、半導体装置101がリセットされた場合または、電源が再投入された場合に有効となる。
以上のように、少なくともデータ領域1.1のいずれか1つのブロックに対してプロテクト設定が行なわれれば、すべてのブロックに対してプロテクトが有効となる。一方、データ領域1.1のすべてのブロックに対してプロテクト設定が解除されなければ、すべてのブロックに対してプロテクト設定が解除されない。
すなわち、データ領域1.1のプロテクトを設定する場合には、ブロック単位で容易に行なうことができるが、データ領域1.1のプロテクト設定を解除する場合には、すべてのブロックのそれぞれに対して複雑な処理が必要となる。
この発明の実施の形態1によれば、データ領域のプロテクト設定を解除する場合には、ブロック単位でデータ消去および保護フラグ値の変更が行なわれる。そのため、すべてのブロックを一括で消去する場合に比較して、効率的にデータ消去が行なえるので、処理速度の低下を抑制できる。一方、データ領域のプロテクト設定を解除するためには、すべてのブロックに対するプロテクト設定を解除しなければならない。よって、プロテクト設定を解除するためには、すべてのブロックに格納されているデータを消去する必要があり、高いデータ機密保護機能を実現できる。
また、この発明の実施の形態1によれば、制御部は、CPUが「マイコン内蔵メモリプログラム起動モード」であれば、CPUからのアクセスを許可する一方、他のモードであればアクセスを許可しない。よって、半導体装置と接続された外部装置からの要求によるデータ漏洩を防止できる。
[実施の形態2]
実施の形態1においては、IPベンダまたはプログラム製作者がエンドユーザに対するプロテクトを目的としたプロテクト機能を備える半導体装置について説明した。
一方、実施の形態2では、IPベンダがプログラム製作者およびエンドユーザに対するプロテクトを目的としたプロテクト機能を備える半導体装置について説明する。
図3は、実施の形態2に従う半導体装置102の概略構成図である。
図3を参照して、半導体装置102は、データバス98と、CPU92と、不揮発性メモリ2と、読出部22と、制御部20と、電源部97とからなる。
データバス98は、CPU92、制御部20、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU92は、データバス98を介して不揮発性メモリ2との間でデータの授受を行なう。そして、CPU92は、実施の形態1におけるCPU90と同様に、不揮発性メモリ2からプログラムを読出して起動する(「マイコン内蔵メモリプログラム起動モード」の)場合には、そのモード信号を制御部20へ出力する。
また、CPU92は、プログラムカウンタ(PC)95を含み、プログラムカウンタ95に格納されるプログラムカウンタ値に従い、不揮発性メモリ2から命令コードを読出して処理を実行する。このようなCPU92による命令コードの読出しは、命令フェッチと称される。なお、プログラムカウンタ値は、CPU92の処理実行に伴い、順次カウントアップされる。
さらに、CPU92は、不揮発性メモリ2に対するアクセスを実行する際に、その不揮発性メモリ2のアクセス先のアドレス(以下、アクセスアドレスと称す)を制御部20へ出力する。同時に、CPU92は、そのアクセスが命令フェッチによるものであるか、命令フェッチ以外のデータへのアクセス(以下、データアクセスと称す)によるものであるかを示すステータス信号(以下、アクセスステータスと称す)を制御部20へ出力する。
不揮発性メモリ2は、フラッシュメモリやEEPROMなどの半導体からなり、複数のブロックに分割されたデータ領域2.1とプロテクト情報領域2.2とを含む。
データ領域2.1は、ブロック1,2,・・・,M,・・・,Nに分割されており、それぞれデータ1,2,・・・,M,・・・,Nが格納される。
プロテクト情報領域2.2は、データ領域2.1に含まれるブロックのうち所定のブロックに対応するように配置されており、その所定のブロックに対するプロテクト設定が格納される。実施の形態2におけるプロテクト情報領域2.2には、データ領域2.1に含まれるブロック1,2,・・・,M,・・・,Nのうち、ブロックMに対する1ビットの部分保護フラグMbが格納され、このフラグ値(「0」または「1」)に応じて、ブロックMに対するプロテクト設定の有無が判断される。
読出部22は、不揮発性メモリ2のプロテクト情報領域2.2に格納されている部分保護フラグMbを読出し、制御部20へ出力する。そして、読出部22は、読出回路26と、読出レジスタ28とからなる。
読出回路26は、外部からのリセット信号や電源部97からの投入信号を受けて、プロテクト情報領域2.2に格納されている部分保護フラグMbを読出し、読出レジスタ28へ出力する。
読出レジスタ28は、部分保護フラグMbを一旦格納し、その値を制御部20へ出力する。読出レジスタ28は、読出回路26から新たに部分保護フラグMbを受けるまで、その値を保持する。そのため、読出レジスタ28から出力される値は、外部からのリセット信号や電源部97からの投入信号を受けるタイミングでのみ更新される。
制御部20は、アクセスモード判断部(判断部b)24と、制御回路21とからなる。
アクセスモード判断部24は、読出レジスタ28に格納される部分保護フラグMbに基づいて、ブロックMに対するプロテクトの設定がされている場合には、データ領域2.1のブロックMに対するアクセスを禁止させるプロテクト制御信号を制御回路21へ出力する。そして、アクセスモード判断部24は、例外的に、CPU92からモード信号を受けている場合で、かつ、CPU92からブロックMに対する命令フェッチによる命令コードの読出しである場合に限り、そのアクセスを禁止させるプロテクト制御信号をマスクする。これは、CPU92においてプログラム製作者により製作されたプログラムが実行される際に、サブルーチンコールだけを許可するためである。
制御回路21は、データバスを介して、データ領域2.1のブロックMに対するプロテクトの設定解除の要求を受けると、ブロックMに格納されているデータを消去し、そのデータが消去されたことを確認した後に、プロテクト情報領域2.2に格納されているブロックMに対応する部分保護フラグMbの値を変更し、プロテクトの設定を解除する。また、制御回路21は、データバスを介して、データ領域2.1のブロックMに対するアクセスの要求を受けると、起動モード判断部14からアクセスを禁止するプロテクト制御信号を受けているか否かを判断する。そして、制御回路21は、アクセスを禁止するプロテクト制御信号を受けていなければ、そのアクセスを許可し、その要求先のブロックMに格納されているデータを読出し、またはその要求先のブロックMへデータを書込む。さらに、制御回路21は、データバスを介して、データ領域2.1のブロックMに対するプロテクトの設定要求を受けると、プロテクト情報領域2.1に格納されている部分保護フラグMbの値を変更し、プロテクトを設定する。
電源部97については、実施の形態1と同様であるので、詳細な説明は繰返さない。
(プロテクト設定)
データ領域2.1のブロックMに対してプロテクト設定がなされていない状態において、CPU92または外部からプロテクト対象のデータが転送されると、制御回路21は、転送されたデータをブロックMに書込む。さらに、CPU92または外部から当該データに対するプロテクトの設定が要求されると、制御回路21は、データを格納したブロックMに対応する部分保護フラグMbの値を変更し、プロテクトを設定する。
上述のように、ブロックMに対してプロテクトが設定された場合には、制御回路21は、CPU92がマイコン内蔵メモリプログラム起動モードであり、かつ、命令フェッチにより命令コードを読出すためのアクセスであれば、ブロックMに対するアクセスを許可する。そのため、CPU92がブロックM以外のブロックに格納されている命令コードを命令フェッチして実行し、その実行処理中においてブロックMに対してデータアクセスがなされたとしても、制御回路21はそのアクセスを禁止する。
なお、制御回路21は、プロテクトされているブロックに対するデータの読出し要求を受けると、格納されているデータと異なるデータを応答する。また、制御回路21は、プロテクトされているブロックに対するデータの書込み要求を受けると、何らの動作も行なわない(無視)、または、その要求を違反動作として扱う。
(プロテクト解除)
CPU92または外部からデータ領域2.1のブロックMに対するプロテクトの設定解除が要求されると、制御回路21は、ブロックMに格納されているデータを消去する。そして、制御回路21は、消去ベリファイ動作などにより、格納されているデータの消去が完了したことを確認した後、プロテクト情報領域2.2の部分保護フラグMbの値を変更し、ブロックMのプロテクト設定を解除する。
以上のように、制御回路21は、データ領域2.1に格納されるライブラリソフトウェアに対して、命令フェッチによる命令コードの読出しに限定して、プロテクトを無効にするので、CPU92で実行されるプログラム中のサブルーチンコールを実現しながら、命令コード自体の漏洩を防止することができる。
この発明の実施の形態2によれば、プロテクトが設定されているブロックに対してのアクセスは許可されず、かつ、プロテクト設定を解除する場合には、当該ブロックに格納されているデータは必ず消去される。例外的に、CPUがデータ領域に格納されているライブラリソフトウェアなどの処理コードを読出して処理する場合に限り、保護情報にかかわらずアクセスが許可される。よって、命令コード自体の漏洩を防止し、かつ、CPUによるサブルーチンコールを制限なく実行させることができる。
[実施の形態3]
実施の形態1および2においては、それぞれ目的とする対象が異なるプロテクト機能について説明した。
一方、実施の形態3では、実施の形態1および2の機能を同時に実現する半導体装置について説明する。なお、以下の説明では、明確化のため、実施の形態1におけるプロテクトを「全体プロテクト」とも称し、実施の形態2におけるプロテクトを「部分プロテクト」とも称す。
図4は、実施の形態3に従う半導体装置103の概略構成図である。
図4を参照して、半導体装置103は、データバス98と、CPU92と、不揮発性メモリ3と、読出部32と、制御部30と、電源部97とからなる。
データバス98は、CPU92、制御部30、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU92は、データバス98を介して不揮発性メモリ3との間でデータの授受を行なう。そして、CPU92は、実施の形態1におけるCPU90と同様に、不揮発性メモリ2からプログラムを読出して起動する(「マイコン内蔵メモリプログラム起動モード」の)場合には、そのモード信号を制御部10へ出力する。
また、CPU92は、実施の形態2におけるCPU92と同様に、プログラムカウンタ(PC)95を含み、プログラムカウンタ95に格納されるプログラムカウンタ値に従い、不揮発性メモリ3から命令コードを読出して処理を実行する。そして、CPU92は、不揮発性メモリ3に対するアクセスを実行する際に、アクセスアドレスおよびアクセスステータスを制御部30へ出力する。
不揮発性メモリ3は、フラッシュメモリやEEPROMなどの半導体からなり、複数のブロックに分割されたデータ領域3.1とプロテクト情報領域3.2および3.3とを含む。
データ領域3.1は、ブロック1,2,・・・,M,・・・,Nに分割されており、それぞれデータ1,2,・・・,M,・・・,Nが格納される。
プロテクト情報領域3.2は、データ領域3.1におけるブロックに対応するように分割されており、データ領域のそれぞれのブロックに対する全体プロテクト設定が格納される。実施の形態3におけるプロテクト情報領域3.2には、それぞれ1ビットからなる全体保護フラグ1a,2a,・・・,Ma,・・・,Naが格納され、このフラグ値(「0」または「1」)に応じて、データ領域3.1のそれぞれのブロックに対する全体プロテクト設定の有無が判断される。
プロテクト情報領域3.3は、データ領域3.1に含まれるブロックのうち所定のブロックに対応するように配置されており、その所定のブロックに対する部分プロテクト設定が格納される。実施の形態3におけるプロテクト情報領域3.3には、データ領域3.1に含まれるブロック1,2,・・・,M,・・・,Nのうち、ブロックMに対する部分保護フラグMbが格納され、このフラグ値(「0」または「1」)に応じて、ブロックMに対する部分プロテクト設定の有無が判断される。
読出部32は、不揮発性メモリ3のプロテクト情報領域3.2および3.3に格納されている全体保護フラグ1a,2a,・・・,Ma,・・・,Naおよび部分保護フラグMbを読出し、制御部30へ出力する。そして、読出部32は、読出回路36と、読出レジスタ18および28とからなる。
読出回路36は、外部からのリセット信号や電源部97からの投入信号を受けて、プロテクト情報領域3.2に格納されている全体保護フラグ1a,2a,・・・,Naを読出して読出レジスタ18へ出力し、プロテクト情報領域3.3に格納されている部分保護フラグMbを読出して読出レジスタ28へ出力する。
読出レジスタ18は、実施の形態1と同様であるので詳細な説明は省略する。また、読出レジスタ28は、実施の形態2と同様であるので詳細な説明は省略する。
制御部30は、優先回路(優先回路M)34と、OR回路35および38と、起動モード判断部(判断部a)14と、アクセスモード判断部(判断部b)24と、制御回路31とからなる。
優先回路34は、後述するように、ブロックMに対して全体プロテクトおよび部分プロテクトが同時に設定された場合に生じる問題を回避するため、部分プロテクトを全体プロテクトに優先させるための回路である。そして、優先回路34は、データ領域3.1のブロックMに対して設定される全体保護フラグMaおよび部分保護フラグMbを受けて、部分保護フラグMbによる設定を優先する。すなわち、優先回路34は、読出レジスタ18から受けた全体保護フラグMaと読出レジスタ28から受けた部分保護フラグMbとの論理演算を行ない、部分保護フラグMbにより部分プロテクトが設定されていれば、全体保護フラグMaのプロテクト設定を無視して、全体プロテクト設定の解除を示す値をOR回路35へ出力する。
OR回路35は、読出レジスタ18から受けた全体保護フラグ1a,2a,・・・,Na(Maを除く)および優先回路34から受けた値で論理和(OR)演算を行ない、全体保護フラグ1a,2a,・・・,Na(Maを除く)および優先回路34から受けた値のうちいずれか1つでも全体プロテクトの設定を示す値であれば、起動モード判断部14へ「ON」を出力する。
起動モード判断部14は、実施の形態1と同様であるので、詳細な説明は繰返さない。また、アクセスモード判断部24は、実施の形態2と同様であるので、詳細な説明は繰返さない。
OR回路38は、起動モード判断部14およびアクセスモード判断部24から出力されるプロテクト制御信号を結合し、制御回路31へ出力する。
制御回路31は、データバスを介して、データ領域3.1のいずれかのブロックに対する全体プロテクトの設定解除の要求を受けると、当該ブロックに格納されているデータを消去し、そのデータが消去されたことを確認した後に、プロテクト情報領域3.2に格納されている当該ブロックに対応する全体保護フラグの値を変更し、全体プロテクトの設定を解除する。また、制御回路31は、データバスを介して、データ領域3.1のブロックMに対する部分プロテクトの設定解除の要求を受けると、ブロックMに格納されているデータを消去し、そのデータが消去されたことを確認した後に、プロテクト情報領域3.3に格納されている部分保護フラグMbの値を変更し、部分プロテクトの設定を解除する。なお、制御回路31は、全体プロテクトおよび部分プロテクトを互いに独立に扱うので、たとえば、ブロックMに対する全体プロテクトの設定解除の要求を受けると、格納されているデータを消去した後にブロックMに対する全体保護フラグMaの値を変更するが、部分保護フラグMbの値を変更することはない。そのため、全体プロテクトおよび部分プロテクトのいずれもが設定されている場合には、それぞれに対してプロテクト設定を解除する必要がある。
また、制御回路31は、データバスを介して、データ領域3.1のいずれかのブロックに対するアクセスの要求を受けると、OR回路38からアクセスを禁止するプロテクト制御信号を受けているか否かを判断する。そして、制御回路31は、アクセスを禁止するプロテクト制御信号を受けていなければ、そのアクセスを許可し、その要求先のブロックに格納されているデータを読出し、またはその要求先のブロックへデータを書込む。
さらに、制御回路31は、データバスを介して、データ領域3.1のいずれかのブロックに対する全体プロテクトの設定要求を受けると、プロテクト情報領域3.2に格納されている当該ブロックに対応する全体保護フラグの値を変更し、全体プロテクトを設定する。また、制御回路31は、データバスを介して、データ領域3.1のブロックMに対する部分プロテクトの設定要求を受けると、プロテクト情報領域3.3に格納されている部分保護フラグMbの値を変更し、部分プロテクトを設定する。
電源部97については、実施の形態1と同様であるので、詳細な説明は繰返さない。
(プロテクト設定)
データ領域3.1に対して全体プロテクトおよび部分プロテクトのいずれも設定されていない状態において、CPU92または外部からプロテクト対象のデータが転送されると、制御回路31は、転送されたデータを所定のブロックに書込む。さらに、CPU92または外部から当該データに対する全体プロテクトまたは部分プロテクトの設定が要求されると、制御回路31は、データを格納したブロックに対応する全体保護フラグ1a,2a,・・・,Ma,・・・,Naまたは部分保護フラグMbの値を変更し、プロテクト設定を行なう。なお、制御回路31は、全体プロテクト要求または部分プロテクト要求を受けて、互いに独立にプロテクトを設定する。
したがって、制御回路31は、全体保護フラグ1a,2a,・・・,Ma,・・・,Naのうちいずれかのフラグにおいて全体プロテクトが設定されていれば、CPU92がマイコン内蔵メモリプログラム起動モードである場合を除いて、すべてのブロックへのアクセスを禁止する。
さらに、制御回路31は、部分保護フラグMbにおいて部分プロテクトが設定されていれば、CPU92がマイコン内蔵メモリプログラム起動モードであっても、ブロックMへのアクセスを禁止する。そして、制御回路31は、CPU92がマイコン内蔵メモリプログラム起動モードであり、かつ、命令フェッチにより命令コードを読出すためのアクセスである場合に限りブロックMへのアクセスを許可する。
(プロテクト解除)
CPU92または外部からデータ領域3.1のいずれかのブロックに対する全体プロテクトまたは部分プロテクトの設定解除が要求されると、制御回路31は、指定されたブロックに格納されているデータを消去する。そして、制御回路31は、消去ベリファイ動作などにより、格納されているデータの消去が完了したことを確認した後、そのブロックに対応する全体保護フラグまたは部分保護フラグの値を変更し、当該ブロックのプロテクト設定を解除する。なお、制御回路31は、全体プロテクトの解除要求または部分プロテクトの解除要求を受けて、互いに独立にプロテクト設定を解除する。
したがって、ブロックMに対して全体プロテクトおよび部分プロテクトが設定されていれば、これらのプロテクトを解除するためには、それぞれのプロテクトに対する解除要求を制御回路31へ与える必要がある。
(優先回路)
上述したように、全体プロテクトは、IPベンダまたはプログラム製作者がエンドユーザに対するプロテクトを設定するための機能である。一方、部分プロテクトは、IPベンダがプログラム製作者およびエンドユーザに対するプロテクトを設定するための機能である。すなわち、通常の流通過程においては、IPベンダが、自身のライブラリソフトウェアに対して部分プロテクトを設定し、その後、プログラム製作者が、自身の製作したプログラムに対して全体プロテクトを設定する。そして、エンドユーザへ提供されることになる。
ところで、プログラム製作者が、自己の製作したプログラムをブロックM以外のブロックに格納した後、ブロックMに対して全体プロテクトを設定してしまった場合を考えると、不揮発性メモリ3のデータ領域3.1に格納されているプログラムを更新するためには、ブロックMに対する全体プロテクト設定を解除する必要がある。上述したように、プロテクト設定を解除するためには、そのブロックに格納されているデータを消去する必要があるため、ブロックMに対する全体プロテクト設定の解除は、ブロックMに格納されているソフトウェアライブラリの消去を意味する。すなわち、プログラム製作者は、自己の製作したプログラムを更新するために、IPベンダに対してライブラリソフトウェアの再提供を求めるという不合理な状況が生じる。
そこで、優先回路34は、ライブラリソフトウェアが格納されるブロックMに対して、全体プロテクト設定を無効にする。すなわち、優先回路34は、ブロックMに対して部分プロテクトが設定されていれば、同時に全体プロテクトが設定されていても、全体プロテクトが設定されていないとみなす。
よって、プログラム製作者が、誤って、ライブラリソフトウェアが格納されているブロックに対して全体プロテクトを設定したとしても、ライブラリソフトウェアを消去することなく、プログラムの更新が可能となる。
なお、優先回路34は、あくまでも、プログラム製作者などのミスを補うものであり、必須の構成要件ではないが、どのような状況においても不合理な状況を生じさせないために、配置することが望ましい。
この発明の実施の形態3によれば、データ領域の全体プロテクト設定を解除する場合には、ブロック単位でデータ消去および全体保護フラグ値の変更が行なわれる。そのため、すべてのブロックを一括で消去する場合に比較して、効率的にデータ消去が行なえるので、処理速度の低下を抑制できる。一方、データ領域の全体プロテクト設定を解除するためには、すべてのブロックに対する全体プロテクト設定を解除しなければならない。よって、全体プロテクト設定を解除するためには、すべてのブロックに格納されているデータを消去する必要があり、高いデータ機密保護機能を実現できる。また、部分プロテクトが設定されているブロックに対してのアクセスは許可されず、かつ、部分プロテクト設定を解除する場合には、当該ブロックに格納されているデータは必ず消去される。例外的に、CPUがデータ領域に格納されているライブラリソフトウェアなどの処理コードを読出して処理する場合に限り、部分保護フラグにかかわらずアクセスが許可される。よって、命令コード自体の漏洩を防止し、かつ、CPUによるサブルーチンコールを制限なく実行させることができる。
また、この発明の実施の形態3によれば、同一のブロックに対して、全体プロテクトおよび部分プロテクトが設定されている場合には、部分プロテクトが優先し、全体プロテクトは無視される。そのため、既に、部分プロテクトが設定されているブロックに対して、誤って全体プロテクトを設定してしまった場合においても、当該ブロックに格納されているデータを消去することなく、全体プロテクトの設定を解除してデータの更新を行なうことができる。
[実施の形態4]
実施の形態1〜3においては、それぞれ1ビットからなる全体保護フラグまたは部分保護フラグによりプロテクトを設定する場合について説明した。
一方、実施の形態4では、複数のビットからなる全体保護フラグまたは部分保護フラグを用いる場合について説明する。なお、実施の形態4においては、実施の形態3に示す半導体装置103に適用した例について説明する。
図5は、実施の形態4に従う半導体装置104の概略構成図である。
図5を参照して、半導体装置104は、データバス98と、CPU92と、不揮発性メモリ4と、読出部42と、制御部40と、電源部97とからなる。
データバス98は、CPU92、制御部40、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU92については、実施の形態3と同様であるので、詳細な説明は繰返さない。
不揮発性メモリ4は、複数のブロックに分割されたデータ領域4.1とプロテクト情報領域4.2および4.3とを含む。
データ領域4.1は、ブロック1,2,・・・,M,・・・,Nに分割されており、それぞれデータ1,2,・・・,M,・・・,Nが格納される。
プロテクト情報領域4.2は、データ領域4.1におけるブロックに対応するように分割されており、データ領域のそれぞれのブロックに対する全体プロテクト設定が格納される。実施の形態4におけるプロテクト情報領域4.2には、たとえば、それぞれ2ビットからなる全体保護フラグ1a’,2a’,・・・,Ma’,・・・,Na’が格納され、このフラグ値(「00」または「11」)に応じて、データ領域4.1のそれぞれのブロックに対する全体プロテクト設定の有無が判断される。
プロテクト情報領域4.3は、データ領域4.1に含まれるブロックのうちブロックMに対する部分プロテクト設定が格納される。実施の形態4におけるプロテクト情報領域4.3には、2ビットからなる部分保護フラグMb’が格納され、このフラグ値(「00」または「11」)に応じて、ブロックMに対する部分プロテクト設定の有無が判断される。
読出部42は、不揮発性メモリ4のプロテクト情報領域4.2および4.3に格納されている全体保護フラグ1a’,2a’,・・・,Na’および部分保護フラグMb’を読出し、制御部40へ出力する。そして、読出部42は、読出回路46と、読出レジスタ48および47とからなる。
読出回路46は、外部からのリセット信号や電源部97からの投入信号を受けて、プロテクト情報領域4.2に格納されている全体保護フラグ1a’,2a’,・・・,Ma’,・・・,Na’を読出し、ビット単位で読出レジスタ48へ出力する。同時に、読出回路46は、プロテクト情報領域4.3に格納されている部分保護フラグMb’を読出し、ビット単位で読出レジスタ47へ出力する。
読出レジスタ48は、全体保護フラグ1a’,2a’,・・・,Ma’,・・・,Na’のそれぞれをビット単位で一旦格納し、それぞれのビットの値を制御部40へ出力する。
読出レジスタ47は、部分保護フラグMb’をビット単位で一旦格納し、各ビットの値を制御部40へ出力する。
制御部40は、実施の形態3における制御部30にOR回路43.1,43.2,・・・,43.M,・・・,43.Nおよび44を追加したものと同様である。
OR回路43.1は、読出レジスタ48に格納されている全体保護フラグ1a’の0ビット目の値1a’(0)および1ビット目の値1a’(1)を読出し、論理和(OR)演算を行なう。そして、OR回路43.1は、その論理和演算の結果をOR回路35へ出力する。すなわち、OR回路43.1は、全体保護フラグ1a’の0ビット目の値1a’(0)または1ビット目の値1a’(1)のうち、どちらかのビットがプロテクトを設定する値となっていれば、プロテクトが設定されていると判断する。
以下同様に、OR回路43.2,・・・,43.M,・・・,43.Nは、それぞれ全体保護フラグ2a’,・・・,Ma’,・・・,Na’の0ビット目の値2a’(0),・・・,Ma’(0),・・・,Na’(0)および1ビット目の値2a’(1),・・・,Ma’(1),・・・,Na’(1)を読出し、論理和(OR)演算を行なう。そして、OR回路43.2,・・・,43.M,・・・,43.Nは、それぞれ論理和演算の結果をOR回路35へ出力する。
制御回路41は、データバスを介して、データ領域4.1のいずれかのブロックに対する全体プロテクトの設定要求を受けると、プロテクト情報領域4.2に格納されている当該ブロックに対応する全体保護フラグを構成するすべてのビットを同値に変更し、プロテクトを設定する。また、制御回路41は、データバスを介して、データ領域4.1のブロックMに対するプロテクトの設定要求を受けると、プロテクト情報領域4.3に格納されている部分保護フラグMbを構成するすべてのビットを同値に変更し、プロテクトを設定する。また、制御回路41は、プロテクトの設定解除の要求を受けると、プロテクトを設定する場合と同様に、プロテクト情報領域4.2に格納されている全体保護フラグまたはプロテクト情報領域4.3に格納されている部分保護フラグMbを構成するすべてのビットを同値に変更し、プロテクトを解除する。すなわち、制御回路41は、プロテクトの設定または解除に応じて、「00」または「11」を書込む。
なお、制御回路41の他の処理については、実施の形態3における制御回路31と同様であるので、詳細な説明は繰返さない。
以下、優先回路34、OR回路35および38、起動モード判断部(判断部a)14ならびにアクセスモード判断部(判断部b)24については、実施の形態3と同様であるので、詳細な説明は繰返さない。
電源部97については、実施の形態3と同様であるので、詳細な説明は繰返さない。
上述のように、制御回路41は、フラグを構成する複数のビットを同値に変更して、プロテクトを設定する。そのため、フラグを構成するビットが何らかの原因で揮発した場合にも、プロテクト設定を維持できる。
たとえば、プロテクトの設定を示すフラグ値を「1」とした場合において、制御回路41は、ブロック1に対する全体プロテクトの設定要求を受けると、全体保護フラグ1a’の0ビット目の値1a’(0)および1ビット目の値1a’(1)をいずれも「1」に変更する。同様に、制御回路41は、ブロック1に対する全体プロテクトの設定解除の要求を受けると、ブロック1に格納されているデータを消去した後、全体保護フラグ1a’の0ビット目の値1a’(0)および1ビット目の値1a’(1)をいずれも「0」に変更する。すなわち、制御回路41は、プロテクトの設定要求を受けると、保護フラグの値を「11」に変更し、プロテクトの設定解除の要求を受けると、保護フラグの値を「00」に変更する。
さらに、ブロック1に対する全体プロテクトが設定された状態、すなわち全体保護フラグ1a’の値が「11」に変更された場合において、何らかの原因により1ビット分のデータが揮発して「10」に変化したとすると、OR回路43.1に与えられる値は、「1」,「1」から「1」,「0」に変化する。しかしながら、OR回路43.1から出力される値は「1」のまま維持されるので、全体プロテクト設定が解除されることはない。
よって、保護フラグを構成するビットが何らかの原因で揮発したとしても、誤ってプロテクトの設定が解除されることを回避できる。なお、上述の説明から明らかなように、保護フラグをより多くのビットで構成することで、プロテクト機能をより強化することができる。
なお、実施の形態4においては、実施の形態1における全体プロテクト機能および実施の形態2における部分プロテクト機能を同時に実現する実施の形態3に従う半導体装置に適応した場合について説明したが、実施の形態1に従う半導体装置および実施の形態2に従う半導体装置のいずれに対しても同様に適応できることは言うまでもない。
実施の形態4によれば、実施の形態3における効果に加えて、全体プロテクト設定または部分プロテクト設定を行なうための全体保護フラグまたは部分フラグが何らかの原因で揮発したとしても、それらを構成するすべてのビットの値が変化しなければ、その保護フラグにより設定されるプロテクトが解除されることはない。よって、1つのビットからなる保護フラグを用いる場合に比較して、プロテクト機能をより強化した半導体装置を実現できる。
[実施の形態5]
実施の形態2〜4においては、データ領域を構成する複数ブロックのうち1つのブロックに対して部分プロテクトを設定する場合について説明した。
一方、実施の形態5では、複数のブロックに対して一体的に部分プロテクトを設定する場合について説明する。なお、実施の形態5においては、実施の形態4に示す半導体装置104に適用した例について説明する。
不揮発性メモリに格納されるライブラリソフトウェアの容量が大きく、1つのブロックに収まらない場合には、複数のブロックにまたがって格納される。このような場合において、ライブラリソフトウェアは、単一的に取り扱われることが望ましい。そこで、複数のブロックを1つのブロックとみなして一体的に部分プロテクトを設定できる機能が必要となる。
図6は、実施の形態5に従う半導体装置105の概略構成図である。
図6を参照して、半導体装置105は、データバス98と、CPU92と、不揮発性メモリ5と、読出部52と、制御部50と、電源部97とからなる。
データバス98は、CPU92、制御部50、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU92については、実施の形態4と同様であるので、詳細な説明は繰返さない。
不揮発性メモリ5は、複数のブロックに分割されたデータ領域5.1とプロテクト情報領域5.2および5.3とを含む。
データ領域5.1は、ブロック1,2,・・・,L,M,・・・,Nに分割されており、それぞれデータ1,2,・・・,L,M,・・・,Nが格納される。
プロテクト情報領域5.2は、データ領域5.1におけるブロックに対応するように分割されており、それぞれ全体保護フラグ1a’,2a’,・・・,La’,Ma’,・・・,Na’が格納される。
プロテクト情報領域5.3は、データ領域5.1を構成するブロックのうち複数のブロックに対する部分プロテクトを設定するための部分保護フラグを格納する。実施の形態5においては、たとえば、ブロックLおよびMに対して部分プロテクトを設定するための部分保護フラグLb’およびMb’が格納される。
なお、実施の形態4と同様に、全体保護フラグ1a’,2a’,・・・,La’,Ma’,・・・,Na’および部分保護フラグLb’,Mb’は、それぞれ2ビットで構成される。
読出部52は、不揮発性メモリ5のプロテクト情報領域5.2および5.3に格納されている全体保護フラグ1a’,2a’,・・・,La’,Ma’,・・・,Na’およびに部分保護フラグLb’,Mb’を読出し、制御部50へ出力する。そして、読出部52は、読出回路56と、読出レジスタ58および57とからなる。
読出回路56は、外部からのリセット信号や電源部97からの投入信号を受けて、全体保護フラグ1a’,2a’,・・・,La’,Ma’,・・・,Na’を読出し、読出レジスタ58へ出力する。同時に、読出回路56は、部分保護フラグLb’,Mb’を読出し、読出レジスタ57へ出力する。
読出レジスタ58は、全体保護フラグ1a’,2a’,・・・,La’,Ma’,・・・,Na’のそれぞれをビット単位で一旦格納し、各ビットの値を制御部50へ出力する。
読出レジスタ57は、部分保護フラグLb’,Mb’をビット単位で一旦格納し、各ビットの値を制御部50へ出力する。
制御部50は、実施の形態4における制御部40において、OR回路43.Lおよび43.MをOR回路53.LMに代え、かつ、OR回路44をOR回路54に代えたものである。
OR回路53.LMは、読出レジスタ58に格納されている全体保護フラグLa’の0ビット目の値La’(0)および1ビット目の値La’(1)ならびに、全体保護フラグMa’の0ビット目の値Ma’(0)および1ビット目の値Ma’(1)を読出し、論理和(OR)演算を行なう。そして、OR回路53.LMは、その論理和演算の結果を優先回路34へ出力する。
同様に、OR回路54は、読出レジスタ57に格納されている部分保護フラグLb’の0ビット目の値Lb’(0)および1ビット目の値Lb’(1)ならびに、部分保護フラグMb’の0ビット目の値Mb’(0)および1ビット目の値Mb’(1)を読出し、論理和(OR)演算を行なう。そして、OR回路54は、その論理和演算の結果を優先回路34へ出力する。
すなわち、OR回路53.LMおよび54は、ブロックLまたはブロックMのいずれかに全体プロテクトまたは部分プロテクトが設定されていれば、ブロックLおよびMに対して全体プロテクトまたは部分プロテクトが設定されていると判断する。
以下、優先回路34、OR回路35および38、起動モード判断部(判断部a)14ならびにアクセスモード判断部(判断部b)24については、実施の形態4と同様であるので、詳細な説明は繰返さない。
電源部97については、実施の形態4と同様であるので、詳細な説明は繰返さない。
上述のように、OR回路54は、部分保護フラグLb’またはMb’のいずれかが設定されていれば、ブロックLおよびMに対する部分プロテクトが設定されていると出力する。そのため、制御回路41は、ブロックLまたはMに対して部分プロテクトが設定されている場合には、CPU92からの命令フェッチによるアクセスを除き、ブロックLおよびブロックMに対するアクセスを禁止する。さらに、ブロックLまたはMに対する部分プロテクトを解除するためには、ブロックLおよびMに格納されているデータをすべて消去する必要がある。
よって、ブロックLおよびMに格納されるデータに対して一体的なプロテクトを行なうことができる。
なお、実施の形態5においては、データ領域に含まれる複数ブロックのうち2ブロックに対して部分プロテクトを設定する構成について説明したが、2ブロックに限定されることはなく、ブロックの数は、格納されるライブラリソフトウェアの容量などに応じて適宜設計すればよい。
また、実施の形態5においては、実施の形態4に従う半導体装置に適応した場合について説明したが、部分プロテクト機能を備える実施の形態2に従う半導体装置および実施の形態3に従う半導体装置のいずれに対しても同様に適応できることは言うまでもない。
実施の形態5によれば、実施の形態4における効果に加えて、複数のブロックに対して部分プロテクトを設定でき、かつ、それらのブロックに対する部分プロテクトの設定および解除は、一体的に行なわれる。よって、ライブラリソフトウェアの容量が増加し、複数のブロックにわたって格納される場合であっても、1つのブロックに格納される場合と同様に、処理コードの漏洩を防止することができる。
[実施の形態6]
実施の形態5においては、複数のブロックに対して、一体的に部分プロテクトを設定する場合について説明した。
一方、実施の形態6では、複数の部分プロテクトを互いに独立に設定できる場合について説明する。なお、実施の形態6においては、実施の形態4に示す半導体装置104に適用した例について説明する。
複数のIPベンダによりライブラリソフトウェアが供給される場合などにおいては、複数のブロックに対して、互いに独立に部分プロテクトを設定できる機能が必要となる。
図7は、実施の形態6に従う半導体装置106の概略構成図である。
図7を参照して、半導体装置106は、データバス98と、CPU92と、不揮発性メモリ5と、読出部52と、制御部60と、電源部97とからなる。
データバス98は、CPU92、制御部50、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU92については、実施の形態4と同様であるので、詳細な説明は繰返さない。
不揮発性メモリ5および読出部52は、実施の形態5と同様であるので、詳細な説明は繰返さない。
制御部60は、実施の形態4における制御部40において、OR回路64、優先回路(優先回路L)62およびアクセスモード判断部(判断部b)65を付加し、OR回路38をOR回路68に代えたものである。
OR回路64は、読出レジスタ57に格納されている部分保護フラグLb’の0ビット目の値Lb’(0)および1ビット目の値Lb’(1)を読出し、論理和(OR)演算を行なう。そして、OR回路64は、その論理和演算の結果を優先回路62へ出力する。
優先回路62は、OR回路43.Lから受けた全体保護フラグLa’の値とOR回路64から受けた部分保護フラグLb’の値との論理演算を行ない、部分保護フラグLb’により部分プロテクトが設定されていれば、全体保護フラグLa’による全体プロテクト設定を無視して、全体プロテクトの設定解除を示す値をOR回路35へ出力する。
アクセスモード判断部65は、実施の形態4におけるアクセスモード判断部24と同様に、OR回路64から出力される部分保護フラグLb’の値に基づいて、ブロックLに対する部分プロテクトの設定がされている場合には、データ領域5.1のブロックLに対するアクセスを禁止させるプロテクト制御信号をOR回路68へ出力する。そして、アクセスモード判断部65は、例外的に、CPU92からモード信号を受けている場合で、かつ、CPU92からブロックLに対する命令フェッチによる命令コードの読出しである場合に限り、そのアクセスを禁止させるプロテクト制御信号をマスクする。
OR回路68は、起動モード判断部14、アクセスモード判断部65および24から出力されるプロテクト制御信号を結合し、制御回路41へ出力する。
以下、優先回路34、OR回路35、起動モード判断部14ならびにアクセスモード判断部24については、実施の形態4と同様であるので、詳細な説明は繰返さない。
電源部97については、実施の形態4と同様であるので、詳細な説明は繰返さない。
上述のように、アクセスモード判断部65および24は、それぞれ部分保護フラグLb’およびMb’の値に応じて、ブロックLおよびMに対する部分プロテクトが設定されているか否かを判断する。また、優先回路62および34は、それぞれ部分保護フラグLb’およびMb’の値に応じて、全体保護フラグLa’およびMa’の設定が有効であるか否かを判断する。
よって、ブロックLおよびMに格納されているデータに対して、互いに独立に全体プロテクトまたは部分プロテクトが設定される。
なお、実施の形態6においては、データ領域に含まれる複数ブロックのうち2ブロックに対して互いに独立に部分プロテクトを設定する構成について説明したが、2ブロックに限定されることはなく、ブロックの数は、IPベンダの数などに応じて適宜設計すればよい。
また、実施の形態6においては、実施の形態4に従う半導体装置に適応した場合について説明したが、部分プロテクト機能を備える実施の形態2に従う半導体装置および実施の形態3に従う半導体装置のいずれに対しても同様に適応できることは言うまでもない。
実施の形態6によれば、実施の形態4における効果に加えて、複数のブロックに対してそれぞれ独立に部分プロテクトを設定できる。そのため、複数のIPベンダなどがライブラリソフトウェアを提供する場合などには、それぞれ独立して部分プロテクトを設定でき、かつ、その部分プロテクトを設定したデータは、他のIPベンダを含めたいずれの者に対しても有効である。よって、同一の半導体装置に対して、複数のIPベンダがライブラリソフトウェアを提供する場合においても、その処理コードの漏洩を防止することができる。
[実施の形態7]
実施の形態1においては、不揮発性メモリを構成するすべてのブロックに対して、全体プロテクトを設定する場合について説明した。
一方、実施の形態7では、不揮発性メモリを構成するブロックのうち限られたブロックに対してのみ全体プロテクトを設定できる場合について説明する。なお、実施の形態7においては、実施の形態1に示す半導体装置101に適用した例について説明する。
不揮発性メモリのデータ領域に対して、格納されるプログラムが小さい場合などには、プログラムに加えてユーザデータなどを格納することも考えられる。その際、不揮発性メモリを構成するすべてのブロックを全体プロテクトの対象とすると、エンドユーザは、ユーザデータに対してアクセスできない。そこで、不揮発性メモリを構成するブロックのうち、プログラムが格納されるブロックに対してのみ、全体プロテクトを設定できる構成とする。
図8は、実施の形態7に従う半導体装置107の概略構成図である。
図8を参照して、半導体装置107は、データバス98と、CPU90と、不揮発性メモリ7と、読出部72と、制御部10と、電源部97とからなる。
データバス98は、CPU90、制御部10、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU90については、実施の形態1と同様であるので、詳細な説明は繰返さない。
不揮発性メモリ7は、複数のブロックに分割されたデータ領域7.1とプロテクト情報領域7.2とを含む。
データ領域7.1は、ブロック1,2,・・・,L,M,・・・,Nに分割されており、それぞれデータ1,2,・・・,L,M,・・・,Nが格納される。
プロテクト情報領域7.2は、データ領域7.1に含まれるブロックのうち所定のブロックに対応するように配置されており、その所定のブロックに対する全体プロテクト設定が格納される。実施の形態7におけるプロテクト情報領域7.2には、データ領域7.1に含まれるブロックLおよびMに対する全体保護フラグLaおよびMaが格納される。
読出部72は、不揮発性メモリ7のプロテクト情報領域7.2に格納されている全体保護フラグLaおよびMaを読出し、制御部10へ出力する。そして、読出部72は、読出回路76と、読出レジスタ78とからなる。
読出回路76は、外部からのリセット信号や電源部97からの投入信号を受けて、プロテクト情報領域7.2に格納されている全体保護フラグLaおよびMaを読出し、読出レジスタ78へ出力する。
読出レジスタ78は、全体保護フラグLaおよびMaを一旦格納し、その値を制御部10へ出力する。
制御部10および電源部97については、実施の形態1と同様であるので、詳細な説明は繰返さない。
上述のように、制御部10は、全体プロテクトフラグLaおよびMaの値に応じて、ブロックLおよびMに対して全体プロテクトが設定されているか否かを判断する。また、制御部10は、ブロックLおよびMのいずれに対しても全体プロテクトが設定されていなければ、ブロックLおよびMに対するアクセスを許可する。
すなわち、不揮発性メモリ7に含まれるブロックLおよびM以外のブロックに対しては、全体プロテクトの設定を行なうことができない。そのため、ブロックLおよびMにプロテクト対象のプログラムなどを格納し、その他のブロックに対しては、エンドユーザへ開放するような使用形態が可能となる。
なお、実施の形態7においては、データ領域に含まれる複数ブロックのうち2ブロックに対して全体プロテクトを設定する構成について説明したが、2ブロックに限定されることはなく、全体プロテクトを設定可能なブロックの数は、プログラムの容量などに応じて適宜設計すればよい。
また、実施の形態7においては、実施の形態1に従う半導体装置に適応した場合について説明したが、全体プロテクト機能を備える実施の形態3〜6に従う半導体装置のいずれに対しても同様に適応できることは言うまでもない。
実施の形態7によれば、実施の形態1における効果に加えて、不揮発性メモリを構成するブロックのうち、一部のブロックに対してのみ全体プロテクトの対象とする。そのため、全体プロテクトの対象となるプログラムの容量が、不揮発性メモリの容量より十分小さい場合などにおいて、プログラムが格納されるブロック以外のブロックをエンドユーザに開放し、不揮発性メモリをより有効に使用することができる。よって、不揮発性メモリを複数の用途に用いることができるので、半導体装置に内蔵される不揮発性メモリの容量などを合理的に決定できる。
[実施の形態8]
実施の形態1〜7においては、不揮発性メモリ内にデータ領域とプロテクト情報領域とを配置する場合について説明した。
一方、実施の形態8では、不揮発性メモリ内にデータ領域のみを配置し、そのデータ領域にデータとプロテクト情報フラグとを格納する構成について説明する。なお、実施の形態8においては、実施の形態3に示す半導体装置103に適用した例について説明する。
図9は、実施の形態8に従う半導体装置108の概略構成図である。
図9を参照して、半導体装置108は、データバス98と、CPU92と、不揮発性メモリ8と、読出部82と、制御部80と、電源部97とからなる。
データバス98は、CPU92、制御部80、外部メモリ(図示しない)および外部装置(図示しない)などを互いに接続し、データの授受を仲介する。
CPU92については、実施の形態3と同様であるので、詳細な説明は繰返さない。
不揮発性メモリ8は、複数のブロックに分割されたデータ領域からなる。そして、不揮発性メモリ8は、ブロック1,2,・・・,M,・・・,Nに分割されており、それぞれデータ1,2,・・・,M,・・・,Nおよび各ブロックに対する全体保護フラグ1a,2a,・・・,Ma,・・・,Naが格納される。さらに、ブロックMには、ブロックMに対する部分保護フラグMbが格納される。
読出部82は、不揮発性メモリ8に格納されているデータの中から、全体保護フラグ1a,2a,・・・,Ma,・・・,Naおよび部分保護フラグMbを抽出し、制御部80へ出力する。そして、読出部82は、読出回路86と、読出レジスタ18および37とからなる。
読出回路86は、外部からのリセット信号や電源部97からの投入信号を受けて、不揮発性メモリ8のそれぞれのブロックに格納されているデータを読出し、その読出したデータに含まれる全体保護フラグ1a,2a,・・・,Ma,・・・,Naおよび部分保護フラグMbを抽出し、読出レジスタ18および37へ出力する。
読出レジスタ18および37は、実施の形態3と同様であるので、詳細な説明は繰返さない。
制御部80は、実施の形態3における制御部30において、制御回路31を制御回路81に代えたものである。
制御回路81は、データバスを介して、いずれかのブロックに対するプロテクトの設定解除の要求を受けると、当該ブロックに格納されているデータを消去するとともに、全体保護フラグまたは部分保護フラグの値を変更し、プロテクトの設定を解除する。また、制御回路81は、データバスを介して、いずれかのブロックに対するプロテクトの設定要求を受けると、当該ブロックに格納されている全体保護フラグまたは部分保護フラグの値を変更し、プロテクトを設定する。制御回路81の他の処理については、実施の形態3における制御回路31と同様であるので、詳細な説明は繰返さない。
以下、優先回路34、OR回路35および38、起動モード判断部14ならびにアクセスモード判断部24については、実施の形態3と同様であるので、詳細な説明は繰返さない。
電源部97については、実施の形態3と同様であるので、詳細な説明は繰返さない。
上述のように、不揮発性メモリ8のそれぞれのブロックには、通常のデータに加えて、各ブロックのプロテクトを設定するための全体保護フラグおよび部分保護フラグが格納される。そのため、全体プロテクトおよび部分プロテクトを設定する対象のブロックを比較的自由に設定することができる。
なお、実施の形態8においては、全体保護フラグおよび部分保護フラグの両方をデータと共に格納する場合について説明したが、全体保護フラグまたは部分保護フラグのいずれか一方をデータと共に格納し、他方のフラグは、実施の形態1〜7と同様にプロテクト情報領域に格納する構成としてもよい。
また、実施の形態8においては、実施の形態3に従う半導体装置に適応した場合について説明したが、実施の形態1、2および4〜7に従う半導体装置のいずれに対しても同様に適応できることは言うまでもない。
実施の形態8によれば、実施の形態3における効果に加えて、全体プロテクトおよび部分プロテクトを格納するためのプロテクト情報領域を必要としないので、プロテクトの対象となるブロックに応じて、プロテクト情報領域を配置する必要がない。そのため、全体プロテクトおよび部分プロテクトの対象となるブロックを自由に選択することができ、かつ、変更も容易である。よって、不揮発性メモリに格納されるプログラムやサブルーチンプログラムに応じて、プロテクトの対象となるブロック数を自由に変更できる半導体装置を実現できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。