説明

マイクロコンピュータ

【課題】ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することである。
【解決手段】本発明にかかるマイクロコンピュータは、メモリ1、ID_S格納レジスタ7、ID_U格納レジスタ8、比較部9、およびプロセッサ11を備える。メモリ1のユーザ領域3は、ユーザのアクセスが許可されている領域であり、ユーザプログラムおよびユーザ固有の識別情報であるライセンスID_Uが格納されている。メモリ1の非公開領域2は、ユーザのアクセスが禁止されている領域であり、ライセンスID_Uに対応するライセンスID_Sが格納されている。ID_S格納レジスタ7、ID_U格納レジスタ8にはそれぞれ、メモリ1に格納されているライセンスID_S、ID_Uが格納される。プロセッサ11は、比較部9においてライセンスID_SとライセンスID_Uとが同一であると判断された場合にユーザプログラムを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はマイクロコンピュータに関し、特にライセンス認証機能を備えるマイクロコンピュータに関する。
【背景技術】
【0002】
近年、マイクロコンピュータは家電製品、自動車、通信機器など様々な分野で使用されている。マイクロコンピュータにはフラッシュメモリ等の不揮発性メモリが搭載されており、用途に応じたプログラム(以下、ユーザプログラムという)をこの不揮発性メモリに書き込むことで、特定の製品に応じた機能を提供することができる。この場合、例えば、特定の製品を提供するユーザ(正規のユーザ。つまり、マイクロコンピュータを用いた製品を製造するメーカー等)が、マイクロコンピュータのベンダーからマイクロコンピュータを入手する。そして、このマイクロコンピュータに特定の製品に応じたユーザプログラムを書き込み、このマイクロコンピュータを含む製品をエンドユーザに提供することができる。
【0003】
このとき、例えば、正規のユーザと異なる第三者は、正規のユーザのユーザプログラムを不正に入手し、このユーザプログラムをマイクロコンピュータに書き込むことで、正規のユーザのユーザプログラムをコピーして使用することができてしまう。プログラムの盗用は著作権法上、認められていない。また、正規のユーザはユーザプログラムを開発するのに多大な時間・労力・コストを費やしており、安易な盗用を防ぐことが求められている。
【0004】
特許文献1には、このようなソフトウェアの盗用を防止するための技術が開示されている。図6は、特許文献1に開示されているマイクロプロセッサを示すブロック図である。図6に示すマイクロプロセッサは、制御ユニット101、命令デコーダ102、PROM(Programmable Read Only Memory)103、レジスタ104、演算装置(ALU)105、内部制御バス106、およびアドレス/データバス107を有する。
【0005】
図6に示すマイクロプロセッサでは、外部からアドレス/データバス107を介して入力された命令を命令デコーダ102が解読し、制御ユニット101に転送する。制御ユニット101は、命令デコーダ102から転送された命令に従い、内部制御バス106を介して各部に制御信号を送出する。演算装置105は、制御ユニット101から出力された制御信号に応じて、レジスタ104のデータを演算処理し、アドレス/データバス107を通じて演算結果を外部に出力する。
【0006】
図6に示すマイクロプロセッサでは、レジスタ104に隣接してPROM(103)が形成されている。PROM(103)には、出荷時に個別の自己識別情報(ID情報)が書き込まれる。よって、PROM(103)に書き込まれている自己識別情報を読み出すことで、マイクロプロセッサを特定することができる。
【0007】
また、図6に示すマイクロプロセッサで用いられるソフトウェアは次の様に構成されている。つまり、ソフトウェアの一部に上記の自己識別情報を格納する部分を設け、自己識別情報を読み出し格納する。そして、ソフトウェアを使用する際は、上記のPROM(103)に書かれている自己識別情報とソフトウェアに書き込まれている自己識別情報とを照合し、一致したときにのみ正常な処理を行ない、一致しない場合は処理を停止する。
【0008】
このように、特許文献1にかかる技術では、個々のマイクロプロセッサがそれぞれ固有の自己識別情報を記憶手段に記憶している。したがって、ソフトウェアに、この自己識別情報を読み出し照合する命令を組み込むことにより、特定の自己識別情報を有するマイクロプロセッサでしか動作しないソフトウェアを作成することが可能となる。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平2−138622号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
上記で説明したように、特許文献1にかかるマイクロプロセッサでは、マイクロプロセッサの自己識別情報とソフトウェアに書き込まれている自己識別情報とを照合する命令をソフトウェアに組み込むことで、特定の自己識別情報を有するマイクロプロセッサでしか動作しないソフトウェアを作成することが可能となる。
【0011】
しかしながら、特許文献1にかかるマイクロプロセッサでは、ソフトウェアを用いて自己識別情報の照合を実施している。このため、例えばソフトウェアが改竄されて上記の照合処理に対応するプログラムがソフトウェアから削除された場合、特定の自己識別情報を有するマイクロプロセッサ以外でもソフトウェアを動作させることが可能となる。このように、特許文献1にかかる技術では、ライセンス認証が正確に実施されない場合があるという問題があった。
【課題を解決するための手段】
【0012】
本発明にかかるマイクロコンピュータは、ユーザ固有の識別情報である第1の識別情報およびユーザプログラムが格納され、ユーザのアクセスが許可されているユーザ領域と、前記第1の識別情報に対応する第2の識別情報が格納され、ユーザのアクセスが禁止されている非公開領域と、を備えるメモリと、前記第1の識別情報を格納可能な第1のレジスタと、前記第2の識別情報を格納可能な第2のレジスタと、前記第1のレジスタに格納されている第1の識別情報と前記第2のレジスタに格納されている第2の識別情報とを比較する比較部と、前記メモリに格納されているユーザプログラムを実行するプロセッサと、を備え、前記プロセッサは、前記比較部において前記第1の識別情報と第2の識別情報とが同一であると判断された場合に前記ユーザプログラムを実行する、マイクロコンピュータである。
【0013】
本発明にかかるマイクロコンピュータでは、ユーザのアクセスが禁止されている非公開領域に、ユーザ領域に書き込まれた第1の識別情報に対応する第2の識別情報が書き込まれている。そして、ユーザ領域に格納されている第1の識別情報を第1のレジスタに格納し、非公開領域に格納されている第2の識別情報を第2のレジスタに格納し、これらの識別情報が同一であると判断された場合に、プロセッサがユーザプログラムを実行している。このように、本発明にかかるマイクロコンピュータでは、第1および第2のレジスタ(つまり、ハードウェア)にそれぞれ格納された第1および第2の識別情報を用いてライセンス認証を実施しているので、ユーザプログラムが改竄されたとしても、ライセンス認証を正確に実施することができる。
【発明の効果】
【0014】
本発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。
【図面の簡単な説明】
【0015】
【図1】実施の形態1にかかるマイクロコンピュータを示すブロック図である。
【図2】実施の形態1にかかるマイクロコンピュータの動作を示すフローチャートである。
【図3】図2のステップS3およびステップS4の動作の詳細を説明するためのタイミングチャートである。
【図4】実施の形態2にかかるマイクロコンピュータを示すブロック図である。
【図5】実施の形態2にかかるマイクロコンピュータの動作を示すフローチャートである。
【図6】特許文献1に開示されているマイクロプロセッサを示すブロック図である。
【発明を実施するための形態】
【0016】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明の実施の形態1にかかるマイクロコンピュータを示すブロック図である。図1に示すマイクロコンピュータは、非公開領域2とユーザ領域3とを備えるメモリ1、シーケンサ4、アドレスバス5、データバス6、ID_S格納レジスタ7、ID_U格納レジスタ8、比較部9、リセット回路10、およびCPU(11)を有する。
【0017】
メモリ1は、例えばフラッシュメモリ等の不揮発性メモリである。メモリ1は、非公開領域2とユーザ領域3とを有する。非公開領域2は、ユーザのアクセスが禁止されている領域である。ここで、ユーザとはマイクロコンピュータを用いた製品を製造するメーカー等である。非公開領域2には、例えばマイクロコンピュータのベンダーがアクセスすることができる。ユーザ領域3は、ユーザのアクセスが許可されている領域である。
【0018】
また、ユーザ領域3には、ユーザ固有の識別情報であるライセンスID_U(第1の識別情報)が、ユーザ領域3の所定のアドレスに対応づけて書き込まれている。例えば、ユーザ領域3の所定のアドレスにライセンスID_Uをマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域3の所定のアドレスにライセンスID_Uを書き込むことができる。
【0019】
非公開領域2には、ライセンスID_Uに対応するライセンスID_S(第2の識別情報)が、非公開領域2の所定のアドレスに対応づけて書き込まれている。ここで、ライセンスID_SはライセンスID_Uと同一の値である。例えば、マイクロコンピュータのベンダーは、ユーザから開示されたライセンスID_Uと同一の値を出荷時にライセンスID_Sとして非公開領域2に書き込む。
【0020】
シーケンサ4は、リセット解除後ユーザプログラムが実行される前に次の様なセットアップ動作を実行する。つまり、メモリ1の非公開領域2に格納されているライセンスID_SをID_S格納レジスタ(第2のレジスタ)7に書き込む動作、およびメモリ1のユーザ領域3に格納されているライセンスID_UをID_U格納レジスタ(第1のレジスタ)8に書き込む動作を実行する。シーケンサ4は、アドレスバス5を介して、メモリ1およびID_S格納レジスタ7、ID_U格納レジスタ8にアドレス信号ADを出力する。また、シーケンサ4は、メモリ1にリード信号RDを出力し、ID_S格納レジスタ7にライト信号WR_Sを出力し、ID_U格納レジスタ8にライト信号WR_Uを出力する。なお、シーケンサ4は、ライセンスID_Sが格納されているアドレスおよびライセンスID_Uが格納されているアドレスを予め保持することができる。
【0021】
ID_S格納レジスタ7は、メモリ1の非公開領域2に格納されているライセンスID_Sを格納し、比較部9に出力する。ID_U格納レジスタ8は、メモリ1のユーザ領域3に格納されているライセンスID_Uを格納し、比較部9に出力する。ここで、ID_S格納レジスタ7、ID_U格納レジスタ8は、ユーザプログラムがアクセスできないように構成する。また、ID_S格納レジスタ7、ID_U格納レジスタ8はセットアップ時以外は書き込みを禁止してもよい。
【0022】
比較部9は、ID_S格納レジスタ7から出力されたライセンスID_Sと、ID_U格納レジスタ8から出力されたライセンスID_Uとを比較し、これらの比較結果をリセット回路10に出力する。例えば、比較部9は、ライセンスID_SとライセンスID_Uとが一致する場合、リセット回路10のAND1の入力にハイレベルの信号を出力する。一方、比較部9は、ライセンスID_SとライセンスID_Uとが不一致の場合、リセット回路10のAND1の入力にロウレベルの信号を出力する。
【0023】
リセット回路10は、CPU(11)をリセットするための回路である。リセット回路10は、AND1を備える。AND1の一方の入力には信号RESET_Z_INが供給され、他方の入力には比較部9の出力が供給され、これらの演算結果(論理積)がリセット信号RESET_Z_OUTとして出力される。図1に示すマイクロコンピュータでは、例えばリセット信号RESET_Z_OUTがハイレベルの場合にCPU(11)は通常動作をし、リセット信号RESET_Z_OUTがロウレベルの場合にCPU(11)がリセットされる(つまり、動作しない)。
【0024】
すなわち、信号RESET_Z_INがハイレベルであり、比較部9の出力がハイレベルである場合(つまり、ライセンスID_SとライセンスID_Uとが一致する場合)、AND1はハイレベルのリセット信号RESET_Z_OUTを出力する。この場合、CPU(11)は通常動作する。一方、信号RESET_Z_INがロウレベルの場合、AND1は、比較部9の出力がハイレベルであっても、ロウレベルのリセット信号RESET_Z_OUTを出力する。この場合、CPU(11)はリセットされる。また、比較部9の出力がロウレベルの場合(つまり、ライセンスID_SとライセンスID_Uとが不一致の場合)、AND1は、信号RESET_Z_INがハイレベルであっても、ロウレベルのリセット信号RESET_Z_OUTを出力する。この場合、CPU(11)はリセットされる。
【0025】
CPU(プロセッサ)11は、メモリ1に格納されているユーザプログラムを実行する。つまり、CPU(11)は、比較部9においてライセンスID_SとライセンスID_Uとが同一であると判断された場合、メモリ1に格納されているユーザプログラムを実行する。
【0026】
次に、本実施の形態にかかるマイクロコンピュータの動作について説明する。図2は、本実施の形態にかかるマイクロコンピュータの動作を説明するためのフローチャートである。図2に示すフローチャートにおいて、ステップS1およびステップS2は、マイクロコンピュータの製造時における動作を示し、ステップS3〜S7は、マイクロコンピュータのセットアップ時における動作を示している。なお、ステップS1およびステップS2はどちらを先に実行してもよい。同様に、ステップS3およびステップS4はどちらを先に実行してもよい。
【0027】
まず、ユーザは、メモリ1のユーザ領域3の所定のアドレスにライセンスID_Uをマッピングしたユーザプログラムを作成する。ここで、ライセンスID_Uはユーザによって決定される任意の値である。また、例えば、ユーザプログラムの所定のコードをライセンスIDとして用いることで、ソフトウェア上においてライセンスIDが存在しないように見せることができ、第三者による解析を困難にすることができる。ライセンスID_Uは、ユーザ領域3の所定のアドレスにライセンスID_Uをマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域3の所定のアドレスにマッピングされる。
【0028】
マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたユーザプログラムをユーザ領域3に書き込む(ステップS1)。次に、マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたライセンスID_Uと同一のライセンスID_Sをメモリ1の非公開領域2に書き込む(ステップS2)。なお、ユーザプログラムは、マイクロコンピュータの製造後、ユーザがユーザ領域3に書き込んでもよい。
【0029】
次に、マイクロコンピュータのセットアップ時に、シーケンサ4は、メモリ1の非公開領域2に格納されているライセンスID_Sを読み出し、ID_S格納レジスタ7に格納する(ステップS3)。また、シーケンサ4は、メモリ1のユーザ領域3に格納されているライセンスID_Uを読み出し、ID_U格納レジスタ8に格納する(ステップS4)。以下で、ステップS3およびステップS4の動作について詳細に説明する。
【0030】
図3は、図2のステップS3およびステップS4の動作の詳細を説明するためのタイミングチャートである。図3は、シーケンサ4が、メモリ1に格納されているライセンスID_SおよびライセンスID_Uをそれぞれ、ID_S格納レジスタ7およびID_U格納レジスタ8に格納する場合の動作を示している。なお、図3に示すCLKはクロック信号であり、クロック生成回路(不図示)から図1に示すマイクロコンピュータの各構成要素に供給されている。
【0031】
タイミングt1において、シーケンサ4はメモリ1からライセンスID_Sを読み出すために、ハイレベルのリード信号RDをメモリ1に出力する。また、シーケンサ4は、アドレス信号ADとしてリードアドレスAD_S_RDをアドレスバス5に出力する。ここで、リードアドレスAD_S_RDは、ライセンスID_Sが格納されているアドレスである。
【0032】
メモリ1は、タイミングt2において、リードアドレスAD_S_RDに格納されているライセンスID_Sを出力データDATAとしてデータバス6に出力する。また、タイミングt2において、シーケンサ4は、アドレス信号ADとしてID_S格納レジスタ7のライトアドレスAD_S_WRをアドレスバス5に出力する。
【0033】
タイミングt3で、シーケンサ4は、ハイレベルのライト信号WR_SをID_S格納レジスタ7に出力する。ID_S格納レジスタ7は、ライト信号WR_Sがハイレベルとなったので、メモリ1から出力されたライセンスID_Sを、ID_S格納レジスタ7のライトアドレスAD_S_WRに対応するアドレスに格納する。その後、タイミングt4において、シーケンサ4はリード信号RDおよびライト信号WR_Sとしてロウレベルの信号をそれぞれ出力する。これにより、メモリ1からライセンスID_Sを読み出し、ID_S格納レジスタ7に格納する動作が終了する。
【0034】
次に、タイミングt5において、シーケンサ4はメモリ1からライセンスID_Uを読み出すために、ハイレベルのリード信号RDをメモリ1に出力する。また、シーケンサ4は、アドレス信号ADとしてリードアドレスAD_U_RDをアドレスバス5に出力する。ここで、リードアドレスAD_U_RDは、ライセンスID_Uが格納されているアドレスである。
【0035】
メモリ1は、タイミングt6において、リードアドレスAD_U_RDに格納されているライセンスID_Uを出力データDATAとしてデータバス6に出力する。また、タイミングt6において、シーケンサ4は、アドレス信号ADとしてID_U格納レジスタ8のライトアドレスAD_U_WRをアドレスバス5に出力する。
【0036】
タイミングt7で、シーケンサ4は、ハイレベルのライト信号WR_UをID_U格納レジスタ8に出力する。ID_U格納レジスタ8は、ライト信号WR_Uがハイレベルとなったので、メモリ1から出力されたライセンスID_Uを、ID_U格納レジスタ8のライトアドレスAD_U_WRに対応するアドレスに格納する。その後、タイミングt8において、シーケンサ4はリード信号RDおよびライト信号WR_Uとしてロウレベルの信号をそれぞれ出力する。これにより、メモリ1からライセンスID_Uを読み出し、ID_U格納レジスタ8に格納する動作が終了する。
【0037】
以上の動作により、メモリ1の非公開領域2に格納されているライセンスID_SがID_S格納レジスタ7に格納され、メモリ1のユーザ領域3に格納されているライセンスID_UがID_U格納レジスタ8に格納される。
【0038】
次に、比較部9において、ID_S格納レジスタ7に格納されているライセンスID_Sと、ID_U格納レジスタ8に格納されているライセンスID_Uとが比較される(ステップS5)。そして、ライセンスID_SとライセンスID_Uとが一致する場合(ステップS5:YES)、比較部9はリセット回路10のAND1にハイレベルの信号を出力する(ライセンス認証成功:ステップS6)。このとき、信号RESET_Z_INがハイレベルである場合、AND1はハイレベルのリセット信号RESET_Z_OUTを出力するので、CPU(11)は通常動作をする。
【0039】
一方、ライセンスID_SとライセンスID_Uとが一致しない場合(ステップS5:NO)、比較部9はリセット回路10のAND1にロウレベルの信号を出力する(エラー処理:ステップS7)。この場合、AND1はロウレベルのリセット信号RESET_Z_OUTを出力するので、CPU(11)はリセットされる(つまり、CPU(11)は動作しない)。
【0040】
なお、上記エラー処理(ステップS7)として、CPU(11)をリセットする以外に、例えばアドレスバス5およびデータバス6の少なくとも一方を停止状態としてもよく、またエラーフラグを立ててマイクロコンピュータにおける処理を停止するように構成してもよい。
【0041】
以上で説明した本実施の形態にかかる発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。
【0042】
本発明の課題で説明したように、特許文献1にかかるマイクロプロセッサでは、マイクロプロセッサの自己識別情報とソフトウェアに書き込まれている自己識別情報とを照合する命令をソフトウェアに組み込むことで、特定の自己識別情報を有するマイクロプロセッサでしか動作しないソフトウェアを作成することを可能としていた。
【0043】
しかしながら、特許文献1にかかるマイクロプロセッサでは、ソフトウェアを用いて自己識別情報の照合を実施しているため、例えばソフトウェアが改竄されて照合処理に対応するプログラムがソフトウェアから削除された場合、特定の自己識別情報を有するマイクロプロセッサ以外でもソフトウェアを動作させることが可能となるという問題があった。
【0044】
これに対して本実施の形態にかかるマイクロコンピュータでは、ユーザのアクセスが禁止されている非公開領域2に、ユーザ領域3に書き込まれるライセンスID_Uと同一のライセンスID_Sを書き込んでいる。そして、マイクロコンピュータのセットアップ時に、非公開領域2に格納されているライセンスID_SをID_S格納レジスタ7に格納し、ユーザ領域3に格納されているライセンスID_UをID_U格納レジスタ8に格納し、ID_S格納レジスタ7、ID_U格納レジスタ8に格納されているライセンスID_S、ID_Uを比較している。このように、本実施の形態にかかるマイクロコンピュータでは、ライセンスIDの認証処理をハードウェア(ID_S格納レジスタ7、ID_U格納レジスタ8)を用いて実施している。また、ID_S格納レジスタ7、ID_U格納レジスタ8は、ユーザプログラムがアクセスできないように構成されている。よって、ユーザプログラムが改竄されたとしても、誤ってライセンスが認証されることはない。
【0045】
また、ライセンスID_Uを含むユーザプログラムは、ライセンスID_Uと同一のライセンスID_Sが非公開領域2に格納されているマイクロコンピュータでのみ実行することができる。よって、ライセンスID_Uを含むユーザプログラムが、他のマイクロコンピュータ(つまり、ライセンスID_Uと同一のライセンスID_Sが非公開領域2に格納されていないマイクロコンピュータ)で使用されることを防ぐことができる。すなわち、コピーされたユーザプログラムが、他のマイクロコンピュータ(正規品ではないマイクロコンピュータ)で実行されることを防止することができる。
【0046】
以上で説明した本実施の形態にかかる発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。
【0047】
<実施の形態2>
次に、本発明の実施の形態2について説明する。
図4は、本発明の実施の形態2にかかるマイクロコンピュータを示すブロック図である。本実施の形態にかかるマイクロコンピュータは、メモリ21のユーザ領域23に書き込まれているライセンスID_Uのアドレスが非公開領域22に書き込まれる点、このライセンスID_UのアドレスがID_Uアドレス格納レジスタ(第3のレジスタ)25に格納される点、およびシーケンサ24がID_Uアドレス格納レジスタ25に格納されているアドレスを用いてライセンスID_Uを読み出す点が、実施の形態1にかかるマイクロコンピュータと異なる。これ以外は、実施の形態1にかかるマイクロコンピュータと同一であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
【0048】
図4に示すマイクロコンピュータは、非公開領域22とユーザ領域23とを備えるメモリ21、シーケンサ24、アドレスバス5、データバス6、ID_Uアドレス格納レジスタ25、ID_S格納レジスタ7、ID_U格納レジスタ8、比較部9、リセット回路10、およびCPU(11)を有する。
【0049】
メモリ21は、例えばフラッシュメモリ等の不揮発性メモリである。メモリ21は、非公開領域22とユーザ領域23とを有する。非公開領域22は、ユーザのアクセスが禁止されている領域である。ユーザ領域23は、ユーザのアクセスが許可されている領域である。
【0050】
また、ユーザ領域23には、ユーザ固有の識別情報であるライセンスID_U(第1の識別情報)が、ユーザ領域23の任意のアドレスに対応づけて書き込まれている。例えば、ユーザ領域23の任意のアドレスにライセンスID_Uをマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域23の任意のアドレスにライセンスID_Uを書き込むことができる。つまり、本実施の形態にかかるマイクロコンピュータでは、ユーザはメモリ21のユーザ領域23の任意のアドレス(ID_Uアドレス)にライセンスID_Uを書き込むことができる。
【0051】
非公開領域22には、ライセンスID_Uに対応するライセンスID_S(第2の識別情報)が、非公開領域22の所定のアドレスに対応づけて書き込まれている。ここで、ライセンスID_SはライセンスID_Uと同一の値である。また、非公開領域22には、ライセンスID_Uが格納されているユーザ領域23のアドレス(ID_Uアドレス)が書き込まれている。例えば、マイクロコンピュータのベンダーは、ユーザから開示されたライセンスID_Uと同一の値(ライセンスID_S)、およびユーザから開示されたID_Uアドレスを出荷時に非公開領域22に書き込む。
【0052】
シーケンサ24は、リセット解除後ユーザプログラムが実行される前に次の様なセットアップ動作を実行する。つまり、メモリ21の非公開領域22に格納されているID_UアドレスをID_Uアドレス格納レジスタ25に書き込む動作、メモリ21の非公開領域22に格納されているライセンスID_SをID_S格納レジスタ7に書き込む動作、およびメモリ21のユーザ領域23に格納されているライセンスID_UをID_U格納レジスタ8に書き込む動作を実行する。シーケンサ24は、アドレスバス5を介して、メモリ21、ID_Uアドレス格納レジスタ25、およびID_S格納レジスタ7、ID_U格納レジスタ8にアドレス信号ADを出力する。また、シーケンサ24は、メモリ21にリード信号RDを出力し、ID_Uアドレス格納レジスタ25にライト信号WR_Aを出力し、ID_S格納レジスタ7にライト信号WR_Sを出力し、ID_U格納レジスタ8にライト信号WR_Uを出力する。なお、シーケンサ24は、ライセンスID_Sが格納されているアドレスおよびID_Uアドレスが格納されているアドレスを予め保持することができる。
【0053】
ID_Uアドレス格納レジスタ25は、メモリ21の非公開領域22に格納されているID_Uアドレスを格納し、シーケンサ24に出力する。ID_S格納レジスタ7は、メモリ21の非公開領域22に格納されているライセンスID_Sを格納し、比較部9に出力する。ID_U格納レジスタ8は、メモリ21のユーザ領域23に格納されているライセンスID_Uを格納し、比較部9に出力する。ここで、ID_Uアドレス格納レジスタ25およびID_S格納レジスタ7、ID_U格納レジスタ8は、ユーザプログラムがアクセスできないように構成する。また、ID_Uアドレス格納レジスタ25およびID_S格納レジスタ7、ID_U格納レジスタ8はセットアップ時以外は書き込みを禁止してもよい。
【0054】
比較部9、リセット回路10、およびCPU(11)の構成および動作は実施の形態1の場合と同様であるので省略する。
【0055】
次に、本実施の形態にかかるマイクロコンピュータの動作について説明する。図5は、本実施の形態にかかるマイクロコンピュータの動作を説明するためのフローチャートである。図5に示すフローチャートにおいて、ステップS11およびステップS12は、マイクロコンピュータの製造時における動作を示し、ステップS13〜S17は、マイクロコンピュータのセットアップ時における動作を示している。なお、ステップS11およびステップS12はどちらを先に実行してもよい。同様に、ステップS13およびステップS14はどちらを先に実行してもよい。
【0056】
まず、ユーザは、メモリ21のユーザ領域23の任意のアドレス(ID_Uアドレス)にライセンスID_Uをマッピングしたユーザプログラムを作成する。ここで、ライセンスID_Uはユーザによって決定される任意の値である。ライセンスID_Uは、任意のアドレスにマッピングするようにリンクディレクティブファイルを作成してユーザプログラムをビルドすることで、ユーザ領域3の任意のアドレスにマッピングされる。
【0057】
マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたユーザプログラムをユーザ領域23に書き込む(ステップS11)。次に、マイクロコンピュータのベンダーは、マイクロコンピュータの製造時に、ユーザから開示されたライセンスID_Uと同一のライセンスID_S、およびアドレス(ID_Uアドレス)をメモリ21の非公開領域22に書き込む(ステップS12)。なお、ユーザプログラムは、マイクロコンピュータの製造後、ユーザがユーザ領域23に書き込んでもよい。
【0058】
次に、マイクロコンピュータのセットアップ時に、シーケンサ24は、メモリ21の非公開領域22に格納されているライセンスID_Sを読み出し、ID_S格納レジスタ7に格納する(ステップS13)。また、シーケンサ24は、メモリ21の非公開領域22に格納されているID_Uアドレスを読み出し、ID_Uアドレス格納レジスタ25に格納する。そして、シーケンサ24は、ID_Uアドレス格納レジスタ25に格納されているID_Uアドレス(AD_ID_U)を用いて、メモリ21のユーザ領域23に格納されているライセンスID_Uを読み出し、ID_U格納レジスタ8に格納する(ステップS14)。
【0059】
なお、図5のステップS13およびステップS14の動作は、図3で説明した実施の形態1にかかるマイクロコンピュータのステップS3およびステップS4の動作と基本的に同様である。ここで、メモリ1からID_Uアドレスを読み出し、ID_Uアドレス格納レジスタ25に格納する動作は、メモリ1からライセンスID_Sを読み出し、ID_S格納レジスタ7に格納する動作と同様である。また、シーケンサ24は、ライセンスID_UのリードアドレスAD_U_RDをID_Uアドレス格納レジスタ25から取得しており、リードアドレスAD_U_RDはID_Uアドレス格納レジスタ25から出力されるアドレスAD_ID_Uに対応している。
【0060】
次に、比較部9において、ID_S格納レジスタ7に格納されているライセンスID_Sと、ID_U格納レジスタ8に格納されているライセンスID_Uとが比較される(ステップS15)。そして、ライセンスID_SとライセンスID_Uとが一致する場合(ステップS15:YES)、比較部9はリセット回路10のAND1にハイレベルの信号を出力する(ライセンス認証成功:ステップS16)。このとき、信号RESET_Z_INがハイレベルである場合、AND1はハイレベルのリセット信号RESET_Z_OUTを出力するので、CPU(11)は通常動作をする。
【0061】
一方、ライセンスID_SとライセンスID_Uとが一致しない場合(ステップS15:NO)、比較部9はリセット回路10のAND1にロウレベルの信号を出力する(エラー処理:ステップS17)。この場合、AND1はロウレベルのリセット信号RESET_Z_OUTを出力するので、CPU(11)はリセットされる(つまり、CPU(11)は動作しない)。
【0062】
以上で説明した本実施の形態にかかる発明により、ライセンス認証を正確に実施することが可能なマイクロコンピュータを提供することができる。特に、本実施の形態にかかるマイクロコンピュータでは、メモリ21のユーザ領域23の任意のアドレス(ID_Uアドレス)にライセンスID_Uを書き込むことができ、また、ID_Uアドレスを非公開領域に格納しているので、ライセンスID_Uの解析を更に困難にすることができる。
【0063】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【0064】
1、21 メモリ
2、22 非公開領域
3、23 ユーザ領域
4、24 シーケンサ
5 アドレスバス
6 データバス
7 ID_S格納レジスタ
8 ID_U格納レジスタ
9 比較部
10 リセット回路
11 CPU
25 ID_Uアドレス格納レジスタ

