Method and apparatus for analyzing software executed in embedded systems
First Claim
1. A system for analyzing software being executed in a target system having a data bus and an address bus, said software containing a plurality of executable tag statements which, when executed, cause said target system to write at least one tag to respective predetermined locations in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of tag statements generating said tags, said system comprising:
- a probe connected to the address and data buses of said target system while said target system is executing said software, said probe detecting when said predetermined location in the address space of said target system is being addressed, said probe capturing a tag on the data bus of said target system when said probe detects that said predetermined location has been addressed; and
a processor connected to said probe, said processor processing said tags at a rate sufficient to sustain processing said tags as they are captured while said software is being executed, said processor determining and displaying information about the execution of said software based on said tag values while said software is being executed.
5 Assignments
0 Petitions
Accused Products
Abstract
A software analysis system for capturing tags generated by tag statements in instrumented source code. The software analysis system includes a probe that monitors the address and data bus of the target system. When a tag statement is executed in the target system, a tag is written to a predetermined location in the address space of the target system. The tag contains a tag value that is indicative of the location in the source code of the tag statement generating the tag. By monitoring the predetermined address, the probe is able to capture tags as they are written on the data bus of the target system. By properly instrumenting the source code, the software analysis system is able to perform a variety of analysis functions in essentially real time, including code coverage, function and task execution times, memory allocation, call pairs, and program tracing.
-
Citations
46 Claims
-
1. A system for analyzing software being executed in a target system having a data bus and an address bus, said software containing a plurality of executable tag statements which, when executed, cause said target system to write at least one tag to respective predetermined locations in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of tag statements generating said tags, said system comprising:
-
a probe connected to the address and data buses of said target system while said target system is executing said software, said probe detecting when said predetermined location in the address space of said target system is being addressed, said probe capturing a tag on the data bus of said target system when said probe detects that said predetermined location has been addressed; and a processor connected to said probe, said processor processing said tags at a rate sufficient to sustain processing said tags as they are captured while said software is being executed, said processor determining and displaying information about the execution of said software based on said tag values while said software is being executed. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for analyzing software being executed in a target system having a data bus and an address bus, said software containing a plurality of executable tag statements which, when executed, cause said target system to write at least one tag to respective predetermined locations in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of tag statements generating said tags, said system comprising:
-
a probe connected to the address and data buses of said target system while said target system is executing said software, said probe detecting when said predetermined location in the address space of said target system is being addressed, said probe capturing a tag on the data bus of said target system when said probe detects that said predetermined location has been addressed; a processor connected to said probe, said processor determining the software locations that have been executed based on the respective tag values of said captured tags; a tag filter connected to said processor, said tag filter comprising; selections means for establishing criteria for processing said tags based on their respective tag values; comparator means for examining each tag captured by said probe to determine if said tag meets said criteria; and filter means for disregarding tags not meeting said criteria so that tags are processed by said processor only if said tags meet said criteria.
-
-
12. A system for analyzing software being executed in a target system having a data bus and an address bus, said software containing a plurality of executable tag statements which, when executed cause said target system to write at least one tag to respective predetermined locations in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of tag statements generating said tags, said system comprising:
-
a probe tip connected to the address and data buses of said target system while said target system is executing said software, said probe tip detecting when said predetermined location in the address space of said target system is being addressed, said probe tip capturing a tag on the data bus of said target system when said probe tip detects that said predetermined location has been addressed; a tag preprocessor connected to said probe tip, said tag preprocessor examining said tags and, based upon the contents of said tags, routing said tags to a first output if said tags are being used for a code coverage analysis and routing said tags to a second output if said tags are not being used for a code coverage analysis; a code coverage data reduction processor and data base connected to the first output of said tag preprocessor; a tag buffer connected to the second output of said tag preprocessor, said tag buffer storing and then outputting tags received from the second output of said tag preprocessor and a processor receiving the tags from the tag buffer, said processor determining the source code locations that have been executed based on the respective tag values of said tags.
-
-
13. A method of analyzing software being executed in a target system having a data bus and an address bus, said method comprising the steps of:
-
inserting a plurality of executable tag statements at locations in said software, each of said tag statements, when executed, causing said target system to write a tag to a predetermined location in the address space of said target system, said tags containing respective tag values corresponding the locations in said software of tag statements generating said tags; allowing said target system to execute said software; monitoring the address and data buses of said target system while said target system is executing said software; detecting when said predetermined location in the address space of said target system is being addressed; capturing a tag on said data bus when addressing of said predetermined location is detected; determining information about the execution of said software based on said tag values while said software is being executed; and displaying information about the execution of said software based on said determination while said software is being executed. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A method of analyzing software being executed in a target system having a data bus and an address bus, said method comprising the steps of:
-
inserting a plurality of executable tag statements at locations in said software, each of said tag statements, when executed, causing said target system to write a tag to a predetermined location in the address space of said target system, said tags containing respective tag values corresponding the locations in said software of tag statements generating said tags; allowing said target system to execute said software; monitoring the address and data buses of said target system while said target system is executing said software; detecting when said predetermined location in the address space of said target system is being addressed; capturing a tag on said data bus when addressing of said predetermined location is detected; establishing criteria for processing said tags based on their respective tag values; examining each captured tag to determine if said tag meets said criteria; and subsequently processing and displaying respective software locations that have been executed based on said tags only if said tags meet said criteria, thereby filtering said tags after said tags have been captured.
-
-
36. A system for determining and displaying the context of software being executed in a target system having a data bus and an address bus, said software containing a plurality of executable tag statements which, when executed, cause said target system to write a plurality of tags to at least one location in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of respective tag statements generating said tags, said system comprising:
-
a probe connected to the address and data buses of said target system while said target system is executing said software, said probe capturing tags on the data bus of said target system when said tag statements generating said tags are executed; and a processor connected to said probe, said processor determining the software locations that have been executed based on the respective tag values of said captured tags while said software is being executed by said target system, said processor determining and displaying the context of said software currently being executed by said target system. - View Dependent Claims (37, 38, 39, 40)
-
-
41. A system for determining and displaying the coverage of software being executed in a target system having a data bus and an address bus, said software containing a plurality of executable tag statements which, when executed, cause said target system to write a plurality of tags to at least one location in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of respective tag statements generating said tags, said system comprising:
-
a probe connected to the address and data buses of said target system while said target system is executing said software, said probe capturing tags on the data bus of said target system when said tag statements generating said tags are executed; and a processor connected to said probe, said processor determining the software locations that have been executed based on the respective tag values of said captured tags while said software is being executed by said target system, said processor maintaining a database indicative of the execution of portions of said software while said software is being executed, said database listing each of said software portions and the numbers of respective times that said software portions have been executed.
-
-
42. A method of determining and displaying the context of software being executed in a target system having a data bus and an address bus, comprising the steps of:
-
inserting a plurality of executable tag statements at locations in said software which, when executed, cause said target system to write a plurality of tags to at least one location in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of respective tag statements generating said tags; allowing said target system to execute said software; monitoring the data bus of said target system while said target system is executing said software; capturing tags on said data bus when said tag statements generating said tags are executed; determining the software locations that have been executed based on the respective tag values of said captured tags while said software is being executed by said target system; and determining and displaying the context of said software currently being executed by said target system. - View Dependent Claims (43, 44, 45)
-
-
46. A method of determining and displaying the coverage of software being executed in a target system having a data bus and an address bus, comprising:
-
inserting a plurality of executable tag statements at locations in said software which, when executed, cause said target system to write a plurality of tags to at least one location in the address space of said target system, said tags containing respective tag values corresponding to the locations in said software of respective tag statements generating said tags; allowing said target system to execute said software; monitoring the data bus of said target system while said target system is executing said software; capturing tags on said data bus when said tag statements generating said tags are executed; determining the software locations that have been executed based on the respective tag values of said captured tags while said software is being executed by said target system; and maintaining a database indicative of the execution of portions of said software while said software is being executed, said database listing each of said software portions and the numbers of respective times that said software portions have been executed.
-
Specification