JP4865064B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP4865064B2
JP4865064B2 JP2010151059A JP2010151059A JP4865064B2 JP 4865064 B2 JP4865064 B2 JP 4865064B2 JP 2010151059 A JP2010151059 A JP 2010151059A JP 2010151059 A JP2010151059 A JP 2010151059A JP 4865064 B2 JP4865064 B2 JP 4865064B2
Authority
JP
Japan
Prior art keywords
protection
block
access
data
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010151059A
Other languages
English (en)
Other versions
JP2010225182A (ja
Inventor
飛斗矢 黒澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2010151059A priority Critical patent/JP4865064B2/ja
Publication of JP2010225182A publication Critical patent/JP2010225182A/ja
Application granted granted Critical
Publication of JP4865064B2 publication Critical patent/JP4865064B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

Description

この発明は、不揮発性記憶部を備える半導体装置に関し、特にデータ機密保護機能を有する半導体装置に関するものである。
従来から、さまざまな用途に用いられるマイクロコンピュータ(以下、マイコンと称す)では、フラッシュメモリやEEPROM(Electrical Erasable and Programmable Read Only Memory)などの不揮発性記憶部(以下、不揮発性メモリと称す)を備えたものが一般的となっている。不揮発性メモリは、一旦データが書込まれると電源が遮断されてもそのデータを保持し、かつ、データの書換えも自由に行なうことができる。そのため、プログラムを不揮発性メモリに格納して製品に組込んだマイコンに対して、プログラムの修正や新たな機能の追加といったいわゆるアップデートを容易に行なうことができるという利点がある。
一方、上述のような不揮発性メモリを備えたマイコンでは、当該マイコンが組込まれた製品の使用者(以下、エンドユーザと称す)などにより、その格納しているプログラムが書換えられると、動作不具合や人的被害などの発生が懸念される。また、競業者などにより、プログラムの内容を不正に読出されることも懸念される。そこで、エンドユーザによるデータの読出しや書換え(以下、アクセスと称す)を防止するため、マイコンには、機密保護(以下、プロテクトと称す)機能を付加することが一般的となっている。
このようなプロテクト機能は、たとえば、不揮発性メモリ内において、データが格納されるデータ領域に加え、そのデータ領域に対するプロテクトを設定するためのプロテクト情報領域を配置し、そのプロテクト情報領域に格納されるプロテクト設定に応じて、ハードウェア回路によりアクセスを禁止する構成で実現される。
特許文献1には、メモリアレイのブロックグループ単位で、ライトプロテクトの状態を柔軟に設定できる半導体記憶装置が開示されている。
一方、プロテクトが設定されたプログラムのアップデートを行なうためには、プロテクト設定を解除した上で、プログラムの書換えを行なう必要がある。したがって、プロテクト機能を付加する場合には、付随的にプロテクトの解除機能を備えておく必要がある。
プロテクトの解除機能は、たとえば、マイコンと接続される外部装置から特定の信号を与えてプロテクトを解除する構成や、入力されたID(パスワード)が特定のIDと一致した場合にのみプロテクトが解除される構成で実現される場合もある。しかしながら、このような構成においては、構成の存在自体がセキュリティーホールとなる。すなわち、悪意の第三者が当該マイコンを詳細に調査するなどして、特定の信号や特定のIDを知ると、プロテクト機能は無効化されてしまう。
そこで、プロテクトが解除される前に、そのプロテクトされているデータを消去する構成が提案されている。
特許文献2には、プロテクト設定の解除が指示されると、プロテクトの設定を無視して、格納されているすべてのデータを消去する不揮発性半導体記憶装置が開示されている。また、特許文献3には、不揮発性メモリのデータを消去した後にのみ、不揮発性メモリに対するアクセスを許可するマイクロコンピュータ装置が開示されている。
さらに、一般的に不揮発性メモリは、複数のブロックに分割されており、データの読出しおよび書込みはブロック単位で行なわれる。そのため、特許文献3には、ブロック単位でプロテクトの設定を行なう構成が開示されている。
ところで、近年のマイコンの高性能化に伴い、マイコンを動作させるためのプログラムも複雑化・大規模化している。そのため、プログラム製作者は、一からプログラムを製作するより、予め機能別に用意されたライブラリソフトウェアをプログラム中で読出す(サブルーチンコールする)ことでプログラム製作の効率化を図っている。このようなライブラリソフトウェアの提供者は、マイコンの製造者以外であることも多く、IP(Intellectual Property)ベンダと呼ばれる。
特開平11−120781号公報 特開2001−014871号公報 特開2003−203012号公報
しかしながら、特許文献2に開示される構成では、プロテクトを解除しようとすると、その都度すべてのメモリが消去されるので、データ領域の容量に比較して格納されているプログラムの容量が小さい場合などには、その消去に要する時間が相対的に大きくなり、マイコンの処理速度の低下をもたらすという問題点があった。一方、特許文献3に開示されている構成では、ブロック単位でプロテクト設定が行なわれるので、プロテクト対象となるプログラムなどが複数のブロックに格納される場合などには、その格納される複数のブロックのすべてに対してプロテクト設定を行なう必要があるが、その処理は複雑となるため、プロテクト設定のミスによりデータの漏洩が生じるという問題点があった。
また、IPベンダにとって、ライブラリソフトウェアをプログラム中で読出して実行されることは通常の使用であり問題はないが、ライブラリソフトウェア自体(命令コード)の内容が読出されてしまうと、第三者に不当にコピーされ、開発費が回収できない事態やノウハウの流出が生じるという問題があった。そのため、プログラム製作者およびエンドユーザに対して、ライブラリソフトウェア自体の内容が読出されないように、プロテクトを設定する必要が生じている。
しかしながら、従来のプロテクト機能においては、プログラム中の読出し(サブルーチンコール)であるか否かにかかわらず、プロテクトされているデータは、一律にアクセスが禁止されるため、プロテクトを設定してしまうと、ライブラリソフトウェアを利用することができずジレンマに陥るという問題点があった。
そこで、この発明は、かかる問題を解決するためになされたものであり、この発明の目的は、格納される命令コード自体の機密保護を実現すると同時に、命令コードに基づく処理を実行できる半導体装置を提供することである。
本発明の一実施例に従う半導体装置は、複数のブロックに分割されたデータ領域と、ブロック毎にアクセスを禁止するための保護情報が格納される保護情報領域とを含む不揮発性記憶部と、保護情報領域に格納された保護情報を読出す読出部と、いずれかのブロックに対するアクセスの禁止を解除する前に、当該ブロックに格納されているデータを消去する制御部と、データ領域に格納された命令コードを読出して処理を実行する演算部とを備える。そして、制御部は、読出部から受けた保護情報に基づいて、保護情報によりアクセスを禁止され得るブロックへのアクセスを許可するか否かを決定し、かつ、演算部から命令コードの読出しを行なうためのアクセス要求を受けると、保護情報にかかわらず当該アクセスを許可する。
本発明の一実施例によれば、また、第2の発明によれば、アクセスの禁止が設定されているブロックに対しては、アクセスが許可されず、かつ、アクセスの禁止を解除する場合には、必ず当該ブロックに格納されているデータは消去される。例外的に、演算部がデータ領域に格納されている処理コードを読出して処理を実行する場合に限り、アクセス先のブロックにおける保護情報にかかわらずアクセスが許可される。よって、命令コード自体の機密保護が確保されると同時に、演算部は命令コードに基づく処理の実行を実現できる。
実施の形態1に従う半導体装置の概略構成図である。 半導体装置の動作モードを説明するための図である。 実施の形態2に従う半導体装置の概略構成図である。 実施の形態3に従う半導体装置の概略構成図である。 実施の形態4に従う半導体装置の概略構成図である。 実施の形態5に従う半導体装置の概略構成図である。 実施の形態6に従う半導体装置の概略構成図である。 実施の形態7に従う半導体装置の概略構成図である。 実施の形態8に従う半導体装置の概略構成図である。
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[実施の形態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における効果に加えて、全体プロテクトおよび部分プロテクトを格納するためのプロテクト情報領域を必要としないので、プロテクトの対象となるブロックに応じて、プロテクト情報領域を配置する必要がない。そのため、全体プロテクトおよび部分プロテクトの対象となるブロックを自由に選択することができ、かつ、変更も容易である。よって、不揮発性メモリに格納されるプログラムやサブルーチンプログラムに応じて、プロテクトの対象となるブロック数を自由に変更できる半導体装置を実現できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1,2,3,4,5,7,8 不揮発性メモリ、1.1,2.1,3.1,4.1,5.1,7.1 データ領域、1.2,2.2,3.2,3.3,4.2,4.3,5.2,5.3,7.2 プロテクト情報領域、1a,2a,・・・,La,Ma,・・・,Na,1a’,2a’,・・・,La’,Ma’,・・・,Na’ 全体保護フラグ、Mb,Lb’,Mb’ 部分保護フラグ、10,20,30,40,50,60,80 制御部、11,21,31,41,81 制御回路、12,22,32,42,52,72,82 読出部、14 起動モード判断部(判断部a)、15,35,38,43.1,43.2,・・・,43.M,・・・,43.N,46,53.LM,44,53.LM,54,64,68 OR回路、16,26,36,54,56,76,86 読出回路、18,28,47,48,57,58,78 読出レジスタ、24,65 アクセスモード判断部(判断部b)、34 優先回路(優先回路M)、62 優先回路(優先回路L)、90,92 演算部(CPU)、95 プログラムカウンタ(PC)、97 電源部、98 データバス、101,102,103,104,105,106,107,108 半導体装置、200 外部メモリ、202 外部装置。

Claims (5)

  1. 複数のブロックに分割されたデータ領域と、ブロック毎にアクセスを禁止するための保
    護情報が格納される保護情報領域とを含む不揮発性記憶部と、
    前記保護情報領域に格納された前記保護情報を読出す読出部と、
    いずれかのブロックに対するアクセスの禁止を解除する前に、当該ブロックに格納されているデータを消去する制御部と、
    前記データ領域に格納された命令コードを読出して処理を実行する演算部とを備え、
    前記制御部は、
    前記読出部から受けた前記保護情報に基づいて、前記保護情報によりアクセスを禁止され得るブロックへのアクセスを許可するか否かを決定し、かつ、
    前記演算部から前記命令コードの読出しを行なうためのアクセス要求を受けると、前記保護情報にかかわらず当該アクセスを許可する、半導体装置。
  2. 前記保護情報は、ブロック毎にそれぞれ複数のフラグを含み、
    前記複数のフラグに含まれる各々のフラグは、対応のブロックに対するアクセスを禁止するため互いに同値に設定され、
    前記制御部は、いずれかのブロックに対する前記保護情報を前記読出部から受け、前記保護情報に含まれる前記複数のフラグのうちいずれか1つでもアクセスを禁止する値に設定されていれば、前記保護情報により当該ブロックに対するアクセスが禁止されていると判断する、請求項1に記載の半導体装置。
  3. 前記制御部は、さらに、前記読出部から前記保護情報を受け、前記保護情報によりアクセスを禁止され得るいずれかのブロックにおいてアクセスが禁止されていれば、前記保護情報によりアクセスを禁止され得るすべてのブロックに対するアクセスが禁止されていると判断する、請求項1または2に記載の半導体装置。
  4. 前記保護情報は、少なくとも2以上のブロックに対するアクセスを禁止し、
    前記制御部は、前記保護情報がアクセスを禁止し得るブロックのそれぞれに対して、互いに独立にアクセスを許可するか否かを決定する、請求項1または2に記載の半導体装置。
  5. 前記データ領域は、前記保護情報領域を含む、請求項1〜4のいずれか1項に記載の半導体装置。
JP2010151059A 2010-07-01 2010-07-01 半導体装置 Active JP4865064B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010151059A JP4865064B2 (ja) 2010-07-01 2010-07-01 半導体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010151059A JP4865064B2 (ja) 2010-07-01 2010-07-01 半導体装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005178829A Division JP4584044B2 (ja) 2005-06-20 2005-06-20 半導体装置

Publications (2)

Publication Number Publication Date
JP2010225182A JP2010225182A (ja) 2010-10-07
JP4865064B2 true JP4865064B2 (ja) 2012-02-01

Family

ID=43042238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010151059A Active JP4865064B2 (ja) 2010-07-01 2010-07-01 半導体装置

Country Status (1)

Country Link
JP (1) JP4865064B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5733789B2 (ja) 2010-12-13 2015-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ保護処理プログラム
JP5716051B2 (ja) * 2013-04-15 2015-05-13 株式会社メガチップス 半導体記憶装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3489708B2 (ja) * 1996-10-23 2004-01-26 シャープ株式会社 不揮発性半導体記憶装置
JP4000654B2 (ja) * 1997-02-27 2007-10-31 セイコーエプソン株式会社 半導体装置及び電子機器
JP2001014871A (ja) * 1999-06-29 2001-01-19 Toshiba Corp 不揮発性半導体記憶装置
JP2002007372A (ja) * 2000-06-21 2002-01-11 Seiko Epson Corp 半導体装置
JP3891863B2 (ja) * 2002-03-07 2007-03-14 松下電器産業株式会社 半導体装置及び半導体装置の駆動方法
JP4094977B2 (ja) * 2003-03-20 2008-06-04 沖電気工業株式会社 半導体装置
JP2005108273A (ja) * 2003-09-26 2005-04-21 Toshiba Corp 不揮発性半導体記憶装置

Also Published As

Publication number Publication date
JP2010225182A (ja) 2010-10-07

Similar Documents

Publication Publication Date Title
JP4584044B2 (ja) 半導体装置
JP6306578B2 (ja) メモリ保護装置及び保護方法
US6651150B2 (en) Data-processing apparatus and method of controlling the rewriting of a nonvolatile storage device
JP4939387B2 (ja) データ処理装置及びアドレス空間保護方法
TWI688861B (zh) 資料處理裝置及其資料保護方法
TW201821998A (zh) 記憶體保護邏輯
JP2007287103A (ja) マイクロコンピュータ及びメモリアクセスの制御方法
TWI625672B (zh) 可更新積體電路無線電
US6564317B1 (en) Method and apparatus for securing computer firmware wherein unlocking of nonvolatile memory is prohibited unless address line masking Is disabled during an initialization event
JP4865064B2 (ja) 半導体装置
JP2010009454A (ja) 情報処理装置
US20060080519A1 (en) Program-controlled unit
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法
US11741035B2 (en) Circuit device and electronic apparatus
JP3918089B2 (ja) メモリ保護回路
JP2008203988A (ja) セキュリティ保護機能付きマイクロコンピュータ
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111020

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111101

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111109

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4865064

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350