JP2011165038A - Software development device, program, recording medium, and semiconductor integrated circuit device - Google Patents
Software development device, program, recording medium, and semiconductor integrated circuit device Download PDFInfo
- Publication number
- JP2011165038A JP2011165038A JP2010028761A JP2010028761A JP2011165038A JP 2011165038 A JP2011165038 A JP 2011165038A JP 2010028761 A JP2010028761 A JP 2010028761A JP 2010028761 A JP2010028761 A JP 2010028761A JP 2011165038 A JP2011165038 A JP 2011165038A
- Authority
- JP
- Japan
- Prior art keywords
- function
- file
- information
- software
- microcomputer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
Description
本発明は、ソフトウェアの秘匿技術に関し、例えばIP(特定用途のソフトウェア、回路モジュール)を搭載したマイクロコンピュータで実行されるプログラムの開発に適用して有効な技術に関する。 The present invention relates to a software concealment technique, for example, a technique effective when applied to the development of a program executed by a microcomputer equipped with IP (specific application software, circuit module).
マイクロコンピュータで実行されるプログラムの開発支援のためのソフトウェア開発装置は、ホストシステムとエミュレータとを含む。ホストシステムは、ソフトウェア開発支援に関する各種プログラムを実行したり、エミュレータの動作制御を行う。エミュレータは、ユーザシステムに本来搭載されるマイクロコンピュータに代わって、デバッグ対象プログラムとされるユーザプログラムを実行することで、ユーザプログラムのデバッグのための情報を得る。 A software development apparatus for supporting development of a program executed on a microcomputer includes a host system and an emulator. The host system executes various programs related to software development support and controls the operation of the emulator. The emulator obtains information for debugging the user program by executing a user program which is a program to be debugged instead of the microcomputer originally mounted on the user system.
近年のマイクロコンピュータソフトウェア開発では、互いに異なる開発元のソフトウェアコンポーネントを組み合わせて最終ソフトウェアを組み立てるケースが多くなっている。従来のマイクロコンピュータ開発装置では、OS(Operating System)、周辺モジュールドライバ、ライブラリ、アプリケーションがリンクされた最終的なロードモジュールファイルがあれば、通常その全体ソフトウェアに対して静的解析や、動的な解析、評価が可能である。その中に一部秘匿したいソフトウェアや、回路がある場合にマイクロコンピュータソフトウェア開発装置のファームウェアで秘匿したいソフトウェアのアドレスを認識することにより、デバッグ機能を制限する技術が知られている(例えば特許文献1参照)。また、マスクROM(Read Only Memory)上の秘匿したいソフトウェアの特定固定アドレス範囲をハードウェアで検出し、デバッグ機能を制限する技術が知られている(例えば特許文献2参照)。 In recent microcomputer software development, there are many cases where final software is assembled by combining software components of different developers. In a conventional microcomputer development device, if there is a final load module file linked with an OS (Operating System), peripheral module drivers, libraries, and applications, the entire software is usually subjected to static analysis and dynamic Analysis and evaluation are possible. There is known a technique for limiting the debugging function by recognizing the address of software to be concealed by firmware of a microcomputer software development apparatus when there is software or a circuit to be concealed among them (for example, Patent Document 1). reference). In addition, a technique is known in which a specific fixed address range of software to be concealed on a mask ROM (Read Only Memory) is detected by hardware, and a debugging function is limited (see, for example, Patent Document 2).
上記のように、近年のマイクロコンピュータソフトウェア開発では、互いに異なる開発元のソフトウェアコンポーネントを組み合わせて最終ソフトウェアを組み立てるケースが多くなっている。従来のマイクロコンピュータ開発装置では、OS(Operating System)、周辺モジュールドライバ、ライブラリ、アプリケーションがリンクされた最終的なロードモジュールファイルがあれば、通常その全体ソフトウェアに対して静的解析や、動的な解析、評価が可能である。このような従来技術について本願発明者が検討したところ、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して、当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができないため、IP技術を第三者に対して秘匿にすることが困難になることが見いだされた。このことは、特許文献1,2記載の技術によっても解決することができない。
As described above, in recent microcomputer software development, there are many cases where final software is assembled by combining software components of different developers. In a conventional microcomputer development device, if there is a final load module file linked with an OS (Operating System), peripheral module drivers, libraries, and applications, the entire software is usually subjected to static analysis and dynamic Analysis and evaluation are possible. The inventor of the present application examined such a conventional technique, and it is impossible to specify a software component that is a part of a final load module file and limit a debugging function for the software component. It has been found that it is difficult to keep it secret from third parties. This cannot be solved even by the techniques described in
本発明の目的は、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限するための技術を提供することにある。 An object of the present invention is to provide a technique for specifying a software component that is a part of a final load module file and limiting a debugging function for the software component.
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。 The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。 The following is a brief description of an outline of typical inventions disclosed in the present application.
すなわち、ホストシステムと、上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータとを含んでソフトウェア開発装置を構成する。上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータと、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路とを含む。そして、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を設ける。 That is, a software development apparatus is configured including a host system and an emulator coupled to the host system and for debugging a program to be debugged transmitted from the host system. The emulator includes a debugging microcomputer capable of executing the debugging target program, a debugging functional circuit for obtaining debugging information of the debugging target program by monitoring an execution state of the debugging target program by the debugging microcomputer, including. Then, based on the confidential setting information about the software component constituting the debug target program executed by the debugging microcomputer, it is determined whether or not the software component should be concealed, and based on the determination result, the software A secret control circuit capable of restricting the operation of the debug function circuit when the component is executed by the debug microcomputer is provided.
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。 The effects obtained by the representative ones of the inventions disclosed in the present application will be briefly described as follows.
すなわち、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。 That is, it is possible to specify a software component that is a part of the final load module file and limit the debugging function for the software component.
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
1. First, an outline of a typical embodiment of the invention disclosed in the present application will be described. Reference numerals in the drawings referred to in parentheses in the outline description of the representative embodiments merely exemplify what are included in the concept of the components to which the reference numerals are attached.
〔1〕本発明の代表的な実施の形態に係るソフトウェア開発装置(10)は、ホストシステム(11)と、上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータ(13)とを含む。上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータ(211)と、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路(221)とを含む。そして、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路(222)を設ける。 [1] A software development apparatus (10) according to a representative embodiment of the present invention is coupled to a host system (11) and the host system, and debugs a program to be debugged transmitted from the host system. Emulator (13). The emulator includes a debugging microcomputer (211) capable of executing the debugging target program and a debugging microcomputer for obtaining debugging information of the debugging target program by monitoring an execution state of the debugging target program by the debugging microcomputer. And a functional circuit (221). Then, based on the confidential setting information about the software component constituting the debug target program executed by the debugging microcomputer, it is determined whether or not the software component should be concealed, and based on the determination result, the software A secret control circuit (222) capable of restricting the operation of the debugging functional circuit when the component is executed by the debugging microcomputer is provided.
上記の構成によれば、秘匿制御回路は、上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限する。このように上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作が制限されることにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。 According to the above configuration, the concealment control circuit determines whether or not the software component should be concealed based on the concealment setting information about the software component that constitutes the debug target program executed by the debugging microcomputer. Based on the determination result, the operation of the functional circuit for debugging when the software component is executed by the microcomputer for debugging is limited. As described above, the operation of the functional circuit for debugging when the software component is executed by the debugging microcomputer is limited, so that the software component that is a part of the final load module file can be specified and The debugging function for software components can be limited. This makes it difficult to perform dynamic program analysis of software to be concealed, making it possible to conceal IP technology from third parties.
〔2〕上記〔1〕において、上記デバッグ用マイクロコンピュータには、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される実行ソフトID設定レジスタ(214)を含めることができる。これにより、実行ソフトID設定レジスタが設けられることにより、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報の設定を容易に行うことができる。また、上記秘匿制御回路には、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタ(31−1〜31−n)と、上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路(32−1)〜32−nとを含めることができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する。かかる構成によれば、上記機能を有する秘匿制御回路を容易に実現することができる。 [2] In the above [1], the debug microcomputer may include an execution software ID setting register (214) in which ID information of software components constituting the debug target program is set. Thus, by providing the execution software ID setting register, it is possible to easily set the ID information of the software component constituting the debug target program. Further, the secret control circuit includes a secret ID setting register (31-1 to 31-n) in which ID information of a secret software component is set, output information of the execution software ID setting register, and the secret ID setting. Comparing circuits (32-1) to 32-n for determining whether or not the output information of the register matches can be included. At this time, a signal for limiting the operation of the debug function circuit is formed based on the comparison result of the comparison circuit. According to this configuration, a secret control circuit having the above functions can be easily realized.
〔3〕上記〔1〕において、上記ホストシステムは、ソースファイルをコンパイル又はアセンブルすることで、オブジェクトファイルを形成するオブジェクトファイル生成機能と、上記オブジェクトファイル生成機能により形成されたオブジェクトファイルに基づいてロードモジュールファイルを形成するロードモジュールファイル生成機能とを含めることができる。このとき、上記ロードモジュールファイルが上記デバッグ対象プログラムとして上記エミュレータに送出される。これにより、ホストシステムにおいて、ソースファイルのコンパイル又はアセンブルや、オブジェクトファイルに基づくロードモジュールファイルの形成を行うことができる。 [3] In the above [1], the host system compiles or assembles a source file to load an object file based on an object file generation function that forms an object file and an object file formed by the object file generation function. A load module file generation function for forming a module file can be included. At this time, the load module file is sent to the emulator as the debug target program. As a result, the host system can compile or assemble the source file and form a load module file based on the object file.
〔4〕上記〔3〕において、上記オブジェクトファイル生成機能は、ソースファイルを読み込んで、上記実行ソフトID設定レジスタにID情報を書き込むためのコードを上記ソースファイルに付加する第1機能(601,602)と、上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能(603)と、上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能とを含む。また、上記オブジェクトファイル生成機能は、上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能(605)と、上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能(606)とを含む。 [4] In the above [3], the object file generation function reads the source file and adds a code for writing ID information to the execution software ID setting register to the first file (601, 602) ), A second function (603) that forms an object file by compiling or assembling the source file to which the code is added by the first function, and the object file obtained by the second function is a secret object. And a third function for determining whether or not there is. In addition, the object file generation function is based on the fourth function (605) for performing encryption processing on the object file to be concealed based on the determination result by the third function and the determination result by the third function. The object file includes a fifth function (606) for setting a flag indicating whether or not the file is a secret object.
上記ロードモジュールファイル生成機能は、上記オブジェクトファイル生成機能によって生成されたオブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能(701,702)と、上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能(703)とを含む。また、上記ロードモジュールファイル生成機能は、上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能(704)と、上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能(705)と、を含む。 The load module file generation function includes a sixth function (701, 702) for forming a load module file based on the object file generated by the object file generation function, and a load module file formed by the sixth function. And a seventh function (703) for determining whether or not an object to be concealed is included. In addition, the load module file generation function includes an eighth function (704) for performing encryption processing on the load module file that is determined to contain a secret object by the seventh function, and the seventh function. And a ninth function (705) for adding a flag indicating whether or not the file is a secret object to the load module file based on the determination result.
上記各機能が発揮されることにより、上記オブジェクトファイルや上記ロードモジュールファイルの生成を的確に行うことができる。 By exhibiting the above functions, the object file and the load module file can be generated accurately.
〔5〕上記〔4〕において、上記デバッグ用マイクロコンピュータには、上記ホストシステムによって暗号化された上記ロードモジュールファイルを取り込んで復号化する復号化処理機能(217)と、上記復号化処理機能で復号化されたファイルを格納するための専用エリア(218)とを設け、上記専用エリアに格納されたファイルを上記デバッグ対象として実行するように構成することができる。 [5] In the above [4], the debugging microcomputer receives the load module file encrypted by the host system and decrypts the load module file (217) and the decryption processing function. A dedicated area (218) for storing the decrypted file may be provided, and the file stored in the dedicated area may be executed as the debug target.
デバッグ用マイクロコンピュータに暗号復号モジュールを設け、そこで暗号処理や復号処理が行われるため、復号化された命令コードはデバッグ用マイクロコンピュータの内部以外には存在しない。デバッグ対象プログラムのコードをデバッグ用マイクロコンピュータの外部で取得することができないので、秘匿対象とされるソフトウェアの静的コード解析が困難になる。 Since the encryption / decryption module is provided in the debugging microcomputer, and encryption processing and decryption processing are performed there, there is no decrypted instruction code other than inside the debugging microcomputer. Since the code of the program to be debugged cannot be acquired outside the debugging microcomputer, it becomes difficult to perform static code analysis of software to be concealed.
〔6〕上記〔5〕において、上記デバッグ用マイクロコンピュータには、上記専用アリア内の上記ロードモジュールファイルを上記ホストシステムに送出する前に当該ロードモジュールファイルを暗号化する暗号化処理機能(217)を更に設けることができる。復号化された命令コードがデバッグ用マイクロコンピュータの外部に送出されるのを回避することができる。 [6] In the above [5], the debugging microcomputer encrypts the load module file before sending the load module file in the dedicated area to the host system (217). Can be further provided. The decrypted instruction code can be prevented from being sent out of the debugging microcomputer.
〔7〕コンピュータに実現させるためのプログラムとして、ソースファイルを読み込んで、実行ソフトID設定レジスタにID情報を書き込むためのコードを上記ソースファイルに付加する第1機能と、上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能とを設ける。また、上記コンピュータに実現させるためのプログラムとして、上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能と、上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能と、上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能とを設ける。さらに、上記コンピュータに実現させるためのプログラムとして、上記オブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能と、上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能を設ける。そして、上記コンピュータに実現させるためのプログラムとして、上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能と、上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能とを設ける。上記各機能が発揮されることにより、上記オブジェクトファイルや上記ロードモジュールファイルの生成を的確に行うことができる。 [7] As a program to be realized by a computer, a first function for reading a source file and writing a code for writing ID information in an execution software ID setting register to the source file, and the code by the first function And a second function for forming an object file by compiling or assembling the source file to which is added. Further, as a program to be realized by the computer, the object file obtained by the second function is concealed based on the third function for determining whether or not the object file is a concealment target and the determination result by the third function. A fifth function for setting a flag indicating whether or not the object file is a target to be concealed to the object file based on a determination result of the fourth function for performing encryption processing on the target object file and the third function; Function. Further, the program to be realized by the computer includes a sixth function for forming a load module file based on the object file, and a load module file formed by the sixth function that is to be concealed A seventh function is provided for determining whether or not to be performed. As a program to be realized by the computer, an eighth function for performing encryption processing on a load module file that is determined to contain a confidential object by the seventh function, and a function for the seventh function Based on the determination result, the load module file is provided with a ninth function for adding a flag indicating whether or not the file is a secret object. By exhibiting the above functions, the object file and the load module file can be generated accurately.
〔8〕上記〔7〕のプログラムは、コンピュータ読み取り可能な記録媒体に記録することができる。これにより、上記記録媒体に記録されている上記プログラムをコンピュータに実行させることができる。 [8] The program of [7] can be recorded on a computer-readable recording medium. Thereby, the computer can execute the program recorded on the recording medium.
〔9〕デバッグ対象プログラムを実行可能なマイクロコンピュータ機能部(121)と、上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路(1221)とを含んで半導体集積回路装置を構成する。このとき、上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路(1222)を設ける。 [9] A microcomputer functional unit (121) capable of executing the debug target program and a debug functional circuit for obtaining debug information of the debug target program by monitoring the execution state of the debug target program by the debug microcomputer (1221) is included in the semiconductor integrated circuit device. At this time, it is determined whether or not the software component should be concealed based on the concealment setting information about the software component constituting the debug target program executed by the microcomputer function unit, and based on the determination result, A secret control circuit (1222) capable of restricting the operation of the debugging functional circuit when the software component corresponding to the ID information is executed by the microcomputer function unit is provided.
上記の構成によれば、秘匿制御回路は、上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。このように、秘匿すべきソフトウェアコンポーネントとして予め指定されたものについては、エミュレータ13のデバッグ機能の動作が制限される。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
According to the above configuration, the concealment control circuit determines whether or not the software component should be concealed based on the concealment setting information about the software component that configures the debug target program executed by the microcomputer function unit. Based on the determination result, the operation of the debugging functional circuit when the software component corresponding to the ID information is executed by the microcomputer function unit is limited. In this way, the operation of the debugging function of the
〔10〕上記〔9〕において、上記マイクロコンピュータ機能部(121)は、上記デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される実行ソフトID設定レジスタ(1214)を含む。このとき、上記秘匿制御回路は、上記実行ソフトID設定レジスタに設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記実行ソフトID設定レジスタの設定情報に対応するプログラムが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。 [10] In the above [9], the microcomputer function unit (121) includes an execution software ID setting register (1214) in which ID information of software components constituting the debug target program is set. At this time, the concealment control circuit determines whether or not the software component corresponding to the ID information set in the execution software ID setting register should be concealed, and based on the determination result, the execution software ID setting register The operation of the debugging functional circuit is limited when a program corresponding to the setting information is executed by the microcomputer function unit. As a result, a concealment control circuit having the above functions can be easily realized.
〔11〕上記〔10〕において、上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタ(31−1〜31−n)と、上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路(32−1〜31−n)とを含んで構成することができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。 [11] In the above [10], the concealment control circuit outputs the concealment ID setting register (31-1 to 31-n) in which the ID information of the concealment target software component is set and the output information of the execution software ID setting register. And a comparison circuit (32-1 to 31-n) for determining whether or not the output information of the secret ID setting register matches. At this time, a signal for limiting the operation of the debug function circuit is formed based on the comparison result of the comparison circuit.
〔12〕上記〔9〕において、上記マイクロコンピュータ機能部は、上記マイクロコンピュータ機能部で実行されるプログラムを指定するためのプログラム走行モード設定レジスタ(PSW)を含んで構成することができる。このとき上記秘匿制御回路は、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する。これにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。 [12] In the above [9], the microcomputer function unit can include a program running mode setting register (PSW) for designating a program to be executed by the microcomputer function unit. At this time, the concealment control circuit determines whether or not the software component corresponding to the setting information of the program travel mode setting register should be concealed, and corresponds to the setting information of the program travel mode setting register based on the determination result. When the software component to be executed is executed by the microcomputer function unit, the operation of the functional circuit for debugging is restricted. As a result, the software component that is a part of the final load module file can be specified to limit the debugging function for the software component. This makes it difficult to perform dynamic program analysis of software to be concealed, making it possible to conceal IP technology from third parties.
〔13〕上記〔12〕において、上記秘匿制御回路は、秘匿対象プログラム走行モード情報が設定された秘匿モード設定レジスタ(161−1〜161−n)と、上記プログラム走行モード設定レジスタの出力情報と、上記秘匿モード設定レジスタの出力情報とを比較する比較回路(162−1〜162−n)とを含んで構成することができる。このとき、上記比較の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。 [13] In the above [12], the concealment control circuit includes a concealment mode setting register (161-1-161-n) in which concealment target program travel mode information is set, and output information of the program travel mode setting register, The comparator circuit 162-1 to 162-n that compares the output information of the secret mode setting register can be configured. At this time, a signal for limiting the operation of the debug function circuit is formed based on the comparison result of the comparison. As a result, a concealment control circuit having the above functions can be easily realized.
〔14〕上記〔9〕において、上記マイクロコンピュータ機能部は、デバッグ対象プログラムの実行単位毎に割り当てられた仮想アドレス空間を示す空間ID情報が設定される空間ID設定レジスタ(CR)を含んで構成することができる。このとき、上記秘匿制御回路は、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位を秘匿すべきか否かを判別し、その判別結果に基づいて、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位が上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作が制限される。これにより、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネントを指定して当該ソフトウェアコンポーネントについてのデバッグ機能を制限することができる。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。 [14] In the above [9], the microcomputer function unit includes a space ID setting register (CR) in which space ID information indicating a virtual address space allocated for each execution unit of the debug target program is set. can do. At this time, the concealment control circuit determines whether or not the execution unit of the virtual address space corresponding to the setting information of the space ID setting register should be concealed, and based on the determination result, the setting of the space ID setting register When the execution unit of the virtual address space corresponding to the information is executed by the microcomputer function unit, the operation of the debugging functional circuit is limited. As a result, the software component that is a part of the final load module file can be specified to limit the debugging function for the software component. This makes it difficult to perform dynamic program analysis of software to be concealed, making it possible to conceal IP technology from third parties.
〔15〕上記〔14〕において、上記秘匿制御回路は、秘匿対象仮想アドレス空間情報が設定された秘匿空間設定レジスタ(191−1〜191−n)と、上記空間ID設定レジスタの出力情報と、上記秘匿空間設定レジスタの出力情報とを比較する比較回路(162−1〜162−n)と、を含んで構成することができる。このとき、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号が形成される。これにより、上記機能を有する秘匿制御回路を容易に実現することができる。 [15] In the above [14], the concealment control circuit includes a concealment space setting register (191-1 to 191-n) in which concealment target virtual address space information is set, output information of the space ID setting register, Comparing circuits (162-1 to 162-n) for comparing the output information of the secret space setting register can be configured. At this time, a signal for limiting the operation of the debug function circuit is formed based on the comparison result of the comparison circuit. As a result, a concealment control circuit having the above functions can be easily realized.
2.実施の形態の詳細
実施の形態について更に詳述する。
2. Details of Embodiments Embodiments will be further described in detail.
<実施の形態1>
図1には、本発明にかかるソフトウェア開発装置の構成例が示される。
<
FIG. 1 shows a configuration example of a software development apparatus according to the present invention.
図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に伝達される。
The
図2には、エミュレータ13の構成例が示される。
FIG. 2 shows a configuration example of the
エミュレータ13は、図2に示されるように、デバッグ用マイクロコンピュータ21、デバッグ機能部22、及びPC(パーソナルコンピュータ)インタフェース23を含む。PCインタフェース23は、ホストシステム11との間で、デバッグ対象プログラムやデバッグ情報などの各種情報のやり取りを行う。
As shown in FIG. 2, the
デバッグ用マイクロコンピュータ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によって行われる。
The
デバッグ機能部22は、デバッグ用機能回路221、及び秘匿制御回路222を含み、デバッグ用マイクロコンピュータ21やPCインタフェース23に結合される。デバッグ用機能回路221は、エミュレータ13のデバッグ制御プログラムが実行される制御用マイクロプロセッサやその周辺回路が含まれ、各種デバッグ機能が実現される。
The
秘匿制御回路222は、予め設定された情報に基づいて、実行ソフトID設定レジスタ214に設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントがデバッグ用マイクロコンピュータ21で実行された場合のデバッグ用機能回路221の動作を制限する。
The
図4には、デバッグ用機能回路221によって実現される各種デバッグ機能と、秘匿制御回路222による秘匿時の機能制限例が示される。
FIG. 4 shows various debug functions realized by the
デバッグ用機能回路221によって実現される各種デバッグ機能には、特に制限されないが、図4に示されるように、Go機能、STEP機能、ブレーク機能、CPUレジスタの参照・変更機能、メモリの参照・変更機能、トレース機能、パフォーマンス機能、プロファイル機能、カバレッジ機能などが含まれる。
Various debug functions realized by the
Go機能は、ユーザプログラム(デバッグ対象プログラム)の実行を開始する機能である。実行を開始するPC(ホストシステム11)の設定も可能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分からの実行が拒否される。
The Go function is a function for starting execution of a user program (debug target program). It is also possible to set the PC (host system 11) that starts execution. When the operation of the
STEP機能は、デバッグ用マイクロコンピュータ21において、C言語やアセンブラレベルでデバッグ対象プログラムの1行分が実行される毎に、当該プログラムの実行を停止する機能である。しかし、秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するソフトウェアコンポーネント(プログラム部分)でのSTEP実行自体が拒否される。
The STEP function is a function for stopping execution of the program every time one line of the debug target program is executed in the C language or assembler level in the
ブレーク機能は、予め指定したブレーク条件と、実際のプログラム実行状態とが一致した場合に、ユーザプログラム(デバッグ対象プログラム)の実行を停止する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分でのブレーク設定が拒否される。もし、秘匿するプログラム部分でブレークした場合にはデバッグ用マイクロコンピュータ21がリセットされる。
The break function is a function for stopping the execution of the user program (the program to be debugged) when a break condition designated in advance matches an actual program execution state. When the operation of the
CPUレジスタの参照・変更機能は、デバッグ用マイクロコンピュータ21におけるCPUコア内部のレジスタの状態を表示し、あるいは当該レジスタの状態を変更する機能である。デバッグ用マイクロコンピュータ21におけるCPUコア内部のレジスタの状態は、秘匿するまでもないことから、秘匿制御回路222によるデバッグ機能制限から除外されている。
The CPU register reference / change function is a function of displaying the state of a register in the CPU core in the
周辺モジュールレジスタの参照・変更機能は、デバッグ用マイクロコンピュータ21における周辺モジュール215のレジスタの状態を表示し、あるいは当該レジスタの状態を変更する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、デバッグ用マイクロコンピュータ21における周辺モジュール215の参照・変更は拒否される。
The reference / change function of the peripheral module register is a function for displaying the register state of the
メモリの参照・変更機能は、デバッグ用マイクロコンピュータ21におけるメモリの内容を表示し、あるいは当該メモリの内容を変更する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分のメモリアクセスが拒否される。
The memory reference / change function is a function of displaying the contents of the memory in the
トレース機能は、ユーザプログラム(デバッグ対象プログラム)の実行履歴を記録し、その記録結果を必要に応じて表示したり保存する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分はハードウェア的にトレースされない。
The trace function is a function of recording an execution history of a user program (debug target program) and displaying or saving the recorded result as necessary. When the operation of the
パフォーマンス機能は、ユーザプログラム(デバッグ対象プログラム)の実行時間や実行回数を計測し、その計測結果を必要に応じて表示したり保存する機能である。このパフォーマンス機能は、秘匿するまでもないことから、秘匿制御回路222によるデバッグ機能制限から除外されている。
The performance function is a function for measuring the execution time and the number of executions of a user program (program to be debugged) and displaying or saving the measurement result as necessary. Since this performance function does not need to be concealed, it is excluded from the debug function restriction by the
プロファイル機能は、ユーザプログラム(デバッグ対象プログラム)の関数の実行時間と実行回数を計測し、その計測結果を必要に応じて表示したり記録する機能である。このプロファイル機能は、秘匿するまでもないことから、秘匿制御回路222によるデバッグ機能制限から除外されている。
The profile function is a function that measures the execution time and the number of executions of the function of the user program (debug target program), and displays or records the measurement result as necessary. Since this profile function does not need to be concealed, it is excluded from the debug function restriction by the
カバレッジ機能は、ユーザプログラム(デバッグ対象プログラム)をテスト工程で実行したか否か判別し、必要に応じてそれを表示したり記録する機能である。秘匿制御回路222によってデバッグ用機能回路221の動作が制限された場合には、秘匿するプログラム部分についてカバレッジは機能しない。
The coverage function is a function for determining whether or not a user program (program to be debugged) has been executed in the test process, and displaying or recording it as necessary. When the operation of the
図3には、秘匿制御回路222の構成例が示される。
FIG. 3 shows a configuration example of the
秘匿制御回路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は通常動作(秘匿時以外の動作を意味する)となる。
As shown in FIG. 3, the
次に、デバッグ対象プログラム(ユーザプログラム)の作成支援について説明する。 Next, support for creating a debug target program (user program) will be described.
デバッグ対象プログラムの作成は、ホストシステム(例えばパーソナルコンピュータ)11においてソフトウェアを開発するためのツールを起動することで可能になる。 The debug target program can be created by starting a tool for developing software in the host system (for example, personal computer) 11.
図5には、ソフトウェアを開発するためのツールとして、クロスソフトウェアを使用した場合の処理の流れが示される。 FIG. 5 shows a flow of processing when cross software is used as a tool for developing software.
ここでは、ソースファイルとして、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も暗号化ファイルとさえる。
Here, an OS (Operating System) 501,
図6には、上記コンパイル又はアセンブル処理の流れが示される。 FIG. 6 shows the flow of the compiling or assembling process.
先ず、対応するソースファイル及び必要となるオプションが読み込まれる(601)。そして、実行ソフトID設定レジスタ214にID情報を書き込むためのコードが、プログラムの先頭に付加される(602)。その後、通常のコンパイル又はアセンブル処理が行われる(603)。つまり、ソースコードがオブジェクトコードに変換されることでオブジェクトファイルが形成される。そして、得られたオブジェクトファイルが秘匿の対象か否かの判別が行われる(604)。この判別において、秘匿対象である(Yes)と判断された場合、当該オブジェクトファイルを暗号化処理する(605)。つまり、暗号化処理対象のオブジェクトファイルと所定の暗号化鍵がセットされて所定の暗号化演算が実行されることにより、暗号化ファイルが形成される。本例の場合、OS501とライブラリ502とが秘匿対象であるから、それに対応するオブジェクトファイル511,512のみが暗号化ファイルとされる。そして、この暗号化ファイルの先頭に、当該ファイルが秘匿対象か否かを示すフラグが付加される(606)。尚、上記ステップ604の判別において、秘匿対象ではない(No)と判断されたオブジェクトファイルについては、暗号化処理されることなく、そのファイルの先頭に当該ファイルが秘匿対象か否かを示すフラグが付加される。特に制限されないが、当該ファイルが秘匿対象であれば、上記フラグは論理値“1”とされ、当該ファイルが秘匿対象でなければ、上記フラグは論理値“0”とされる。そして、このようなフラグが付加されたオブジェクトファイルがリンク処理のために出力される(607)。
First, a corresponding source file and necessary options are read (601). Then, a code for writing ID information in the execution software ID setting register 214 is added to the head of the program (602). Thereafter, normal compilation or assembly processing is performed (603). That is, an object file is formed by converting source code into object code. Then, it is determined whether or not the obtained object file is a secret target (604). In this determination, if it is determined that the object is to be concealed (Yes), the object file is encrypted (605). That is, an encryption file is formed by setting an object file to be encrypted and a predetermined encryption key and executing a predetermined encryption operation. In this example, since the
図7には、上記リンク処理の流れが示される。 FIG. 7 shows the flow of the link process.
先ず、オブジェクトファイル511〜516が順次読み込まれ(701)、通常のプログラムリンク処理が行われる(702)。すなわち、オブジェクトファイルが解析されて、参照している他のオブジェクトファイルやライブラリなど、必要なものが結合されて実行形式のファイル(ロードモジュールファイル)が作成される。次に、作成されたロードモジュールファイルに秘匿対象が含まれているか否かの判別が行われる(703)。この判別は、上記ステップ606(図6参照)で付加されたフラグを判別することによって可能となる。この判別において、秘匿対象が含まれる(Yes)と判断された場合には、当該ロードモジュールファイル全体に対して、再び暗号化処理が行われる(704)。そして、当該ロードモジュールファイルの先頭に、当該ファイルが秘匿対象か否かを示すフラグが付加される(705)。このフラグ付加は、上記ステップ606の場合と同様に行われる。すなわち、当該ファイルが秘匿対象であれば、上記フラグは論理値“1”とされ、当該ファイルが秘匿対象でなければ、上記フラグは論理値“0”とされる。そして、このようなフラグが付加されたロードモジュールファイルが出力される(706)。上記リンク処理により得られたロードモジュールファイルが、デバッグ対象プログラムとして、エミュレータ13にダウンロードされる。
First, the object files 511 to 516 are sequentially read (701), and normal program link processing is performed (702). That is, the object file is analyzed, and necessary files such as other object files and libraries that are referred to are combined to create an executable file (load module file). Next, it is determined whether or not the created load module file contains a secret object (703). This determination is made possible by determining the flag added in step 606 (see FIG. 6). In this determination, if it is determined that the confidential target is included (Yes), the entire load module file is subjected to encryption processing again (704). Then, a flag indicating whether the file is a secret target is added to the head of the load module file (705). This flag addition is performed in the same manner as in
図8には、上記秘匿ID設定レジスタ31−1〜31−nへの秘匿ID情報設定の流れが示される。 FIG. 8 shows a flow of setting secret ID information in the secret ID setting registers 31-1 to 31-n.
上記ステップ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に書き込まれる。
The load module file output in step 706 (see FIG. 7) is read by higher-level software running on the
次に、ホストシステム11からエミュレータ13へのデバッグ対象プログラムのダウンロードについて説明する。
Next, download of the debug target program from the
図9には、デバッグ対象プログラムのダウンロードにおけるデータの流れが示される。 FIG. 9 shows a data flow in downloading the debug target program.
ホストシステム11上で動作される上位ソフトウェアによって暗号化ファイルの読み込みが行われる(91)。システム起動時に、デバッグ対象とユーザのオプション選択により、ロード対象となるロードモジュールが確定される。ホストシステム11内のロードモジュール格納用フォルダが検索され、対象ファイルが存在する場合は、その暗号化ファイルがオープンされ、それがバイナリ形式で適宜のバッファに読み込まれる。
The encrypted file is read by the upper software operating on the host system 11 (91). When the system is started, the load module to be loaded is determined by the option selection of the debug target and the user. The load module storage folder in the
次に、USBドライバ112を介して、デバッグ機能部22におけるコントロールCPU223上で動作するファームウェアに暗号化ファイル(暗号化されたデバッグ対象プログラム)が転送される(92)。エミュレータ13では、デバッグ用マイクロコンピュータ21のファイアウォールが一時的に解除され、暗号化データの取り込みが可能になる。暗号化データは、ホストシステム11内で特定長の単位に分割してからエミュレータ13に順次送出される。
Next, the encrypted file (encrypted debug target program) is transferred to the firmware operating on the
次に、コントロールCPU223上で動作するファームウェアから、デバッグ用マイクロコンピュータ21で動作するファームウェアへのデータ転送が行われる(93)。このとき、暗号化データは、更に短い単位に分割されてから転送され、デバッグ対象プログラム用RAM213に格納される。コントロールCPU223上で動作するファームウェアは、デバッグ用マイクロコンピュータ21上で動作するファームウェアの処理完了を確認してから、次のデータを転送する。
Next, data is transferred from the firmware operating on the
コントロールCPU223上で動作するファームウェアは、ホストシステム11から暗号化ファイルの転送が完了された後に、ホストシステムに対して終了通知を行い、デバッグ用マイクロコンピュータ21のファイアウォールを有効にする。
The firmware operating on the
デバッグ対象プログラム用RAM213に格納された暗号化データは、デバッグ用マイクロコンピュータ21における暗号復号モジュール217に伝達されて復号化される(94)。
The encrypted data stored in the debug
デバッグ用マイクロコンピュータ21上で動作するファームウェアは、暗号復号モジュール217に暗号化データと暗号化鍵をセットして復号化演算を実行させる。この復号化演算により得られた復号化データはデバッグ用マイクロコンピュータ21上のダウンロード専用エリア218に格納される。ダウンロード専用エリア218は、デバッグ対象プログラム用RAM213に形成することができる。このようにしてダウンロード専用エリア218に格納された復号化データは、デバッグ対象プログラムとして、デバッグ用マイクロコンピュータ21で実行される。
The firmware operating on the
次に、暗号復号モジュール217による暗号化データの生成について説明する。
Next, generation of encrypted data by the encryption /
図10には、デバッグ対象プログラムのアップロードにおけるデータの流れが示される。 FIG. 10 shows a data flow in uploading the debug target program.
デバッグ用マイクロコンピュータ21のファイアウォールを一時的に解除しておく。
The firewall of the
デバッグ用マイクロコンピュータ21上のファームウェアは、ダウンロード専用エリア21からデータを読み出して、暗号復号モジュール217に、暗号化対象の生データと暗号鍵をセットして暗号化演算を実行させることにより、暗号化データを得る(101)。
The firmware on the
暗号化データは、コントロールCPU223上で動作するファームウェアへ転送される。すなわち、デバッグ用マイクロコンピュータ21上で動作するファームウェアは、暗号化データを小データ長単位で、デバッグ対象プログラム用RAM213に格納する。コントロールCPU33上で動作するファームウェアは、デバッグ対象プログラム用RAM213から上記暗号化データを繰り返し取得する(102)。このようにして取得された暗号化データは、ホストシステム11上で動作される上位ソフトウェアに転送される(103)。すなわち、コントロールCPU33上で動作するファームウェアは、上記暗号化データを特定単位長にまとめて、ホストシステム11上で動作される上位ソフトウェアに転送される(103)。転送された暗号化ファイルは保存される。コントロールCPU33上で動作するファームウェアから取得した暗号化データを、指定サイズまで適宜のバッファで合成される。この時点で、デバッグ用マイクロコンピュータ21のファイアウォールが有効にされる。指定された場所にファイルを作成し、暗号化データを書き出すことができる(104)。
The encrypted data is transferred to firmware that operates on the
実施の形態1によれば、以下の作用効果を得ることができる。 According to the first embodiment, the following operational effects can be obtained.
(1)秘匿制御回路222が設けられ、この秘匿制御回路222の秘匿制御機能により、秘匿すべきソフトウェアコンポーネントとして予め指定されたものについては、エミュレータ13のデバッグ機能の動作が制限される。これにより、秘匿対象とされるソフトウェアの動的プログラム解析が困難になり、IP技術を第三者に対して秘匿にすることができる。
(1) A
(2)デバッグ用マイクロコンピュータ21に暗号復号モジュール217を設け、そこで暗号処理や復号処理が行われるため、復号化された命令コードはデバッグ用マイクロコンピュータ21の内部以外には存在しない。これにより、デバッグ対象プログラムのコードをデバッグ用マイクロコンピュータ217の外部で取得することができないので、秘匿対象とされるソフトウェアの静的コード解析が困難になる。
(2) Since the encryption /
<実施の形態2>
近年は、デバッグ機能を内蔵したマイクロコンピュータチップと、ICチップの検査方式の一つであるバウンダリスキャンテストの標準方式であるJTAG(Joint European Test Action Group)標準端子などを介して接続する方式のオンチップエミュレータが広く使用されるようになってきている。このような構成のエミュレータ(「オンチップエミュレータ」と称される)においても、実施の形態1の場合と同様に、秘匿対象とされるソフトウェアの静的コード解析や動的プログラム解析を困難にすることができる。
<
In recent years, a microcomputer chip with a built-in debugging function and a method of connecting via a JTAG (Joint European Test Action Group) standard terminal, which is a standard method of a boundary scan test, which is one of IC chip inspection methods, have been turned on. Chip emulators are becoming widely used. Even in an emulator having such a configuration (referred to as an “on-chip emulator”), as in the case of the first embodiment, it is difficult to perform static code analysis and dynamic program analysis of software to be concealed. be able to.
図11には、本発明にかかる半導体集積回路装置の一例とされるマイクロコンピュータチップを含むオンチップエミュレータのシステム構成例が示される。 FIG. 11 shows a system configuration example of an on-chip emulator including a microcomputer chip as an example of a semiconductor integrated circuit device according to the present invention.
図11に示されるオンチップエミュレータが、図1に示されるソフトウェア開発装置10と大きく相違するのは、デバッグ機能の多くが、ユーザシステム114に搭載されているマイクロコンピュータチップに内蔵されている点である。ホストシステム111は、図1に示されるホストシステム11と同様の機能を有し、USBなどの通信インタフェースを介してエミュレータ115に接続され、当該エミュレータ115の動作をコントロールする。エミュレータ115は、ユーザシステム114上のマイクロコンピュータチップとJTAG標準端子などを介して接続され、当該マイクロコンピュータチップの動作を制御する。ソフトウェア開発支援に関する所定のプログラムは、記録媒体の一例とされる光ディスク116によって供給され、ホストシステム11に読み取られて実行される。マイクロコンピュータチップ上で動作するプログラムは、実施の形態1の場合と同様にホストシステム111上でCコンパイラ等の言語で開発され、マイクロコンピュータチップ上で動作するオブジェクトコードに変換される。変換されたオブジェクトコードはホストシステム111上のエミュレータコントロールする制御プログラムにより、エミュレータ115を介してマイクロコンピュータチップにダウンロードされて実行される。エミュレータ115およびホストシステム111上のエミュレータ制御プログラムは、マイクロコンピュータチップおよびマイクロコンピュータチップ上にダウンロードされたオブジェクトコードの動作をデバッグ・評価する機能を有する。
The on-chip emulator shown in FIG. 11 is greatly different from the
図12には、ユーザシステム114上のマイクロコンピュータチップの構成例が示される。
FIG. 12 shows a configuration example of a microcomputer chip on the
ユーザシステム114上のマイクロコンピュータチップ113は、図12に示されるように、マイクロコンピュータ機能部121、デバッグ機能部122、及びデバッグインタフェース(IF)回路123を含み、例えばシリコン基板などのひとつの半導体基板に形成される。デバッグインタフェース回路123は、デバッグ情報のやり取りを行うため、エミュレータ115にJTAG標準端子を介して結合される。
As shown in FIG. 12, the
マイクロコンピュータチップ113は、CPU1211や周辺モジュール1215、デバッグのための回路として、デバッグ対象プログラム用RAM(ランダムアクセスメモリ)1213、及び実行ソフトID設定レジスタ1214を含む。また、このマイクロコンピュータチップ113は、JTAG標準端子を介してエミュレータ115に結合され、デバッグ対象プログラムのダウンロードや各種制御情報のやり取りが行われるようになっている。
The
CPU1211は、デバッグ対象プログラムを実行する。周辺モジュール1215は、CPU1211によってアクセスされる。デバッグ対象プログラム用RAM1213には、ホストシステム111からエミュレータ115を介して伝達されたデバッグ対象プログラムが格納される。デバッグ対象プログラム用RAM1213内のデバッグ対象プログラムは、CPU1211で実行される。実行ソフトID設定レジスタ1214には、デバッグ対象プログラムを構成するソフトウェアコンポーネントのID情報が設定される。実行ソフトID設定レジスタ1214へのID情報設定は、実施の形態1の場合と同様に、デバッグ対象プログラムを実行するCPU1211によって行われる。
The
デバッグ機能部22は、デバッグ用ファームウェアメモリ1224、デバッグ用機能回路1221、及び秘匿制御回路222を含み、マイクロコンピュータチップ113やデバッグインタフェース123に結合される。デバッグ用ファームウェアメモリ1224には、デバッグ用ファームウェアが格納されている。このデバッグ用ファームウェアは、マイクロコンピュータチップ113で実行される。デバッグ用機能回路1221は、デバッグ用ファームウェアが実行されることで実現される各種デバッグ機能を含む。この各種デバッグ機能は、図4に示されるのと同様とされる。
The
秘匿制御回路1222は、予め設定された情報に基づいて、実行ソフトID設定レジスタ1214に設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントがマイクロコンピュータチップ121で実行された場合のデバッグ用機能回路1221の動作を制限する。秘匿制御回路1222は、実施の形態1の場合と同様に、図3に示される構成を採用することができる。
The
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路1222による秘匿制御により、上記ソフトウェア開発装置10と同様の効果を得ることができる。
Also in the on-chip emulator system configured as described above, the same effect as that of the
<実施の形態3>
実施の形態3にかかるオンチップエミュレータシステムも、基本的には、図11に示されるように、ホストシステム11、エミュレータ115、及びユーザシステム114を含む。ただし、実施の形態3では、秘匿制御回路による秘匿制御に、スーパバイザモードが利用される。
<
The on-chip emulator system according to the third embodiment also basically includes a
従来からマイクロコンピュータアーキテクチャとして、スーパバイザモードの概念がある。例えば図14に示されるように、マイクロコンピュータチップ121によって管理されるメモリ空間141がOS(Operating System)、ユーザプログラムに割り当てられ、OSとユーザプログラムとの走行モードの区別のため、CPU内部のPSW(Program Status Word)レジスタなどにSV(SuperViser/特権モード)ビットが設けられる。ユーザプログラムにてソフトウェア割込み(trap)命令を実行することにより、SVビットが論理値”1”にセットされ、OSが実行される特権モードへ移行する。
Conventionally, there is a concept of supervisor mode as a microcomputer architecture. For example, as shown in FIG. 14, a
このスーパバイザモードを拡張し、例えば図13に示されるように、最終的なロードモジュールファイルの一部であるソフトウェアコンポーネント、すなわち、OS、周辺モジュールドライバ、ミドルウェア、ユーザプログラムに対して、SV1,0の2ビット論理の組み合わせを割付ける。すなわち、「00」にOSが割り付けられ、「01」に周辺モジュールドライバが割り付けられ、「10」にミドルウェアが割り付けられ、「11」にユーザプログラムが割り当てられる。各モード間の移行には、専用の移行命令が用意される。すなわち、対応する「trap命令」が実行されるにより各モード間の移行が可能になる。SV1,0を信号としてマイクロコンピュータチップ121の外部に引き出し、秘匿したいソフトウェアレベルをエミュレータに対して指定することにより、エミュレータ機能制限を実施することができる。例えば図13に示される例では、ソフトウェアレベル2以下が秘匿される。つまり、OS、周辺モジュールドライバ、ミドルウェアが「秘匿あり」とされ、ユーザプログラムが「秘匿なし」とされる。
As shown in FIG. 13, for example, as shown in FIG. 13, the supervisor mode is expanded for software components that are a part of the final load module file, that is, the OS, peripheral module driver, middleware, and user program. Assign a combination of 2-bit logic. That is, the OS is assigned to “00”, the peripheral module driver is assigned to “01”, the middleware is assigned to “10”, and the user program is assigned to “11”. A dedicated transition instruction is prepared for transition between the modes. That is, the transition between the modes becomes possible by executing the corresponding “trap instruction”. The emulator functions can be restricted by extracting SV1,0 as a signal to the outside of the
図15には、上記のようにスーパバイザモードを拡張した場合のマイクロコンピュータチップの構成例が示される。 FIG. 15 shows an example of the configuration of a microcomputer chip when the supervisor mode is expanded as described above.
図15に示されるマイクロコンピュータチップが、図12に示されるのと大きく相違するのは、CPU1211内部のPSW(Program Status Word)レジスタにSV1,0ビットが設けられ、このSV1,0ビットの信号に基づいて、秘匿制御回路1222での秘匿制御が行われる点である。ここで、PSWレジスタは、本発明における「プログラム走行モード設定レジスタ」の一例とされる。
The microcomputer chip shown in FIG. 15 is greatly different from that shown in FIG. 12 in that SV1, 0 bits are provided in the PSW (Program Status Word) register in the
図16には、図15に示される秘匿制御回路1222の構成例が示される。
FIG. 16 shows a configuration example of the
図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を介して、デバッグ用機能回路動作抑止信号として出力される。
The
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路1222による秘匿制御により、上記ソフトウェア開発装置10と同様の効果を得ることができる。
Also in the on-chip emulator system configured as described above, the same effect as that of the
<実施の形態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情報と比較し、その比較結果に基づいてエミュレータ機能制限を実施することができる。
<
Conventionally, as a microcomputer architecture, there is a concept of an address translation / memory protection mechanism using an MMU (Memory Management Unit). For example, as shown in FIG. 17, a user program that normally operates on an OS (Operating System) is divided into execution units such as tasks / processes. The OS uses the MMU so that the tasks do not affect each other in the
図18には、上記のようにMMUを使用し、各タスク毎に仮想アドレス空間172を割り当てた場合のマイクロコンピュータチップの構成例が示される。上記のようにOS上で動作するユーザプログラムはタスク/プロセスといった実行単位に分割されており、この実行単位はデバッグ対象プログラムのソフトウェアコンポーネントと見ることができる。
FIG. 18 shows a configuration example of the microcomputer chip when the MMU is used as described above and the
図18に示されるマイクロコンピュータチップが、図12に示されるのと大きく相違するのは、CPU1211内部のCRレジスタが設けられ、このCRレジスタのSIDビット3−0に対応するSID3−0信号に基づいて、秘匿制御回路1222での秘匿制御が行われる点である。ここで、CRレジスタは、本発明における「空間ID設定レジスタ」の一例とされる。
The microcomputer chip shown in FIG. 18 is greatly different from that shown in FIG. 12 in that a CR register inside the
図19には、図18に示される秘匿制御回路1222の構成例が示される。
FIG. 19 shows a configuration example of the
図19に示される秘匿制御回路1222が、図3に示されるのと大きく相違するのは、秘匿ID設定レジスタ31−1〜31−nに代えて、秘匿空間設定レジスタ191−1〜191−nが設けられている点である。秘匿モード設定レジスタ191−1〜191−nには、ホストシステム111からエミュレータ115を介して伝達された秘匿対象仮想アドレス空間情報が設定される。そして、比較回路162−1〜162−nでの比較結果が後段のオアゲート163を介して、デバッグ用機能回路動作抑止信号として出力される。
The
上記構成のオンチップエミュレータのシステムにおいても、秘匿制御回路1222による秘匿制御により、上記ソフトウェア開発装置10と同様の効果を得ることができる。
Also in the on-chip emulator system configured as described above, the same effect as that of the
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。 Although the invention made by the present inventor has been specifically described based on the embodiments, it is needless to say that the present invention is not limited thereto and can be variously modified without departing from the gist thereof.
例えばマイクロコンピュータチップ113に、暗号復号モジュール217やダウンロード専用エリア21を設けることができる。
For example, the encryption /
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 秘匿制御回路
DESCRIPTION OF
212 IF circuit for debugging 213 RAM for debug target program
214 Execution software
1213 RAM for debug target program
1214 Execution software
Claims (15)
上記ホストシステムに結合され、上記ホストシステムから伝達されたデバッグ対象プログラムをデバッグするためのエミュレータと、を含み、
上記エミュレータは、上記デバッグ対象プログラムを実行可能なデバッグ用マイクロコンピュータと、
上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路と、を含むソフトウェア開発装置であって、
上記デバッグ用マイクロコンピュータで実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ソフトウェアコンポーネントが上記デバッグ用マイクロコンピュータで実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を含むことを特徴とするソフトウェア開発装置。 A host system;
An emulator coupled to the host system for debugging a program to be debugged transmitted from the host system,
The emulator includes a debugging microcomputer capable of executing the debug target program;
A debugging function circuit that obtains debug information of the debug target program by monitoring the execution state of the debug target program by the debug microcomputer, and a software development device comprising:
It is determined whether or not the software component should be concealed based on the concealment setting information about the software component constituting the debug target program executed by the debugging microcomputer, and based on the determination result, the software component is A software development apparatus comprising a secret control circuit capable of restricting the operation of the debugging functional circuit when executed by the debugging microcomputer.
上記秘匿制御回路は、秘匿対象ソフトウェアコンポーネントのID情報が設定された秘匿ID設定レジスタと、
上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項1記載のソフトウェア開発装置。 The debugging microcomputer includes an execution software ID setting register in which ID information of software components constituting the debug target program is set.
The concealment control circuit includes a concealment ID setting register in which ID information of a concealment target software component is set,
A comparator circuit for determining whether or not the output information of the execution software ID setting register matches the output information of the secret ID setting register, and the debugging functional circuit based on a comparison result of the comparison circuit 2. The software development apparatus according to claim 1, wherein a signal for limiting the operation of the software is formed.
上記オブジェクトファイル生成機能により形成されたオブジェクトファイルに基づいてロードモジュールファイルを形成するロードモジュールファイル生成機能と、を含み、上記ロードモジュールファイルが上記デバッグ対象プログラムとして上記エミュレータに送出される請求項1記載のソフトウェア開発装置。 The host system compiles or assembles a source file, thereby creating an object file generating function for forming an object file;
2. A load module file generation function for forming a load module file based on an object file formed by the object file generation function, wherein the load module file is sent to the emulator as the debug target program. Software development equipment.
上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能と、
上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能と、
上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能と、
上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能と、を含み、
上記ロードモジュールファイル生成機能は、上記オブジェクトファイル生成機能によって生成されたオブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能と、
上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能と、
上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能と、
上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能と、を含む請求項3記載のソフトウェア開発装置。 The object file generation function includes a first function that reads a source file and adds a code for writing ID information to the execution software ID setting register to the source file;
A second function for forming an object file by compiling or assembling the source file to which the code is added by the first function;
A third function for determining whether the object file obtained by the second function is a target to be concealed;
A fourth function for performing encryption processing on the object file to be concealed based on the determination result by the third function;
A fifth function for setting a flag indicating whether or not the file is a concealment target based on the determination result by the third function,
The load module file generation function includes a sixth function that forms a load module file based on the object file generated by the object file generation function;
A seventh function for determining whether or not the load module file formed by the sixth function includes a target to be concealed;
An eighth function that performs encryption processing on the load module file that is determined to contain a confidential object by the seventh function;
The software development apparatus according to claim 3, further comprising: a ninth function that adds, to the load module file, a flag indicating whether or not the file is a secret object based on the determination result of the seventh function.
上記復号化処理機能で復号化されたファイルを格納するための専用エリアと、を含み、上記専用エリアに格納されたファイルを上記デバッグ対象として実行する請求項4記載のソフトウェア開発装置。 The debugging microcomputer includes a decryption processing function for taking in and decrypting the load module file encrypted by the host system;
The software development apparatus according to claim 4, further comprising: a dedicated area for storing a file decrypted by the decryption function, wherein the file stored in the dedicated area is executed as the debug target.
上記第1機能により上記コードが付加されたソースファイルをコンパイル又はアセンブルすることでオブジェクトファイルを形成する第2機能と、
上記第2機能によって得られたオブジェクトファイルは秘匿対象であるか否かを判別する第3機能と、
上記第3機能による判別結果に基づいて、秘匿対象であるオブジェクトファイルに暗号化処理を施す第4機能と、
上記第3機能による判別結果に基づいて、上記オブジェクトファイルに、当該ファイルが秘匿対象であるか否かを示すフラグを設定する第5機能と、
上記オブジェクトファイルに基づいてロードモジュールファイルを形成する第6機能と、
上記第6機能により形成されたロードモジュールファイルに、秘匿対象とされるものが含まれるか否かの判別を行う第7機能と、
上記第7機能により、秘匿対象とされるものが含まれると判断されたロードモジュールファイルに暗号化処理を施す第8機能と、
上記第7機能の判別結果に基づいて、上記ロードモジュールファイルに、当該ファイルが秘匿対象か否かを示すフラグを付加する第9機能と、をコンピュータに実現させるためのプログラム。 A first function for reading a source file and adding a code for writing ID information to the execution software ID setting register to the source file;
A second function for forming an object file by compiling or assembling the source file to which the code is added by the first function;
A third function for determining whether the object file obtained by the second function is a target to be concealed;
A fourth function for performing encryption processing on the object file to be concealed based on the determination result by the third function;
A fifth function for setting, in the object file, a flag indicating whether or not the file is a target to be concealed based on the determination result by the third function;
A sixth function for forming a load module file based on the object file;
A seventh function for determining whether or not the load module file formed by the sixth function includes a target to be concealed;
An eighth function that performs encryption processing on the load module file that is determined to contain a confidential object by the seventh function;
A program for causing a computer to realize a ninth function for adding a flag indicating whether or not the file is a secret object to the load module file based on the determination result of the seventh function.
上記デバッグ用マイクロコンピュータによる上記デバッグ対象プログラムの実行状態をモニタすることで上記デバッグ対象プログラムのデバッグ情報を得るデバッグ用機能回路と、を含む半導体集積回路装置であって、
上記マイクロコンピュータ機能部で実行されるデバッグ対象プログラムを構成するソフトウェアコンポーネントについての秘匿設定情報に基づいて、当該ソフトコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記ID情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限可能な秘匿制御回路を含むことを特徴とする半導体集積回路装置。 A microcomputer function unit capable of executing a program to be debugged;
A debug functional circuit that obtains debug information of the debug target program by monitoring an execution state of the debug target program by the debug microcomputer, and a semiconductor integrated circuit device comprising:
It is determined whether or not the software component should be concealed based on concealment setting information about the software component constituting the debug target program executed by the microcomputer function unit, and based on the determination result, the ID information is included in the ID information. A semiconductor integrated circuit device comprising: a secret control circuit capable of restricting the operation of the debugging functional circuit when a corresponding software component is executed by the microcomputer function unit.
上記秘匿制御回路は、上記実行ソフトID設定レジスタに設定されたID情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記実行ソフトID設定レジスタの設定情報に対応するプログラムが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項9記載の半導体集積回路装置。 The microcomputer function unit includes an execution software ID setting register in which ID information of software components constituting the debug target program is set.
The concealment control circuit determines whether or not the software component corresponding to the ID information set in the execution software ID setting register should be concealed, and based on the determination result, sets the setting information of the execution software ID setting register. 10. The semiconductor integrated circuit device according to claim 9, wherein the operation of the functional circuit for debugging is restricted when a corresponding program is executed by the microcomputer function unit.
上記実行ソフトID設定レジスタの出力情報と、上記秘匿ID設定レジスタの出力情報とが一致するか否かを判別する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項10記載の半導体集積回路装置。 The concealment control circuit includes a concealment ID setting register in which ID information of a concealment target software component is set,
A comparator circuit for determining whether or not the output information of the execution software ID setting register matches the output information of the secret ID setting register, and the debugging functional circuit based on a comparison result of the comparison circuit 11. The semiconductor integrated circuit device according to claim 10, wherein a signal for limiting the operation of the semiconductor integrated circuit device is formed.
上記秘匿制御回路は、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントを秘匿すべきか否かを判別し、その判別結果に基づいて、上記プログラム走行モード設定レジスタの設定情報に対応するソフトウェアコンポーネントが上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項9記載の半導体集積回路装置。 The microcomputer function unit includes a program running mode setting register for designating a program to be executed by the microcomputer function unit,
The concealment control circuit determines whether or not the software component corresponding to the setting information of the program travel mode setting register should be concealed, and based on the determination result, the software corresponding to the setting information of the program travel mode setting register 10. The semiconductor integrated circuit device according to claim 9, wherein operation of the debugging functional circuit is restricted when a component is executed by the microcomputer function unit.
上記プログラム走行モード設定レジスタの出力情報と、上記秘匿モード設定レジスタの出力情報とを比較する比較回路と、を含み、上記比較の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項12記載の半導体集積回路装置。 The concealment control circuit includes a concealment mode setting register in which concealment target program running mode information is set,
A comparator circuit for comparing the output information of the program running mode setting register and the output information of the secret mode setting register, and for limiting the operation of the debugging functional circuit based on the comparison result of the comparison 13. The semiconductor integrated circuit device according to claim 12, which forms a signal.
上記秘匿制御回路は、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位を秘匿すべきか否かを判別し、その判別結果に基づいて、上記空間ID設定レジスタの設定情報に対応する仮想アドレス空間の実行単位が上記マイクロコンピュータ機能部で実行された場合の上記デバッグ用機能回路の動作を制限する請求項9記載の半導体集積回路装置。 The microcomputer function unit includes a space ID setting register in which space ID information indicating a virtual address space allocated for each execution unit of the debug target program is set.
The concealment control circuit determines whether or not the execution unit of the virtual address space corresponding to the setting information of the space ID setting register should be concealed, and corresponds to the setting information of the space ID setting register based on the determination result 10. The semiconductor integrated circuit device according to claim 9, wherein operation of the debugging functional circuit is restricted when an execution unit of the virtual address space to be executed is executed by the microcomputer function unit.
上記空間ID設定レジスタの出力情報と、上記秘匿空間設定レジスタの出力情報とを比較する比較回路と、を含み、上記比較回路の比較結果に基づいて上記デバッグ用機能回路の動作を制限するための信号を形成する請求項14記載の半導体集積回路装置。 The concealment control circuit includes a concealment space setting register in which concealment target virtual address space information is set, and
A comparison circuit for comparing the output information of the space ID setting register and the output information of the secret space setting register, and for limiting the operation of the debugging functional circuit based on the comparison result of the comparison circuit 15. The semiconductor integrated circuit device according to claim 14, which forms a signal.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010028761A JP2011165038A (en) | 2010-02-12 | 2010-02-12 | Software development device, program, recording medium, and semiconductor integrated circuit device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010028761A JP2011165038A (en) | 2010-02-12 | 2010-02-12 | Software development device, program, recording medium, and semiconductor integrated circuit device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011165038A true JP2011165038A (en) | 2011-08-25 |
Family
ID=44595629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010028761A Withdrawn JP2011165038A (en) | 2010-02-12 | 2010-02-12 | Software development device, program, recording medium, and semiconductor integrated circuit device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011165038A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9829875B2 (en) | 2013-12-25 | 2017-11-28 | Fanuc Corporation | Safety communication system using IO units communicating with a plurality of CPUS |
-
2010
- 2010-02-12 JP JP2010028761A patent/JP2011165038A/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9829875B2 (en) | 2013-12-25 | 2017-11-28 | Fanuc Corporation | Safety communication system using IO units communicating with a plurality of CPUS |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Muench et al. | What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices. | |
JP6516870B2 (en) | Method for safely executing program instructions and program for the method | |
Wright et al. | Challenges in firmware re-hosting, emulation, and analysis | |
US6430741B1 (en) | System and method for data coverage analysis of a computer program | |
RU2296363C1 (en) | Method and device for protecting software from unsanctioned usage | |
Levin | Mac OS X and iOS internals: to the apple's core | |
Stollon | On-chip instrumentation: design and debug for systems on chip | |
US20170103192A1 (en) | Secure code delivery | |
JP2007500401A (en) | Software debugging apparatus and method | |
US9208060B1 (en) | Emulation-based expression evaluation for diagnostic tools | |
JP7377260B2 (en) | How to detect safety-related data streams | |
Zhang et al. | IntPatch: Automatically fix integer-overflow-to-buffer-overflow vulnerability at compile-time | |
US9792402B1 (en) | Method and system for debugging a system on chip under test | |
Lacamera | Embedded Systems Architecture: Explore architectural concepts, pragmatic design patterns, and best practices to produce robust systems | |
JP2006507586A (en) | Apparatus and method for analyzing embedded system | |
Busch et al. | Teezz: Fuzzing trusted applications on cots android devices | |
Park et al. | GPUReplay: a 50-KB GPU stack for client ML | |
JP2011165038A (en) | Software development device, program, recording medium, and semiconductor integrated circuit device | |
Mihajlović et al. | Dynamically instrumenting the QEMU emulator for Linux process trace generation with the GDB debugger | |
Shan et al. | CROWBAR: Natively Fuzzing Trusted Applications Using ARM CoreSight | |
US6931634B2 (en) | Encrypted compiler | |
Goli et al. | VIP-VP: Early validation of SoCs information flow policies using SystemC-based virtual prototypes | |
Li et al. | Towards a generic framework for automating extensive analysis of android applications | |
JP2010231607A (en) | Emulator | |
JP2007140620A (en) | Microcomputer and debugging device connected to this microcomputer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130507 |