(57)【特許請求の範囲】
【請求項１】
プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示すブロック消去フラグを含む管理情報を格納する第２領域とがそれぞれに配設されたメモリブロックをＮ個（Ｎ≧２の正整数）有するフラッシュメモリと、
Ｎ個のメモリブロックのうち第１のメモリブロックの消去禁止フラグが許可状態で且つ第２のメモリブロックから第Ｎのメモリブロックまでのすべてのブロック消去フラグがそれぞれのメモリブロックの第１領域が消去済みであることを示す状態であるときに第１のメモリブロックの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のメモリブロックの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのメモリブロックの第１領域はユーザプログラムが格納される領域であることを特徴とするフラッシュメモリ搭載型シングルチップマイクロコンピュータ。
【請求項２】
プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示すエリア消去フラグを含む管理情報を格納する第２領域とがそれぞれに配設されたＮ個（Ｎ≧２の正整数）のフラッシュメモリと、
Ｎ個のフラッシュメモリのうち第１のフラッシュメモリの消去禁止フラグが許可状態で且つ第２のフラッシュメモリから第Ｎのフラッシュメモリまでのすべてのエリア消去フラグがそれぞれのフラッシュメモリの第１領域が消去済みであることを示す状態であるときに第１のフラッシュメモリの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のフラッシュメモリの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのフラッシュメモリの第１領域はユーザプログラムが格納される領域であることを特徴とするフラッシュメモリ搭載型シングルチップマイクロコンピュータ。
【請求項３】
プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示す複数のブロック消去フラグを含む管理情報を格納する第２領域と、前記複数のブロック消去フラグの状態から前記第１領域を消去済みとみなすかを判定するブロック消去フラグ判定回路とがそれぞれに配設されたメモリブロックをＮ個（Ｎ≧２の正整数）有するフラッシュメモリと、
Ｎ個のメモリブロックのうち第１のメモリブロックの消去禁止フラグが許可状態で且つ第２のメモリブロックから第Ｎのメモリブロックまでのすべてのブロック消去フラグ判定回路の出力がそれぞれのメモリブロックの第１領域を消去済みとみなす信号レベルであるときに第１のメモリブロックの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のメモリブロックの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのメモリブロックの第１領域はユーザプログラムが格納される領域であることを特徴とするフラッシュメモリ搭載型シングルチップマイクロコンピュータ。
【請求項４】
プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示す複数のエリア消去フラグを含む管理情報を格納する第２領域と、前記複数のエリア消去フラグの状態から前記第１領域を消去済みとみなすかを判定するエリア消去フラグ判定回路とがそれぞれに配設されたＮ個（Ｎ≧２の正整数）のフラッシュメモリと、
Ｎ個のフラッシュメモリのうち第１のフラッシュメモリの消去禁止フラグが許可状態で且つ第２のフラッシュメモリから第Ｎのフラッシュメモリまでのすべてのエリア消去フラグ判定回路の出力がそれぞれのフラッシュメモリの第１領域を消去済みとみなす信号レベルであるときに第１のフラッシュメモリの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のフラッシュメモリの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのフラッシュメモリの第１領域はユーザプログラムが格納される領域であることを特徴とするフラッシュメモリ搭載型シングルチップマイクロコンピュータ。
【請求項５】
プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグと前記第１領域が消去済みであるかを示すブロック消去フラグと前記第１領域を消去済みの状態とみなすかを予め指定するブロック消去代替フラグとを含む管理情報を格納する第２領域と、前記ブロック消去フラグが消去済みを示すか前記ブロック消去代替フラグが消去済みの状態とみなすように指定されているかの少なくとも一方をみたすときに前記第１領域を消去済みとみなす信号を出力するブロック消去フラグ生成回路とがそれぞれに配設されたメモリブロックをＮ個（Ｎ≧２の正整数）有するフラッシュメモリと、
Ｎ個のメモリブロックのうち第１のメモリブロックの消去禁止フラグが許可状態で且つ第２のメモリブロックから第Ｎのメモリブロックまでのすべてのブロック消去フラグ生成回路からの出力がそれぞれのメモリブロックの第１領域を消去済みとみなす信号レベルであるときに第１のメモリブロックの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のメモリブロックの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのメモリブロックの第１領域はユーザプログラムが格納される領域であることを特徴とするフラッシュメモリ搭載型シングルチップマイクロコンピュータ。
【請求項６】
プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグと前記第１領域が消去済みであるかを示すエリア消去フラグと前記第１領域を消去済みの状態とみなすかを予め指定するエリア消去代替フラグとを含む管理情報を格納する第２領域と、前記エリア消去フラグが消去済みを示すか前記エリア消去代替フラグが消去済みの状態とみなすように指定されているかの少なくとも一方をみたすときに前記第１領域を消去済みとみなす信号を出力するエリア消去フラグ生成回路とがそれぞれに配設されたＮ個（Ｎ≧２の正整数）のフラッシュメモリと、
Ｎ個のフラッシュメモリのうち第１のフラッシュメモリの消去禁止フラグが許可状態で且つ第２のフラッシュメモリから第Ｎのフラッシュメモリまでのすべてのエリア消去フラグ生成回路からの出力がそれぞれのエリアの第１領域を消去済みとみなす信号レベルであるときに第１のフラッシュメモリの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のフラッシュメモリの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのフラッシュメモリの第１領域はユーザプログラムが格納される領域であることを特徴とするフラッシュメモリ搭載型シングルチップマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリ搭載型シングルチップマイクロコンピュータに関し、特に、フラッシュメモリに書き込まれたプログラムコードのセキュリティを向上させたフラッシュメモリ搭載型シングルチップマイクロコンピュータに関する。
【０００２】
【従来の技術】
不揮発性ＥＥＰＲＯＭのフラッシュメモリが搭載されたシングルチップマイクロコンピュータ（以下、シングルチップマイコンと呼ぶ）は、電化製品等の様々なセットに使用されているが、フラッシュメモリにプログラムコードを書き込み、セットに組み込んで出荷したのちにも、セットの定期的な修正／調整のためにプログラムコードを変更したいというユーザの要求がある。しかしながら、セット出荷後もフラッシュメモリのプログラムコードを変更できるようにすると、フラッシュメモリに書き込まれたプログラムコードを第三者に読み取られる可能性が生じ、セキュリティの低下が問題となる。セットの出荷後もフラッシュメモリのプログラムコードが変更可能で、且つ、第三者がプログラムコードを読み出すことができない、高いセキュリティのシングルチップマイコンが要求されている。
【０００３】
特開２０００−１８１８９８号公報には、セキュリティ対策が考慮されたフラッシュメモリ搭載型シングルチップマイコンが開示されている。図７は、この従来例のブロック図である。シングルチップマイコン８１は、フラッシュメモリ８２と、ＲＯＭ８３と、ＣＰＵ８４と、通信ポート８５と、プログラミング制御回路８６とで構成されていて、バス８７を介して信号を送受信する。
【０００４】
フラッシュメモリ８２は、ユーザプログラム記憶用のＡ領域と、Ａ領域の管理情報である消去禁止フラグ、書込禁止フラグおよび読出禁止フラグ記憶用のＢ領域に分割されて管理され、各領域には、書き込み、読み出し、および一括消去が可能である。ＲＯＭ８３には、通信ポート８５を介しての外部との情報のやりとりの手順を記述した通信アルゴリズムと、フラッシュメモリ８２への書き込み、読み出しおよび消去の手順を記述したプログラミングアルゴリズムが固定的に記録されている。ＣＰＵ８４は、シングルチップマイコン８１の全体を管理し、フラッシュメモリ８２，ＲＯＭ８３等のプログラムに基づいた処理を実行する。通信ポート８５は、外部の書き込み装置と接続し、書き込みコード情報や書き込みコマンド等の情報をやりとりする。プログラミング制御回路８６は、ＣＰＵ８４の制御に基づいてフラッシュメモリ８２への書き込み、読み出しおよび消去の処理を実行する。
【０００５】
ＣＰＵ８４は、外部からのプログラミング要求があると、Ｂ領域の管理情報を参照し、消去禁止フラグが許可を示す論理値１に設定されている場合にＡ領域の消去動作を実行し、禁止を示す論理値０である場合には消去動作を拒否する。同様に、書込禁止フラグが許可を示す論理値１に設定されている場合にＡ領域の書き込み動作を実行し、禁止を示す論理値０である場合には書き込み動作を拒否する。
【０００６】
【発明が解決しようとする課題】
図７の従来例では、出荷後にフラッシュメモリ８２内のプログラムコードを修正する場合には、予め消去禁止フラグおよび書込禁止フラグを許可状態にしておかなければならない。しかしながら、シングルチップマイコン８１の起動時の初期状態を設定するプログラムが格納されるブート領域が消去および書き込みの許可状態であれば、第三者がブート領域を消去して別のコードを書き込むことが可能となる。フラッシュメモリ内のコードをシングルチップマイコン８１の外部へ出力するように変更されたプログラムコードを書き込むことにより、再起動後にフラッシュメモリ８２内のプログラムコードを外部に出力させることができる。
【０００７】
これを防ぐためには、ブート領域を内含するブロックの消去禁止フラグおよび書き込み禁止フラグを禁止状態にしておかなければならないが、誤ってブート領域を許可状態に設定したままセット出荷する可能性も皆無ではない上に、禁止状態に設定した場合には、ユーザがブート領域に格納されたプログラムの変更を行いたい場合にも変更ができなくなってしまうという問題点があった。
本発明の目的は、上記問題点を解決して、フラッシュメモリ内のプログラムコードのセキュリティを一層向上させ、且つブート領域を内含するブロックのプログラムコードの変更が可能なシングルチップマイコンを提供することにある。
【０００８】
【課題を解決するための手段】
本発明の第１の発明のフラッシュメモリ搭載型シングルチップマイクロコンピュータは、プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示すブロック消去フラグを含む管理情報を格納する第２領域とがそれぞれに配設されたメモリブロックをＮ個（Ｎ≧２の正整数）有するフラッシュメモリと、Ｎ個のメモリブロックのうち第１のメモリブロックの消去禁止フラグが許可状態で且つ第２のメモリブロックから第Ｎのメモリブロックまでのすべてのブロック消去フラグがそれぞれのメモリブロックの第１領域が消去済みであることを示す状態であるときに第１のメモリブロックの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のメモリブロックの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのメモリブロックの第１領域はユーザプログラムが格納される領域である。
【０００９】
第２の発明のフラッシュメモリ搭載型シングルチップマイクロコンピュータは、プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示すエリア消去フラグを含む管理情報を格納する第２領域とがそれぞれに配設されたＮ個（Ｎ≧２の正整数）のフラッシュメモリと、Ｎ個のフラッシュメモリのうち第１のフラッシュメモリの消去禁止フラグが許可状態で且つ第２のフラッシュメモリから第Ｎのフラッシュメモリまでのすべてのエリア消去フラグがそれぞれのフラッシュメモリの第１領域が消去済みであることを示す状態であるときに第１のフラッシュメモリの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のフラッシュメモリの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのフラッシュメモリの第１領域はユーザプログラムが格納される領域である。
【００１０】
第３の発明のフラッシュメモリ搭載型シングルチップマイクロコンピュータは、プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示す複数のブロック消去フラグを含む管理情報を格納する第２領域と、前記複数のブロック消去フラグの状態から前記第１領域を消去済みとみなすかを判定するブロック消去フラグ判定回路とがそれぞれに配設されたメモリブロックをＮ個（Ｎ≧２の正整数）有するフラッシュメモリと、Ｎ個のメモリブロックのうち第１のメモリブロックの消去禁止フラグが許可状態で且つ第２のメモリブロックから第Ｎのメモリブロックまでのすべてのブロック消去フラグ判定回路の出力がそれぞれのメモリブロックの第１領域を消去済みとみなす信号レベルであるときに第１のメモリブロックの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のメモリブロックの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのメモリブロックの第１領域はユーザプログラムが格納される領域である。
【００１１】
第４の発明のフラッシュメモリ搭載型シングルチップマイクロコンピュータは、プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグおよび前記第１領域が消去済みであるかを示す複数のエリア消去フラグを含む管理情報を格納する第２領域と、前記複数のエリア消去フラグの状態から前記第１領域を消去済みとみなすかを判定するエリア消去フラグ判定回路とがそれぞれに配設されたＮ個（Ｎ≧２の正整数）のフラッシュメモリと、Ｎ個のフラッシュメモリのうち第１のフラッシュメモリの消去禁止フラグが許可状態で且つ第２のフラッシュメモリから第Ｎのフラッシュメモリまでのすべてのエリア消去フラグ判定回路の出力がそれぞれのフラッシュメモリの第１領域を消去済みとみなす信号レベルであるときに第１のフラッシュメモリの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のフラッシュメモリの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのフラッシュメモリの第１領域はユーザプログラムが格納される領域である。
【００１２】
第５の発明のフラッシュメモリ搭載型シングルチップマイクロコンピュータは、プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグと前記第１領域が消去済みであるかを示すブロック消去フラグと前記第１領域を消去済みの状態とみなすかを予め指定するブロック消去代替フラグとを含む管理情報を格納する第２領域と、前記ブロック消去フラグが消去済みを示すか前記ブロック消去代替フラグが消去済みの状態とみなすように指定されているかの少なくとも一方をみたすときに前記第１領域を消去済みとみなす信号を出力するブロック消去フラグ生成回路とがそれぞれに配設されたメモリブロックをＮ個（Ｎ≧２の正整数）有するフラッシュメモリと、Ｎ個のメモリブロックのうち第１のメモリブロックの消去禁止フラグが許可状態で且つ第２のメモリブロックから第Ｎのメモリブロックまでのすべてのブロック消去フラグ生成回路からの出力がそれぞれのメモリブロックの第１領域を消去済みとみなす信号レベルであるときに第１のメモリブロックの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のメモリブロックの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのメモリブロックの第１領域はユーザプログラムが格納される領域である。
【００１３】
第６の発明のフラッシュメモリ搭載型シングルチップマイクロコンピュータは、プログラムを格納する第１領域と、該第１領域に格納された情報の消去の禁止または許可を指定する消去禁止フラグと前記第１領域が消去済みであるかを示すエリア消去フラグと前記第１領域を消去済みの状態とみなすかを予め指定するエリア消去代替フラグとを含む管理情報を格納する第２領域と、前記エリア消去フラグが消去済みを示すか前記エリア消去代替フラグが消去済みの状態とみなすように指定されているかの少なくとも一方をみたすときに前記第１領域を消去済みとみなす信号を出力するエリア消去フラグ生成回路とがそれぞれに配設されたＮ個（Ｎ≧２の正整数）のフラッシュメモリと、Ｎ個のフラッシュメモリのうち第１のフラッシュメモリの消去禁止フラグが許可状態で且つ第２のフラッシュメモリから第Ｎのフラッシュメモリまでのすべてのエリア消去フラグ生成回路からの出力がそれぞれのエリアの第１領域を消去済みとみなす信号レベルであるときに第１のフラッシュメモリの第１領域の消去を許可する信号をＣＰＵへ出力するプログラミング制御回路とを備え、前記第１のフラッシュメモリの第１領域は起動用プログラムが格納されるブート領域であり、前記第２乃至Ｎのフラッシュメモリの第１領域はユーザプログラムが格納される領域である。
【００１４】
【発明の実施の形態】
次に、本発明を図面を参照して詳細に説明する。図１は、本発明の第１の実施の形態のブロック図である。
【００１５】
シングルチップマイコン１は、フラッシュメモリ２と、ＲＯＭ３と、ＣＰＵ４と、通信ポート５と、プログラミング制御回路６とを有し、バス７を介して信号を送受信する。
【００１６】
ＲＯＭ３，ＣＰＵ４，通信ポート５の機能は図７の従来例と同様である。ＲＯＭ３には、通信ポート５を介しての外部との情報のやりとりの手順を記述した通信アルゴリズム９と、フラッシュメモリ２への書き込み、読み出しおよび消去の手順を記述したプログラミングアルゴリズム８が固定的に記録されている。ＣＰＵ４は、シングルチップマイコン１の全体を管理し、フラッシュメモリ２，ＲＯＭ３等のプログラムに基づいた処理を実行する。通信ポート５は、外部の書き込み装置と接続し、書き込みコード情報や書き込みコマンド等の情報をやりとりする。
【００１７】
フラッシュメモリ２は、メモリブロック２１−１〜２１−ｎのｎ個（ｎ≧２の正整数）のメモリブロックを含み、各メモリブロックは、第１領域であるところのＡ領域と、第２領域であるところのＢ領域とに分割されている。メモリブロック２１−１のＡ領域２２−１は、シングルチップマイコン１の起動時の初期状態を設定するプログラムが格納されるブート領域を内含する特別な領域として当てられ、メモリブロック２１−２〜２１−ｎのＡ領域２２−２〜２２−ｎは、ユーザプログラム記憶用の領域として使用される。Ｂ領域２３−１〜２３−ｎは、Ａ領域の管理情報である消去禁止フラグ２４−１〜２４−ｎ，書込禁止フラグ２５−１〜２５−ｎ，読出禁止フラグ２６−１〜２６−ｎおよびブロック消去フラグ２７−１〜２７−ｎを有している。消去禁止フラグ２４−１〜２４−ｎ，書込禁止フラグ２５−１〜２５−ｎ，読出禁止フラグ２６−１〜２６−ｎは、ユーザプログラムの書き込み時に設定され、セットに組み込まれて出荷された後には外部から設定の変更はできない。ブロック消去フラグ２７−１〜２７−ｎは、メモリブロック２１−１〜２１−ｎのＡ領域２２−１〜２２−ｎのそれぞれに消去処理が実行されたときに対応して論理値１が設定され、書き込みが実行されたときに論理値０が設定される。
【００１８】
ＣＰＵ４は、外部から消去要求があったブロックについて、消去禁止フラグが許可を示す１に設定されている場合にＡ領域の消去動作を実行し、禁止を示す論理値０である場合には消去動作を拒否する。同様に、外部から書き込み要求があったブロックについて、書込禁止フラグが許可を示す論理値１に設定されている場合にＡ領域の書き込み動作を実行し、禁止を示す論理値０である場合には書き込み動作を拒否する。また、外部から読み出し要求があったブロックについて、読出禁止フラグが許可を示す論理値１に設定されている場合にＡ領域の読み出し動作を実行し、禁止を示す論理値０である場合には読み出し動作を拒否する。
【００１９】
プログラミング制御回路６は、ＣＰＵ４の制御に基づいてフラッシュメモリ２への書き込み、読み出しおよび消去の処理を実行し、ブロック消去制御回路１１と、ブートブロック消去制御回路１２と、書き込み、読み出し等の動作制御信号を生成する制御用回路とを含んでいる。ブロック消去制御回路１１は、Ａ領域２２−１〜２２−ｎのそれぞれに対応してブロック消去が許可されているときにはアクティブレベルの論理値１となるブロック消去許可信号ＢＥＡ１〜ＢＥＡｎを出力する。ブートブロック消去制御回路１２は、ブロック消去フラグ２７−２〜２７−ｎからの出力であるブロック消去フラグ信号ＢＥＦ２〜ＢＥＦｎとブート領域を内含するＡ領域２２−１に対応するブロック消去許可信号ＢＥＡ１とを入力し、すべてが論理値１であるとき、すなわちＡ領域２２−２〜２２−ｎがすべて消去状態にあり、且つブート領域を内含するＡ領域２２−１の消去が許可されているときに論理値１となるブートブロック消去許可信号ＢＢＥＡを出力する。
【００２０】
次に、図１のシングルチップマイコン１のプログラミング動作について説明する。先ず、ブート領域を内含するメモリブロック２１−１以外の任意のメモリブロック２１−ｉ（ｉ＝２，３，・・・ｎ）のＡ領域２２−ｉを消去する場合について説明する。
【００２１】
ＣＰＵ４は、Ｂ領域２１−ｉの消去禁止フラグ２４−ｉを参照し、禁止を示す論理値０であれば消去動作を拒否し、許可を示す論理値１であればプログラミングアルゴリズム８にしたがい、プログラミング制御回路６を制御してＡ領域２２−ｉの消去を実行する。消去禁止フラグ２４−ｉが論理値１である場合には、プログラミング制御回路６内のブロック消去制御回路１１はメモリブロック２１−ｉの消去を許可する信号であるブロック消去許可信号ＢＥＡｉをアクティブレベルに対応する論理値１とする。フラッシュメモリ２内のメモリブロック２１−ｉは、ブロック消去許可信号ＢＥＡｉがアクティブとなることにより、消去可能状態となりＡ領域２２−ｉは消去される。Ａ領域２２−ｉの消去実行により、対応するブロック消去フラグ２７−ｉは消去状態を示す論理値１となり保持される。
【００２２】
次に、ブート領域を内含するメモリブロック２１−１以外の任意のメモリブロック２１−ｉのＡ領域２２−ｉに書き込みを行う場合の動作について説明する。ＣＰＵ４は対応するＢ領域２３−ｉの書込禁止フラグ２５−ｉを参照し、禁止を示す論理値０であれば書き込み動作を拒否し、許可を示す論理値１であればプログラミングアルゴリズム８にしたがい、プログラミング制御回路６を制御してＡ領域２２−ｉの書き込みを実行する。Ａ領域２２−ｉの書き込み動作を実行するときに、対応するブロック消去フラグ２７−ｉに書き込み済みを示す論理値０が書き込まれて保持される。
【００２３】
次に、ブート領域を内含するメモリブロック２１−１を消去する場合の動作について説明する。ＣＰＵ４はＢ領域２３−１の消去禁止フラグ２４−１を参照し、禁止を示す論理値０であれば消去動作を拒否し、許可を示す論理値１であればプログラミングアルゴリズム８にしたがい、プログラミング制御回路６を制御してＡ領域２２−１の消去動作を実行する。ブロック消去制御回路１１はメモリブロック２１−１の消去を許可する信号であるブロック消去許可信号ＢＥＡ１をアクティブレベルに対応する論理値１とする。ブートブロック消去制御回路１２は、ブロック消去フラグ２７−２〜２７−ｎからの出力であるブロック消去フラグ信号ＢＥＦ２〜ＢＥＦｎとブート領域を内含するＡ領域２２−１のブロック消去許可信号ＢＥＡ１とを入力し、すべてがアクティブレベルに対応する論理値１であれば、ブートブロック消去許可信号ＢＢＥＡをアクティブレベルに対応する論理値１とする。
【００２４】
ブート領域を内含するメモリブロック２１−１は、ブートブロック消去許可信号ＢＢＥＡが論理値１になることにより消去可能状態となり、ＣＰＵ４によりＡ領域２２−１は消去される。Ａ領域２２−１の消去を実行するときに、ブロック消去フラグ２７−１には消去状態を示す論理値１が書き込まれて保持される。メモリブロック２１−２〜２１−ｎのうち１つでもプログラムが書かれている場合には、ブート領域を内含するメモリブロック２１−１を消去することができない。
【００２５】
ブート領域を内含するメモリブロック２１−１のＡ領域２２−１に書き込みを行う場合は、メモリブロック２１−１以外の任意のメモリブロック２１−ｉのＡ領域２２−ｉに書き込みを行う場合の動作と同一であるので、説明を省略する。Ａ領域２２−１の書き込み動作を実行したときに、ブロック消去フラグ２７−１には書き込み済みを示す論理値０が書き込まれて保持される。
【００２６】
本実施の形態では、ユーザが、ブート領域を内含するメモリブロック２１−１の消去禁止フラグ２４−１を禁止状態である論理値０に設定することを忘れたとしても、ブート領域を内含するメモリブロック以外のメモリブロックのひとつにでもプログラムコードが書き込まれている場合には、ブート領域を内含するメモリブロック２１−１のＡ領域２２−１の消去ができず、したがってブート領域のプログラムをコードをシングルチップマイコン外部に出力するように変更することはできないので、図７の従来例よりもさらに高いセキュリティを実現できる。また、ユーザが、セット出荷時にすべてのメモリブロックの消去禁止フラグおよび書き込み禁止フラグを論理値１として許可状態としておくことにより、ブート領域を含むすべてのプログラムを変更することが可能である。
【００２７】
図２は、他の実施例のブロック図である。図１の実施例では、シングルチップマイコン１は、１個のフラッシュメモリ２を搭載し、フラッシュメモリ内のｎ個のブロック２１−１〜２１−ｎのそれぞれをＡ領域とＢ領域に分割して管理していたが、本実施例では、シングルチップマイコン１ａは、ｎ個（ｎ≧２）のフラッシュメモリ２−１〜２−ｎを搭載し、それぞれを第１領域であるところのＡ領域と第２領域であるところのＢ領域に分割して管理する点が異なっている。
【００２８】
図２を参照すると、シングルチップマイコン１ａは、ｎ個のフラッシュメモリ２−１〜２−ｎを搭載し、フラッシュメモリ２−１のＡ領域３１−１は、シングルチップマイコン１ａの起動時の初期状態を設定するプログラムが格納されるブート領域を内含する特別な領域として当てられ、フラッシュメモリ２−２〜２−ｎのＡ領域３１−２〜３１−ｎは、ユーザプログラム記憶用の領域として使用される。フラッシュメモリ２−１〜２−ｎのＢ領域３２−１〜３２−ｎは、Ａ領域の管理情報である消去禁止フラグ２４−１〜２４−ｎ，書込禁止フラグ２５−１〜２５−ｎ，読出禁止フラグ２６−１〜２６−ｎおよびエリア消去フラグ３３−１〜３３−ｎを有している。消去禁止フラグ２４−１〜２４−ｎ，書込禁止フラグ２５−１〜２５−ｎ，読出禁止フラグ２６−１〜２６−ｎは、ユーザプログラムの書き込み時に設定され、セットに組み込まれて出荷された後には外部から設定の変更はできない。エリア消去フラグ３３−１〜３３−ｎは、フラッシュメモリ２−１〜２−ｎのＡ領域３１−１〜３１−ｎに消去処理が実行されたときにそれぞれに論理値１が設定され、書き込みが実行されたときに論理値０が設定される。
【００２９】
プログラミング制御回路６ａは、エリア消去制御回路３４と、ブートエリア消去制御回路３５と、書き込み、読み出し等の動作制御信号を生成する制御用回路とを含んでいる。エリア消去制御回路３４は、Ａ領域３１−１〜３１−ｎのそれぞれに対応してエリア消去許可時には論理値１となるエリア消去許可信号ＡＥＡ１〜ＡＥＡｎを出力する。ブートエリア消去制御回路３５は、エリア消去フラグ３３−２〜３３−ｎからの出力であるエリア消去フラグ信号ＡＥＦ２〜ＡＥＦｎとブート領域を内含するＡ領域３１−１のエリア消去許可信号ＡＥＡ１とを入力し、すべてが論理値１であるときに論理値１となるブートエリア消去許可信号ＢＡＥＡを出力する。
【００３０】
ブート領域を含むフラッシュメモリ２−１以外の任意のフラッシュメモリ２−ｉ（ｉ＝２，３，・・・ｎ）を消去する場合の動作について説明する。ＣＰＵ４はＢ領域３２−ｉの消去禁止フラグ２４−ｉを参照し、禁止を示す論理値０であれば消去動作を拒否し、許可を示す論理値１であればプログラミングアルゴリズム８にしたがい、プログラミング制御回路６ａを制御してＡ領域３１−ｉの消去動作を実行する。プログラミング制御回路６ａ内のエリア消去制御回路３４はフラッシュメモリ２−ｉの消去を許可する信号であるエリア消去許可信号ＡＥＡｉをアクティブレベルとする。フラッシュメモリ２−ｉは、エリア消去許可信号ＡＥＡｉがアクティブレベルの論理値１となることにより消去可能状態となり、Ａ領域３１−ｉの消去が実行される。Ａ領域３１−ｉの消去動作を実行するときにエリア消去フラグ３３−ｉは消去状態を示す論理値１となり保持される。
【００３１】
次に、ブート領域を内含するフラッシュメモリ２−１以外の任意のフラッシュメモリ２−ｉを書き込む場合の動作について説明する。ＣＰＵ４はＢ領域３２−ｉの書込禁止フラグ２５−ｉを参照し、禁止を示す論理値０であれば書き込み動作を拒否し、許可を示す論理値１であればプログラミングアルゴリズム８にしたがい、プログラミング制御回路６ａを制御してＡ領域３１−ｉの書き込み動作を実行する。Ａ領域３１−ｉの書き込み動作を実行するときに、エリア消去フラグ３３−ｉに書き込み状態を示す論理値０が書き込まれて保持される。ブート領域を内含するフラッシュメモリ２−１に書き込む場合も同一の動作を行う。
次に、ブート領域を内含するフラッシュメモリ２−１を消去する場合の動作について説明する。ＣＰＵ４はＢ領域３２−１の消去禁止フラグ２４−１を参照し、禁止を示す論理値０であれば消去動作を拒否し、許可を示す論理値１であればプログラミングアルゴリズム８にしたがい、プログラミング制御回路６ａを制御してＡ領域３１−１の消去動作を実行する。エリア消去制御回路３４は、フラッシュメモリ２−１の消去を許可する信号であるエリア消去許可信号ＡＥＡ１のみをアクティブレベルの論理値１にする。ブートエリア消去制御回路３５は、フラッシュメモリ２−２〜２−ｎが有するエリア消去フラグ２４−２〜２４―ｎから出力されるエリア消去フラグ出力信号ＡＥＦ２〜ＡＥＦｎのすべてが消去状態を示す論理値１であり、且つエリア消去許可信号ＡＥＡ１がアクティブレベルの論理値１であれば、ブートエリア消去許可信号ＢＡＥＡをアクティブレベルの論理値１として出力する。ブート領域を内含するフラッシュメモリ２−１は、ブートエリア消去許可信号ＢＡＥＡが論理値１になることにより、消去可能状態となりＡ領域３１−１の消去が実行される。
【００３２】
Ａ領域３１−１の消去を実行するときに、エリア消去フラグ３３−１には消去状態を示す論理値１が書き込まれて保持される。フラッシュメモリ２−２〜２−ｎのうち１つでもプログラムが書かれている場合には、ブート領域を内含するフラッシュメモリ２−１を消去することはできない。本実施例においても図１におけると同様に、高いセキュリティを実現できるとともに、ユーザがブート領域を含むすべてのプログラムを変更することが可能である。
【００３３】
次に、本発明の第２の実施の形態について説明する。図３は、第２の実施の形態のシングルチップマイコン１ｂのブロック図である。
【００３４】
シングルチップマイコン１ｂは、フラッシュメモリ２ａの各ブロックのＢ領域にブロック消去フラグ判定回路と複数のブロック消去フラグとを有している点のみが図１のシングルチップマイコン１と異なり、その他の構成はシングルチップマイコン１と同一である。フラッシュメモリ２ａにおいてメモリブロック２１−１〜２１−ｎのＢ領域２３−１〜２３−ｎには、それぞれにｋ個（ｋ≧２の正整数）のブロック消去フラグ（２７−１1 〜２７−１k ）〜（２７−ｎ1 〜２７−ｎk ）とブロック消去フラグ判定回路４１−１〜４１−ｎとが設けられている。
【００３５】
メモリブロック２１−ｉ（ｉ＝１，２，・・・ｎ）のＡ領域２２−ｉの消去動作を実行すると、ブロック消去フラグ２７−ｉ1 〜２７−ｉk は消去状態を示す論理値１となる。Ａ領域２２−ｉに書き込み動作を実行すると、ブロック消去フラグ２７−ｉ1 〜２７−ｉk のすべてに書き込み状態を示す論理値０が書き込まれる。
【００３６】
ブロック消去フラグは、メモリブロックのデータ書き換えを実行する毎に、１回の消去と書き込みが行われるため、ユーザプログラム領域の領域Ａよりも頻繁に書き込みと消去が繰り返されるので、ブロック消去フラグを構成するＥＥＰＲＯＭセルが最も早く劣化して誤動作する可能性が大きい。このような場合に、本実施の形態を適用し、各メモリブロックにブロック消去フラグを３より大きい奇数個設けて、ブロック消去フラグ判定回路を多数決回路として構成することにより、ブロック消去フラグを構成するＥＥＰＲＯＭメモリセルの一部が劣化して消去または書き込みが不可能になったとしても、ブロック消去フラグ判定回路の出力を正常に保つことができ、信頼性を向上できる。
【００３７】
ブロック消去フラグ判定回路４１−２〜４１−ｎの出力であるブロック消去フラグ信号ＢＥＦ２〜ＢＥＦｎのすべてがアクティブレベルの論理値１で、且つブート領域を内含するメモリブロック２１−１に対応するブロック消去許可信号ＢＥＡ１がアクティブレベルの論理値１であるときにのみブート領域を含むメモリブロック２１−１のＡ領域２２−１の消去が許可されることは図１のシングルチップマイコン１と同じであるので、図１と同様に高いセキュリティを実現でき、ユーザがブート領域を含むすべてのプログラムを変更することが可能である。これに加えて、本実施の形態のシングルチップマイコン１ｂでは、例えば、ブロック消去フラグ判定回路の構成を多数決回路とすれば、書き込み消去の多数回繰り返し使用時におけるセキュリティ信頼性を向上させることができるという新たな利点が生じる。
【００３８】
なお、メモリブロック２１−ｉに対して、ブロック消去フラグ２７−ｉ1 〜２７−ｉk のすべてが論理値１であるときにのみブロック消去フラグ判定回路４１−ｉがブロック消去フラグ信号ＢＥＦｉを論理値１として出力するようにブロック消去フラグ判定回路を論理積としてより厳しい消去判定とすることもでき、ブロック消去フラグ判定回路４１−１〜４１−ｎは、用途に応じて任意に組みかえることが可能である。シングルチップマイコン１ｂの他の動作に関しては、図１のシングルチップマイコン１と同様である。
【００３９】
次に、他の実施例について説明する。図４は、第２の実施の形態の他の実施例のシングルチップマイコン１ｃのブロック図である。
【００４０】
シングルチップマイコン１ｃは、複数のフラッシュメモリのＢ領域にエリア消去フラグ判定回路と複数のエリア消去フラグとを有している点のみが図２のシングルチップマイコン１ａと異なり、その他の構成はシングルチップマイコン１ａと同一である。フラッシュメモリ２ａ−１〜２ａ−ｎのＢ領域３１−ｉ〜３１−ｎには、それぞれにｋ個（ｋ≧２の正整数）のエリア消去フラグ（３３−１1 〜３３−１k ）〜（３３−ｎ1 〜３３−ｎk ）とエリア消去フラグ判定回路５１−１〜５１−ｎが設けられている。
【００４１】
フラッシュメモリ２ａ−ｉ（ｉ＝１，２，・・・ｎ）のＡ領域３１−ｉの消去動作を実行すると、エリア消去フラグ３３−ｉ1 〜３３−ｉk は消去状態を示す論理値１となる。Ａ領域３１−ｉに書き込み動作を実行すると、エリア消去フラグ３３−ｉ1 〜３３−ｉk のすべてに書き込み状態を示す論理値０が書き込まれる。
【００４２】
エリア消去フラグ判定回路５１−２〜５１−ｎの出力であるエリア消去フラグ信号ＡＥＦ２〜ＡＥＦｎのすべてがアクティブレベルの論理値１で、且つブート領域を内含するフラッシュメモリ２ａ−１に対応するエリア消去許可信号ＡＥＡ１がアクティブレベルの論理値１であるときにのみブート領域を含むフラッシュメモリ２ａ−１のＡ領域３１−１の消去が許可されることは図２のシングルチップマイコン１ａと同じであるので、図２と同様に高いセキュリティを実現でき、また、ユーザがブート領域を含むすべてのプログラムを変更することが可能である。これに加えて、本実施の形態のシングルチップマイコン１ｃでは、エリア消去フラグ判定回路の構成を、例えば多数決回路とすれば、図３のシングルチップマイコン１ｂと同様に書き込み消去の多数回繰り返し使用時におけるセキュリティ信頼性を向上させることができる。
【００４３】
次に、本発明の第３の実施の形態について説明する。図５は、第３の実施の形態のシングルチップマイコン１ｄのブロック図である。
【００４４】
シングルチップマイコン１ｄは、フラッシュメモリ２ｂの各ブロックのＢ領域にブロック消去代替フラグとブロック消去フラグ生成回路とを有している点のみが図１のシングルチップマイコン１と異なり、その他の構成はシングルチップマイコン１と同一である。
【００４５】
ブロック消去代替フラグ６１−１〜６１−ｎは、消去禁止フラグ２４−１〜２４−ｎ，書き込み禁止フラグ２５−１〜２５−ｎ，読出禁止フラグ２６−１〜２６−ｎと同様に、特別のモード設定のもとでのみユーザが消去し書き込むことができるが、セット出荷後には外部から書き換えができないように構成されている。また、Ａ領域２２−１〜２２−ｎを消去または書き込みしてもブロック消去代替フラグ６１−１〜６１−ｎが保持している論理値は変化しないので、ユーザが一度設定しセットとして出荷したのちは、設定値を保持し続ける。
メモリブロック２１−ｉ（ｉ＝１，２，・・・ｎ）のブロック消去フラグ生成回路６２−ｉは、ブロック消去フラグ２７−ｉの論理値とブロック消去代替フラグ６１−ｉの論理値との論理和をとり、ブロック消去フラグ信号ＢＥＦｉとして出力する。その他の動作に関しては、図１のシングルチップマイコン１と同様である。
メモリブロック２１−ｉのブロック消去代替フラグ６１−ｉのデータに論理値１を保持させた場合には、メモリブロック２１−ｉのＡ領域２２−ｉが消去状態ではなくプログラムコードが書き込まれている状態であってブロック消去フラグ２７−ｉが論理値０となっていても、ブロック消去フラグ生成回路６２−ｉの出力であるブロック消去フラグ信号ＢＥＦｉは、アクティブレベルの論理値１となる。したがって、ブロック消去代替フラグを論理値１に設定したメモリブロックのＡ領域に格納されたプログラムコードを残したままの状態で、ブート領域を内含するメモリブロック２１−１のＡ領域２２−１を消去することが可能となり、出荷後にフラッシュメモリ２ｂ内のプログラムコードを修正する場合に、特にブート領域のプログラム変更を伴う場合には、書き込みビット数を低減して修正作業の効率を向上させることができる。
【００４６】
ブロック消去フラグ判定回路６２−２〜６２−ｎの出力であるブロック消去フラグ信号ＢＥＦ２〜ＢＥＦｎのすべてがアクティブレベルの論理値１で、且つブート領域を内含するメモリブロック２１−１に対応するブロック消去許可信号ＢＥＡ１がアクティブレベルの論理値１であるときにのみブート領域を含むメモリブロック２１−１のＡ領域２２−１の消去が許可されることは図１のシングルチップマイコン１と同じであるので、図１と同様に高いセキュリティを実現でき、またユーザがブート領域を含むすべてのプログラムを変更することが可能である。ブロック消去代替フラグを論理値１設定したメモリブロックに対しては、ブート領域を書き換えたのちに格納されたプログラムコードが残っていればこれを読み出すことが可能ではあるが、メモリブロック数が多ければ、ブロック消去代替フラグを論理値１に設定したメモリブロック番号を知らない限り書き込まれたプログラムコードを残したままブート領域を消去することは困難であり、したがって第３者が読み出すことは困難であるのでセキュリティの高さは損なわれない。
【００４７】
次に、他の実施例について説明する。図６は、第３の実施の形態の他の実施例のシングルチップマイコン１ｅのブロック図である。
【００４８】
シングルチップマイコン１ｅは、複数のフラッシュメモリのそれぞれのＢ領域にエリア消去代替フラグとエリア消去フラグ生成回路とを有している点のみが図２のシングルチップマイコン１ａと異なり、その他の構成はシングルチップマイコン１ａと同一である。
【００４９】
エリア消去代替フラグ７１−１〜７１−ｎは、セット出荷後には外部から書き換えができないように構成され、ユーザが一度設定しセットとして出荷したのちは、設定値を保持し続ける。
フラッシュメモリ２ｂ−ｉ（ｉ＝１，２，・・・ｎ）のエリア消去フラグ生成回路７２−ｉは、エリア消去フラグ３３−ｉの論理値とエリア消去代替フラグ７１−ｉの論理値との論理和をとり、エリア消去フラグ信号ＡＥＦｉとして出力する。その他の動作に関しては、図２のシングルチップマイコン１ａと同様である。
【００５０】
フラッシュメモリ２ｂ−ｉのエリア消去代替フラグ７１−ｉのデータに論理値１を保持させた場合には、フラッシュメモリ２ｂ−ｉのＡ領域３１−ｉが消去状態ではなくプログラムコードが書き込まれている状態であってエリア消去フラグ３３−ｉが論理値０となっていても、エリア消去フラグ生成回路７２−ｉの出力であるエリア消去フラグ信号ＡＥＦｉは、アクティブレベルの論理値１となり、Ａ領域３１−ｉに格納されたプログラムコードを残したままの状態で、ブート領域を内含するフラッシュメモリ２ｂ−１のＡ領域３１−１を消去することが可能となる。
【００５１】
エリア消去フラグ判定回路７２−２〜７２−ｎの出力であるエリア消去フラグ信号ＡＥＦ２〜ＡＥＦｎのすべてがアクティブレベルの論理値１で、且つブート領域を内含するフラッシュメモリ２ｂ−１に対応するエリア消去許可信号ＡＥＡ１がアクティブレベルの論理値１であるときにのみブート領域を内含するフラッシュメモリ２ｂ−１のＡ領域３１−１の消去が許可されることは図２のシングルチップマイコン１ａと同じであるので、図２と同様に高いセキュリティを実現でき、また、ユーザがブート領域を含むすべてのプログラムを変更することが可能である。
【００５２】
【発明の効果】
以上のように、本発明を適用することにより、ブート領域を内含するメモリ領域以外のメモリ領域の状態を検知してすべての領域が消去状態と見なせるときのみにブート領域を内含するメモリ領域の消去を実行するようにしたので、図７の従来例に対してフラッシュメモリ内のプログラムコードのセキュリティを一層向上させることができるとともに、セット出荷後においても、ユーザがブート領域を含むすべてのプログラムを変更することが可能となる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態のブロック図である。
【図２】第１の実施の形態の他の実施例のブロック図である。
【図３】本発明の第２の実施の形態のブロック図である。
【図４】第２の実施の形態の他の実施例のブロック図である。
【図５】本発明の第３の実施の形態のブロック図である。
【図６】第３の実施の形態の他の実施例のブロック図である。
【図７】従来例のブロック図である。
【符号の説明】
１，１ａ，１ｂ，１ｃ，１ｄ，１ｅ    シングルチップマイコン
２，２−１，２−２，２−ｎ，２ａ，２ａ−１，２ａ−２，２ａ−ｎ，２ｂ，２ｂ−１，２ｂ−２，２ｂ−ｎ    フラッシュメモリ
３    ＲＯＭ
４    ＣＰＵ
５    通信ポート
６，６ａ    プログラミング制御回路
７    バス
１１    ブロック消去制御回路
１２    ブートブロック消去制御回路
２１−１，２１−ｎ    メモリブロック
２２−１，２２−ｎ，３１−１，３１−ｎ    Ａ領域
２３−１，２３−ｎ，３２−１，３２−ｎ    Ｂ領域
２４−１，２４−ｎ    消去禁止フラグ
２５−１，２５−ｎ    書込禁止フラグ
２６−１，２６−ｎ    読出禁止フラグ
２７−１，２７−ｎ，２７−１1，２７−１k    ブロック消去フラグ
３３−１，３３−ｎ，３３−１1，３３−１k    エリア消去フラグ
３４    エリア消去制御回路
３５    ブートエリア消去制御回路
４１−１，４１−ｎ    ブロック消去フラグ判定回路
５２−１，５２−ｎ    エリア消去フラグ判定回路
６１−１    ブロック消去代替フラグ
６２−１，６２−ｎ    ブロック消去フラグ生成回路
７１−１    エリア消去代替フラグ
７２−１，７２−ｎ    エリア消去フラグ生成回路
【図１】
0004282223.tif 000002
【図２】
0004282223.tif 000003
【図３】
0004282223.tif 000004
【図４】
0004282223.tif 000005
【図５】
0004282223.tif 000006
【図６】
0004282223.tif 000007
【図７】
0004282223.tif 000008