(57)【要約】【課題】機能制限と機能制限の解除とを高いセキュリティ性で簡単に行えるマイクロコンピュータを提供する。【解決手段】マイクロコンピュータは，CPUと，複数のレジスタと，初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに初期値を設定するハードウエア初期化手段と，所定の機能を実現する処理を実行する機能関数手段と，機能関数の機能制限を解除するための認証情報を有し，前記認証情報に基づいて，複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理を行う機能制限解除手段とを有する。【選択図】図２
2014120118.tif 000002
【特許請求の範囲】
【請求項１】
CPUと，
複数のレジスタと，
初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，
前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化手段と，
所望の機能を実現する処理を実行する機能関数手段と，
前記機能関数手段の機能制限を解除するための認証情報を有し，前記認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理を行う機能制限解除手段とを有することを特徴とするマイクロコンピュータ。
【請求項２】
請求項１において，
前記機能制限解除手段が有する認証情報は，前記認証レジスタのアドレスと前記認証レジスタに対応する前記認証データを有し，
前記ハードウエア初期化手段は，前記ハードウエア初期化データに前記認証レジスタのアドレスと前記認証データとが含まれている場合に，前記認証レジスタに前記認証データを初期値として設定することを特徴とするマイクロコンピュータ。
【請求項３】
請求項１において，
さらに，前記機能関数手段を呼び出すアプリケーション手段を有し，
前記ハードウエア初期化手段が前記レジスタに初期値を設定する処理をした後に，前記アプリケーション手段が前記機能関数手段を呼び出す前に，前記機能制限解除手段が前記機能制限解除処理を実行することを特徴とするマイクロコンピュータ。
【請求項４】
前記機能制限解除手段は，前記認証レジスタ内の認証データが正しい場合に，前記機能関数手段の許可フラグを許可状態にして前記機能関数手段を実行可能状態にし，
前記機能関数手段は，前記アプリケーション手段によって呼び出されたときに，前記許可フラグが許可状態か否かを判定し，許可状態の場合に前記所望の機能を実現する処理を実行し，許可状態でない場合には前記所望の機能を実現する処理を実行しないことを特徴とするマイクロコンピュータ。
【請求項５】
CPUと，複数のレジスタと，初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化手段と，所望の機能を実現する処理を実行する機能関数手段とを有するマイクロコンピュータにより実行可能なミドルウエアのプログラムであって，
前記ミドルエウアのプログラムは，前記機能関数手段の機能制限を解除するための認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理を行うことを特徴とするミドルウエアのプログラム。
【請求項６】
請求項５において，
前記認証情報は，前記認証レジスタのアドレスと前記認証レジスタに対応する前記認証データを有し，
前記ハードウエア初期化手段は，前記ハードウエア初期化データに前記認証レジスタのアドレスと前記認証データとが含まれている場合に，前記認証レジスタに前記認証データを初期値として設定することを特徴とするミドルウエアのプログラム。
【請求項７】
CPUと，複数のレジスタと，初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，所望の機能を実現する処理を実行する機能関数手段とを有するマイクロコンピュータの動作方法であって，
前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化工程と，
前記ハードウエア初期化工程の後に，前記機能関数手段の機能制限を解除するための認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理工程とを有することを特徴とするマイクロコンピュータの動作方法。
【請求項８】
請求項７において，
前記認証情報は，前記認証レジスタのアドレスと前記認証レジスタに対応する前記認証データを有し，
前記ハードウエア初期化工程では，前記ハードウエア初期化データに前記認証レジスタのアドレスと前記認証データとが含まれている場合に，前記認証レジスタに前記認証データを初期値として設定することを特徴とするマイクロコンピュータの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，マイクロコンピュータ，そのミドルウエア及びマイクロコンピュータの動作方法に関する。
【背景技術】
【０００２】
マイクロコンピュータでは，CPUが，内蔵ROMに組み込まれたプログラムを実行して所望の機能を実現する。マイクロコンピュータは，プログラムが組み込まれたROMに加えて，CPU，RAM，入出力部（I/O）を有し，さらに，いくつかのハードウエアモジュールを有する。
【０００３】
マイクロコンピュータには，様々な機能が設けられており，マイクロコンピュータのユーザはこれらの機能を利用して所望の処理を実現する。たとえば，ユーザが開発するアプリケーションプログラムは，所望の機能を実現する機能関数を呼び出して実行することで，所望の機能を利用する。
【０００４】
一方，マイクロコンピュータの開発環境では，マイクロコンピュータのベンダが供給するOSやミドルウエアなどと共に，ユーザが開発するアプリケーションプログラムを，評価用マイクロコンピュータチップ内のメモリに書き込み，マイクロコンピュータに開発中のアプリケーションプログラムを実行させる。
【０００５】
このような開発環境において，ベンダは，しばしば，マイクロコンピュータの一部の機能を利用できないように機能制限して，ユーザに前述の機能関数などを有するライブラリと評価用マイクロコンピュータチップを提供する。たとえば，ベンダは，ライブラリ内の一部の機能関数を使用できないようにすることで機能制限する。そして，ユーザはそのような機能制限された評価環境で開発中のアプリケーションを実行して，マイクロコンピュータとライブラリの評価を行う。その後，ユーザがベンダとライセンス契約を締結した場合は，ベンダは機能制限を解除して，ユーザが全ての機能を利用できるようにする。
【０００６】
LSIの暗号化されたプログラムについて，特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４?１６４４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら，ベンダは，機能制限したライブラリをユーザに提供した後，ライセンス契約締結後に機能制限していないライブラリをユーザに提供すると，ベンダは２種類にライブラリをユーザに提供しなければならず，ライブラリの種類が増大する。また，ユーザも機能制限していないライブラリに置き換える必要がある。
【０００９】
そこで，本発明の目的は，機能制限と機能制限の解除とを高いセキュリティ性で簡単に行えるマイクロコンピュータ，そのミドルウエアのプログラム及びマイクロコンピュータの動作方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施の形態のマイクロコンピュータの第１の側面によれば，
CPUと，
複数のレジスタと，
初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，
前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化手段と，
所定の機能を実現する処理を実行する機能関数手段と，
前記機能関数の機能制限を解除するための認証情報を有し，前記認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理を行う機能制限解除手段とを有する。
【発明の効果】
【００１１】
本実施の形態によれば，マイクロコンピュータの機能制限と機能制限の解除とを高いセキュリティ性で簡単に行える。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態におけるマイクロコンピュータの評価から量産までを示すフローチャート図である。
【図２】本実施の形態におけるマイクロコンピュータの構成図である。
【図３】本実施の形態におけるブートローダとソフトウエアとデータを示す図である。
【図４】本実施の形態におけるアプリケーションプログラム１２１の構成例を示す図である。
【図５】本実施の形態におけるミドルウエアの構成例を示す図である。
【図６】ユーザシステムの一部の処理を示すフローチャート図である。
【図７】ブートローダ１１による処理を示すフローチャート図である。
【図８】ハードウエアのレジスタ群とハードウエア初期化処理とを示す図である。
【図９】本実施の形態における機能制限解除処理のフローチャート図である。
【図１０】本実施の形態におけるマイクロコンピュータの評価環境を説明する図である。
【図１１】本実施の形態におけるマイクロコンピュータの量産チップを説明する図である。
【発明を実施するための形態】
【００１３】
図１は，本実施の形態におけるマイクロコンピュータの評価から量産までを示すフローチャート図である。工程S1,S2がマイクロコンピュータの評価段階を，工程S3,S4,S5がマイクロコンピュータの量産までの段階をそれぞれ示す。評価段階では，ベンダは，ユーザに一部の機能を制限したライブラリを提供する（S1）。ここで，ライブラリとはOSとアプリケーションの間にあるミドルウエアである。また，ライブラリには，ミドルウエアの為のデータなども含まれる。
【００１４】
マイクロコンピュータは，CPUとROM,RAMなどの記録媒体を有し，これらの記録媒体内にOSとミドルウエアとアプリケーションプログラム（以下単にアプリケーション）とデータを格納し，アプリケーションをCPUに実行させることで，様々な機能を利用して所望の処理を実現する。一般にアプリケーションは，ミドルエウア内の様々な機能に対応する機能関数を呼び出し，呼び出された機能関数が実行されることで，対応する機能を実現する。
【００１５】
したがって，一部の機能を制限したミドルウエア（ライブラリ）とは，一部の機能関数を実行不能状態にしたミドルウエアである。
【００１６】
ユーザは，評価環境でアプリケーションを開発し，同時にマイクロコンピュータとライブラリを評価する（S2）。評価環境では，評価用のマイクロコンピュータをICE(インサーキットエミュレータ)を介してパソコンなどに接続し，パソコンなどから上記のOSとミドルウエアと開発中のアプリケーションとデータを実行形式で評価用マイクロコンピュータのメモリに格納する。そして，評価用マイクロコンピュータがアプリケーションを実行し，マイクロコンピュータの動作状態をパソコンからモニタするなどして評価する。
【００１７】
マイクロコンピュータの評価の結果が良い場合，ユーザはベンダとライブラリのライセンス契約を締結する（S3）。このライセンス契約により，ユーザはライセンスされた機能を利用できるライブラリを入手可能になり，マイクロコンピュータはライセンスされた機能を利用可能になる。そのように利用可能にするために，ベンダは，ユーザに認証情報としてパスワード（認証データ）などを提供する（S4）。この認証情報は，マイクロコンピュータ内の複数のレジスタのうち予め定められた認証用レジスタのアドレスと，そこに初期設定すべきパスワード（認証データ）とを有する。
【００１８】
一方，マイクロコンピュータを起動した時にブートローダがマイクロコンピュータ内の複数のレジスタに初期値を設定するが，上記の認証用レジスタは，その初期値が設定されるレジスタ以外のレジスタからベンダにより任意に選択される。つまり，認証用レジスタは，アプリケーションを実行するまでは初期値が設定されない或は任意のデータが格納されてもよい一種の余剰レジスタから任意に選択される。
【００１９】
そして，ユーザはベンダから提供されたパスワードを，ハードウエア初期値処理時に認証用レジスタに設定する初期値データとして追加して，マイクロコンピュータを量産化する（S5）。マイクロコンピュータ内の機能制限解除手段は，予め定められた認証レジスタ内に設定されたパスワード（認証データ）が正しいか否かを検証し，正しい場合に，機能を実現する機能関数を実行可能状態にする。
【００２０】
このように本実施の形態では，マイクロコンピュータの種々の機能を利用するためには，その機能に対応する機能関数を実行可能状態にする機能制限解除のための認証情報（認証レジスタのアドレスとパスワード（認証データ））が必要である。したがって，ベンダは，ある機能を制限したい場合は，認証レジスタのアドレスとそこに設定すべきパスワード（認証データ）をユーザには提供しない。それにより，ユーザはその機能を利用することができない。そして，ベンダは，ライセンス契約を締結したユーザにだけ，その認証情報（認証レジスタのアドレスとパスワード（認証データ））を提供する。それにより，そのユーザは，提供された認証情報に基づいて，マイクロコンピュータ内の認証レジスタにパスワードを初期値として設定可能にし，マイクロコンピュータの機能制限された機能関数を実行可能な状態にする。
【００２１】
上記のように，種々の機能に対応する認証レジスタのアドレスとそのパスワードを秘密状態に保つことで，高いセキュリティ状態で機能制限したライブラリをユーザに提供することができる。単に，所定ビットのパスワードを照合することで機能制限するだけでは，悪意のあるユーザはとりうる全ての所定ビットデータを試して機能制限を解除することができる場合がある。それに対して，本実施の形態では，パスワードを設定すべき認証レジスタを多数のレジスタの中から予め任意に選択し，その認証レジスタのアドレスも秘密にしておくので，ユーザにとって認証情報はパスワードに加えて認証レジスタのアドレスになり，その機能制限を解除することは極めて困難になる。
【００２２】
図２は，本実施の形態におけるマイクロコンピュータの構成図である。マイクロコンピュータ１は，ROMなどのメモリ１０と，RAM２０と，CPU３０と，入出力回路３４と，３つのハードウエアモジュール４０?１，２，３とを有し，それらは内部バス３６を介して接続されている。ROM１０内にはブートローダ１１と，ソフトウエア１２と，データ１３とが格納され，マイクロコンピュータの起動時にCPUにより実行されるブートローダ１１により，ソフトウエア１２とデータ１３がRAM２０内に展開される。CPU３０はレジスタ群３１と図示しない演算器とを有する。
【００２３】
一方，ハードウエアモジュール４０?１は，複数のレジスタを有するレジスタ群４１と，そのモジュールに対応するハードウエア回路４２とを有する。他のハードウエアモジュール４０?２，４０?３も同様の構成である。ハードウエアモジュールは，例えば，画像データを処理する画像処理モジュール，外部との通信処理を行う通信モジュール，音声データを処理するオーディオモジュール，セキュリティに関する処理を行うセキュリティモジュールなどである。これらのハードウエアモジュールを組み合わせることで，マイクロコンピュータは，様々な機能を実現する。
【００２４】
ハードウエアモジュールやCPU内のレジスタ群は，複数のレジスタを有し，一部のレジスタにはハードウエア初期化処理の時に初期値が設定される。そして，それらの初期値が設定されるレジスタ以外のレジスタから，パスワードを設定するための認証レジスタが選択されている。この選択は，ベンダによって行われる。この選択された認証レジスタには，図示されるように，パスワードPWが設定される。
【００２５】
図２の例では，各ハードウエアモジュール４０?１，２，３内のレジスタ群４１がそれぞれ４つのレジスタを有する。そして，ハードウエアモジュール４０?１内の１つのレジスタの下位ビット領域と，ハードウエアモジュール４０?２内の１つのレジスタの上位ビット領域とを組み合わせて，１つの認証用レジスタが構成されている。それに対応して，これらのレジスタ領域に１つのパスワードPWが２つに分けて設定される。つまり，これらの２つのパスワードPWを組み合わせることで，認証用の１つのパスワードが構成される。
【００２６】
もちろん，１つの認証レジスタ内にパスワードPWの全てのビットを設定するように選択してもよいし，複数のレジスタの全ビットを利用してパスワードPWを設定するようにしてもよい。
【００２７】
次に，ROM１０内のブートローダ１１と，ソフトウエア１２と，データ１３について説明する。
【００２８】
図３は，本実施の形態におけるブートローダとソフトウエアとデータを示す図である。ブートローダ１１は，マイクロコンピュータを起動した時にROM１０内のソフトウエア１２とデータ１３をRAM２０に展開する処理と，ハードウエアモジュールなどのレジスタに初期値データを設定するハードウエア初期化処理と，ブートローダの全ての処理を完了した後にアプリケーションの先頭番地にジャンプする処理などを有する。
【００２９】
ソフトウエア１２には，主にユーザが開発するアプリケーションプログラム１２１と，ミドルウエア１２２と，OS１２３が含まれる。アプリケーションプログラム１２１の先頭番地にはミドルウエア初期化関数を呼び出す処理１２１ａが設けられている。したがって，ブートローダが全ての処理を完了した後にアプリケーションの先頭番地にジャンプすると，このミドルウエア初期化関数が呼び出される。
【００３０】
ミドルウエア１２２には，ミドルウエアを初期化する初期化関数１２２ａと，ミドルウエアの関数群１２２ｂと，OSの機能を実行するドライバ群１２２ｃなどが含まれる。さらに，本実施の形態では，ミドルウエア初期化関数１２２ａにパスワードＰＷを認証して機能制限を解除する処理が含まれる。ただし，この機能制限解除処理は，必ずしもミドルウエア初期化関数内に含まれる必要はなく，アプリケーションからミドルウエア内の機能制限関数群が呼び出されるまでに行われればよい。
【００３１】
データ１３は，ミドルウエア内のデータ１３１と，ハードウエア内のレジスタの初期値データ１３２とを有する。ミドルウエア内データ１３１は，認証レジスタのアドレスとそこに設定されるパスワードとを含む認証情報を有する。
【００３２】
図３に示した例では，ミドルウエア内のデータ１３１は，認証レジスタアドレスREG-ADDa，REG-ADDbと，そこに設定すべきパスワードPWa，PWbを有する。このミドルウエア内データ１３１に含まれるレジスタアドレスREG-ADDa，REG-ADDbに設定するパスワードPWa, PWbは，マイクロコンピュータのベンダによってミドルウエア１２２と共に提供されるライブラリに含まれる正解データである。そして，ミドルウエア初期化関数１２２ａが機能制限解除処理を行う場合に，このミドルウエア内データ１３１を参照して，認証レジスタ内のパスワードと一致するか否かの検証を行う。
【００３３】
また，ハードウエア初期値データ１３２は，レジスタアドレスREG-ADD1, REG-ADD4に設定するユーザの初期値データD1,D4と，認証レジスタアドレスREG-ADDa, REG-ADDbに設定するパスワードPWa, PWbとを有する。この認証レジスタアドレスREG-ADDa, REG-ADDbと，そこに設定するパスワードPWa, PWbは，機能制限を解除するために必要な情報である。この情報は，例えば，２つの機能それぞれに対するパスワードPWa, PWbと，それを初期設定する認証アドレスREG-ADDa, REG-ADDbである。したがって，ベンダは，機能制限したい場合はこの認証情報をユーザに提供せず，機能制限しない場合はこの認証情報をユーザに提供する。
【００３４】
図４は，本実施の形態におけるアプリケーションプログラム１２１の構成例を示す図である。アプリケーション１２１の先頭番地には，ミドルウエア初期化関数を呼び出す命令１２１ａが記述されている。さらに，アプリケーション１２１は，単数または複数のアプリケーションＡＰＬを有する。例えば，アプリケーションＡＰＬ１は，ミドルウエア内の関数Ａを呼び出す命令と関数Ｂを呼び出す命令１２１ｂを有し，一方，アプリケーションＡＰＬ２は関数Ｃを呼び出す命令と関数Ｄを呼び出す命令１２１ｃを有する。このように，アプリケーション１２１の先頭番地には，各アプリケーションがコールするミドルウエアの関数を初期化する関数を呼び出す命令１２１ａが記述されている。
【００３５】
図５は，本実施の形態におけるミドルウエアの構成例を示す図である。ミドルウエア１２２は，図３で概略説明したとおり，ミドルウエア初期化関数１２２ａと，アプリケーション１２１から呼び出される関数群１２２ｂと，図５中に図示しないＯＳの機能を呼び出すドライバ群とを有する。
【００３６】
ミドルウエア初期化関数１２２ａは，ミドルウエア内データ１３１などミドルウエアの内部変数の領域をRAM２０内に確保し，内部変数の初期値をそこに格納する処理１２２ａ−１と，機能制限の解除処理１２２ａ−２とを有する。マイクロコンピュータの所定の機能を利用するために，アプリケーション１２１はその機能に対応するミドルウエアの関数を呼び出して実行する。したがって，一部または全部の機能を制限するためには，制限対象の機能の関数を実行不能にすればよい。また，機能制限の解除処理は，その機能の関数を実行可能にすればよい。具体的な方法は後で説明する。
【００３７】
関数Ａ（１２２ｂ（Ａ））は，その関数が実行可能か否かをチェックする許可フラグチェック処理１２２ｂ−１と関数Ａの処理１２２ｂ−２とを有する。関数Ｂ（１２２ｂ（Ｂ））も同様である。つまり，関数Ａ，Ｂは，機能制限とその解除が可能な関数の例である。一方，関数Ｅ（１２２ｂ（Ｅ））は，許可フラグチェック処理はなく，その関数Ｅの処理１２２ｂ−２を有する。つまり，関数Ｅは機能制限ができない関数の例である。
【００３８】
ミドルウエアの関数Ａ，Ｂの機能制限を可能にするために，機能制限の解除処理１２２ａ−２は，例えば，認証レジスタに設定されたパスワードPWが，ミドルウエア内のデータ１３１に含まれている正解パスワードPWと一致するか否かをチェックし，一致する場合にその関数の許可フラグを許可状態（ON)にし，不一致の場合に不許可状態（OFF)にする。したがって，機能制限解除処理１２２ａ−２は，機能制限をする処理と機能制限を解除する処理の両方を含む。
【００３９】
一方，図５中の機能制限が可能な関数Ａ，Ｂは，関数Ａ，Ｂの処理１２２ｂ−２の前に，許可フラグチェック処理１２２ｂ−１を有する。したがって，アプリケーションから関数Ａ，Ｂが呼び出された場合は，この許可フラグチェック処理により，ミドルウエア初期化関数１２２ａ内の機能制限解除処理１２２ａ−２で，その関数が実行を許可されたか許可されなかったかをチェックし，不許可状態（許可フラグOFF）の場合はエラーが返されてその関数は実行不能にされ，一方，許可状態（許可フラグON)の場合はその関数は実行される。
【００４０】
図６は，ユーザシステムの一部の処理を示すフローチャート図である。ここでユーザシステムとは，ユーザの開発中または開発済みのアプリケーションとそれに対応する初期値データなどがROM内に格納されたマイクロコンピュータである。したがって，評価工程でのマイクロコンピュータと量産されたマイクロコンピュータの両方を含む。
【００４１】
マイクロコンピュータを起動すると，CPU３０はブートローダ１１を実行する（S11)。ブートローダ１１は，（１）ROM１０内のソフトウエア１２とデータ１３とをRAM２０内にコピーまたは展開し，（２）データ１３内のハードウエア初期値データ１３２とを対応するアドレスのレジスタに設定するハードウエア初期化処理を行い，（３）アプリケーションの先頭番地にジャンプする。
【００４２】
図７は，ブートローダ１１による処理を示すフローチャート図である。上記したとおり，まず，ブートローダは，CPUにより実行されることで，ROM１０内のソフトウエア１２とデータ１３をRAM２０内に展開する（S21)。この場合，ソフトウエア１２とデータ１３はRAM２０内に展開しなくてもよい。そして，ブートローダは，ハードウエアの初期化処理を行う（S22)。このハードウエア初期化処理では，図３に示したハードウエア初期値データ１３２にしたがって，ユーザ初期値D1,D4をレジスタアドレスREG-ADD1, REG-ADD4に設定し，パスワードPWa, PWb を認証レジスタのアドレスREG-ADDa，REG-ADDbにそれぞれ設定する。ハードウエア初期値データ１３２に，パスワードとその認証レジスタのアドレスが含まれていない場合は，ハードウエア初期化処理では，パスワードの認証レジスタ内への設定は行われない。
【００４３】
上記のミドルウエア内のデータ１３１は，機能制限可能な関数全てに対する認証レジスタアドレスとその正解パスワードを有し，ベンダは，全てのユーザに，その全ての認証情報をライブラリの一部として提供する。しかし，提供されるのは実行可能なバイナリデータ（機械語）であるので，ユーザはその認証レジスタのアドレスと正解パスワードを知ることはきわめて困難である。
【００４４】
一方，ベンダは，機能制限を解除することが許されたユーザに，上記のライブラリとは別に，解除対象の関数に対応する正解パスワードとその認証レジスタのアドレスを提供する。ライセンス締結前であれば，機能制限していない関数に対するパスワードとその認証レジスタのアドレスが，ベンダ側からユーザに提供される。また，ライセンス締結後であれば，機能制限していた関数に対するパスワードとその認証レジスタのアドレスが，ベンダ側からユーザに提供される。これにより，ユーザは，ハードウエア初期値データにこの認証レジスタのアドレスとパスワードを含めることができ，その結果，後述する機能制限解除処理によりそれに対応するミドルウエアの関数が実行可能状態になる。
【００４５】
最後に，ブートローダは，アプリケーション１２１の先頭番地へジャンプする処理を行う（S23)。図３，４で説明したとおり，アプリケーション１２１の先頭番地にはミドルウエア初期化関数を呼び出す命令が記述されているので，そのミドルウエア初期化関数がCPUにより実行されることになる。なお，アプリケーション１２１は，通常は，ユーザにより開発されたまたは開発中のプログラムである。
【００４６】
図８は，ハードウエアのレジスタ群とハードウエア初期化処理とを示す図である。図８内の（１）はハードウエアのレジスタ群のレジスタアドレスREG-ADDとそこに格納されるデータDATAの一例を示す。この例では，レジスタアドレスREG-ADDがADD1〜ADD3，ADDa〜ADDdである７つのレジスタが示されている。各レジスタのビット数は例えば３２ビットとする。
【００４７】
そして，レジスタアドレスがADD1〜ADD3のレジスタの全３２ビットの領域は，ハードウエア初期化処理で３２ビットの初期値が設定される初期値設定領域である。一方，レジスタアドレスがADDa，ADDcのレジスタの上位１６ビットの領域は，１６ビットの初期値が設定される初期値設定領域であり，下位１６ビットの領域には初期値は設定されず，または少なくともミドルウエア初期化関数の実行完了までは任意のデータが格納されても良い。同様に，レジスタアドレスADDb，ADDdの全３２ビット領域は，初期値は設定されず，または少なくともミドルウエア初期化関数の実行完了までは任意のデータが格納されても良い。
【００４８】
つまり，レジスタアドレスADDa，ADDcのレジスタの一部領域と，レジスタアドレスADDb，ADDdのレジスタの全領域は，一種の余剰レジスタである。そこで，本実施の形態では，ベンダが，これらの余剰レジスタから任意に選択したデータ領域を認証レジスタとして選択する。そして，ハードウエア初期値データ１３２内に，認証レジスタアドレスとパスワードが含まれている場合は，マイクロコンピュータの起動時のハードウエア初期化処理により，他の通常のレジスタとともに，その認証レジスタにパスワードPWが初期値として設定する。
【００４９】
図８の（２）には，一例として，ハードウエア初期化処理により，ハードウエア初期値データ１３２内のユーザ初期値（たとえば，図３内のデータD1,D4)と，パスワードPW（たとえば，図３内のパスワードPWa，PWb）とが，それらに対応するレジスタアドレスREG-ADDのレジスタに設定された状態が示されている。図８（１）のレジスタのデータ領域内の「任意」と示された余剰レジスタから選択した２つの領域である，アドレスADDaのレジスタの下位１６ビット，アドレスADDbのレジスタの上位１６ビットに，関数Ａに対応するパスワードPWaが,２つに分割されて（PWa，PWb)，それぞれ設定されている。
【００５０】
認証レジスタの領域は，上記以外にも，初期値が設定されない１つのレジスタ内の全ビット領域であってもよく，その場合は，１つのレジスタ内の全ビット領域に１つのパスワードが設定される。さらに，認証レジスタの領域は，１つのレジスタ内の初期値が設定されないビット領域の一部であってもよく，その場合は，複数のレジスタのビット領域に１つのパスワードが分割して設定される。
【００５１】
このように，ベンダが，余剰レジスタ及び余剰レジスタ領域から任意に選択したレジスタ領域を認証レジスタとして選択しておき，機能制限解除を許可されたユーザにだけ認証情報を提供すると，ユーザは，その認証情報（認証レジスタアドレスと認証データ（パスワード））をハードウエア初期値データに含ませることができ，その結果，マイクロコンピュータの起動時に，ブートローダによるハードウエア初期化処理により，その認証レジスタにパスワードが設定される。
【００５２】
上記のように，ハードウエア初期化処理でパスワードが認証レジスタに設定された後，ミドルウエア初期化関数が呼び出されてミドルウエア初期化処理がCPUにより以下のとおり実行される。
【００５３】
図６に戻り，ブートローダからジャンプしてきたアプリケーションの先頭番地にあるミドルウエア初期化関数が呼び出され，CPUにより実行される（S12)。ミドルウエア初期化関数１２２ａは，CPUにより実行されることで，（１）ミドルウエア内のデータ１３１などの内部変数の領域をRAM２０確保し，その内部変数の初期値があればそれをRAM内の領域に設定し，さらに，（２）機能制限解除処理を行う。
【００５４】
図９は，本実施の形態における機能制限解除処理のフローチャート図である。機能制限解除処理は，CPUに実行されることにより，全ての機能制限可能な関数について認証処理を行う。デフォルトは全ての機能制限可能な関数は実行不能状態（OFF)になっているものとする。機能制限解除処理は，CPUに実行されることにより，まず，ROMまたはRAM内のデータ１３のミドルウエア内データ１３１の認証レジスタアドレスREG-ADDa，REG-ADDbとそれに対応する正解パスワードPWa，PWbを参照する（S31)。次に，機能制限解除処理は，認証レジスタREG-ADDa，REG-ADDb内のパスワードPWa，PWbを読み出す（S32)。つまり，機能制限解除処理は，ミドルウエア内のデータ１３１内のベンダが予め選択している認証レジスタのアドレスに基づいて，ハードウエアの認証レジスタに設定されているパスワードを読み出す。そして，機能制限解除処理は，各認証レジスタアドレスに対応するパスワード同士を比較して，パスワードの認証処理を行う（S34)。
【００５５】
そして，機能制限解除処理は，パスワードが一致していれば認証パスとなり(S35のYES)，機能制限解除フラグをONにしてその関数を実行可能状態にし，一致していなければ認証不能となり（S35のNO)，機能制限解除フラグはOFFのままでその関数は実行不能状態のままになる。
【００５６】
機能制限解除処理は，CPUに実行されることにより，上記の認証処理を，全ての機能制限可能な関数に対して完了するまで繰り返す（S36)。
【００５７】
上記の機能制限解除処理により，機能制限を解除する関数についての認証情報（認証アドレスと認証データ（パスワード））がデータ１３内のハードウエア初期値データ１３２内に含まれていれば，その関数は実行可能状態（機能制限解除フラグON)にされ，含まれていなければ実行不能状態（機能制限解除フラグOFF)となる。つまり，認証情報を提供されているユーザのマイクロコンピュータは，提供された認証情報に対応する関数を実行することができ，その関数に対応する機能を利用することができる。
【００５８】
したがって，ベンダは，単に関数の認証情報をユーザに提供するかまたはしないかにより，そのユーザに対して任意の関数の機能を制限したり機能制限を解除したりすることができる。しかも，認証情報にはパスワードに加えて認証レジスタアドレスも含まれるので，セキュリティを高く保つことができる。
【００５９】
再度，図６に戻り，アプリケーションは，CPUにより実行され（S13)，アプリケーション内のミドルウエア関数が呼び出されると（S14)，その関数が機能制限可能な場合は，図５で説明したとおり許可フラグチェック処理が行われる（S15)。前述したミドルウエア初期化関数内の機能制限解除処理で認証パスして機能制限解除フラグがONになっている関数は（S15のYES)，実行可能状態であるので，その関数は実行される（S17)。認証パスしていない関数は（S15のNO)，エラーが返されて，実行されない（S16)。
【００６０】
このようにアプリケーションから呼び出されて所定の機能を実現する関数のうち，機能制限可能な関数は，ハードウエア初期化処理でそのパスワードが認証レジスタに設定されていれば，実行され，設定されていなければ，つまり認証レジスタ内のデータが正しいパスワードでなければ，実行を拒否される。
【００６１】
そして，アプリケーション実行中は，上記の処理S14,S15,S16,S17が繰り返される。
【００６２】
図１０は，本実施の形態におけるマイクロコンピュータの評価環境を説明する図である。評価用のマイクロコンピュータ１は，量産用と同様にROM１０，RAM２０，CPU３０，I/O３４，ハードウエアモジュール４０−１，４０−２，４０−３を有すると共に，インサーキットエミュレータICEとの図示しないインタフェース回路を有する。評価用のマイクロコンピュータ１は，インサーキットエミュレータICEを介してパソコンPCと通信可能に接続される。
【００６３】
ユーザによる評価環境では，ブートローダ１１をPCからICEを介してCPU３０に実行させて，アプリケーション１２１とミドルウエア１２２とOS１２３と，ミドルウエア内のデータ１３１とハードウエア初期値データ１３２とを，パソコンPCからICEを介して，例えばマイクロコンピュータ１内のRAM２０に展開する。ただし，ブートローダ１１が，一部のプログラム１２１，１２２，１２３やデータ１３１，１３２をROM１０から展開させてもよい。つまり，ブートローダ１１もユーザにより開発され，そのブートローダの実行によりユーザの希望するようにマイクロコンピュータ１内のRAMにプログラムやデータが展開される。
【００６４】
このような評価環境において，ベンダは，ユーザに，ミドルウエア１２２とそのデータ１３１とを有するライブラリと，機能制限しない関数の認証情報PWc，PWdと，適切な場合はOS１２３を提供し，ユーザはその提供された認証情報PWc，PWdに基づいて，ハードウエア初期値データ１３２に認証レジスタアドレスとパスワードを含ませる。一方，ベンダは，ユーザに，機能制限する関数の認証情報PWa，PWbは提供しない。その結果，ユーザは，ハードウエア初期値データ１３２にその認証情報PWa，PWbの認証アドレスとパスワードを含ませることができない。したがって，図１０では，ハードウエア初期値データ１３２内には破線で示されるとおり認証情報PWa，PWbは含まれていない。
【００６５】
認証情報PWa，PWbには，認証データであるパスワードに加えて認証レジスタのアドレスも含まれているので，その情報を提供されていないユーザは，多数のレジスタからベンダが任意に選択した認証レジスタを見つけることができず，機能制限を解除することはきわめて困難である。
【００６６】
図１１は，本実施の形態におけるマイクロコンピュータの量産チップを説明する図である。量産用のマイクロコンピュータ１は，図２で説明したとおり，ROM１０，RAM２０，CPU３０，I/O３４，ハードウエアモジュール４０−１，４０−２，４０−３を有する。そして，ベンダは，ライセンス契約を締結したユーザに，評価時には機能制限されていた関数の認証情報PWa，PWbを提供する。その結果，ユーザは，提供された認証情報（認証アドレスと認証データ（パスワード））に基づいて，ハードウエア初期値データ１３２内に認証情報PWa，PWbを含めることができる。
【００６７】
そして，ユーザは，評価時にすでにベンダから提供されていたミドルウエア１２２とそのデータ１３１とに加えて，OSと，開発済みのアプリケーション１２１と，ブートローダ１１と，新たに提供された認証情報PWa，PWbを有するハードウエア初期値データ１３２を，量産チップ１のROM１０に格納する。
【００６８】
したがって，量産化されたマイクロコンピュータ１は，機能制限を解除された関数を実行することができ，それに対応する機能を使用することができる。
【００６９】
以上のとおり，本実施の形態によれば，ベンダは，ユーザに対してミドルウエアとそのデータを含むライブラリを提供し，制限したい関数の認証情報は提供しない。これにより，ユーザは一部の機能を制限された状態でマイクロコンピュータとライブラリを評価する。そして，ライセンス契約を締結したユーザに対して，その機能制限を解除するための認証情報を提供する。これにより，そのユーザに対して機能制限を解除することができる。しかも，認証情報は，単に機能制限を解除するためのパスワードだけでなく，そのパスワードを設定すべき認証レジスタのアドレスも含まれるので，ユーザは機能制限を解除することがきわめて困難であり，高いセキュリティ性を保つことができる。
【００７０】
以上の実施の形態をまとめると，以下の付記のとおりである。
【００７１】
（付記１）
CPUと，
複数のレジスタと，
初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，
前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化手段と，
所望の機能を実現する処理を実行する機能関数手段と，
前記機能関数手段の機能制限を解除するための認証情報を有し，前記認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理を行う機能制限解除手段とを有することを特徴とするマイクロコンピュータ。
【００７２】
（付記２）
付記１において，
前記機能制限解除手段が有する認証情報は，前記認証レジスタのアドレスと前記認証レジスタに対応する前記認証データを有し，
前記ハードウエア初期化手段は，前記ハードウエア初期化データに前記認証レジスタのアドレスと前記認証データとが含まれている場合に，前記認証レジスタに前記認証データを初期値として設定することを特徴とするマイクロコンピュータ。
【００７３】
（付記３）
付記１において，
さらに，前記機能関数手段を呼び出すアプリケーション手段を有し，
前記ハードウエア初期化手段が前記レジスタに初期値を設定する処理をした後に，前記アプリケーション手段が前記機能関数手段を呼び出す前に，前記機能制限解除手段が前記機能制限解除処理を実行することを特徴とするマイクロコンピュータ。
【００７４】
（付記４）
前記機能制限解除手段は，前記認証レジスタ内の認証データが正しい場合に，前記機能関数手段の許可フラグを許可状態にして前記機能関数手段を実行可能状態にし，
前記機能関数手段は，前記アプリケーション手段によって呼び出されたときに，前記許可フラグが許可状態か否かを判定し，許可状態の場合に前記所望の機能を実現する処理を実行し，許可状態でない場合には前記所望の機能を実現する処理を実行しないことを特徴とするマイクロコンピュータ。
【００７５】
（付記５）
CPUと，複数のレジスタと，初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化手段と，所望の機能を実現する処理を実行する機能関数手段とを有するマイクロコンピュータにより実行可能なミドルウエアのプログラムであって，
前記ミドルエウアのプログラムは，前記機能関数手段の機能制限を解除するための認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理を行うことを特徴とするミドルウエアのプログラム。
【００７６】
（付記６）
付記５において，
前記認証情報は，前記認証レジスタのアドレスと前記認証レジスタに対応する前記認証データを有し，
前記ハードウエア初期化手段は，前記ハードウエア初期化データに前記認証レジスタのアドレスと前記認証データとが含まれている場合に，前記認証レジスタに前記認証データを初期値として設定することを特徴とするミドルウエアのプログラム。
【００７７】
（付記７）
付記５において，
さらに，前記マイクロコンピュータは，前記機能関数手段を呼び出すアプリケーション手段を有し，
前記ミドルウエアのプログラムは，前記ハードウエア初期化手段が前記レジスタに初期値を設定する処理をした後に，前記アプリケーション手段が前記機能関数手段を呼び出す前に，前記機能制限解除処理を実行することを特徴とするミドルウエアのプログラム。
【００７８】
（付記８）
CPUと，複数のレジスタと，初期値と当該初期値を設定すべきレジスタアドレスとを有するハードウエア初期化データを格納する記録媒体と，所望の機能を実現する処理を実行する機能関数手段とを有するマイクロコンピュータの動作方法であって，
前記ハードウエア初期化データに基づいて前記レジスタアドレスのレジスタに前記初期値を設定するハードウエア初期化工程と，
前記ハードウエア初期化工程の後に，前記機能関数手段の機能制限を解除するための認証情報に基づいて，前記複数のレジスタから予め選択された認証レジスタ内の認証データが正しいか否かを判断し，正しい場合に前記認証情報に対応する機能関数手段を実行可能状態にする機能制限解除処理工程とを有することを特徴とするマイクロコンピュータの動作方法。
【００７９】
（付記９）
付記８において，
前記認証情報は，前記認証レジスタのアドレスと前記認証レジスタに対応する前記認証データを有し，
前記ハードウエア初期化工程では，前記ハードウエア初期化データに前記認証レジスタのアドレスと前記認証データとが含まれている場合に，前記認証レジスタに前記認証データを初期値として設定することを特徴とするマイクロコンピュータの動作方法。
【００８０】
（付記１０）
付記８において，
さらに，前記マイクロコンピュータは，前記機能関数手段を呼び出すアプリケーション手段を有し，
前記機能制限解除処理工程は，前記ハードウエア初期化手段が前記レジスタに初期値を設定する処理をした後に，前記アプリケーション手段が前記機能関数手段を呼び出す前に実行されることを特徴とするマイクロコンピュータの動作方法。
【符号の説明】
【００８１】
１０：ROM
２０：RAM
３０：CPU
４０：ハードウエアモジュール
４１：レジスタ群
PW:認証データ
【図１】
2014120118.tif 000003
【図２】
2014120118.tif 000004
【図３】
2014120118.tif 000005
【図４】
2014120118.tif 000006
【図５】
2014120118.tif 000007
【図６】
2014120118.tif 000008
【図７】
2014120118.tif 000009
【図８】
2014120118.tif 000010
【図９】
2014120118.tif 000011
【図１０】
2014120118.tif 000012
【図１１】
2014120118.tif 000013