説明

ソフトウェア開発装置、プログラム、記録媒体、及び半導体集積回路装置

【課題】ソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限する。
【解決手段】ソフトウェア開発装置(10)は、ホストシステム(11)と、エミュレータ(13)とを含む。上記エミュレータは、デバッグ用マイクロコンピュータ(211)と、上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路(221)とを含む。上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路(222)を設け、ソフトウェアの動的プログラム解析を困難にする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアの秘匿技術に関し、例えばIP(特定用途のソフトウェア、回路モジュール)を搭載したマイクロコンピュータで実行されるプログラムの開発に適用して有効な技術に関する。
【背景技術】
【0002】
マイクロコンピュータで実行されるプログラムの開発支援のためのソフトウェア開発装置は、ホストシステムとエミュレータとを含む。ホストシステムは、ソフトウェア開発支援に関する各種プログラムを実行したり、エミュレータの動作制御を行う。エミュレータは、ユーザシステムに本来搭載されるマイクロコンピュータに代わって、デバッグ対象プログラムとされるユーザプログラムを実行することで、ユーザプログラムのデバッグのための情報を得る。
【0003】
近年のマイクロコンピュータソフトウェア開発では、互いに異なる開発元のソフトウェアコンポーネントを組み合わせて最終ソフトウェアを組み立てるケースが多くなっている。従来のマイクロコンピュータ開発装置では、OS(Operating System)、周辺モジュールドライバ、ライブラリ、アプリケーションがリンクされた最終的なロードモジュールファイルがあれば、通常その全体ソフトウェアに対して静的解析や、動的な解析、評価が可能である。その中に一部秘匿したいソフトウェアや、回路がある場合にマイクロコンピュータソフトウェア開発装置のファームウェアで秘匿したいソフトウェアのアドレスを認識することにより、デバッグ機能を制限する技術が知られている(例えば特許文献1参照)。また、マスクROM(Read Only Memory)上の秘匿したいソフトウェアの特定固定アドレス範囲をハードウェアで検出し、デバッグ機能を制限する技術が知られている(例えば特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−65555号公報
【特許文献2】特開2003−280756号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のように、近年のマイクロコンピュータソフトウェア開発では、互いに異なる開発元のソフトウェアコンポーネントを組み合わせて最終ソフトウェアを組み立てるケースが多くなっている。従来のマイクロコンピュータ開発装置では、OS(Operating System)、周辺モジュールドライバ、ライブラリ、アプリケーションがリンクされた最終的なロードモジュールファイルがあれば、通常その全体ソフトウェアに対して静的解析や、動的な解析、評価が可能である。このような従来技術について本願発明者が検討したところ、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して、当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができないため、IP技術を第三者に対して秘匿にすることが困難になることが見いだされた。このことは、特許文献1,2記載の技術によっても解決することができない。
【0006】
本発明の目的は、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限するための技術を提供することにある。
【0007】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0009】
すなわち、ホストシステムと、上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータとを含んでソフトウェア開発装置を構成する。上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータと、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路とを含む。そして、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を設ける。
【発明の効果】
【0010】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0011】
すなわち、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。
【図面の簡単な説明】
【0012】
【図1】本発明にかかるソフトウェア開発装置の構成例ブロック図である。
【図2】上記ソフトウェア開発装置に含まれるエミュレータの構成例ブロック図である。
【図3】上記エミュレータに含まれる秘匿制御回路の構成例回路図である。
【図4】上記エミュレータに含まれるデバッグ用機能回路によって実現される各種デバッグ機能と、秘匿制御回路による秘匿時の機能制限例の説明図である。
【図5】上記ソフトウェア開発装置において、ソフトウェアを開発するためのツールとして、クロスソフトウェアを使用した場合の処理の流れを示すフローチャートである。
【図6】上記クロスソフトウェアに含まれるコンパイル又はアセンブル処理の流れを示すフローチャートである。
【図7】上記クロスソフトウェアに含まれるリンク処理の流れを示すフローチャートである。
【図8】上記秘匿制御回路に含まれる秘匿ID設定レジスタへの秘匿ID情報設定の流れを示すフローチャートである。
【図9】ソフトウェア開発装置におけるデバッグ対象プログラムのダウンロードの説明図である。
【図10】ソフトウェア開発装置におけるデバッグ対象プログラムのアップロードの説明図である。
【図11】本発明にかかる半導体集積回路装置の一例とされるマイクロコンピュータチップを含むオンチップエミュレータの構成例ブロック図である。
【図12】上記マイクロコンピュータチップの構成例ブロック図である。
【図13】上記スーパバイザモードの拡張に関する説明図である。
【図14】マイクロコンピュータアーキテクチャとしてのスーパバイザモードの概念説明図である。
【図15】図13に示されるようにスーパバイザモードを拡張した場合の上記マイクロコンピュータチップの構成例ブロック図である。
【図16】図15に示されるマイクロコンピュータチップに含まれる秘匿制御回路の構成例ブロック図である。
【図17】マイクロコンピュータアーキテクチャとしてのMMUによるアドレス変換/メモリ保護機構の説明図である。
【図18】図17に示されるようなMMUを使用して各タスク毎に仮想アドレス空間を割り当てた場合のマイクロコンピュータチップの構成例ブロック図である。
【図19】図18に示されるマイクロコンピュータチップに含まれる秘匿制御回路の構成例ブロック図である。
【発明を実施するための形態】
【0013】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0014】
〔1〕本発明の代表的な実施の形態に係るソフトウェア開発装置(10)は、ホストシステム(11)と、上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータ(13)とを含む。上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータ(211)と、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路(221)とを含む。そして、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路(222)を設ける。
【0015】
上記の構成によれば、秘匿制御回路は、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限する。このように上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作が制限されることにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
【0016】
〔2〕上記〔1〕において、上記デバッグ用マイクロコンピュータには、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される実行ソフトID設定レジスタ(214)を含めることができる。これにより、実行ソフトID設定レジスタが設けられることにより、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報の設定を容易に行うことができる。また、上記秘匿制御回路には、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタ(31−1〜31−n)と、上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路(32−1)〜32−nとを含めることができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する。かかる構成によれば、上記機能を有する秘匿制御回路を容易に実現することができる。
【0017】
〔3〕上記〔1〕において、上記ホストシステムは、ソースファイルをコンパイル又はアセンブルすることで、オブジェクトファイルを形成するオブジェクトファイル生成機能と、上記オブジェクトファイル生成機能により形成されたオブジェクトファイルに基づいてロードモジュールファイルを形成するロードモジュールファイル生成機能とを含めることができる。このとき、上記ロードモジュールファイルが上記デバッグ対象プログラムとして上記エミュレータに送出される。これにより、ホストシステムにおいて、ソースファイルのコンパイル又はアセンブルや、オブジェクトファイルに基づくロードモジュールファイルの形成を行うことができる。
【0018】
〔4〕上記〔3〕において、上記オブジェクトファイル生成機能は、ソースファイルを読み込んで、上記実行ソフトID設定レジスタにID情報を書き込むためのコードを上記ソースファイルに付加する第1機能(601,602)と、上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能(603)と、上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能とを含む。また、上記オブジェクトファイル生成機能は、上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能(605)と、上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能(606)とを含む。
【0019】
上記ロードモジュールファイル生成機能は、上記オブジェクトファイル生成機能によって生成されたオブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能(701,702)と、上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能(703)とを含む。また、上記ロードモジュールファイル生成機能は、上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能(704)と、上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能(705)と、を含む。
【0020】
上記各機能が発揮されることにより、上記オブジェクトファイルや上記ロードモジュールファイルの生成を的確に行うことができる。
【0021】
〔5〕上記〔4〕において、上記デバッグ用マイクロコンピュータには、上記ホストシステムによって暗号化された上記ロードモジュールファイルを取り込んで復号化する復号化処理機能(217)と、上記復号化処理機能で復号化されたファイルを格納するための専用エリア(218)とを設け、上記専用エリアに格納されたファイルを上記デバッグ対象として実行するように構成することができる。
【0022】
デバッグ用マイクロコンピュータに暗号復号モジュールを設け、そこで暗号処理や復号処理が行われるため、復号化された命令コードはデバッグ用マイクロコンピュータの内部以外には存在しない。デバッグ対象プログラムのコードをデバッグ用マイクロコンピュータの外部で取得することができないので、秘匿対象とされるソフトウェアの静的コード解析が困難になる。
【0023】
〔6〕上記〔5〕において、上記デバッグ用マイクロコンピュータには、上記専用アリア内の上記ロードモジュールファイルを上記ホストシステムに送出する前に当該ロードモジュールファイルを暗号化する暗号化処理機能(217)を更に設けることができる。復号化された命令コードがデバッグ用マイクロコンピュータの外部に送出されるのを回避することができる。
【0024】
〔7〕コンピュータに実現させるためのプログラムとして、ソースファイルを読み込んで、実行ソフトID設定レジスタにID情報を書き込むためのコードを上記ソースファイルに付加する第1機能と、上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能とを設ける。また、上記コンピュータに実現させるためのプログラムとして、上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能と、上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能と、上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能とを設ける。さらに、上記コンピュータに実現させるためのプログラムとして、上記オブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能と、上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能を設ける。そして、上記コンピュータに実現させるためのプログラムとして、上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能と、上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能とを設ける。上記各機能が発揮されることにより、上記オブジェクトファイルや上記ロードモジュールファイルの生成を的確に行うことができる。
【0025】
〔8〕上記〔7〕のプログラムは、コンピュータ読み取り可能な記録媒体に記録することができる。これにより、上記記録媒体に記録されている上記プログラムをコンピュータに実行させることができる。
【0026】
〔9〕デバッグ対象プログラムを実行可能なマイクロコンピュータ機能部(121)と、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路(1221)とを含んで半導体集積回路装置を構成する。このとき、上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路(1222)を設ける。
【0027】
上記の構成によれば、秘匿制御回路は、上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。このように、秘匿すべきソフトウェアコンポーネントとして予め指定されたものについては、エミュレータ13のデバッグ機能の動作が制限される。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
【0028】
〔10〕上記〔9〕において、上記マイクロコンピュータ機能部(121)は、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される実行ソフトID設定レジスタ(1214)を含む。このとき、上記秘匿制御回路は、上記実行ソフトID設定レジスタに設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記実行ソフトID設定レジスタの設定情報に対応するプログラムが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。
【0029】
〔11〕上記〔10〕において、上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタ(31−1〜31−n)と、上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路(32−1〜31−n)とを含んで構成することができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。
【0030】
〔12〕上記〔9〕において、上記マイクロコンピュータ機能部は、上記マイクロコンピュータ機能部で実行されるプログラムを指定するためのプログラム走行モード設定レジスタ(PSW)を含んで構成することができる。このとき上記秘匿制御回路は、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。これにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
【0031】
〔13〕上記〔12〕において、上記秘匿制御回路は、秘匿対象プログラム走行モード情報が設定された秘匿モード設定レジスタ(161−1〜161−n)と、上記プログラム走行モード設定レジスタの出力情報と、上記秘匿モード設定レジスタの出力情報とを比較する比較回路(162−1〜162−n)とを含んで構成することができる。このとき、上記比較の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。
【0032】
〔14〕上記〔9〕において、上記マイクロコンピュータ機能部は、デバッグ対象プログラムの実行単位毎に割り当てられた仮想アドレス空間を示す空間ID情報が設定される空間ID設定レジスタ(CR)を含んで構成することができる。このとき、上記秘匿制御回路は、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位を秘匿すべきか否かを判別し、その判別結果に基づいて、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位が上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作が制限される。これにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
【0033】
〔15〕上記〔14〕において、上記秘匿制御回路は、秘匿対象仮想アドレス空間情報が設定された秘匿空間設定レジスタ(191−1〜191−n)と、上記空間ID設定レジスタの出力情報と、上記秘匿空間設定レジスタの出力情報とを比較する比較回路(162−1〜162−n)と、を含んで構成することができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。
【0034】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0035】
<実施の形態1>
図1には、本発明にかかるソフトウェア開発装置の構成例が示される。
【0036】
図1に示されるソフトウェア開発装置10は、特に制限されないが、ホストシステム11とエミュレータ13とを含む。ホストシステム11は、例えばパーソナルコンピュータであり、ソフトウェア開発支援に関する各種プログラムを実行する。ソフトウェア開発支援に関する各種プログラムには、所定の言語でソフトウェアを開発するためのツールや、エミュレータ13の動作制御用プログラムなどが含まれる。ソフトウェア開発支援に関する所定のプログラムは、記録媒体の一例とされる光ディスク15によって供給され、ホストシステム11に読み取られて実行される。エミュレータ13は、USBアダプタ12を介してホストシステム11に結合され、エミュレータ本体から引き出されたインタフェースケーブルを介してユーザシステム14におけるマイクロコンピュータのソケットに結合される。エミュレータ13は、ユーザシステム14に本来搭載されるマイクロコンピュータに代わって、デバッグ対象プログラムとされるユーザプログラムを実行することで、ユーザプログラムのデバッグのための情報(デバッグ情報)を得る。デバッグ対象プログラムとされるユーザプログラムは、ホストシステム11上でCコンパイラ等の言語で開発され、ユーザシステム14に搭載されるマイクロコンピュータ上で動作するオブジェクトコードに変換される。変換されたオブジェクトコード(デバッグ対象プログラム)は、ユーザプログラムはホストシステム11からUSBアダプタ12を介してエミュレータ13に伝達される(これを「ダウンロード」という)。エミュレータ13で得られたデバッグ情報は、デバッグ及び評価のため、USBアダプタ12を介してホストシステム11に伝達される。
【0037】
図2には、エミュレータ13の構成例が示される。
【0038】
エミュレータ13は、図2に示されるように、デバッグ用マイクロコンピュータ21、デバッグ機能部22、及びPC(パーソナルコンピュータ)インタフェース23を含む。PCインタフェース23は、ホストシステム11との間で、デバッグ対象プログラムやデバッグ情報などの各種情報のやり取りを行う。
【0039】
デバッグ用マイクロコンピュータ21は、CPU211や周辺モジュール215など、ユーザシステム14に搭載されるチップと同等の回路モジュールのほかに、デバッグのための回路として、デバッグ用IF(インタフェース)回路212、デバッグ対象プログラム用RAM(ランダムアクセスメモリ)213、及び実行ソフトID設定レジスタ214を含む。CPU211は、デバッグ対象プログラムを実行する。周辺モジュール215は、CPU211によってアクセスされる。デバッグ用IF回路212は、デバッグ用マイクロコンピュータ21とデバッグ機能部22との間で各種信号のやり取りを行う。デバッグ対象プログラム用RAM213には、ホストシステム11から伝達されたデバッグ対象プログラムが格納される。デバッグ対象プログラム用RAM213内のデバッグ対象プログラムは、CPU211で実行される。実行ソフトID設定レジスタ214には、デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される。実行ソフトID設定レジスタ214へのID情報設定は、デバッグ対象プログラムを実行するCPU211によって行われる。
【0040】
デバッグ機能部22は、デバッグ用機能回路221、及び秘匿制御回路222を含み、デバッグ用マイクロコンピュータ21やPCインタフェース23に結合される。デバッグ用機能回路221は、エミュレータ13のデバッグ制御プログラムが実行される制御用マイクロプロセッサやその周辺回路が含まれ、各種デバッグ機能が実現される。
【0041】
秘匿制御回路222は、予め設定された情報に基づいて、実行ソフトID設定レジスタ214に設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントがデバッグ用マイクロコンピュータ21で実行された場合のデバッグ用機能回路221の動作を制限する。
【0042】
図4には、デバッグ用機能回路221によって実現される各種デバッグ機能と、秘匿制御回路222による秘匿時の機能制限例が示される。
【0043】
デバッグ用機能回路221によって実現される各種デバッグ機能には、特に制限されないが、図4に示されるように、Go機能、STEP機能、ブレーク機能、CPUレジスタの参照・変更機能、メモリの参照・変更機能、トレース機能、パフォーマンス機能、プロファイル機能、カバレッジ機能などが含まれる。
【0044】
Go機能は、ユーザプログラム(デバッグ対象プログラム)の実行を開始する機能である。実行を開始するPC(ホストシステム11)の設定も可能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分からの実行が拒否される。
【0045】
STEP機能は、デバッグ用マイクロコンピュータ21において、C言語やアセンブラレベルでデバッグ対象プログラムの1行分が実行される毎に、当該プログラムの実行を停止する機能である。しかし、秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するソフトウェアコンポーネント(プログラム部分)でのSTEP実行自体が拒否される。
【0046】
ブレーク機能は、予め指定したブレーク条件と、実際のプログラム実行状態とが一致した場合に、ユーザプログラム(デバッグ対象プログラム)の実行を停止する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分でのブレーク設定が拒否される。もし、秘匿するプログラム部分でブレークした場合にはデバッグ用マイクロコンピュータ21がリセットされる。
【0047】
CPUレジスタの参照・変更機能は、デバッグ用マイクロコンピュータ21におけるCPUコア内部のレジスタの状態を表示し、あるいは当該レジスタの状態を変更する機能である。デバッグ用マイクロコンピュータ21におけるCPUコア内部のレジスタの状態は、秘匿するまでもないことから、秘匿制御回路222によるデバッグ機能制限から除外されている。
【0048】
周辺モジュールレジスタの参照・変更機能は、デバッグ用マイクロコンピュータ21における周辺モジュール215のレジスタの状態を表示し、あるいは当該レジスタの状態を変更する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、デバッグ用マイクロコンピュータ21における周辺モジュール215の参照・変更は拒否される。
【0049】
メモリの参照・変更機能は、デバッグ用マイクロコンピュータ21におけるメモリの内容を表示し、あるいは当該メモリの内容を変更する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分のメモリアクセスが拒否される。
【0050】
トレース機能は、ユーザプログラム(デバッグ対象プログラム)の実行履歴を記録し、その記録結果を必要に応じて表示したり保存する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分はハードウェア的にトレースされない。
【0051】
パフォーマンス機能は、ユーザプログラム(デバッグ対象プログラム)の実行時間や実行回数を計測し、その計測結果を必要に応じて表示したり保存する機能である。このパフォーマンス機能は、秘匿するまでもないことから、秘匿制御回路222によるデバッグ機能制限から除外されている。
【0052】
プロファイル機能は、ユーザプログラム(デバッグ対象プログラム)の関数の実行時間と実行回数を計測し、その計測結果を必要に応じて表示したり記録する機能である。このプロファイル機能は、秘匿するまでもないことから、秘匿制御回路222によるデバッグ機能制限から除外されている。
【0053】
カバレッジ機能は、ユーザプログラム(デバッグ対象プログラム)をテスト工程で実行したか否か判別し、必要に応じてそれを表示したり記録する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分についてカバレッジは機能しない。
【0054】
図3には、秘匿制御回路222の構成例が示される。
【0055】
秘匿制御回路222は、図3に示されるように、複数の秘匿ID設定レジスタ31−1〜31−n(nは正の整数)、複数の比較回路32−1〜32−n、及びオアゲート33が結合されて成る。複数の秘匿ID設定レジスタ31−1〜31−nには、秘匿すべきソフトウェアコンポーネントのID情報(「秘匿ID情報」という)が設定される。複数の秘匿ID設定レジスタ31−1〜31−nへの秘匿ID情報はホストシステム11によって行われる。尚、デバッグ対象プログラムに設定されている秘匿ID情報の数は、通常はデバッグ対象プログラムによって異なるため、複数の秘匿ID設定レジスタ31−1〜31−nの全てに秘匿ID情報が設定されるとは限らない。複数の比較回路32−1〜32−nは、複数の秘匿ID設定レジスタ31−1〜31−nに対応して設けられる。複数の比較回路32−1〜32−nは、それぞれ対応する秘匿ID設定レジスタ31−1〜31−nの出力情報(秘匿ID情報)と、実行ソフトID設定レジスタ214の出力情報(実行ソフトID情報)とが一致するか否かの判別を行う。ID情報が一致する場合、それは、これから実行されるソフトウェアコンポーネントは秘匿すべきものであることを意味する。複数の比較回路32−1〜32−nの出力は、後段のオアゲート33でオア論理が得られる。オアゲート33の出力信号は、デバッグ用機能回路動作抑止信号として、デバッグ用機能回路221に伝達される。比較回路32−1〜32−nのうちのいずれかで、ID情報が一致すると判断された場合、デバッグ用機能回路動作抑止信号が例えば論理値“0”にアサートされる。デバッグ用機能回路221は、デバッグ用機能回路動作抑止信号が論理値“0”にアサートされた場合には、秘匿時動作となり、その機能が制限される(図4参照)。しかし、デバッグ用機能回路動作抑止信号が例えば論理値“1”にネゲートされた場合、デバッグ用機能回路221は通常動作(秘匿時以外の動作を意味する)となる。
【0056】
次に、デバッグ対象プログラム(ユーザプログラム)の作成支援について説明する。
【0057】
デバッグ対象プログラムの作成は、ホストシステム(例えばパーソナルコンピュータ)11においてソフトウェアを開発するためのツールを起動することで可能になる。
【0058】
図5には、ソフトウェアを開発するためのツールとして、クロスソフトウェアを使用した場合の処理の流れが示される。
【0059】
ここでは、ソースファイルとして、OS(オペレーティングシステム)501、ライブラリ502,503、アプリケーション504,505,506が所定の言語で作成されており、そのうち、OS501とライブラリ502とが秘匿すべきものとされる。OS501、ライブラリ502,503、アプリケーション504,505,506がそれぞれコンパイル又はアセンブルされることでオブジェクトファイル511,512,513,514,515,516が形成される。このとき、秘匿すべきOS501、ライブラリ502については、コンパイル又はアセンブルの際に暗号化されることで、暗号化されたオブジェクトファイル(暗号化ファイル)とされる。また、OS501、ライブラリ502,503、アプリケーション504,505,506には、コンパイル又はアセンブルの際に、固有のID情報が設定される。ここでは、説明の便宜上、オブジェクトファイル511〜516に、ID=1〜6が設定されるものとする。オブジェクトファイル511〜516は、ID情報が設定された後にリンク処理される。このリンク処理によって、マイクロコンピュータで実行可能なロードモジュールファイル521が形成される。複数のオブジェクトファイル511〜516に暗号化ファイルが含まれている場合(本例では511,512が暗号化ファイル)、ロードモジュールファイル521も暗号化ファイルとさえる。
【0060】
図6には、上記コンパイル又はアセンブル処理の流れが示される。
【0061】
先ず、対応するソースファイル及び必要となるオプションが読み込まれる(601)。そして、実行ソフトID設定レジスタ214にID情報を書き込むためのコードが、プログラムの先頭に付加される(602)。その後、通常のコンパイル又はアセンブル処理が行われる(603)。つまり、ソースコードがオブジェクトコードに変換されることでオブジェクトファイルが形成される。そして、得られたオブジェクトファイルが秘匿の対象か否かの判別が行われる(604)。この判別において、秘匿対象である(Yes)と判断された場合、当該オブジェクトファイルを暗号化処理する(605)。つまり、暗号化処理対象のオブジェクトファイルと所定の暗号化鍵がセットされて所定の暗号化演算が実行されることにより、暗号化ファイルが形成される。本例の場合、OS501とライブラリ502とが秘匿対象であるから、それに対応するオブジェクトファイル511,512のみが暗号化ファイルとされる。そして、この暗号化ファイルの先頭に、当該ファイルが秘匿対象か否かを示すフラグが付加される(606)。尚、上記ステップ604の判別において、秘匿対象ではない(No)と判断されたオブジェクトファイルについては、暗号化処理されることなく、そのファイルの先頭に当該ファイルが秘匿対象か否かを示すフラグが付加される。特に制限されないが、当該ファイルが秘匿対象であれば、上記フラグは論理値“1”とされ、当該ファイルが秘匿対象でなければ、上記フラグは論理値“0”とされる。そして、このようなフラグが付加されたオブジェクトファイルがリンク処理のために出力される(607)。
【0062】
図7には、上記リンク処理の流れが示される。
【0063】
先ず、オブジェクトファイル511〜516が順次読み込まれ(701)、通常のプログラムリンク処理が行われる(702)。すなわち、オブジェクトファイルが解析されて、参照している他のオブジェクトファイルやライブラリなど、必要なものが結合されて実行形式のファイル(ロードモジュールファイル)が作成される。次に、作成されたロードモジュールファイルに秘匿対象が含まれているか否かの判別が行われる(703)。この判別は、上記ステップ606(図6参照)で付加されたフラグを判別することによって可能となる。この判別において、秘匿対象が含まれる(Yes)と判断された場合には、当該ロードモジュールファイル全体に対して、再び暗号化処理が行われる(704)。そして、当該ロードモジュールファイルの先頭に、当該ファイルが秘匿対象か否かを示すフラグが付加される(705)。このフラグ付加は、上記ステップ606の場合と同様に行われる。すなわち、当該ファイルが秘匿対象であれば、上記フラグは論理値“1”とされ、当該ファイルが秘匿対象でなければ、上記フラグは論理値“0”とされる。そして、このようなフラグが付加されたロードモジュールファイルが出力される(706)。上記リンク処理により得られたロードモジュールファイルが、デバッグ対象プログラムとして、エミュレータ13にダウンロードされる。
【0064】
図8には、上記秘匿ID設定レジスタ31−1〜31−nへの秘匿ID情報設定の流れが示される。
【0065】
上記ステップ706(図7参照)で出力されたロードモジュールファイルが、ホストシステム11上で動作する上位ソフトウェアにより読み込まれ、秘匿対象か否かを示すフラグの論理判別が行われることで、秘匿対象とされるソフトウェアコンポーネントのID情報と、その数nの検出が行われる(801)。その後、ホストシステム11上で動作する上位ソフトウェアにより、エミュレータ13内のデバッグ機能部22におけるコントロールCPUで動作しているファームウェア(デバッグ制御プログラム)に対して、秘匿対象とされるソフトウェアコンポーネントのID情報を秘匿ID設定レジスタ31−1〜31−nの何れかへ書き込むためのコマンドを発行する(802)。そして、当該コマンドに基づいて、秘匿ID設定レジスタへのID情報の書き込みが完了したか否かの判別が行われ(803)、当該秘匿ID設定レジスタへのID情報の書き込みが完了した(Yes)と判断された場合には、上記ステップ801で検出された全てのソフトウェアコンポーネントのID情報の書き込みを終了したか否かの判別が行われる(804)。この判別で、全てのソフトウェアコンポーネントのID情報の書き込みを終了していない(No)と判断された場合には、上記ステップ802に戻り、次のID情報の書き込みを行うためのコマンドの発行が行われる。このようにして上記ステップ801で検出された全てのソフトウェアコンポーネントのID情報が秘匿ID設定レジスタ31−1〜31−nに書き込まれる。
【0066】
次に、ホストシステム11からエミュレータ13へのデバッグ対象プログラムのダウンロードについて説明する。
【0067】
図9には、デバッグ対象プログラムのダウンロードにおけるデータの流れが示される。
【0068】
ホストシステム11上で動作される上位ソフトウェアによって暗号化ファイルの読み込みが行われる(91)。システム起動時に、デバッグ対象とユーザのオプション選択により、ロード対象となるロードモジュールが確定される。ホストシステム11内のロードモジュール格納用フォルダが検索され、対象ファイルが存在する場合は、その暗号化ファイルがオープンされ、それがバイナリ形式で適宜のバッファに読み込まれる。
【0069】
次に、USBドライバ112を介して、デバッグ機能部22におけるコントロールCPU223上で動作するファームウェアに暗号化ファイル(暗号化されたデバッグ対象プログラム)が転送される(92)。エミュレータ13では、デバッグ用マイクロコンピュータ21のファイアウォールが一時的に解除され、暗号化データの取り込みが可能になる。暗号化データは、ホストシステム11内で特定長の単位に分割してからエミュレータ13に順次送出される。
【0070】
次に、コントロールCPU223上で動作するファームウェアから、デバッグ用マイクロコンピュータ21で動作するファームウェアへのデータ転送が行われる(93)。このとき、暗号化データは、更に短い単位に分割されてから転送され、デバッグ対象プログラム用RAM213に格納される。コントロールCPU223上で動作するファームウェアは、デバッグ用マイクロコンピュータ21上で動作するファームウェアの処理完了を確認してから、次のデータを転送する。
【0071】
コントロールCPU223上で動作するファームウェアは、ホストシステム11から暗号化ファイルの転送が完了された後に、ホストシステムに対して終了通知を行い、デバッグ用マイクロコンピュータ21のファイアウォールを有効にする。
【0072】
デバッグ対象プログラム用RAM213に格納された暗号化データは、デバッグ用マイクロコンピュータ21における暗号復号モジュール217に伝達されて復号化される(94)。
【0073】
デバッグ用マイクロコンピュータ21上で動作するファームウェアは、暗号復号モジュール217に暗号化データと暗号化鍵をセットして復号化演算を実行させる。この復号化演算により得られた復号化データはデバッグ用マイクロコンピュータ21上のダウンロード専用エリア218に格納される。ダウンロード専用エリア218は、デバッグ対象プログラム用RAM213に形成することができる。このようにしてダウンロード専用エリア218に格納された復号化データは、デバッグ対象プログラムとして、デバッグ用マイクロコンピュータ21で実行される。
【0074】
次に、暗号復号モジュール217による暗号化データの生成について説明する。
【0075】
図10には、デバッグ対象プログラムのアップロードにおけるデータの流れが示される。
【0076】
デバッグ用マイクロコンピュータ21のファイアウォールを一時的に解除しておく。
【0077】
デバッグ用マイクロコンピュータ21上のファームウェアは、ダウンロード専用エリア21からデータを読み出して、暗号復号モジュール217に、暗号化対象の生データと暗号鍵をセットして暗号化演算を実行させることにより、暗号化データを得る(101)。
【0078】
暗号化データは、コントロールCPU223上で動作するファームウェアへ転送される。すなわち、デバッグ用マイクロコンピュータ21上で動作するファームウェアは、暗号化データを小データ長単位で、デバッグ対象プログラム用RAM213に格納する。コントロールCPU33上で動作するファームウェアは、デバッグ対象プログラム用RAM213から上記暗号化データを繰り返し取得する(102)。このようにして取得された暗号化データは、ホストシステム11上で動作される上位ソフトウェアに転送される(103)。すなわち、コントロールCPU33上で動作するファームウェアは、上記暗号化データを特定単位長にまとめて、ホストシステム11上で動作される上位ソフトウェアに転送される(103)。転送された暗号化ファイルは保存される。コントロールCPU33上で動作するファームウェアから取得した暗号化データを、指定サイズまで適宜のバッファで合成される。この時点で、デバッグ用マイクロコンピュータ21のファイアウォールが有効にされる。指定された場所にファイルを作成し、暗号化データを書き出すことができる(104)。
【0079】
実施の形態1によれば、以下の作用効果を得ることができる。
【0080】
(1)秘匿制御回路222が設けられ、この秘匿制御回路222の秘匿制御機能により、秘匿すべきソフトウェアコンポーネントとして予め指定されたものについては、エミュレータ13のデバッグ機能の動作が制限される。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
【0081】
(2)デバッグ用マイクロコンピュータ21に暗号復号モジュール217を設け、そこで暗号処理や復号処理が行われるため、復号化された命令コードはデバッグ用マイクロコンピュータ21の内部以外には存在しない。これにより、デバッグ対象プログラムのコードをデバッグ用マイクロコンピュータ217の外部で取得することができないので、秘匿対象とされるソフトウェアの静的コード解析が困難になる。
【0082】
<実施の形態2>
近年は、デバッグ機能を内蔵したマイクロコンピュータチップと、ICチップの検査方式の一つであるバウンダリスキャンテストの標準方式であるJTAG(Joint European Test Action Group)標準端子などを介して接続する方式のオンチップエミュレータが広く使用されるようになってきている。このような構成のエミュレータ(「オンチップエミュレータ」と称される)においても、実施の形態1の場合と同様に、秘匿対象とされるソフトウェアの静的コード解析や動的プログラム解析を困難にすることができる。
【0083】
図11には、本発明にかかる半導体集積回路装置の一例とされるマイクロコンピュータチップを含むオンチップエミュレータのシステム構成例が示される。
【0084】
図11に示されるオンチップエミュレータが、図1に示されるソフトウェア開発装置10と大きく相違するのは、デバッグ機能の多くが、ユーザシステム114に搭載されているマイクロコンピュータチップに内蔵されている点である。ホストシステム111は、図1に示されるホストシステム11と同様の機能を有し、USBなどの通信インタフェースを介してエミュレータ115に接続され、当該エミュレータ115の動作をコントロールする。エミュレータ115は、ユーザシステム114上のマイクロコンピュータチップとJTAG標準端子などを介して接続され、当該マイクロコンピュータチップの動作を制御する。ソフトウェア開発支援に関する所定のプログラムは、記録媒体の一例とされる光ディスク116によって供給され、ホストシステム11に読み取られて実行される。マイクロコンピュータチップ上で動作するプログラムは、実施の形態1の場合と同様にホストシステム111上でCコンパイラ等の言語で開発され、マイクロコンピュータチップ上で動作するオブジェクトコードに変換される。変換されたオブジェクトコードはホストシステム111上のエミュレータコントロールする制御プログラムにより、エミュレータ115を介してマイクロコンピュータチップにダウンロードされて実行される。エミュレータ115およびホストシステム111上のエミュレータ制御プログラムは、マイクロコンピュータチップおよびマイクロコンピュータチップ上にダウンロードされたオブジェクトコードの動作をデバッグ・評価する機能を有する。
【0085】
図12には、ユーザシステム114上のマイクロコンピュータチップの構成例が示される。
【0086】
ユーザシステム114上のマイクロコンピュータチップ113は、図12に示されるように、マイクロコンピュータ機能部121、デバッグ機能部122、及びデバッグインタフェース(IF)回路123を含み、例えばシリコン基板などのひとつの半導体基板に形成される。デバッグインタフェース回路123は、デバッグ情報のやり取りを行うため、エミュレータ115にJTAG標準端子を介して結合される。
【0087】
マイクロコンピュータチップ113は、CPU1211や周辺モジュール1215、デバッグのための回路として、デバッグ対象プログラム用RAM(ランダムアクセスメモリ)1213、及び実行ソフトID設定レジスタ1214を含む。また、このマイクロコンピュータチップ113は、JTAG標準端子を介してエミュレータ115に結合され、デバッグ対象プログラムのダウンロードや各種制御情報のやり取りが行われるようになっている。
【0088】
CPU1211は、デバッグ対象プログラムを実行する。周辺モジュール1215は、CPU1211によってアクセスされる。デバッグ対象プログラム用RAM1213には、ホストシステム111からエミュレータ115を介して伝達されたデバッグ対象プログラムが格納される。デバッグ対象プログラム用RAM1213内のデバッグ対象プログラムは、CPU1211で実行される。実行ソフトID設定レジスタ1214には、デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される。実行ソフトID設定レジスタ1214へのID情報設定は、実施の形態1の場合と同様に、デバッグ対象プログラムを実行するCPU1211によって行われる。
【0089】
デバッグ機能部22は、デバッグ用ファームウェアメモリ1224、デバッグ用機能回路1221、及び秘匿制御回路222を含み、マイクロコンピュータチップ113やデバッグインタフェース123に結合される。デバッグ用ファームウェアメモリ1224には、デバッグ用ファームウェアが格納されている。このデバッグ用ファームウェアは、マイクロコンピュータチップ113で実行される。デバッグ用機能回路1221は、デバッグ用ファームウェアが実行されることで実現される各種デバッグ機能を含む。この各種デバッグ機能は、図4に示されるのと同様とされる。
【0090】
秘匿制御回路1222は、予め設定された情報に基づいて、実行ソフトID設定レジスタ1214に設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントがマイクロコンピュータチップ121で実行された場合のデバッグ用機能回路1221の動作を制限する。秘匿制御回路1222は、実施の形態1の場合と同様に、図3に示される構成を採用することができる。
【0091】
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路1222による秘匿制御により、上記ソフトウェア開発装置10と同様の効果を得ることができる。
【0092】
<実施の形態3>
実施の形態3にかかるオンチップエミュレータシステムも、基本的には、図11に示されるように、ホストシステム11、エミュレータ115、及びユーザシステム114を含む。ただし、実施の形態3では、秘匿制御回路による秘匿制御に、スーパバイザモードが利用される。
【0093】
従来からマイクロコンピュータアーキテクチャとして、スーパバイザモードの概念がある。例えば図14に示されるように、マイクロコンピュータチップ121によって管理されるメモリ空間141がOS(Operating System)、ユーザプログラムに割り当てられ、OSとユーザプログラムとの走行モードの区別のため、CPU内部のPSW(Program Status Word)レジスタなどにSV(SuperViser/特権モード)ビットが設けられる。ユーザプログラムにてソフトウェア割込み(trap)命令を実行することにより、SVビットが論理値”1”にセットされ、OSが実行される特権モードへ移行する。
【0094】
このスーパバイザモードを拡張し、例えば図13に示されるように、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネント、すなわち、OS、周辺モジュールドライバ、ミドルウェア、ユーザプログラムに対して、SV1,0の2ビット論理の組み合わせを割付ける。すなわち、「00」にOSが割り付けられ、「01」に周辺モジュールドライバが割り付けられ、「10」にミドルウェアが割り付けられ、「11」にユーザプログラムが割り当てられる。各モード間の移行には、専用の移行命令が用意される。すなわち、対応する「trap命令」が実行されるにより各モード間の移行が可能になる。SV1,0を信号としてマイクロコンピュータチップ121の外部に引き出し、秘匿したいソフトウェアレベルをエミュレータに対して指定することにより、エミュレータ機能制限を実施することができる。例えば図13に示される例では、ソフトウェアレベル2以下が秘匿される。つまり、OS、周辺モジュールドライバ、ミドルウェアが「秘匿あり」とされ、ユーザプログラムが「秘匿なし」とされる。
【0095】
図15には、上記のようにスーパバイザモードを拡張した場合のマイクロコンピュータチップの構成例が示される。
【0096】
図15に示されるマイクロコンピュータチップが、図12に示されるのと大きく相違するのは、CPU1211内部のPSW(Program Status Word)レジスタにSV1,0ビットが設けられ、このSV1,0ビットの信号に基づいて、秘匿制御回路1222での秘匿制御が行われる点である。ここで、PSWレジスタは、本発明における「プログラム走行モード設定レジスタ」の一例とされる。
【0097】
図16には、図15に示される秘匿制御回路1222の構成例が示される。
【0098】
図16に示される秘匿制御回路1222が、図3に示されるのと大きく相違するのは、秘匿ID設定レジスタ31−1〜31−nに代えて、秘匿モード設定レジスタ161−1〜161−nが設けられている点である。秘匿モード設定レジスタ161−1〜161−nには、ホストシステム111からエミュレータ115を介して伝達された秘匿対象プログラム走行モード情報が設定される。図13に示される例では、OS、周辺モジュールドライバソフトウェア、ミドルウェアについてのSV1,0ビットが、秘匿対象プログラム走行モード情報として、秘匿モード設定レジスタ161−1〜161−nに設定される。そして、比較回路162−1〜162−nでの比較結果が後段のオアゲート163を介して、デバッグ用機能回路動作抑止信号として出力される。
【0099】
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路1222による秘匿制御により、上記ソフトウェア開発装置10と同様の効果を得ることができる。
【0100】
<実施の形態4>
従来からマイクロコンピュータアーキテクチャとして、MMU(Memory Management Unit)によるアドレス変換/メモリ保護機構の概念がある。例えば図17に示されるように、通常OS(Operating System)上で動作するユーザプログラムはタスク/プロセスといった実行単位に分割されている。OSは各タスクが相互にメモリ空間171で影響しないようにMMUを使用し、各タスク毎に仮想アドレス空間172を割り当てる。MMUは仮想アドレス空間172から実メモリ空間171のアドレスにアドレス変換する機能を持つ。このとき各仮想アドレス空間172は、CPU1211内に設けられた空間ID(CRレジスタ内のSID=0−15)によって区別される。このMMUの空間ID情報を利用し、OSに対して秘匿すべきタスクを指定することにより、エミュレータにてマイクロコンピュータチップから引き出されたSID信号を秘匿すべきタスクの空間ID情報と比較し、その比較結果に基づいてエミュレータ機能制限を実施することができる。
【0101】
図18には、上記のようにMMUを使用し、各タスク毎に仮想アドレス空間172を割り当てた場合のマイクロコンピュータチップの構成例が示される。上記のようにOS上で動作するユーザプログラムはタスク/プロセスといった実行単位に分割されており、この実行単位はデバッグ対象プログラムのソフトウェアコンポーネントと見ることができる。
【0102】
図18に示されるマイクロコンピュータチップが、図12に示されるのと大きく相違するのは、CPU1211内部のCRレジスタが設けられ、このCRレジスタのSIDビット3−0に対応するSID3−0信号に基づいて、秘匿制御回路1222での秘匿制御が行われる点である。ここで、CRレジスタは、本発明における「空間ID設定レジスタ」の一例とされる。
【0103】
図19には、図18に示される秘匿制御回路1222の構成例が示される。
【0104】
図19に示される秘匿制御回路1222が、図3に示されるのと大きく相違するのは、秘匿ID設定レジスタ31−1〜31−nに代えて、秘匿空間設定レジスタ191−1〜191−nが設けられている点である。秘匿モード設定レジスタ191−1〜191−nには、ホストシステム111からエミュレータ115を介して伝達された秘匿対象仮想アドレス空間情報が設定される。そして、比較回路162−1〜162−nでの比較結果が後段のオアゲート163を介して、デバッグ用機能回路動作抑止信号として出力される。
【0105】
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路1222による秘匿制御により、上記ソフトウェア開発装置10と同様の効果を得ることができる。
【0106】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0107】
例えばマイクロコンピュータチップ113に、暗号復号モジュール217やダウンロード専用エリア21を設けることができる。
【符号の説明】
【0108】
10 ソフトウェア開発装置
11 ホストシステム
12 USBアダプタ
13 エミュレータ
14 ユーザシステム
15 光ディスク
21 デバッグ用マイクロコンピュータ
22 デバッグ機能部
23 PCインタフェース
31−1〜31−n 秘匿ID設定レジスタ
32−1〜32−n 比較回路
33 オアゲート
111 ホストシステム
112 USBドライバ
114 ユーザシステム
115 エミュレータ
116 光ディスク
161−1〜161−n 秘匿モード設定レジスタ
162−1〜162−n 比較回路
163 オアゲート
191−1〜191−n 秘匿空間設定レジスタ
211 CPU
212 デバッグ用IF回路
213 デバッグ対象プログラム用RAM
214 実行ソフトID設定レジスタ
215 周辺モジュール
217 暗号復号モジュール
218 ダウンロード専用エリア
221 デバッグ用機能回路
222 秘匿制御回路
1211 CPU
1213 デバッグ対象プログラム用RAM
1214 実行ソフトID設定レジスタ
1215 周辺モジュール
1221 デバッグ用機能回路
1224 デバッグ用ファームウェアメモリ
1222 秘匿制御回路

【特許請求の範囲】
【請求項1】
ホストシステムと、
上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータと、を含み、
上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータと、
上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路と、を含むソフトウェア開発装置であって、
上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を含むことを特徴とするソフトウェア開発装置。
【請求項2】
上記デバッグ用マイクロコンピュータは、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される実行ソフトID設定レジスタを含み、
上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタと、
上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項1記載のソフトウェア開発装置。
【請求項3】
上記ホストシステムは、ソースファイルをコンパイル又はアセンブルすることで、オブジェクトファイルを形成するオブジェクトファイル生成機能と、
上記オブジェクトファイル生成機能により形成されたオブジェクトファイルに基づいてロードモジュールファイルを形成するロードモジュールファイル生成機能と、を含み、上記ロードモジュールファイルが上記デバッグ対象プログラムとして上記エミュレータに送出される請求項1記載のソフトウェア開発装置。
【請求項4】
上記オブジェクトファイル生成機能は、ソースファイルを読み込んで、上記実行ソフトID設定レジスタにID情報を書き込むためのコードを上記ソースファイルに付加する第1機能と、
上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能と、
上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能と、
上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能と、
上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能と、を含み、
上記ロードモジュールファイル生成機能は、上記オブジェクトファイル生成機能によって生成されたオブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能と、
上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能と、
上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能と、
上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能と、を含む請求項3記載のソフトウェア開発装置。
【請求項5】
上記デバッグ用マイクロコンピュータは、上記ホストシステムによって暗号化された上記ロードモジュールファイルを取り込んで復号化する復号化処理機能と、
上記復号化処理機能で復号化されたファイルを格納するための専用エリアと、を含み、上記専用エリアに格納されたファイルを上記デバッグ対象として実行する請求項4記載のソフトウェア開発装置。
【請求項6】
上記デバッグ用マイクロコンピュータは、上記専用アリア内の上記ロードモジュールファイルを上記ホストシステムに送出する前に当該ロードモジュールファイルを暗号化する暗号化処理機能を更に含む請求項5記載のソフトウェア開発装置。
【請求項7】
ソースファイルを読み込んで、実行ソフトID設定レジスタにID情報を書き込むためのコードを上記ソースファイルに付加する第1機能と、
上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能と、
上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能と、
上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能と、
上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能と、
上記オブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能と、
上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能と、
上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能と、
上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能と、をコンピュータに実現させるためのプログラム。
【請求項8】
請求項7記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項9】
デバッグ対象プログラムを実行可能なマイクロコンピュータ機能部と、
上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路と、を含む半導体集積回路装置であって、
上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を含むことを特徴とする半導体集積回路装置。
【請求項10】
上記マイクロコンピュータ機能部は、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される実行ソフトID設定レジスタを含み、
上記秘匿制御回路は、上記実行ソフトID設定レジスタに設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記実行ソフトID設定レジスタの設定情報に対応するプログラムが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項9記載の半導体集積回路装置。
【請求項11】
上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタと、
上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項10記載の半導体集積回路装置。
【請求項12】
上記マイクロコンピュータ機能部は、上記マイクロコンピュータ機能部で実行されるプログラムを指定するためのプログラム走行モード設定レジスタを含み、
上記秘匿制御回路は、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項9記載の半導体集積回路装置。
【請求項13】
上記秘匿制御回路は、秘匿対象プログラム走行モード情報が設定された秘匿モード設定レジスタと、
上記プログラム走行モード設定レジスタの出力情報と、上記秘匿モード設定レジスタの出力情報とを比較する比較回路と、を含み、上記比較の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項12記載の半導体集積回路装置。
【請求項14】
上記マイクロコンピュータ機能部は、デバッグ対象プログラムの実行単位毎に割り当てられた仮想アドレス空間を示す空間ID情報が設定される空間ID設定レジスタを含み、
上記秘匿制御回路は、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位を秘匿すべきか否かを判別し、その判別結果に基づいて、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位が上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項9記載の半導体集積回路装置。
【請求項15】
上記秘匿制御回路は、秘匿対象仮想アドレス空間情報が設定された秘匿空間設定レジスタと、
上記空間ID設定レジスタの出力情報と、上記秘匿空間設定レジスタの出力情報とを比較する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項14記載の半導体集積回路装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2011−165038(P2011−165038A)
【公開日】平成23年8月25日(2011.8.25)
【国際特許分類】
【出願番号】特願2010−28761(P2010−28761)
【出願日】平成22年2月12日(2010.2.12)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】