【特許請求の範囲】
【請求項1】
ユーザ固有の識別情報である第1の識別情報およびユーザプログラムが格納され、ユーザのアクセスが許可されているユーザ領域と、前記第1の識別情報に対応する第2の識別情報が格納され、ユーザのアクセスが禁止されている非公開領域と、を備えるメモリと、
前記第1の識別情報を格納可能な第1のレジスタと、
前記第2の識別情報を格納可能な第2のレジスタと、
前記第1のレジスタに格納されている第1の識別情報と前記第2のレジスタに格納されている第2の識別情報とを比較する比較部と、
前記メモリに格納されているユーザプログラムを実行するプロセッサと、を備え、
前記プロセッサは、前記比較部において前記第1の識別情報と第2の識別情報とが同一であると判断された場合に前記ユーザプログラムを実行する、
マイクロコンピュータ。
【請求項2】
前記マイクロコンピュータはシーケンサを更に備え、
前記シーケンサは、
前記第1の識別情報が格納されているアドレスを前記メモリに出力し、当該メモリから出力された前記第1の識別情報を前記第1のレジスタに格納し、
前記第2の識別情報が格納されているアドレスを前記メモリに出力し、当該メモリから出力された前記第2の識別情報を前記第2のレジスタに格納する、
請求項1に記載のマイクロコンピュータ。
【請求項3】
前記メモリの前記非公開領域には更に、前記第1の識別情報が格納された場所を示すアドレス情報が格納され、
前記第1の識別情報は前記アドレス情報を用いて読み出される、
請求項1または2に記載のマイクロコンピュータ。
【請求項4】
前記アドレス情報を格納可能な第3のレジスタを更に備え、
前記シーケンサは、
前記アドレス情報が格納されているアドレスを前記メモリに出力し、当該メモリから出力された前記アドレス情報を前記第3のレジスタに格納し、
前記第3のレジスタから出力された前記アドレス情報を前記メモリに出力し、当該メモリから出力された前記第1の識別情報を前記第1のレジスタに格納する、
請求項3に記載のマイクロコンピュータ。
【請求項5】
前記第1の識別情報および前記第2の識別情報が格納された場所を示すアドレス情報は、前記ユーザに前記マイクロコンピュータを提供するベンダーにより書き込まれる、
請求項1乃至4のいずれか一項に記載のマイクロコンピュータ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−73472(P2013−73472A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−212910(P2011−212910)
【出願日】平成23年9月28日(2011.9.28)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】