Multiprocessor emulation support using dynamic linking6931636Abstract A method and system for dynamically linked emulation with a mix of target debuggers on a host computer wherein a debugger for each processor on the target system connects to a target interface for that kind of processor. That target interface then communicates with an emulator dynamic loader on the host computer connected to an emulator. The target interface communicates with the dynamic loader on the host computer to determine if there is support for the desired kind on the emulator. If not a target interface is loaded to the emulator and connected to the already running software on the host. A connection to this target interface software on the emulator is then provided to the host computer. Claims 1. In a data exchange system for transferring data between a host processor and a target processor comprising a data unit on said target processor that transfers said data from said target processor to an emulator and a device driver on said host processor that transfers data from said emulator, a system for dynamically linking and loading emulation software support for a new target processor comprising: Description TECHNICAL FIELD OF THE INVENTION The first two schemes are inconvenient for the user who would like to be able to debug all processors on his system at the same time. The third scheme is difficult for the emulator provider, who must produce new target interface software every time an application with a different combination of processors arises. SUMMARY OF THE INVENTION From the foregoing it may be appreciated that a need has arisen to provide emulation capability that can be used with a variety of target systems involving different mixes of target processors. In accordance with one embodiment of the present invention, an emulator and target software structure is provided that supports for target systems with a variety of target processor configurations. This software structure provides for the dynamic (at time of use) combination of support modules for individual target processors into an emulator which can then support the desired mix of said target processors. The dynamically linked emulation support system provides an interface for one or more debuggers to communicate with a mix of target processors via an enhanced JTAG debug link. The debugger for each processor on the target system connects to a target interface for that particular kind of target processor. That target interface then communicates with the emulator dynamic loader on the host computer to determine if support for the desired processor kind is present in the emulator. If it is not, a target interface is loaded onto the emulator and connected into the already running emulation software. A connection to this target interface software on the emulator is then provided to the target interface software on the host computer. The process is repeated for each debugger, for each kind of processor on the target system. In a preferred implementation, a single debugger can support more than one processor or kind of processor. In this implementation, a system description file stored on the host computer describes the particular mix of processors to be supported. The debugger reads this system description to determine which kinds of target interfaces are required for operation. It then communicates with each required target interface to establish connection to the target system, as described above. In this system for dynamic linking and loading of emulation software, support for a new target processor kind includes only the following modules:
BRIEF DESCRIPTION OF THE DRAWINGS For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in connection with the accompanying drawings, in which: FIG. 1 illustrates a dynamically loaded emulation system in accordance with an embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION An embodiment of the present invention and its advantages are best understood by referring now in more detail to FIG. 1 of the drawing. FIG. 1 illustrates a system for dynamic linking and loading of emulation software in accordance with one embodiment of the present invention. The system may be used in a data exchange system as described in co-pending application Ser. No. 60/171,392 filed Dec. 21, 1999 (nonprovisional application Ser. No. 09/738,241 filed Dec. 15, 2000) of Deao et al. entitled "Data Exchange System and Method for Processing". This application is incorporated herein by reference. FIG. 1 depicts a dynamically loaded emulation system 100 that monitors the emulation of a software application on a target system in accordance with an embodiment of the present invention. Emulation system 100 includes a host computer 110, an emulator 140, and a target system 160. Target system 160 may consist of one or more processors 161, 162 of like or different kinds, combined together so as to be accessible through a JTAG debug link 150. An emulator 140 is used to provide a means to connect to and control the JTAG link 150 by way of a host computer connection 130. The host computer 110 provides the capability to run debuggers 116 connected to the emulator 140 by the host emulation software components 111 through 115. A debugger 116 that requires the ability to debug a particular target processor 161 acquires this capability by connecting to a target interface module 111 built for the particular kind of target processor 161 desired. The target interface module 111 then queries the dynamic loader support 143 on emulator 140 to determine if support for the desired target processor kind is already present. This query is propagated via the ECOM modules 114, 144. ECOM modules 114, 144 on the host and emulator provide communication between the emulator 140 and the host computer software components 111 through 113. The ECOM module on the host packages host-side requests into data messages that can be transferred over the emulator connection 130. The device drivers for this connection 115, 145 are responsible for propagating these data messages to and from the emulator. The ECOM module on the emulator 144 is responsible for converting data messages back into requests and presenting said requests to emulator-side software components 141 through 146. ECOM module 144 is also responsible for packaging replies to said requests into data messages, which are propagated back via drivers 145, 115 over connection 130 to the host-side ECOM module 114. ECOM module 114 then delivers said replies to the original requester. If the query from target interface module 111 indicates that the desired target interface 141 is not yet present on the emulator 140, the emulator dynamic loader 113 is invoked to load said module 141. The dynamic loader obtains the target interface module desired 141 from a file on the host computer 118. The emulator dynamic loader then allocates memory for the target interface module's code and data on the emulator 140. Allocation of memory is performed by requesting space from the loader support module 143. This request is propagated via ECOM 114, 144 as described previously. Having allocated memory for the target interface module 141, the dynamic loader 113 then modifies the file image of said module 118, and stores the modified image into the emulator 140. Storing of the modified image is accomplished via ECOM requests propagated to the loader support module 143. The dynamic loader 113 makes two kinds of modifications to the file image 118:
In a preferred implementation, target interface module 111 queries the emulator dynamic loader 113 to determine whether the desired target interface module 141 is present on the emulator. The dynamic loader 113 then queries the loader support 143. If the reply of the latter is negative, the dynamic loader 113 loads the target interface module 141. In either event, the dynamic loader module 113 returns an affirmative response to the initial query. An additional debugger or debugger interface 116 can provide debugging of a different kind of target processor 162 in the target system 160 using the same mechanism described above. The debugger connects to the target interface module 112 for the different target kind 162. This target module 112 then queries the emulator dynamic loader 113 as before, resulting in the appropriate target interface module 142 being loaded on the emulator 140. By repetitive use of this method, the software support on the emulator 140 is built up out of target-specific support modules 118, until the combination is sufficient for the target system 160 in use. In a preferred implementation, a single debugger interface 116 can support more than one processor. The debugger 116 determines the mix of processor kinds on the target system 160 by reading a system description file 117 resident on the host computer 110. For each processor kind described in the system description file 117, the debugger 116 connects to a target interface 111, 112 for that particular processor kind. The required emulation support is then loaded onto the emulator 140 by the same mechanism described above.
|
Same subclass Same class Consider this |
||||||||||
