(57)【要約】【課題】ソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限する。【解決手段】ソフトウェア開発装置（１０）は、ホストシステム（１１）と、エミュレータ（１３）とを含む。上記エミュレータは、デバッグ用マイクロコンピュータ（２１１）と、上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路（２２１）とを含む。上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路（２２２）を設け、ソフトウェアの動的プログラム解析を困難にする。【選択図】図１
2011165038.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムと、
上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータと、を含み、
上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータと、
上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路と、を含むソフトウェア開発装置であって、
上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を含むことを特徴とするソフトウェア開発装置。
【請求項２】
上記デバッグ用マイクロコンピュータは、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報が設定される実行ソフトＩＤ設定レジスタを含み、
上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのＩＤ情報が設定された秘匿ＩＤ設定レジスタと、
上記実行ソフトＩＤ設定レジスタの出力情報と、上記秘匿ＩＤ設定レジスタの出力情報とが一致するか否かを判別する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項1記載のソフトウェア開発装置。
【請求項３】
上記ホストシステムは、ソースファイルをコンパイル又はアセンブルすることで、オブジェクトファイルを形成するオブジェクトファイル生成機能と、
上記オブジェクトファイル生成機能により形成されたオブジェクトファイルに基づいてロードモジュールファイルを形成するロードモジュールファイル生成機能と、を含み、上記ロードモジュールファイルが上記デバッグ対象プログラムとして上記エミュレータに送出される請求項１記載のソフトウェア開発装置。
【請求項４】
上記オブジェクトファイル生成機能は、ソースファイルを読み込んで、上記実行ソフトＩＤ設定レジスタにＩＤ情報を書き込むためのコードを上記ソースファイルに付加する第１機能と、
上記第１機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第２機能と、
上記第２機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第３機能と、
上記第３機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第４機能と、
上記第３機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第５機能と、を含み、
上記ロードモジュールファイル生成機能は、上記オブジェクトファイル生成機能によって生成されたオブジェクトファイルに基づいてロードモジュールファイルを形成する第６機能と、
上記第６機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第７機能と、
上記第７機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第８機能と、
上記第７機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第９機能と、を含む請求項３記載のソフトウェア開発装置。
【請求項５】
上記デバッグ用マイクロコンピュータは、上記ホストシステムによって暗号化された上記ロードモジュールファイルを取り込んで復号化する復号化処理機能と、
上記復号化処理機能で復号化されたファイルを格納するための専用エリアと、を含み、上記専用エリアに格納されたファイルを上記デバッグ対象として実行する請求項４記載のソフトウェア開発装置。
【請求項６】
上記デバッグ用マイクロコンピュータは、上記専用アリア内の上記ロードモジュールファイルを上記ホストシステムに送出する前に当該ロードモジュールファイルを暗号化する暗号化処理機能を更に含む請求項５記載のソフトウェア開発装置。
【請求項７】
ソースファイルを読み込んで、実行ソフトＩＤ設定レジスタにＩＤ情報を書き込むためのコードを上記ソースファイルに付加する第１機能と、
上記第１機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第２機能と、
上記第２機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第３機能と、
上記第３機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第４機能と、
上記第３機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第５機能と、
上記オブジェクトファイルに基づいてロードモジュールファイルを形成する第６機能と、
上記第６機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第７機能と、
上記第７機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第８機能と、
上記第７機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第９機能と、をコンピュータに実現させるためのプログラム。
【請求項８】
請求項７記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項９】
デバッグ対象プログラムを実行可能なマイクロコンピュータ機能部と、
上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路と、を含む半導体集積回路装置であって、
上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ＩＤ情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を含むことを特徴とする半導体集積回路装置。
【請求項１０】
上記マイクロコンピュータ機能部は、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報が設定される実行ソフトＩＤ設定レジスタを含み、
上記秘匿制御回路は、上記実行ソフトＩＤ設定レジスタに設定されたＩＤ情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記実行ソフトＩＤ設定レジスタの設定情報に対応するプログラムが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項９記載の半導体集積回路装置。
【請求項１１】
上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのＩＤ情報が設定された秘匿ＩＤ設定レジスタと、
上記実行ソフトＩＤ設定レジスタの出力情報と、上記秘匿ＩＤ設定レジスタの出力情報とが一致するか否かを判別する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項１０記載の半導体集積回路装置。
【請求項１２】
上記マイクロコンピュータ機能部は、上記マイクロコンピュータ機能部で実行されるプログラムを指定するためのプログラム走行モード設定レジスタを含み、
上記秘匿制御回路は、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項９記載の半導体集積回路装置。
【請求項１３】
上記秘匿制御回路は、秘匿対象プログラム走行モード情報が設定された秘匿モード設定レジスタと、
上記プログラム走行モード設定レジスタの出力情報と、上記秘匿モード設定レジスタの出力情報とを比較する比較回路と、を含み、上記比較の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項１２記載の半導体集積回路装置。
【請求項１４】
上記マイクロコンピュータ機能部は、デバッグ対象プログラムの実行単位毎に割り当てられた仮想アドレス空間を示す空間ＩＤ情報が設定される空間ＩＤ設定レジスタを含み、
上記秘匿制御回路は、上記空間ＩＤ設定レジスタの設定情報に対応する仮想アドレス空間の実行単位を秘匿すべきか否かを判別し、その判別結果に基づいて、上記空間ＩＤ設定レジスタの設定情報に対応する仮想アドレス空間の実行単位が上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項９記載の半導体集積回路装置。
【請求項１５】
上記秘匿制御回路は、秘匿対象仮想アドレス空間情報が設定された秘匿空間設定レジスタと、
上記空間ＩＤ設定レジスタの出力情報と、上記秘匿空間設定レジスタの出力情報とを比較する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項１４記載の半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの秘匿技術に関し、例えばＩＰ（特定用途のソフトウェア、回路モジュール）を搭載したマイクロコンピュータで実行されるプログラムの開発に適用して有効な技術に関する。
【背景技術】
【０００２】
マイクロコンピュータで実行されるプログラムの開発支援のためのソフトウェア開発装置は、ホストシステムとエミュレータとを含む。ホストシステムは、ソフトウェア開発支援に関する各種プログラムを実行したり、エミュレータの動作制御を行う。エミュレータは、ユーザシステムに本来搭載されるマイクロコンピュータに代わって、デバッグ対象プログラムとされるユーザプログラムを実行することで、ユーザプログラムのデバッグのための情報を得る。
【０００３】
近年のマイクロコンピュータソフトウェア開発では、互いに異なる開発元のソフトウェアコンポーネントを組み合わせて最終ソフトウェアを組み立てるケースが多くなっている。従来のマイクロコンピュータ開発装置では、ＯＳ（Operating System）、周辺モジュールドライバ、ライブラリ、アプリケーションがリンクされた最終的なロードモジュールファイルがあれば、通常その全体ソフトウェアに対して静的解析や、動的な解析、評価が可能である。その中に一部秘匿したいソフトウェアや、回路がある場合にマイクロコンピュータソフトウェア開発装置のファームウェアで秘匿したいソフトウェアのアドレスを認識することにより、デバッグ機能を制限する技術が知られている（例えば特許文献１参照）。また、マスクＲＯＭ（Read Only Memory）上の秘匿したいソフトウェアの特定固定アドレス範囲をハードウェアで検出し、デバッグ機能を制限する技術が知られている（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−６５５５５号公報
【特許文献２】特開２００３−２８０７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のように、近年のマイクロコンピュータソフトウェア開発では、互いに異なる開発元のソフトウェアコンポーネントを組み合わせて最終ソフトウェアを組み立てるケースが多くなっている。従来のマイクロコンピュータ開発装置では、ＯＳ（Operating System）、周辺モジュールドライバ、ライブラリ、アプリケーションがリンクされた最終的なロードモジュールファイルがあれば、通常その全体ソフトウェアに対して静的解析や、動的な解析、評価が可能である。このような従来技術について本願発明者が検討したところ、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して、当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができないため、ＩＰ技術を第三者に対して秘匿にすることが困難になることが見いだされた。このことは、特許文献１，２記載の技術によっても解決することができない。
【０００６】
本発明の目的は、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限するための技術を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、ホストシステムと、上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータとを含んでソフトウェア開発装置を構成する。上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータと、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路とを含む。そして、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を設ける。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明にかかるソフトウェア開発装置の構成例ブロック図である。
【図２】上記ソフトウェア開発装置に含まれるエミュレータの構成例ブロック図である。
【図３】上記エミュレータに含まれる秘匿制御回路の構成例回路図である。
【図４】上記エミュレータに含まれるデバッグ用機能回路によって実現される各種デバッグ機能と、秘匿制御回路による秘匿時の機能制限例の説明図である。
【図５】上記ソフトウェア開発装置において、ソフトウェアを開発するためのツールとして、クロスソフトウェアを使用した場合の処理の流れを示すフローチャートである。
【図６】上記クロスソフトウェアに含まれるコンパイル又はアセンブル処理の流れを示すフローチャートである。
【図７】上記クロスソフトウェアに含まれるリンク処理の流れを示すフローチャートである。
【図８】上記秘匿制御回路に含まれる秘匿ＩＤ設定レジスタへの秘匿ＩＤ情報設定の流れを示すフローチャートである。
【図９】ソフトウェア開発装置におけるデバッグ対象プログラムのダウンロードの説明図である。
【図１０】ソフトウェア開発装置におけるデバッグ対象プログラムのアップロードの説明図である。
【図１１】本発明にかかる半導体集積回路装置の一例とされるマイクロコンピュータチップを含むオンチップエミュレータの構成例ブロック図である。
【図１２】上記マイクロコンピュータチップの構成例ブロック図である。
【図１３】上記スーパバイザモードの拡張に関する説明図である。
【図１４】マイクロコンピュータアーキテクチャとしてのスーパバイザモードの概念説明図である。
【図１５】図１３に示されるようにスーパバイザモードを拡張した場合の上記マイクロコンピュータチップの構成例ブロック図である。
【図１６】図１５に示されるマイクロコンピュータチップに含まれる秘匿制御回路の構成例ブロック図である。
【図１７】マイクロコンピュータアーキテクチャとしてのＭＭＵによるアドレス変換／メモリ保護機構の説明図である。
【図１８】図１７に示されるようなＭＭＵを使用して各タスク毎に仮想アドレス空間を割り当てた場合のマイクロコンピュータチップの構成例ブロック図である。
【図１９】図１８に示されるマイクロコンピュータチップに含まれる秘匿制御回路の構成例ブロック図である。
【発明を実施するための形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
〔１〕本発明の代表的な実施の形態に係るソフトウェア開発装置（１０）は、ホストシステム（１１）と、上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータ（１３）とを含む。上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータ（２１１）と、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路（２２１）とを含む。そして、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路（２２２）を設ける。
【００１５】
上記の構成によれば、秘匿制御回路は、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限する。このように上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作が制限されることにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、ＩＰ技術を第三者に対して秘匿にすることができる。
【００１６】
〔２〕上記〔１〕において、上記デバッグ用マイクロコンピュータには、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報が設定される実行ソフトＩＤ設定レジスタ（２１４）を含めることができる。これにより、実行ソフトＩＤ設定レジスタが設けられることにより、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報の設定を容易に行うことができる。また、上記秘匿制御回路には、秘匿対象ソフトウェアコンポーネントのＩＤ情報が設定された秘匿ＩＤ設定レジスタ（３１−１〜３１−ｎ）と、上記実行ソフトＩＤ設定レジスタの出力情報と、上記秘匿ＩＤ設定レジスタの出力情報とが一致するか否かを判別する比較回路（３２−１）〜３２−ｎとを含めることができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する。かかる構成によれば、上記機能を有する秘匿制御回路を容易に実現することができる。
【００１７】
〔３〕上記〔１〕において、上記ホストシステムは、ソースファイルをコンパイル又はアセンブルすることで、オブジェクトファイルを形成するオブジェクトファイル生成機能と、上記オブジェクトファイル生成機能により形成されたオブジェクトファイルに基づいてロードモジュールファイルを形成するロードモジュールファイル生成機能とを含めることができる。このとき、上記ロードモジュールファイルが上記デバッグ対象プログラムとして上記エミュレータに送出される。これにより、ホストシステムにおいて、ソースファイルのコンパイル又はアセンブルや、オブジェクトファイルに基づくロードモジュールファイルの形成を行うことができる。
【００１８】
〔４〕上記〔３〕において、上記オブジェクトファイル生成機能は、ソースファイルを読み込んで、上記実行ソフトＩＤ設定レジスタにＩＤ情報を書き込むためのコードを上記ソースファイルに付加する第１機能（６０１，６０２）と、上記第１機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第２機能（６０３）と、上記第２機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第３機能とを含む。また、上記オブジェクトファイル生成機能は、上記第３機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第４機能（６０５）と、上記第３機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第５機能（６０６）とを含む。
【００１９】
上記ロードモジュールファイル生成機能は、上記オブジェクトファイル生成機能によって生成されたオブジェクトファイルに基づいてロードモジュールファイルを形成する第６機能（７０１，７０２）と、上記第６機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第７機能（７０３）とを含む。また、上記ロードモジュールファイル生成機能は、上記第７機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第８機能（７０４）と、上記第７機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第９機能（７０５）と、を含む。
【００２０】
上記各機能が発揮されることにより、上記オブジェクトファイルや上記ロードモジュールファイルの生成を的確に行うことができる。
【００２１】
〔５〕上記〔４〕において、上記デバッグ用マイクロコンピュータには、上記ホストシステムによって暗号化された上記ロードモジュールファイルを取り込んで復号化する復号化処理機能（２１７）と、上記復号化処理機能で復号化されたファイルを格納するための専用エリア（２１８）とを設け、上記専用エリアに格納されたファイルを上記デバッグ対象として実行するように構成することができる。
【００２２】
デバッグ用マイクロコンピュータに暗号復号モジュールを設け、そこで暗号処理や復号処理が行われるため、復号化された命令コードはデバッグ用マイクロコンピュータの内部以外には存在しない。デバッグ対象プログラムのコードをデバッグ用マイクロコンピュータの外部で取得することができないので、秘匿対象とされるソフトウェアの静的コード解析が困難になる。
【００２３】
〔６〕上記〔５〕において、上記デバッグ用マイクロコンピュータには、上記専用アリア内の上記ロードモジュールファイルを上記ホストシステムに送出する前に当該ロードモジュールファイルを暗号化する暗号化処理機能（２１７）を更に設けることができる。復号化された命令コードがデバッグ用マイクロコンピュータの外部に送出されるのを回避することができる。
【００２４】
〔７〕コンピュータに実現させるためのプログラムとして、ソースファイルを読み込んで、実行ソフトＩＤ設定レジスタにＩＤ情報を書き込むためのコードを上記ソースファイルに付加する第１機能と、上記第１機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第２機能とを設ける。また、上記コンピュータに実現させるためのプログラムとして、上記第２機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第３機能と、上記第３機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第４機能と、上記第３機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第５機能とを設ける。さらに、上記コンピュータに実現させるためのプログラムとして、上記オブジェクトファイルに基づいてロードモジュールファイルを形成する第６機能と、上記第６機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第７機能を設ける。そして、上記コンピュータに実現させるためのプログラムとして、上記第７機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第８機能と、上記第７機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第９機能とを設ける。上記各機能が発揮されることにより、上記オブジェクトファイルや上記ロードモジュールファイルの生成を的確に行うことができる。
【００２５】
〔８〕上記〔７〕のプログラムは、コンピュータ読み取り可能な記録媒体に記録することができる。これにより、上記記録媒体に記録されている上記プログラムをコンピュータに実行させることができる。
【００２６】
〔９〕デバッグ対象プログラムを実行可能なマイクロコンピュータ機能部（１２１）と、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路（１２２１）とを含んで半導体集積回路装置を構成する。このとき、上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ＩＤ情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路（１２２２）を設ける。
【００２７】
上記の構成によれば、秘匿制御回路は、上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ＩＤ情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。このように、秘匿すべきソフトウェアコンポーネントとして予め指定されたものについては、エミュレータ１３のデバッグ機能の動作が制限される。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、ＩＰ技術を第三者に対して秘匿にすることができる。
【００２８】
〔１０〕上記〔９〕において、上記マイクロコンピュータ機能部（１２１）は、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報が設定される実行ソフトＩＤ設定レジスタ（１２１４）を含む。このとき、上記秘匿制御回路は、上記実行ソフトＩＤ設定レジスタに設定されたＩＤ情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記実行ソフトＩＤ設定レジスタの設定情報に対応するプログラムが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。
【００２９】
〔１１〕上記〔１０〕において、上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのＩＤ情報が設定された秘匿ＩＤ設定レジスタ（３１−１〜３１−ｎ）と、上記実行ソフトＩＤ設定レジスタの出力情報と、上記秘匿ＩＤ設定レジスタの出力情報とが一致するか否かを判別する比較回路（３２−１〜３１−ｎ）とを含んで構成することができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。
【００３０】
〔１２〕上記〔９〕において、上記マイクロコンピュータ機能部は、上記マイクロコンピュータ機能部で実行されるプログラムを指定するためのプログラム走行モード設定レジスタ（ＰＳＷ）を含んで構成することができる。このとき上記秘匿制御回路は、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。これにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、ＩＰ技術を第三者に対して秘匿にすることができる。
【００３１】
〔１３〕上記〔１２〕において、上記秘匿制御回路は、秘匿対象プログラム走行モード情報が設定された秘匿モード設定レジスタ（１６１−１〜１６１−ｎ）と、上記プログラム走行モード設定レジスタの出力情報と、上記秘匿モード設定レジスタの出力情報とを比較する比較回路（１６２−１〜１６２−ｎ）とを含んで構成することができる。このとき、上記比較の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。
【００３２】
〔１４〕上記〔９〕において、上記マイクロコンピュータ機能部は、デバッグ対象プログラムの実行単位毎に割り当てられた仮想アドレス空間を示す空間ＩＤ情報が設定される空間ＩＤ設定レジスタ（ＣＲ）を含んで構成することができる。このとき、上記秘匿制御回路は、上記空間ＩＤ設定レジスタの設定情報に対応する仮想アドレス空間の実行単位を秘匿すべきか否かを判別し、その判別結果に基づいて、上記空間ＩＤ設定レジスタの設定情報に対応する仮想アドレス空間の実行単位が上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作が制限される。これにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、ＩＰ技術を第三者に対して秘匿にすることができる。
【００３３】
〔１５〕上記〔１４〕において、上記秘匿制御回路は、秘匿対象仮想アドレス空間情報が設定された秘匿空間設定レジスタ（１９１−１〜１９１−ｎ）と、上記空間ＩＤ設定レジスタの出力情報と、上記秘匿空間設定レジスタの出力情報とを比較する比較回路（１６２−１〜１６２−ｎ）と、を含んで構成することができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。
【００３４】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３５】
＜実施の形態１＞
図１には、本発明にかかるソフトウェア開発装置の構成例が示される。
【００３６】
図１に示されるソフトウェア開発装置１０は、特に制限されないが、ホストシステム１１とエミュレータ１３とを含む。ホストシステム１１は、例えばパーソナルコンピュータであり、ソフトウェア開発支援に関する各種プログラムを実行する。ソフトウェア開発支援に関する各種プログラムには、所定の言語でソフトウェアを開発するためのツールや、エミュレータ１３の動作制御用プログラムなどが含まれる。ソフトウェア開発支援に関する所定のプログラムは、記録媒体の一例とされる光ディスク１５によって供給され、ホストシステム１１に読み取られて実行される。エミュレータ１３は、ＵＳＢアダプタ１２を介してホストシステム１１に結合され、エミュレータ本体から引き出されたインタフェースケーブルを介してユーザシステム１４におけるマイクロコンピュータのソケットに結合される。エミュレータ１３は、ユーザシステム１４に本来搭載されるマイクロコンピュータに代わって、デバッグ対象プログラムとされるユーザプログラムを実行することで、ユーザプログラムのデバッグのための情報（デバッグ情報）を得る。デバッグ対象プログラムとされるユーザプログラムは、ホストシステム１１上でＣコンパイラ等の言語で開発され、ユーザシステム１４に搭載されるマイクロコンピュータ上で動作するオブジェクトコードに変換される。変換されたオブジェクトコード（デバッグ対象プログラム）は、ユーザプログラムはホストシステム１１からＵＳＢアダプタ１２を介してエミュレータ１３に伝達される（これを「ダウンロード」という）。エミュレータ１３で得られたデバッグ情報は、デバッグ及び評価のため、ＵＳＢアダプタ１２を介してホストシステム１１に伝達される。
【００３７】
図２には、エミュレータ１３の構成例が示される。
【００３８】
エミュレータ１３は、図２に示されるように、デバッグ用マイクロコンピュータ２１、デバッグ機能部２２、及びＰＣ（パーソナルコンピュータ）インタフェース２３を含む。ＰＣインタフェース２３は、ホストシステム１１との間で、デバッグ対象プログラムやデバッグ情報などの各種情報のやり取りを行う。
【００３９】
デバッグ用マイクロコンピュータ２１は、ＣＰＵ２１１や周辺モジュール２１５など、ユーザシステム１４に搭載されるチップと同等の回路モジュールのほかに、デバッグのための回路として、デバッグ用ＩＦ（インタフェース）回路２１２、デバッグ対象プログラム用ＲＡＭ（ランダムアクセスメモリ）２１３、及び実行ソフトＩＤ設定レジスタ２１４を含む。ＣＰＵ２１１は、デバッグ対象プログラムを実行する。周辺モジュール２１５は、ＣＰＵ２１１によってアクセスされる。デバッグ用ＩＦ回路２１２は、デバッグ用マイクロコンピュータ２１とデバッグ機能部２２との間で各種信号のやり取りを行う。デバッグ対象プログラム用ＲＡＭ２１３には、ホストシステム１１から伝達されたデバッグ対象プログラムが格納される。デバッグ対象プログラム用ＲＡＭ２１３内のデバッグ対象プログラムは、ＣＰＵ２１１で実行される。実行ソフトＩＤ設定レジスタ２１４には、デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報が設定される。実行ソフトＩＤ設定レジスタ２１４へのＩＤ情報設定は、デバッグ対象プログラムを実行するＣＰＵ２１１によって行われる。
【００４０】
デバッグ機能部２２は、デバッグ用機能回路２２１、及び秘匿制御回路２２２を含み、デバッグ用マイクロコンピュータ２１やＰＣインタフェース２３に結合される。デバッグ用機能回路２２１は、エミュレータ１３のデバッグ制御プログラムが実行される制御用マイクロプロセッサやその周辺回路が含まれ、各種デバッグ機能が実現される。
【００４１】
秘匿制御回路２２２は、予め設定された情報に基づいて、実行ソフトＩＤ設定レジスタ２１４に設定されたＩＤ情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ＩＤ情報に対応するソフトウェアコンポーネントがデバッグ用マイクロコンピュータ２１で実行された場合のデバッグ用機能回路２２１の動作を制限する。
【００４２】
図４には、デバッグ用機能回路２２１によって実現される各種デバッグ機能と、秘匿制御回路２２２による秘匿時の機能制限例が示される。
【００４３】
デバッグ用機能回路２２１によって実現される各種デバッグ機能には、特に制限されないが、図４に示されるように、Ｇｏ機能、ＳＴＥＰ機能、ブレーク機能、ＣＰＵレジスタの参照・変更機能、メモリの参照・変更機能、トレース機能、パフォーマンス機能、プロファイル機能、カバレッジ機能などが含まれる。
【００４４】
Ｇｏ機能は、ユーザプログラム（デバッグ対象プログラム）の実行を開始する機能である。実行を開始するＰＣ（ホストシステム１１）の設定も可能である。秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、秘匿するプログラム部分からの実行が拒否される。
【００４５】
ＳＴＥＰ機能は、デバッグ用マイクロコンピュータ２１において、Ｃ言語やアセンブラレベルでデバッグ対象プログラムの１行分が実行される毎に、当該プログラムの実行を停止する機能である。しかし、秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、秘匿するソフトウェアコンポーネント（プログラム部分）でのＳＴＥＰ実行自体が拒否される。
【００４６】
ブレーク機能は、予め指定したブレーク条件と、実際のプログラム実行状態とが一致した場合に、ユーザプログラム（デバッグ対象プログラム）の実行を停止する機能である。秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、秘匿するプログラム部分でのブレーク設定が拒否される。もし、秘匿するプログラム部分でブレークした場合にはデバッグ用マイクロコンピュータ２１がリセットされる。
【００４７】
ＣＰＵレジスタの参照・変更機能は、デバッグ用マイクロコンピュータ２１におけるＣＰＵコア内部のレジスタの状態を表示し、あるいは当該レジスタの状態を変更する機能である。デバッグ用マイクロコンピュータ２１におけるＣＰＵコア内部のレジスタの状態は、秘匿するまでもないことから、秘匿制御回路２２２によるデバッグ機能制限から除外されている。
【００４８】
周辺モジュールレジスタの参照・変更機能は、デバッグ用マイクロコンピュータ２１における周辺モジュール２１５のレジスタの状態を表示し、あるいは当該レジスタの状態を変更する機能である。秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、デバッグ用マイクロコンピュータ２１における周辺モジュール２１５の参照・変更は拒否される。
【００４９】
メモリの参照・変更機能は、デバッグ用マイクロコンピュータ２１におけるメモリの内容を表示し、あるいは当該メモリの内容を変更する機能である。秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、秘匿するプログラム部分のメモリアクセスが拒否される。
【００５０】
トレース機能は、ユーザプログラム（デバッグ対象プログラム）の実行履歴を記録し、その記録結果を必要に応じて表示したり保存する機能である。秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、秘匿するプログラム部分はハードウェア的にトレースされない。
【００５１】
パフォーマンス機能は、ユーザプログラム（デバッグ対象プログラム）の実行時間や実行回数を計測し、その計測結果を必要に応じて表示したり保存する機能である。このパフォーマンス機能は、秘匿するまでもないことから、秘匿制御回路２２２によるデバッグ機能制限から除外されている。
【００５２】
プロファイル機能は、ユーザプログラム（デバッグ対象プログラム）の関数の実行時間と実行回数を計測し、その計測結果を必要に応じて表示したり記録する機能である。このプロファイル機能は、秘匿するまでもないことから、秘匿制御回路２２２によるデバッグ機能制限から除外されている。
【００５３】
カバレッジ機能は、ユーザプログラム（デバッグ対象プログラム）をテスト工程で実行したか否か判別し、必要に応じてそれを表示したり記録する機能である。秘匿制御回路２２２によってデバッグ用機能回路２２１の動作が制限された場合には、秘匿するプログラム部分についてカバレッジは機能しない。
【００５４】
図３には、秘匿制御回路２２２の構成例が示される。
【００５５】
秘匿制御回路２２２は、図３に示されるように、複数の秘匿ＩＤ設定レジスタ３１−１〜３１−ｎ（ｎは正の整数）、複数の比較回路３２−１〜３２−ｎ、及びオアゲート３３が結合されて成る。複数の秘匿ＩＤ設定レジスタ３１−１〜３１−ｎには、秘匿すべきソフトウェアコンポーネントのＩＤ情報（「秘匿ＩＤ情報」という）が設定される。複数の秘匿ＩＤ設定レジスタ３１−１〜３１−ｎへの秘匿ＩＤ情報はホストシステム１１によって行われる。尚、デバッグ対象プログラムに設定されている秘匿ＩＤ情報の数は、通常はデバッグ対象プログラムによって異なるため、複数の秘匿ＩＤ設定レジスタ３１−１〜３１−ｎの全てに秘匿ＩＤ情報が設定されるとは限らない。複数の比較回路３２−１〜３２−ｎは、複数の秘匿ＩＤ設定レジスタ３１−１〜３１−ｎに対応して設けられる。複数の比較回路３２−１〜３２−ｎは、それぞれ対応する秘匿ＩＤ設定レジスタ３１−１〜３１−ｎの出力情報（秘匿ＩＤ情報）と、実行ソフトＩＤ設定レジスタ２１４の出力情報（実行ソフトＩＤ情報）とが一致するか否かの判別を行う。ＩＤ情報が一致する場合、それは、これから実行されるソフトウェアコンポーネントは秘匿すべきものであることを意味する。複数の比較回路３２−１〜３２−ｎの出力は、後段のオアゲート３３でオア論理が得られる。オアゲート３３の出力信号は、デバッグ用機能回路動作抑止信号として、デバッグ用機能回路２２１に伝達される。比較回路３２−１〜３２−ｎのうちのいずれかで、ＩＤ情報が一致すると判断された場合、デバッグ用機能回路動作抑止信号が例えば論理値“０”にアサートされる。デバッグ用機能回路２２１は、デバッグ用機能回路動作抑止信号が論理値“０”にアサートされた場合には、秘匿時動作となり、その機能が制限される（図４参照）。しかし、デバッグ用機能回路動作抑止信号が例えば論理値“１”にネゲートされた場合、デバッグ用機能回路２２１は通常動作（秘匿時以外の動作を意味する）となる。
【００５６】
次に、デバッグ対象プログラム（ユーザプログラム）の作成支援について説明する。
【００５７】
デバッグ対象プログラムの作成は、ホストシステム（例えばパーソナルコンピュータ）１１においてソフトウェアを開発するためのツールを起動することで可能になる。
【００５８】
図５には、ソフトウェアを開発するためのツールとして、クロスソフトウェアを使用した場合の処理の流れが示される。
【００５９】
ここでは、ソースファイルとして、ＯＳ（オペレーティングシステム）５０１、ライブラリ５０２，５０３、アプリケーション５０４，５０５，５０６が所定の言語で作成されており、そのうち、ＯＳ５０１とライブラリ５０２とが秘匿すべきものとされる。ＯＳ５０１、ライブラリ５０２，５０３、アプリケーション５０４，５０５，５０６がそれぞれコンパイル又はアセンブルされることでオブジェクトファイル５１１，５１２，５１３，５１４，５１５，５１６が形成される。このとき、秘匿すべきＯＳ５０１、ライブラリ５０２については、コンパイル又はアセンブルの際に暗号化されることで、暗号化されたオブジェクトファイル（暗号化ファイル）とされる。また、ＯＳ５０１、ライブラリ５０２，５０３、アプリケーション５０４，５０５，５０６には、コンパイル又はアセンブルの際に、固有のＩＤ情報が設定される。ここでは、説明の便宜上、オブジェクトファイル５１１〜５１６に、ＩＤ＝１〜６が設定されるものとする。オブジェクトファイル５１１〜５１６は、ＩＤ情報が設定された後にリンク処理される。このリンク処理によって、マイクロコンピュータで実行可能なロードモジュールファイル５２１が形成される。複数のオブジェクトファイル５１１〜５１６に暗号化ファイルが含まれている場合（本例では５１１，５１２が暗号化ファイル）、ロードモジュールファイル５２１も暗号化ファイルとさえる。
【００６０】
図６には、上記コンパイル又はアセンブル処理の流れが示される。
【００６１】
先ず、対応するソースファイル及び必要となるオプションが読み込まれる（６０１）。そして、実行ソフトＩＤ設定レジスタ２１４にＩＤ情報を書き込むためのコードが、プログラムの先頭に付加される（６０２）。その後、通常のコンパイル又はアセンブル処理が行われる（６０３）。つまり、ソースコードがオブジェクトコードに変換されることでオブジェクトファイルが形成される。そして、得られたオブジェクトファイルが秘匿の対象か否かの判別が行われる（６０４）。この判別において、秘匿対象である（Ｙｅｓ）と判断された場合、当該オブジェクトファイルを暗号化処理する（６０５）。つまり、暗号化処理対象のオブジェクトファイルと所定の暗号化鍵がセットされて所定の暗号化演算が実行されることにより、暗号化ファイルが形成される。本例の場合、ＯＳ５０１とライブラリ５０２とが秘匿対象であるから、それに対応するオブジェクトファイル５１１，５１２のみが暗号化ファイルとされる。そして、この暗号化ファイルの先頭に、当該ファイルが秘匿対象か否かを示すフラグが付加される（６０６）。尚、上記ステップ６０４の判別において、秘匿対象ではない（Ｎｏ）と判断されたオブジェクトファイルについては、暗号化処理されることなく、そのファイルの先頭に当該ファイルが秘匿対象か否かを示すフラグが付加される。特に制限されないが、当該ファイルが秘匿対象であれば、上記フラグは論理値“１”とされ、当該ファイルが秘匿対象でなければ、上記フラグは論理値“０”とされる。そして、このようなフラグが付加されたオブジェクトファイルがリンク処理のために出力される（６０７）。
【００６２】
図７には、上記リンク処理の流れが示される。
【００６３】
先ず、オブジェクトファイル５１１〜５１６が順次読み込まれ（７０１）、通常のプログラムリンク処理が行われる（７０２）。すなわち、オブジェクトファイルが解析されて、参照している他のオブジェクトファイルやライブラリなど、必要なものが結合されて実行形式のファイル（ロードモジュールファイル）が作成される。次に、作成されたロードモジュールファイルに秘匿対象が含まれているか否かの判別が行われる（７０３）。この判別は、上記ステップ６０６（図６参照）で付加されたフラグを判別することによって可能となる。この判別において、秘匿対象が含まれる（Ｙｅｓ）と判断された場合には、当該ロードモジュールファイル全体に対して、再び暗号化処理が行われる（７０４）。そして、当該ロードモジュールファイルの先頭に、当該ファイルが秘匿対象か否かを示すフラグが付加される（７０５）。このフラグ付加は、上記ステップ６０６の場合と同様に行われる。すなわち、当該ファイルが秘匿対象であれば、上記フラグは論理値“１”とされ、当該ファイルが秘匿対象でなければ、上記フラグは論理値“０”とされる。そして、このようなフラグが付加されたロードモジュールファイルが出力される（７０６）。上記リンク処理により得られたロードモジュールファイルが、デバッグ対象プログラムとして、エミュレータ１３にダウンロードされる。
【００６４】
図８には、上記秘匿ＩＤ設定レジスタ３１−１〜３１−ｎへの秘匿ＩＤ情報設定の流れが示される。
【００６５】
上記ステップ７０６（図７参照）で出力されたロードモジュールファイルが、ホストシステム１１上で動作する上位ソフトウェアにより読み込まれ、秘匿対象か否かを示すフラグの論理判別が行われることで、秘匿対象とされるソフトウェアコンポーネントのＩＤ情報と、その数ｎの検出が行われる（８０１）。その後、ホストシステム１１上で動作する上位ソフトウェアにより、エミュレータ１３内のデバッグ機能部２２におけるコントロールＣＰＵで動作しているファームウェア（デバッグ制御プログラム）に対して、秘匿対象とされるソフトウェアコンポーネントのＩＤ情報を秘匿ＩＤ設定レジスタ３１−１〜３１−ｎの何れかへ書き込むためのコマンドを発行する（８０２）。そして、当該コマンドに基づいて、秘匿ＩＤ設定レジスタへのＩＤ情報の書き込みが完了したか否かの判別が行われ（８０３）、当該秘匿ＩＤ設定レジスタへのＩＤ情報の書き込みが完了した（Ｙｅｓ）と判断された場合には、上記ステップ８０１で検出された全てのソフトウェアコンポーネントのＩＤ情報の書き込みを終了したか否かの判別が行われる（８０４）。この判別で、全てのソフトウェアコンポーネントのＩＤ情報の書き込みを終了していない（Ｎｏ）と判断された場合には、上記ステップ８０２に戻り、次のＩＤ情報の書き込みを行うためのコマンドの発行が行われる。このようにして上記ステップ８０１で検出された全てのソフトウェアコンポーネントのＩＤ情報が秘匿ＩＤ設定レジスタ３１−１〜３１−ｎに書き込まれる。
【００６６】
次に、ホストシステム１１からエミュレータ１３へのデバッグ対象プログラムのダウンロードについて説明する。
【００６７】
図９には、デバッグ対象プログラムのダウンロードにおけるデータの流れが示される。
【００６８】
ホストシステム１１上で動作される上位ソフトウェアによって暗号化ファイルの読み込みが行われる（９１）。システム起動時に、デバッグ対象とユーザのオプション選択により、ロード対象となるロードモジュールが確定される。ホストシステム１１内のロードモジュール格納用フォルダが検索され、対象ファイルが存在する場合は、その暗号化ファイルがオープンされ、それがバイナリ形式で適宜のバッファに読み込まれる。
【００６９】
次に、ＵＳＢドライバ１１２を介して、デバッグ機能部２２におけるコントロールＣＰＵ２２３上で動作するファームウェアに暗号化ファイル（暗号化されたデバッグ対象プログラム）が転送される（９２）。エミュレータ１３では、デバッグ用マイクロコンピュータ２１のファイアウォールが一時的に解除され、暗号化データの取り込みが可能になる。暗号化データは、ホストシステム１１内で特定長の単位に分割してからエミュレータ１３に順次送出される。
【００７０】
次に、コントロールＣＰＵ２２３上で動作するファームウェアから、デバッグ用マイクロコンピュータ２１で動作するファームウェアへのデータ転送が行われる（９３）。このとき、暗号化データは、更に短い単位に分割されてから転送され、デバッグ対象プログラム用ＲＡＭ２１３に格納される。コントロールＣＰＵ２２３上で動作するファームウェアは、デバッグ用マイクロコンピュータ２１上で動作するファームウェアの処理完了を確認してから、次のデータを転送する。
【００７１】
コントロールＣＰＵ２２３上で動作するファームウェアは、ホストシステム１１から暗号化ファイルの転送が完了された後に、ホストシステムに対して終了通知を行い、デバッグ用マイクロコンピュータ２１のファイアウォールを有効にする。
【００７２】
デバッグ対象プログラム用ＲＡＭ２１３に格納された暗号化データは、デバッグ用マイクロコンピュータ２１における暗号復号モジュール２１７に伝達されて復号化される（９４）。
【００７３】
デバッグ用マイクロコンピュータ２１上で動作するファームウェアは、暗号復号モジュール２１７に暗号化データと暗号化鍵をセットして復号化演算を実行させる。この復号化演算により得られた復号化データはデバッグ用マイクロコンピュータ２１上のダウンロード専用エリア２１８に格納される。ダウンロード専用エリア２１８は、デバッグ対象プログラム用ＲＡＭ２１３に形成することができる。このようにしてダウンロード専用エリア２１８に格納された復号化データは、デバッグ対象プログラムとして、デバッグ用マイクロコンピュータ２１で実行される。
【００７４】
次に、暗号復号モジュール２１７による暗号化データの生成について説明する。
【００７５】
図１０には、デバッグ対象プログラムのアップロードにおけるデータの流れが示される。
【００７６】
デバッグ用マイクロコンピュータ２１のファイアウォールを一時的に解除しておく。
【００７７】
デバッグ用マイクロコンピュータ２１上のファームウェアは、ダウンロード専用エリア２１からデータを読み出して、暗号復号モジュール２１７に、暗号化対象の生データと暗号鍵をセットして暗号化演算を実行させることにより、暗号化データを得る（１０１）。
【００７８】
暗号化データは、コントロールＣＰＵ２２３上で動作するファームウェアへ転送される。すなわち、デバッグ用マイクロコンピュータ２１上で動作するファームウェアは、暗号化データを小データ長単位で、デバッグ対象プログラム用ＲＡＭ２１３に格納する。コントロールＣＰＵ３３上で動作するファームウェアは、デバッグ対象プログラム用ＲＡＭ２１３から上記暗号化データを繰り返し取得する（１０２）。このようにして取得された暗号化データは、ホストシステム１１上で動作される上位ソフトウェアに転送される（１０３）。すなわち、コントロールＣＰＵ３３上で動作するファームウェアは、上記暗号化データを特定単位長にまとめて、ホストシステム１１上で動作される上位ソフトウェアに転送される（１０３）。転送された暗号化ファイルは保存される。コントロールＣＰＵ３３上で動作するファームウェアから取得した暗号化データを、指定サイズまで適宜のバッファで合成される。この時点で、デバッグ用マイクロコンピュータ２１のファイアウォールが有効にされる。指定された場所にファイルを作成し、暗号化データを書き出すことができる（１０４）。
【００７９】
実施の形態１によれば、以下の作用効果を得ることができる。
【００８０】
（１）秘匿制御回路２２２が設けられ、この秘匿制御回路２２２の秘匿制御機能により、秘匿すべきソフトウェアコンポーネントとして予め指定されたものについては、エミュレータ１３のデバッグ機能の動作が制限される。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、ＩＰ技術を第三者に対して秘匿にすることができる。
【００８１】
（２）デバッグ用マイクロコンピュータ２１に暗号復号モジュール２１７を設け、そこで暗号処理や復号処理が行われるため、復号化された命令コードはデバッグ用マイクロコンピュータ２１の内部以外には存在しない。これにより、デバッグ対象プログラムのコードをデバッグ用マイクロコンピュータ２１７の外部で取得することができないので、秘匿対象とされるソフトウェアの静的コード解析が困難になる。
【００８２】
＜実施の形態２＞
近年は、デバッグ機能を内蔵したマイクロコンピュータチップと、ＩＣチップの検査方式の一つであるバウンダリスキャンテストの標準方式であるＪＴＡＧ（Joint European Test Action Group）標準端子などを介して接続する方式のオンチップエミュレータが広く使用されるようになってきている。このような構成のエミュレータ（「オンチップエミュレータ」と称される）においても、実施の形態１の場合と同様に、秘匿対象とされるソフトウェアの静的コード解析や動的プログラム解析を困難にすることができる。
【００８３】
図１１には、本発明にかかる半導体集積回路装置の一例とされるマイクロコンピュータチップを含むオンチップエミュレータのシステム構成例が示される。
【００８４】
図１１に示されるオンチップエミュレータが、図1に示されるソフトウェア開発装置１０と大きく相違するのは、デバッグ機能の多くが、ユーザシステム１１４に搭載されているマイクロコンピュータチップに内蔵されている点である。ホストシステム１１１は、図１に示されるホストシステム１１と同様の機能を有し、ＵＳＢなどの通信インタフェースを介してエミュレータ１１５に接続され、当該エミュレータ１１５の動作をコントロールする。エミュレータ１１５は、ユーザシステム１１４上のマイクロコンピュータチップとＪＴＡＧ標準端子などを介して接続され、当該マイクロコンピュータチップの動作を制御する。ソフトウェア開発支援に関する所定のプログラムは、記録媒体の一例とされる光ディスク１１６によって供給され、ホストシステム１１に読み取られて実行される。マイクロコンピュータチップ上で動作するプログラムは、実施の形態１の場合と同様にホストシステム１１１上でＣコンパイラ等の言語で開発され、マイクロコンピュータチップ上で動作するオブジェクトコードに変換される。変換されたオブジェクトコードはホストシステム１１１上のエミュレータコントロールする制御プログラムにより、エミュレータ１１５を介してマイクロコンピュータチップにダウンロードされて実行される。エミュレータ１１５およびホストシステム１１１上のエミュレータ制御プログラムは、マイクロコンピュータチップおよびマイクロコンピュータチップ上にダウンロードされたオブジェクトコードの動作をデバッグ・評価する機能を有する。
【００８５】
図１２には、ユーザシステム１１４上のマイクロコンピュータチップの構成例が示される。
【００８６】
ユーザシステム１１４上のマイクロコンピュータチップ１１３は、図１２に示されるように、マイクロコンピュータ機能部１２１、デバッグ機能部１２２、及びデバッグインタフェース（ＩＦ）回路１２３を含み、例えばシリコン基板などのひとつの半導体基板に形成される。デバッグインタフェース回路１２３は、デバッグ情報のやり取りを行うため、エミュレータ１１５にＪＴＡＧ標準端子を介して結合される。
【００８７】
マイクロコンピュータチップ１１３は、ＣＰＵ１２１１や周辺モジュール１２１５、デバッグのための回路として、デバッグ対象プログラム用ＲＡＭ（ランダムアクセスメモリ）１２１３、及び実行ソフトＩＤ設定レジスタ１２１４を含む。また、このマイクロコンピュータチップ１１３は、ＪＴＡＧ標準端子を介してエミュレータ１１５に結合され、デバッグ対象プログラムのダウンロードや各種制御情報のやり取りが行われるようになっている。
【００８８】
ＣＰＵ１２１１は、デバッグ対象プログラムを実行する。周辺モジュール１２１５は、ＣＰＵ１２１１によってアクセスされる。デバッグ対象プログラム用ＲＡＭ１２１３には、ホストシステム１１１からエミュレータ１１５を介して伝達されたデバッグ対象プログラムが格納される。デバッグ対象プログラム用ＲＡＭ１２１３内のデバッグ対象プログラムは、ＣＰＵ１２１１で実行される。実行ソフトＩＤ設定レジスタ１２１４には、デバッグ対象プログラムを構成するソフトウェアコンポーネントのＩＤ情報が設定される。実行ソフトＩＤ設定レジスタ１２１４へのＩＤ情報設定は、実施の形態１の場合と同様に、デバッグ対象プログラムを実行するＣＰＵ１２１１によって行われる。
【００８９】
デバッグ機能部２２は、デバッグ用ファームウェアメモリ１２２４、デバッグ用機能回路１２２１、及び秘匿制御回路２２２を含み、マイクロコンピュータチップ１１３やデバッグインタフェース１２３に結合される。デバッグ用ファームウェアメモリ１２２４には、デバッグ用ファームウェアが格納されている。このデバッグ用ファームウェアは、マイクロコンピュータチップ１１３で実行される。デバッグ用機能回路１２２１は、デバッグ用ファームウェアが実行されることで実現される各種デバッグ機能を含む。この各種デバッグ機能は、図４に示されるのと同様とされる。
【００９０】
秘匿制御回路１２２２は、予め設定された情報に基づいて、実行ソフトＩＤ設定レジスタ１２１４に設定されたＩＤ情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ＩＤ情報に対応するソフトウェアコンポーネントがマイクロコンピュータチップ１２１で実行された場合のデバッグ用機能回路１２２１の動作を制限する。秘匿制御回路１２２２は、実施の形態１の場合と同様に、図３に示される構成を採用することができる。
【００９１】
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路１２２２による秘匿制御により、上記ソフトウェア開発装置１０と同様の効果を得ることができる。
【００９２】
＜実施の形態３＞
実施の形態３にかかるオンチップエミュレータシステムも、基本的には、図１１に示されるように、ホストシステム１１、エミュレータ１１５、及びユーザシステム１１４を含む。ただし、実施の形態３では、秘匿制御回路による秘匿制御に、スーパバイザモードが利用される。
【００９３】
従来からマイクロコンピュータアーキテクチャとして、スーパバイザモードの概念がある。例えば図１４に示されるように、マイクロコンピュータチップ１２１によって管理されるメモリ空間１４１がＯＳ(Operating System)、ユーザプログラムに割り当てられ、ＯＳとユーザプログラムとの走行モードの区別のため、ＣＰＵ内部のＰＳＷ(Program Status Word)レジスタなどにＳＶ(SuperViser／特権モード)ビットが設けられる。ユーザプログラムにてソフトウェア割込み(trap)命令を実行することにより、ＳＶビットが論理値”１”にセットされ、ＯＳが実行される特権モードへ移行する。
【００９４】
このスーパバイザモードを拡張し、例えば図１３に示されるように、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネント、すなわち、ＯＳ、周辺モジュールドライバ、ミドルウェア、ユーザプログラムに対して、ＳＶ１,０の２ビット論理の組み合わせを割付ける。すなわち、「００」にＯＳが割り付けられ、「０１」に周辺モジュールドライバが割り付けられ、「１０」にミドルウェアが割り付けられ、「１１」にユーザプログラムが割り当てられる。各モード間の移行には、専用の移行命令が用意される。すなわち、対応する「trap命令」が実行されるにより各モード間の移行が可能になる。ＳＶ１，０を信号としてマイクロコンピュータチップ１２１の外部に引き出し、秘匿したいソフトウェアレベルをエミュレータに対して指定することにより、エミュレータ機能制限を実施することができる。例えば図１３に示される例では、ソフトウェアレベル２以下が秘匿される。つまり、ＯＳ、周辺モジュールドライバ、ミドルウェアが「秘匿あり」とされ、ユーザプログラムが「秘匿なし」とされる。
【００９５】
図１５には、上記のようにスーパバイザモードを拡張した場合のマイクロコンピュータチップの構成例が示される。
【００９６】
図１５に示されるマイクロコンピュータチップが、図１２に示されるのと大きく相違するのは、ＣＰＵ１２１１内部のＰＳＷ(Program Status Word)レジスタにＳＶ１，０ビットが設けられ、このＳＶ１，０ビットの信号に基づいて、秘匿制御回路１２２２での秘匿制御が行われる点である。ここで、ＰＳＷレジスタは、本発明における「プログラム走行モード設定レジスタ」の一例とされる。
【００９７】
図１６には、図１５に示される秘匿制御回路１２２２の構成例が示される。
【００９８】
図１６に示される秘匿制御回路１２２２が、図３に示されるのと大きく相違するのは、秘匿ＩＤ設定レジスタ３１−１〜３１−ｎに代えて、秘匿モード設定レジスタ１６１−１〜１６１−ｎが設けられている点である。秘匿モード設定レジスタ１６１−１〜１６１−ｎには、ホストシステム１１１からエミュレータ１１５を介して伝達された秘匿対象プログラム走行モード情報が設定される。図１３に示される例では、ＯＳ、周辺モジュールドライバソフトウェア、ミドルウェアについてのＳＶ１，０ビットが、秘匿対象プログラム走行モード情報として、秘匿モード設定レジスタ１６１−１〜１６１−ｎに設定される。そして、比較回路１６２−１〜１６２−ｎでの比較結果が後段のオアゲート１６３を介して、デバッグ用機能回路動作抑止信号として出力される。
【００９９】
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路１２２２による秘匿制御により、上記ソフトウェア開発装置１０と同様の効果を得ることができる。
【０１００】
＜実施の形態４＞
従来からマイクロコンピュータアーキテクチャとして、ＭＭＵ(Memory Management Unit)によるアドレス変換／メモリ保護機構の概念がある。例えば図１７に示されるように、通常ＯＳ(Operating System)上で動作するユーザプログラムはタスク／プロセスといった実行単位に分割されている。ＯＳは各タスクが相互にメモリ空間１７１で影響しないようにＭＭＵを使用し、各タスク毎に仮想アドレス空間１７２を割り当てる。ＭＭＵは仮想アドレス空間１７２から実メモリ空間１７１のアドレスにアドレス変換する機能を持つ。このとき各仮想アドレス空間１７２は、ＣＰＵ１２１１内に設けられた空間ＩＤ(ＣＲレジスタ内のＳＩＤ＝０−１５)によって区別される。このＭＭＵの空間ＩＤ情報を利用し、ＯＳに対して秘匿すべきタスクを指定することにより、エミュレータにてマイクロコンピュータチップから引き出されたＳＩＤ信号を秘匿すべきタスクの空間ＩＤ情報と比較し、その比較結果に基づいてエミュレータ機能制限を実施することができる。
【０１０１】
図１８には、上記のようにＭＭＵを使用し、各タスク毎に仮想アドレス空間１７２を割り当てた場合のマイクロコンピュータチップの構成例が示される。上記のようにＯＳ上で動作するユーザプログラムはタスク／プロセスといった実行単位に分割されており、この実行単位はデバッグ対象プログラムのソフトウェアコンポーネントと見ることができる。
【０１０２】
図１８に示されるマイクロコンピュータチップが、図１２に示されるのと大きく相違するのは、ＣＰＵ１２１１内部のＣＲレジスタが設けられ、このＣＲレジスタのＳＩＤビット３−０に対応するＳＩＤ３−０信号に基づいて、秘匿制御回路１２２２での秘匿制御が行われる点である。ここで、ＣＲレジスタは、本発明における「空間ＩＤ設定レジスタ」の一例とされる。
【０１０３】
図１９には、図１８に示される秘匿制御回路１２２２の構成例が示される。
【０１０４】
図１９に示される秘匿制御回路１２２２が、図３に示されるのと大きく相違するのは、秘匿ＩＤ設定レジスタ３１−１〜３１−ｎに代えて、秘匿空間設定レジスタ１９１−１〜１９１−ｎが設けられている点である。秘匿モード設定レジスタ１９１−１〜１９１−ｎには、ホストシステム１１１からエミュレータ１１５を介して伝達された秘匿対象仮想アドレス空間情報が設定される。そして、比較回路１６２−１〜１６２−ｎでの比較結果が後段のオアゲート１６３を介して、デバッグ用機能回路動作抑止信号として出力される。
【０１０５】
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路１２２２による秘匿制御により、上記ソフトウェア開発装置１０と同様の効果を得ることができる。
【０１０６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１０７】
例えばマイクロコンピュータチップ１１３に、暗号復号モジュール２１７やダウンロード専用エリア２１を設けることができる。
【符号の説明】
【０１０８】
１０  ソフトウェア開発装置
１１  ホストシステム
１２  ＵＳＢアダプタ
１３  エミュレータ
１４  ユーザシステム
１５  光ディスク
２１  デバッグ用マイクロコンピュータ
２２  デバッグ機能部
２３  ＰＣインタフェース
３１−１〜３１−ｎ  秘匿ＩＤ設定レジスタ
３２−１〜３２−ｎ  比較回路
３３  オアゲート
１１１  ホストシステム
１１２  ＵＳＢドライバ
１１４  ユーザシステム
１１５  エミュレータ
１１６  光ディスク
１６１−１〜１６１−ｎ  秘匿モード設定レジスタ
１６２−１〜１６２−ｎ  比較回路
１６３  オアゲート
１９１−１〜１９１−ｎ  秘匿空間設定レジスタ
２１１  ＣＰＵ
２１２  デバッグ用ＩＦ回路
２１３  デバッグ対象プログラム用ＲＡＭ
２１４  実行ソフトＩＤ設定レジスタ
２１５  周辺モジュール
２１７  暗号復号モジュール
２１８  ダウンロード専用エリア
２２１  デバッグ用機能回路
２２２  秘匿制御回路
１２１１  ＣＰＵ
１２１３  デバッグ対象プログラム用ＲＡＭ
１２１４  実行ソフトＩＤ設定レジスタ
１２１５  周辺モジュール
１２２１  デバッグ用機能回路
１２２４  デバッグ用ファームウェアメモリ
１２２２  秘匿制御回路
【図１】
2011165038.tif 000003
【図２】
2011165038.tif 000004
【図３】
2011165038.tif 000005
【図４】
2011165038.tif 000006
【図５】
2011165038.tif 000007
【図６】
2011165038.tif 000008
【図７】
2011165038.tif 000009
【図８】
2011165038.tif 000010
【図９】
2011165038.tif 000011
【図１０】
2011165038.tif 000012
【図１１】
2011165038.tif 000013
【図１２】
2011165038.tif 000014
【図１３】
2011165038.tif 000015
【図１４】
2011165038.tif 000016
【図１５】
2011165038.tif 000017
【図１６】
2011165038.tif 000018
【図１７】
2011165038.tif 000019
【図１８】
2011165038.tif 000020
【図１９】
2011165038.tif 000021