(57)【要約】【課題】ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することである。【解決手段】本発明にかかるマイクロコンピュータは、メモリ１、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８、比較部９、およびプロセッサ１１を備える。メモリ１のユーザ領域３は、ユーザのアクセスが許可されている領域であり、ユーザプログラムおよびユーザ固有の識別情報であるライセンスＩＤ_Ｕが格納されている。メモリ１の非公開領域２は、ユーザのアクセスが禁止されている領域であり、ライセンスＩＤ_Ｕに対応するライセンスＩＤ_Ｓが格納されている。ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８にはそれぞれ、メモリ１に格納されているライセンスＩＤ_Ｓ、ＩＤ_Ｕが格納される。プロセッサ１１は、比較部９においてライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが同一であると判断された場合にユーザプログラムを実行する。【選択図】図１
2013073472.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ固有の識別情報である第１の識別情報およびユーザプログラムが格納され、ユーザのアクセスが許可されているユーザ領域と、前記第１の識別情報に対応する第２の識別情報が格納され、ユーザのアクセスが禁止されている非公開領域と、を備えるメモリと、
前記第１の識別情報を格納可能な第１のレジスタと、
前記第２の識別情報を格納可能な第２のレジスタと、
前記第１のレジスタに格納されている第１の識別情報と前記第２のレジスタに格納されている第２の識別情報とを比較する比較部と、
前記メモリに格納されているユーザプログラムを実行するプロセッサと、を備え、
前記プロセッサは、前記比較部において前記第１の識別情報と第２の識別情報とが同一であると判断された場合に前記ユーザプログラムを実行する、
マイクロコンピュータ。
【請求項２】
前記マイクロコンピュータはシーケンサを更に備え、
前記シーケンサは、
前記第１の識別情報が格納されているアドレスを前記メモリに出力し、当該メモリから出力された前記第１の識別情報を前記第１のレジスタに格納し、
前記第２の識別情報が格納されているアドレスを前記メモリに出力し、当該メモリから出力された前記第２の識別情報を前記第２のレジスタに格納する、
請求項１に記載のマイクロコンピュータ。
【請求項３】
前記メモリの前記非公開領域には更に、前記第１の識別情報が格納された場所を示すアドレス情報が格納され、
前記第１の識別情報は前記アドレス情報を用いて読み出される、
請求項１または２に記載のマイクロコンピュータ。
【請求項４】
前記アドレス情報を格納可能な第３のレジスタを更に備え、
前記シーケンサは、
前記アドレス情報が格納されているアドレスを前記メモリに出力し、当該メモリから出力された前記アドレス情報を前記第３のレジスタに格納し、
前記第３のレジスタから出力された前記アドレス情報を前記メモリに出力し、当該メモリから出力された前記第１の識別情報を前記第１のレジスタに格納する、
請求項３に記載のマイクロコンピュータ。
【請求項５】
前記第１の識別情報および前記第２の識別情報が格納された場所を示すアドレス情報は、前記ユーザに前記マイクロコンピュータを提供するベンダーにより書き込まれる、
請求項１乃至４のいずれか一項に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロコンピュータに関し、特にライセンス認証機能を備えるマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、マイクロコンピュータは家電製品、自動車、通信機器など様々な分野で使用されている。マイクロコンピュータにはフラッシュメモリ等の不揮発性メモリが搭載されており、用途に応じたプログラム（以下、ユーザプログラムという）をこの不揮発性メモリに書き込むことで、特定の製品に応じた機能を提供することができる。この場合、例えば、特定の製品を提供するユーザ（正規のユーザ。つまり、マイクロコンピュータを用いた製品を製造するメーカー等）が、マイクロコンピュータのベンダーからマイクロコンピュータを入手する。そして、このマイクロコンピュータに特定の製品に応じたユーザプログラムを書き込み、このマイクロコンピュータを含む製品をエンドユーザに提供することができる。
【０００３】
このとき、例えば、正規のユーザと異なる第三者は、正規のユーザのユーザプログラムを不正に入手し、このユーザプログラムをマイクロコンピュータに書き込むことで、正規のユーザのユーザプログラムをコピーして使用することができてしまう。プログラムの盗用は著作権法上、認められていない。また、正規のユーザはユーザプログラムを開発するのに多大な時間・労力・コストを費やしており、安易な盗用を防ぐことが求められている。
【０００４】
特許文献１には、このようなソフトウェアの盗用を防止するための技術が開示されている。図６は、特許文献１に開示されているマイクロプロセッサを示すブロック図である。図６に示すマイクロプロセッサは、制御ユニット１０１、命令デコーダ１０２、ＰＲＯＭ（Programmable Read Only Memory）１０３、レジスタ１０４、演算装置（ＡＬＵ）１０５、内部制御バス１０６、およびアドレス／データバス１０７を有する。
【０００５】
図６に示すマイクロプロセッサでは、外部からアドレス／データバス１０７を介して入力された命令を命令デコーダ１０２が解読し、制御ユニット１０１に転送する。制御ユニット１０１は、命令デコーダ１０２から転送された命令に従い、内部制御バス１０６を介して各部に制御信号を送出する。演算装置１０５は、制御ユニット１０１から出力された制御信号に応じて、レジスタ１０４のデータを演算処理し、アドレス／データバス１０７を通じて演算結果を外部に出力する。
【０００６】
図６に示すマイクロプロセッサでは、レジスタ１０４に隣接してＰＲＯＭ（１０３）が形成されている。ＰＲＯＭ（１０３）には、出荷時に個別の自己識別情報（ＩＤ情報）が書き込まれる。よって、ＰＲＯＭ（１０３）に書き込まれている自己識別情報を読み出すことで、マイクロプロセッサを特定することができる。
【０００７】
また、図６に示すマイクロプロセッサで用いられるソフトウェアは次の様に構成されている。つまり、ソフトウェアの一部に上記の自己識別情報を格納する部分を設け、自己識別情報を読み出し格納する。そして、ソフトウェアを使用する際は、上記のＰＲＯＭ（１０３）に書かれている自己識別情報とソフトウェアに書き込まれている自己識別情報とを照合し、一致したときにのみ正常な処理を行ない、一致しない場合は処理を停止する。
【０００８】
このように、特許文献１にかかる技術では、個々のマイクロプロセッサがそれぞれ固有の自己識別情報を記憶手段に記憶している。したがって、ソフトウェアに、この自己識別情報を読み出し照合する命令を組み込むことにより、特定の自己識別情報を有するマイクロプロセッサでしか動作しないソフトウェアを作成することが可能となる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平２−１３８６２２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記で説明したように、特許文献１にかかるマイクロプロセッサでは、マイクロプロセッサの自己識別情報とソフトウェアに書き込まれている自己識別情報とを照合する命令をソフトウェアに組み込むことで、特定の自己識別情報を有するマイクロプロセッサでしか動作しないソフトウェアを作成することが可能となる。
【００１１】
しかしながら、特許文献１にかかるマイクロプロセッサでは、ソフトウェアを用いて自己識別情報の照合を実施している。このため、例えばソフトウェアが改竄されて上記の照合処理に対応するプログラムがソフトウェアから削除された場合、特定の自己識別情報を有するマイクロプロセッサ以外でもソフトウェアを動作させることが可能となる。このように、特許文献１にかかる技術では、ライセンス認証が正確に実施されない場合があるという問題があった。
【課題を解決するための手段】
【００１２】
本発明にかかるマイクロコンピュータは、ユーザ固有の識別情報である第１の識別情報およびユーザプログラムが格納され、ユーザのアクセスが許可されているユーザ領域と、前記第１の識別情報に対応する第２の識別情報が格納され、ユーザのアクセスが禁止されている非公開領域と、を備えるメモリと、前記第１の識別情報を格納可能な第１のレジスタと、前記第２の識別情報を格納可能な第２のレジスタと、前記第１のレジスタに格納されている第１の識別情報と前記第２のレジスタに格納されている第２の識別情報とを比較する比較部と、前記メモリに格納されているユーザプログラムを実行するプロセッサと、を備え、前記プロセッサは、前記比較部において前記第１の識別情報と第２の識別情報とが同一であると判断された場合に前記ユーザプログラムを実行する、マイクロコンピュータである。
【００１３】
本発明にかかるマイクロコンピュータでは、ユーザのアクセスが禁止されている非公開領域に、ユーザ領域に書き込まれた第１の識別情報に対応する第２の識別情報が書き込まれている。そして、ユーザ領域に格納されている第１の識別情報を第１のレジスタに格納し、非公開領域に格納されている第２の識別情報を第２のレジスタに格納し、これらの識別情報が同一であると判断された場合に、プロセッサがユーザプログラムを実行している。このように、本発明にかかるマイクロコンピュータでは、第１および第２のレジスタ（つまり、ハードウェア）にそれぞれ格納された第１および第２の識別情報を用いてライセンス認証を実施しているので、ユーザプログラムが改竄されたとしても、ライセンス認証を正確に実施することができる。
【発明の効果】
【００１４】
本発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１にかかるマイクロコンピュータを示すブロック図である。
【図２】実施の形態１にかかるマイクロコンピュータの動作を示すフローチャートである。
【図３】図２のステップＳ３およびステップＳ４の動作の詳細を説明するためのタイミングチャートである。
【図４】実施の形態２にかかるマイクロコンピュータを示すブロック図である。
【図５】実施の形態２にかかるマイクロコンピュータの動作を示すフローチャートである。
【図６】特許文献１に開示されているマイクロプロセッサを示すブロック図である。
【発明を実施するための形態】
【００１６】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の実施の形態１にかかるマイクロコンピュータを示すブロック図である。図１に示すマイクロコンピュータは、非公開領域２とユーザ領域３とを備えるメモリ１、シーケンサ４、アドレスバス５、データバス６、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８、比較部９、リセット回路１０、およびＣＰＵ（１１）を有する。
【００１７】
メモリ１は、例えばフラッシュメモリ等の不揮発性メモリである。メモリ１は、非公開領域２とユーザ領域３とを有する。非公開領域２は、ユーザのアクセスが禁止されている領域である。ここで、ユーザとはマイクロコンピュータを用いた製品を製造するメーカー等である。非公開領域２には、例えばマイクロコンピュータのベンダーがアクセスすることができる。ユーザ領域３は、ユーザのアクセスが許可されている領域である。
【００１８】
また、ユーザ領域３には、ユーザ固有の識別情報であるライセンスＩＤ_Ｕ（第１の識別情報）が、ユーザ領域３の所定のアドレスに対応づけて書き込まれている。例えば、ユーザ領域３の所定のアドレスにライセンスＩＤ_Ｕをマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域３の所定のアドレスにライセンスＩＤ_Ｕを書き込むことができる。
【００１９】
非公開領域２には、ライセンスＩＤ_Ｕに対応するライセンスＩＤ_Ｓ（第２の識別情報）が、非公開領域２の所定のアドレスに対応づけて書き込まれている。ここで、ライセンスＩＤ_ＳはライセンスＩＤ_Ｕと同一の値である。例えば、マイクロコンピュータのベンダーは、ユーザから開示されたライセンスＩＤ_Ｕと同一の値を出荷時にライセンスＩＤ_Ｓとして非公開領域２に書き込む。
【００２０】
シーケンサ４は、リセット解除後ユーザプログラムが実行される前に次の様なセットアップ動作を実行する。つまり、メモリ１の非公開領域２に格納されているライセンスＩＤ_ＳをＩＤ_Ｓ格納レジスタ（第２のレジスタ）７に書き込む動作、およびメモリ１のユーザ領域３に格納されているライセンスＩＤ_ＵをＩＤ_Ｕ格納レジスタ（第１のレジスタ）８に書き込む動作を実行する。シーケンサ４は、アドレスバス５を介して、メモリ１およびＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８にアドレス信号ＡＤを出力する。また、シーケンサ４は、メモリ１にリード信号ＲＤを出力し、ＩＤ_Ｓ格納レジスタ７にライト信号ＷＲ_Ｓを出力し、ＩＤ_Ｕ格納レジスタ８にライト信号ＷＲ_Ｕを出力する。なお、シーケンサ４は、ライセンスＩＤ_Ｓが格納されているアドレスおよびライセンスＩＤ_Ｕが格納されているアドレスを予め保持することができる。
【００２１】
ＩＤ_Ｓ格納レジスタ７は、メモリ１の非公開領域２に格納されているライセンスＩＤ_Ｓを格納し、比較部９に出力する。ＩＤ_Ｕ格納レジスタ８は、メモリ１のユーザ領域３に格納されているライセンスＩＤ_Ｕを格納し、比較部９に出力する。ここで、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８は、ユーザプログラムがアクセスできないように構成する。また、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８はセットアップ時以外は書き込みを禁止してもよい。
【００２２】
比較部９は、ＩＤ_Ｓ格納レジスタ７から出力されたライセンスＩＤ_Ｓと、ＩＤ_Ｕ格納レジスタ８から出力されたライセンスＩＤ_Ｕとを比較し、これらの比較結果をリセット回路１０に出力する。例えば、比較部９は、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが一致する場合、リセット回路１０のＡＮＤ１の入力にハイレベルの信号を出力する。一方、比較部９は、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが不一致の場合、リセット回路１０のＡＮＤ１の入力にロウレベルの信号を出力する。
【００２３】
リセット回路１０は、ＣＰＵ（１１）をリセットするための回路である。リセット回路１０は、ＡＮＤ１を備える。ＡＮＤ１の一方の入力には信号ＲＥＳＥＴ_Ｚ_ＩＮが供給され、他方の入力には比較部９の出力が供給され、これらの演算結果（論理積）がリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴとして出力される。図１に示すマイクロコンピュータでは、例えばリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴがハイレベルの場合にＣＰＵ（１１）は通常動作をし、リセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴがロウレベルの場合にＣＰＵ（１１）がリセットされる（つまり、動作しない）。
【００２４】
すなわち、信号ＲＥＳＥＴ_Ｚ_ＩＮがハイレベルであり、比較部９の出力がハイレベルである場合（つまり、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが一致する場合）、ＡＮＤ１はハイレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力する。この場合、ＣＰＵ（１１）は通常動作する。一方、信号ＲＥＳＥＴ_Ｚ_ＩＮがロウレベルの場合、ＡＮＤ１は、比較部９の出力がハイレベルであっても、ロウレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力する。この場合、ＣＰＵ（１１）はリセットされる。また、比較部９の出力がロウレベルの場合（つまり、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが不一致の場合）、ＡＮＤ１は、信号ＲＥＳＥＴ_Ｚ_ＩＮがハイレベルであっても、ロウレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力する。この場合、ＣＰＵ（１１）はリセットされる。
【００２５】
ＣＰＵ（プロセッサ）１１は、メモリ１に格納されているユーザプログラムを実行する。つまり、ＣＰＵ（１１）は、比較部９においてライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが同一であると判断された場合、メモリ１に格納されているユーザプログラムを実行する。
【００２６】
次に、本実施の形態にかかるマイクロコンピュータの動作について説明する。図２は、本実施の形態にかかるマイクロコンピュータの動作を説明するためのフローチャートである。図２に示すフローチャートにおいて、ステップＳ１およびステップＳ２は、マイクロコンピュータの製造時における動作を示し、ステップＳ３〜Ｓ７は、マイクロコンピュータのセットアップ時における動作を示している。なお、ステップＳ１およびステップＳ２はどちらを先に実行してもよい。同様に、ステップＳ３およびステップＳ４はどちらを先に実行してもよい。
【００２７】
まず、ユーザは、メモリ１のユーザ領域３の所定のアドレスにライセンスＩＤ_Ｕをマッピングしたユーザプログラムを作成する。ここで、ライセンスＩＤ_Ｕはユーザによって決定される任意の値である。また、例えば、ユーザプログラムの所定のコードをライセンスＩＤとして用いることで、ソフトウェア上においてライセンスＩＤが存在しないように見せることができ、第三者による解析を困難にすることができる。ライセンスＩＤ_Ｕは、ユーザ領域３の所定のアドレスにライセンスＩＤ_Ｕをマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域３の所定のアドレスにマッピングされる。
【００２８】
マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたユーザプログラムをユーザ領域３に書き込む（ステップＳ１）。次に、マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたライセンスＩＤ_Ｕと同一のライセンスＩＤ_Ｓをメモリ１の非公開領域２に書き込む（ステップＳ２）。なお、ユーザプログラムは、マイクロコンピュータの製造後、ユーザがユーザ領域３に書き込んでもよい。
【００２９】
次に、マイクロコンピュータのセットアップ時に、シーケンサ４は、メモリ１の非公開領域２に格納されているライセンスＩＤ_Ｓを読み出し、ＩＤ_Ｓ格納レジスタ７に格納する（ステップＳ３）。また、シーケンサ４は、メモリ１のユーザ領域３に格納されているライセンスＩＤ_Ｕを読み出し、ＩＤ_Ｕ格納レジスタ８に格納する（ステップＳ４）。以下で、ステップＳ３およびステップＳ４の動作について詳細に説明する。
【００３０】
図３は、図２のステップＳ３およびステップＳ４の動作の詳細を説明するためのタイミングチャートである。図３は、シーケンサ４が、メモリ１に格納されているライセンスＩＤ_ＳおよびライセンスＩＤ_Ｕをそれぞれ、ＩＤ_Ｓ格納レジスタ７およびＩＤ_Ｕ格納レジスタ８に格納する場合の動作を示している。なお、図３に示すＣＬＫはクロック信号であり、クロック生成回路（不図示）から図１に示すマイクロコンピュータの各構成要素に供給されている。
【００３１】
タイミングｔ１において、シーケンサ４はメモリ１からライセンスＩＤ_Ｓを読み出すために、ハイレベルのリード信号ＲＤをメモリ１に出力する。また、シーケンサ４は、アドレス信号ＡＤとしてリードアドレスＡＤ_Ｓ_ＲＤをアドレスバス５に出力する。ここで、リードアドレスＡＤ_Ｓ_ＲＤは、ライセンスＩＤ_Ｓが格納されているアドレスである。
【００３２】
メモリ１は、タイミングｔ２において、リードアドレスＡＤ_Ｓ_ＲＤに格納されているライセンスＩＤ_Ｓを出力データＤＡＴＡとしてデータバス６に出力する。また、タイミングｔ２において、シーケンサ４は、アドレス信号ＡＤとしてＩＤ_Ｓ格納レジスタ７のライトアドレスＡＤ_Ｓ_ＷＲをアドレスバス５に出力する。
【００３３】
タイミングｔ３で、シーケンサ４は、ハイレベルのライト信号ＷＲ_ＳをＩＤ_Ｓ格納レジスタ７に出力する。ＩＤ_Ｓ格納レジスタ７は、ライト信号ＷＲ_Ｓがハイレベルとなったので、メモリ１から出力されたライセンスＩＤ_Ｓを、ＩＤ_Ｓ格納レジスタ７のライトアドレスＡＤ_Ｓ_ＷＲに対応するアドレスに格納する。その後、タイミングｔ４において、シーケンサ４はリード信号ＲＤおよびライト信号ＷＲ_Ｓとしてロウレベルの信号をそれぞれ出力する。これにより、メモリ１からライセンスＩＤ_Ｓを読み出し、ＩＤ_Ｓ格納レジスタ７に格納する動作が終了する。
【００３４】
次に、タイミングｔ５において、シーケンサ４はメモリ１からライセンスＩＤ_Ｕを読み出すために、ハイレベルのリード信号ＲＤをメモリ１に出力する。また、シーケンサ４は、アドレス信号ＡＤとしてリードアドレスＡＤ_Ｕ_ＲＤをアドレスバス５に出力する。ここで、リードアドレスＡＤ_Ｕ_ＲＤは、ライセンスＩＤ_Ｕが格納されているアドレスである。
【００３５】
メモリ１は、タイミングｔ６において、リードアドレスＡＤ_Ｕ_ＲＤに格納されているライセンスＩＤ_Ｕを出力データＤＡＴＡとしてデータバス６に出力する。また、タイミングｔ６において、シーケンサ４は、アドレス信号ＡＤとしてＩＤ_Ｕ格納レジスタ８のライトアドレスＡＤ_Ｕ_ＷＲをアドレスバス５に出力する。
【００３６】
タイミングｔ７で、シーケンサ４は、ハイレベルのライト信号ＷＲ_ＵをＩＤ_Ｕ格納レジスタ８に出力する。ＩＤ_Ｕ格納レジスタ８は、ライト信号ＷＲ_Ｕがハイレベルとなったので、メモリ１から出力されたライセンスＩＤ_Ｕを、ＩＤ_Ｕ格納レジスタ８のライトアドレスＡＤ_Ｕ_ＷＲに対応するアドレスに格納する。その後、タイミングｔ８において、シーケンサ４はリード信号ＲＤおよびライト信号ＷＲ_Ｕとしてロウレベルの信号をそれぞれ出力する。これにより、メモリ１からライセンスＩＤ_Ｕを読み出し、ＩＤ_Ｕ格納レジスタ８に格納する動作が終了する。
【００３７】
以上の動作により、メモリ１の非公開領域２に格納されているライセンスＩＤ_ＳがＩＤ_Ｓ格納レジスタ７に格納され、メモリ１のユーザ領域３に格納されているライセンスＩＤ_ＵがＩＤ_Ｕ格納レジスタ８に格納される。
【００３８】
次に、比較部９において、ＩＤ_Ｓ格納レジスタ７に格納されているライセンスＩＤ_Ｓと、ＩＤ_Ｕ格納レジスタ８に格納されているライセンスＩＤ_Ｕとが比較される（ステップＳ５）。そして、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが一致する場合（ステップＳ５：ＹＥＳ）、比較部９はリセット回路１０のＡＮＤ１にハイレベルの信号を出力する（ライセンス認証成功：ステップＳ６）。このとき、信号ＲＥＳＥＴ_Ｚ_ＩＮがハイレベルである場合、ＡＮＤ１はハイレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力するので、ＣＰＵ（１１）は通常動作をする。
【００３９】
一方、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが一致しない場合（ステップＳ５：ＮＯ）、比較部９はリセット回路１０のＡＮＤ１にロウレベルの信号を出力する（エラー処理：ステップＳ７）。この場合、ＡＮＤ１はロウレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力するので、ＣＰＵ（１１）はリセットされる（つまり、ＣＰＵ（１１）は動作しない）。
【００４０】
なお、上記エラー処理（ステップＳ７）として、ＣＰＵ（１１）をリセットする以外に、例えばアドレスバス５およびデータバス６の少なくとも一方を停止状態としてもよく、またエラーフラグを立ててマイクロコンピュータにおける処理を停止するように構成してもよい。
【００４１】
以上で説明した本実施の形態にかかる発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。
【００４２】
本発明の課題で説明したように、特許文献１にかかるマイクロプロセッサでは、マイクロプロセッサの自己識別情報とソフトウェアに書き込まれている自己識別情報とを照合する命令をソフトウェアに組み込むことで、特定の自己識別情報を有するマイクロプロセッサでしか動作しないソフトウェアを作成することを可能としていた。
【００４３】
しかしながら、特許文献１にかかるマイクロプロセッサでは、ソフトウェアを用いて自己識別情報の照合を実施しているため、例えばソフトウェアが改竄されて照合処理に対応するプログラムがソフトウェアから削除された場合、特定の自己識別情報を有するマイクロプロセッサ以外でもソフトウェアを動作させることが可能となるという問題があった。
【００４４】
これに対して本実施の形態にかかるマイクロコンピュータでは、ユーザのアクセスが禁止されている非公開領域２に、ユーザ領域３に書き込まれるライセンスＩＤ_Ｕと同一のライセンスＩＤ_Ｓを書き込んでいる。そして、マイクロコンピュータのセットアップ時に、非公開領域２に格納されているライセンスＩＤ_ＳをＩＤ_Ｓ格納レジスタ７に格納し、ユーザ領域３に格納されているライセンスＩＤ_ＵをＩＤ_Ｕ格納レジスタ８に格納し、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８に格納されているライセンスＩＤ_Ｓ、ＩＤ_Ｕを比較している。このように、本実施の形態にかかるマイクロコンピュータでは、ライセンスＩＤの認証処理をハードウェア（ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８）を用いて実施している。また、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８は、ユーザプログラムがアクセスできないように構成されている。よって、ユーザプログラムが改竄されたとしても、誤ってライセンスが認証されることはない。
【００４５】
また、ライセンスＩＤ_Ｕを含むユーザプログラムは、ライセンスＩＤ_Ｕと同一のライセンスＩＤ_Ｓが非公開領域２に格納されているマイクロコンピュータでのみ実行することができる。よって、ライセンスＩＤ_Ｕを含むユーザプログラムが、他のマイクロコンピュータ（つまり、ライセンスＩＤ_Ｕと同一のライセンスＩＤ_Ｓが非公開領域２に格納されていないマイクロコンピュータ）で使用されることを防ぐことができる。すなわち、コピーされたユーザプログラムが、他のマイクロコンピュータ（正規品ではないマイクロコンピュータ）で実行されることを防止することができる。
【００４６】
以上で説明した本実施の形態にかかる発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。
【００４７】
＜実施の形態２＞
次に、本発明の実施の形態２について説明する。
図４は、本発明の実施の形態２にかかるマイクロコンピュータを示すブロック図である。本実施の形態にかかるマイクロコンピュータは、メモリ２１のユーザ領域２３に書き込まれているライセンスＩＤ_Ｕのアドレスが非公開領域２２に書き込まれる点、このライセンスＩＤ_ＵのアドレスがＩＤ_Ｕアドレス格納レジスタ（第３のレジスタ）２５に格納される点、およびシーケンサ２４がＩＤ_Ｕアドレス格納レジスタ２５に格納されているアドレスを用いてライセンスＩＤ_Ｕを読み出す点が、実施の形態１にかかるマイクロコンピュータと異なる。これ以外は、実施の形態１にかかるマイクロコンピュータと同一であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
【００４８】
図４に示すマイクロコンピュータは、非公開領域２２とユーザ領域２３とを備えるメモリ２１、シーケンサ２４、アドレスバス５、データバス６、ＩＤ_Ｕアドレス格納レジスタ２５、ＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８、比較部９、リセット回路１０、およびＣＰＵ（１１）を有する。
【００４９】
メモリ２１は、例えばフラッシュメモリ等の不揮発性メモリである。メモリ２１は、非公開領域２２とユーザ領域２３とを有する。非公開領域２２は、ユーザのアクセスが禁止されている領域である。ユーザ領域２３は、ユーザのアクセスが許可されている領域である。
【００５０】
また、ユーザ領域２３には、ユーザ固有の識別情報であるライセンスＩＤ_Ｕ（第１の識別情報）が、ユーザ領域２３の任意のアドレスに対応づけて書き込まれている。例えば、ユーザ領域２３の任意のアドレスにライセンスＩＤ_Ｕをマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域２３の任意のアドレスにライセンスＩＤ_Ｕを書き込むことができる。つまり、本実施の形態にかかるマイクロコンピュータでは、ユーザはメモリ２１のユーザ領域２３の任意のアドレス（ＩＤ_Ｕアドレス）にライセンスＩＤ_Ｕを書き込むことができる。
【００５１】
非公開領域２２には、ライセンスＩＤ_Ｕに対応するライセンスＩＤ_Ｓ（第２の識別情報）が、非公開領域２２の所定のアドレスに対応づけて書き込まれている。ここで、ライセンスＩＤ_ＳはライセンスＩＤ_Ｕと同一の値である。また、非公開領域２２には、ライセンスＩＤ_Ｕが格納されているユーザ領域２３のアドレス（ＩＤ_Ｕアドレス）が書き込まれている。例えば、マイクロコンピュータのベンダーは、ユーザから開示されたライセンスＩＤ_Ｕと同一の値（ライセンスＩＤ_Ｓ）、およびユーザから開示されたＩＤ_Ｕアドレスを出荷時に非公開領域２２に書き込む。
【００５２】
シーケンサ２４は、リセット解除後ユーザプログラムが実行される前に次の様なセットアップ動作を実行する。つまり、メモリ２１の非公開領域２２に格納されているＩＤ_ＵアドレスをＩＤ_Ｕアドレス格納レジスタ２５に書き込む動作、メモリ２１の非公開領域２２に格納されているライセンスＩＤ_ＳをＩＤ_Ｓ格納レジスタ７に書き込む動作、およびメモリ２１のユーザ領域２３に格納されているライセンスＩＤ_ＵをＩＤ_Ｕ格納レジスタ８に書き込む動作を実行する。シーケンサ２４は、アドレスバス５を介して、メモリ２１、ＩＤ_Ｕアドレス格納レジスタ２５、およびＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８にアドレス信号ＡＤを出力する。また、シーケンサ２４は、メモリ２１にリード信号ＲＤを出力し、ＩＤ_Ｕアドレス格納レジスタ２５にライト信号ＷＲ_Ａを出力し、ＩＤ_Ｓ格納レジスタ７にライト信号ＷＲ_Ｓを出力し、ＩＤ_Ｕ格納レジスタ８にライト信号ＷＲ_Ｕを出力する。なお、シーケンサ２４は、ライセンスＩＤ_Ｓが格納されているアドレスおよびＩＤ_Ｕアドレスが格納されているアドレスを予め保持することができる。
【００５３】
ＩＤ_Ｕアドレス格納レジスタ２５は、メモリ２１の非公開領域２２に格納されているＩＤ_Ｕアドレスを格納し、シーケンサ２４に出力する。ＩＤ_Ｓ格納レジスタ７は、メモリ２１の非公開領域２２に格納されているライセンスＩＤ_Ｓを格納し、比較部９に出力する。ＩＤ_Ｕ格納レジスタ８は、メモリ２１のユーザ領域２３に格納されているライセンスＩＤ_Ｕを格納し、比較部９に出力する。ここで、ＩＤ_Ｕアドレス格納レジスタ２５およびＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８は、ユーザプログラムがアクセスできないように構成する。また、ＩＤ_Ｕアドレス格納レジスタ２５およびＩＤ_Ｓ格納レジスタ７、ＩＤ_Ｕ格納レジスタ８はセットアップ時以外は書き込みを禁止してもよい。
【００５４】
比較部９、リセット回路１０、およびＣＰＵ（１１）の構成および動作は実施の形態１の場合と同様であるので省略する。
【００５５】
次に、本実施の形態にかかるマイクロコンピュータの動作について説明する。図５は、本実施の形態にかかるマイクロコンピュータの動作を説明するためのフローチャートである。図５に示すフローチャートにおいて、ステップＳ１１およびステップＳ１２は、マイクロコンピュータの製造時における動作を示し、ステップＳ１３〜Ｓ１７は、マイクロコンピュータのセットアップ時における動作を示している。なお、ステップＳ１１およびステップＳ１２はどちらを先に実行してもよい。同様に、ステップＳ１３およびステップＳ１４はどちらを先に実行してもよい。
【００５６】
まず、ユーザは、メモリ２１のユーザ領域２３の任意のアドレス（ＩＤ_Ｕアドレス）にライセンスＩＤ_Ｕをマッピングしたユーザプログラムを作成する。ここで、ライセンスＩＤ_Ｕはユーザによって決定される任意の値である。ライセンスＩＤ_Ｕは、任意のアドレスにマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域３の任意のアドレスにマッピングされる。
【００５７】
マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたユーザプログラムをユーザ領域２３に書き込む（ステップＳ１１）。次に、マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたライセンスＩＤ_Ｕと同一のライセンスＩＤ_Ｓ、およびアドレス（ＩＤ_Ｕアドレス）をメモリ２１の非公開領域２２に書き込む（ステップＳ１２）。なお、ユーザプログラムは、マイクロコンピュータの製造後、ユーザがユーザ領域２３に書き込んでもよい。
【００５８】
次に、マイクロコンピュータのセットアップ時に、シーケンサ２４は、メモリ２１の非公開領域２２に格納されているライセンスＩＤ_Ｓを読み出し、ＩＤ_Ｓ格納レジスタ７に格納する（ステップＳ１３）。また、シーケンサ２４は、メモリ２１の非公開領域２２に格納されているＩＤ_Ｕアドレスを読み出し、ＩＤ_Ｕアドレス格納レジスタ２５に格納する。そして、シーケンサ２４は、ＩＤ_Ｕアドレス格納レジスタ２５に格納されているＩＤ_Ｕアドレス（ＡＤ_ＩＤ_Ｕ）を用いて、メモリ２１のユーザ領域２３に格納されているライセンスＩＤ_Ｕを読み出し、ＩＤ_Ｕ格納レジスタ８に格納する（ステップＳ１４）。
【００５９】
なお、図５のステップＳ１３およびステップＳ１４の動作は、図３で説明した実施の形態１にかかるマイクロコンピュータのステップＳ３およびステップＳ４の動作と基本的に同様である。ここで、メモリ１からＩＤ_Ｕアドレスを読み出し、ＩＤ_Ｕアドレス格納レジスタ２５に格納する動作は、メモリ１からライセンスＩＤ_Ｓを読み出し、ＩＤ_Ｓ格納レジスタ７に格納する動作と同様である。また、シーケンサ２４は、ライセンスＩＤ_ＵのリードアドレスＡＤ_Ｕ_ＲＤをＩＤ_Ｕアドレス格納レジスタ２５から取得しており、リードアドレスＡＤ_Ｕ_ＲＤはＩＤ_Ｕアドレス格納レジスタ２５から出力されるアドレスＡＤ_ＩＤ_Ｕに対応している。
【００６０】
次に、比較部９において、ＩＤ_Ｓ格納レジスタ７に格納されているライセンスＩＤ_Ｓと、ＩＤ_Ｕ格納レジスタ８に格納されているライセンスＩＤ_Ｕとが比較される（ステップＳ１５）。そして、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが一致する場合（ステップＳ１５：ＹＥＳ）、比較部９はリセット回路１０のＡＮＤ１にハイレベルの信号を出力する（ライセンス認証成功：ステップＳ１６）。このとき、信号ＲＥＳＥＴ_Ｚ_ＩＮがハイレベルである場合、ＡＮＤ１はハイレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力するので、ＣＰＵ（１１）は通常動作をする。
【００６１】
一方、ライセンスＩＤ_ＳとライセンスＩＤ_Ｕとが一致しない場合（ステップＳ１５：ＮＯ）、比較部９はリセット回路１０のＡＮＤ１にロウレベルの信号を出力する（エラー処理：ステップＳ１７）。この場合、ＡＮＤ１はロウレベルのリセット信号ＲＥＳＥＴ_Ｚ_ＯＵＴを出力するので、ＣＰＵ（１１）はリセットされる（つまり、ＣＰＵ（１１）は動作しない）。
【００６２】
以上で説明した本実施の形態にかかる発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。特に、本実施の形態にかかるマイクロコンピュータでは、メモリ２１のユーザ領域２３の任意のアドレス（ＩＤ_Ｕアドレス）にライセンスＩＤ_Ｕを書き込むことができ、また、ＩＤ_Ｕアドレスを非公開領域に格納しているので、ライセンスＩＤ_Ｕの解析を更に困難にすることができる。
【００６３】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【００６４】
１、２１  メモリ
２、２２  非公開領域
３、２３  ユーザ領域
４、２４  シーケンサ
５  アドレスバス
６  データバス
７  ＩＤ_Ｓ格納レジスタ
８  ＩＤ_Ｕ格納レジスタ
９  比較部
１０  リセット回路
１１  ＣＰＵ
２５  ＩＤ_Ｕアドレス格納レジスタ
【図１】
2013073472.tif 000003
【図２】
2013073472.tif 000004
【図３】
2013073472.tif 000005
【図４】
2013073472.tif 000006
【図５】
2013073472.tif 000007
【図６】
2013073472.tif 000008