US20100011250A1 - Microcontroller information extraction system and method - Google Patents
Microcontroller information extraction system and method Download PDFInfo
- Publication number
- US20100011250A1 US20100011250A1 US12/563,573 US56357309A US2010011250A1 US 20100011250 A1 US20100011250 A1 US 20100011250A1 US 56357309 A US56357309 A US 56357309A US 2010011250 A1 US2010011250 A1 US 2010011250A1
- Authority
- US
- United States
- Prior art keywords
- processing unit
- program
- program counter
- value
- debug
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
Abstract
A system for debugging a device under test may include a processor register with a program count and a debug program register that receives the program count upon execution of an instruction by a processor. In one implementation, a microcontroller under test by a debugger is accessed using a serial interface, such as a JTAG interface. The interface can communicate directly with a debug register to retrieve program count values, both when the microcontroller is halted and when it is executing instructions. The polling interval to retrieve the program count values may be adjusted by a user of the debugger based on considerations such as bandwidth and accuracy. The microcontroller may transmit the program count value to the debug register from a processing register that is not accessible to the debugger.
Description
- Some microcontroller systems include integrated on-chip debug features that permit a user to debug programs executed on the microcontroller system. Low bandwidth features, such as break points and run/stop control, can be accessed by a serial protocol, such as Joint Test Action Group (JTAG). For high bandwidth features, such as real-time capture of program count (PC) values, a more complex parallel trace port may be required.
- In some systems, the JTAG interface may require the CPU to be halted in a debug mode for the JTAG interface to transmit commands to observe the state of the system. One task during a typical debug session is determining the location of the current PC when the CPU is halted in debug mode. In some conventional systems, the PC values can be saved in a processor register when the CPU is halted in debug mode. In some current systems, the processor register cannot be read directly by the JTAG interface, but must be transferred from the processor register to a debug register readable by the JTAG interface. This may be accomplished by scanning in a number of CPU instructions using the JTAG interface. The instructions direct the processor to transfer the PC value to a debug register that the JTAG interface may access. This procedure can enable the debugger to observe the PC of the CPU, but it is complicated and may require the debugger to have explicit knowledge of the register implementation and the instruction operational codes of the CPU so that the debugger may issue commands to the CPU to move the PC value from the processor register to the debug register.
- A system for debugging a device under test may include a processor register with a program counter and a debug program register that receives the program count upon execution of an instruction by a processor. In certain implementations, a microcontroller under test by a debugger is accessed using a serial interface, such as a JTAG interface. In such implementations the interface can communicate directly with a debug register to retrieve program count values, both when the microcontroller is halted and when it is executing instructions. In these implementations the polling interval to retrieve the program count values may be adjusted by a user of the debugger based on considerations such as bandwidth and accuracy. The microcontroller of these implementations may transmit the program count value to the debug register from a processing register that is not accessible to the debugger. Such microcontroller may transmit an execution signal to the debug register after an instruction has been executed, where the signal enables the debug register to receive the program count from the microcontroller.
- The systems and techniques described here may provide one or more of the following advantages. First, access to the program counter when the CPU is halted may be simplified. Second, code profiling for long runtimes may be facilitated. Third, the cost and complexity of hardware for retrieving program count values during runtime operation may be substantially reduced. Fourth, the need for a debugger to store information, such as microcontroller operational codes and microcontroller internal register architecture information, may be reduced or eliminated. Moreover, a unified structure and method for accessing program count values when a microcontroller is halted or executing may be provided.
- The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the embodiments will be apparent from the description and drawings, and from the claims.
- These and other aspects will now be described in detail with reference to the following drawings.
-
FIG. 1 is a schematic diagram of an illustrative test system for debugging a device, such as a microcontroller. -
FIG. 2 is a flow chart of exemplary operations that can be performed when a debug session of a microcontroller is in process. -
FIGS. 3A-3B are exemplary displays of the output of a debug tool. -
FIG. 4 is a flow chart ofexemplary operations 400 for constructing a statistically correct model of a code profile. -
FIG. 5 is a schematic diagram of a general microcontroller testing system. - Like reference symbols in the various drawings indicate like elements.
-
FIG. 1 shows anillustrative test system 100 for debugging a device. Reference will be made to debugging a microcontroller, though other devices are possible.Test system 100 includes adebug system 102, an on-chip debug (OCD)system 104, and a device (e.g., microcontroller unit (MCU) system 106). In this example, theOCD system 104 is integrated with theMCU system 106 on an integrateddevice 107 and is accessible by thedebug system 102 via a serial interface, such as a Joint Test Action Group (JTAG) communication interface, a NEXUS (IEEE-ISTO 5001 standard) debug interface, and an advance user debug (AUD) interface etc. During a debugging session, a user, such as a test engineer, a software developer, or other debugging engineer, can operate thedebug system 102 to halt processing of theMCU system 106 and to monitor the state of theMCU system 106. In one example, the user uses the serial interface to determine the current memory address, or program count value, of the executed software instruction when theMCU system 106 is halted. - In another example, the user uses the
debug system 102 to retrieve the program count values while theMCU system 106 is executing instructions. The retrieved program count values can be used to determine a code profile, which specifies how much time theMCU system 106 spends executing different sections, or blocks, of instructions. Thetest system 100 can permit thedebug system 102 to directly monitor the address of the executed instruction, both when theMCU system 106 is halted or when theMCU system 106 is executing instructions. - In this example, the
debug tool 102 is connected to theMCU system 106 via theOCD system 104. The OCD system includes a JTAG test access port (TAP) 108 and a debug program counter (DPC) 110, which is directly accessible by thedebug system 102. The JTAG TAP 108 is a serial data interface for JTAG signals. TheDPC 110 can be dynamically updated with information, such as memory addresses, of the executed program code executed by theMCU system 106. During run-time, thedebug tool 102 can, without knowledge of operational codes used by theMCU system 106, directly read theDPC register 110 to obtain the executed program code through a serial interface (e.g., the JTAG TAP 108), which facilitates a serial connection (e.g., a JTAG connection as shown by an arrow 111). - The
MCU system 106 can include aCPU 112 and amemory 114. TheCPU 112 can execute program code stored in thememory 114. In some embodiments, theCPU 112 includes a number of registers, which are not directly accessible by thedebug system 102. If a CPU register that holds the PC value is not directly accessible to thedebugger system 102, thedebugger system 102 can, for example, halt theCPU 112 and issue an instruction to theCPU 112 to move data in the register to a register that is directly accessible before reading the data. In this example, theCPU 112 includes a program counter (PC) 116, which is a register that stores a memory address of the program instruction that is currently being executed by theCPU 112. In one example, during run-time, theCPU 112 fetches the next instruction from thememory 114 based on the memory address in thePC 116. - The user of the
system 100 can obtain the value stored in the PC 116 using thedebug system 102. Thedebug system 102 includes a front end (e.g., software front-end 118) and adebugger 120. The software front-end 118 can include software executed on a computing device, such as user interface software, testing code, analysis code, or code to output information obtained during debugging operations. The software code can be predefined in thedebug system 102, or it can be downloaded to thedebug system 102. As an example, the user uses the software front-end 118 to implement debug software that monitors and analyzes program code executed in theMCU system 106. - In some implementations, the
debugger 120 and the software front-end 118 are software loaded on the same computing device. Thedebugger 120 transmits the program count values to the software front-end 118 using protocols specific to thedebugger 120. In other implementations, thedebugger 120 is separate computing code running on a computing device that is connected or networked to a separate computing device, such as a personal computer, that runs the software front-end 118. Thedebugger 120 transmits the program count values to the software front-end 118 through an interface between thedebugger 120 and the computing device running the software front-end 118. - In some embodiments, the software front-
end 118 includes software analysis code that provides, for example, histogram analysis and trace capturing analysis. The software front-end 118 can include ahistographical analysis module 122. The user can use thehistographical analysis module 122 to create an analysis of cumulated time spent executing separate sections of program code run by theMCU system 106. For example, thehistographical analysis module 122 can perform a code profiling operation. - In some implementations, the code profiling is a process of benchmarking the execution of one or more program code sections to determine where processing time is being spent. For example, the code profiling can facilitate identification of code sections that are responsible for the bulk of execution time. Based on a result of the code profiling, called a code profile, the user can determine areas of the code that may need optimization. An exemplary graphical result of a code profile is described in greater detail with reference to
FIG. 3B . - In this example, the
histographical analysis module 122 can determine and analyze an amount of time spent by theCPU 112 to execute a group of instructions used to perform a particular method, or function, in the program code. Thehistographical analysis module 122 can gather and analyze this information for multiple segments related to the code executed by theMCU system 106. - The
test system 100 also includes adisplay device 124 that is connected to thedebug system 102 to display the results obtained from the histographical analysis and to display other results, such as individual program count values retrieved from theDPC 110 after theCPU 112 is halted. - The software front-
end 118 can communicate with thedebugger 120. Thedebugger 120, for example, can receive instructions from the software front-end 118 and can transmit debugging results to the software front-end 118. In turn, thedebugger 120 can send and receive debug information via a JTAG communication link to theOCD system 104. For example, thedebugger 120 can send a “halt” command to theMCU system 106 using the JTAG communication link to theOCD system 104 to stop theMCU system 106 from processing instructions. In another example, thedebugger 120 can communicate with theOCD system 104 to access theDPC 110 to obtain a memory address. - During execution, the
CPU 112 can fetch the next instruction stored at the address identified by thePC 116. Every time the CPU executes an instruction, the value within thePC 116 may be transmitted automatically to theDPC 110. During a debugging session, thedebugger 120 can send a halt instruction or signal through theJTAG TAP 108 to stop theCPU 112 from processing. At this point, theDPC 110 contains the program count value of the instruction executed when theCPU 112 was halted. Because thedebugger 120 has direct access to theDPC 110, the current program count is directly observable without issuing instructions to theCPU 112 to move the program count value from thePC 116 to a register accessible by thedebugger 120. This may eliminate the need for thedebugger 120 to communicate with theCPU 112 using operational codes. Additionally, having direct access to the program count value may also eliminate the need for thedebugger 120 to know the register address of the PC and another register accessible to the debugger because the debugger is not required to issue instructions to theCPU 112 requesting the program count value be moved from thePC 116 to the other accessible register. - In another example, the
DPC 110 can be read by thedebugger 120 continuously while theCPU 112 is executing the program code. For example, thedebugger 120 can continuously read theDPC 110 and store the program count values in a buffer (not shown) located at thedebugger 120. In some implementations, the software front-end 118 constructs a statistical model of the code profile using only a sample of a larger set of program count values. For example, thedebugger 120 can set a poll interval of 5 reads per millisecond (ms), meaning thedebugger 120 will read theDPC 110 every 0.2 ms. The limited polling interval may not capture all program count values stored in theDPC 110, but instead may only capture a subset of the program count values, which are present in theDPC 110 every 0.2 ms. - If the
debugger 120 has limited bandwidth capabilities, then the user can set the polling interval to occur at a greater time period, which will decrease the number of program counts to retrieve and store. Alternatively, if multiple sections of code require a similar amount of time to execute, then the polling interval can be decreased to increase the accuracy of the analysis in order to adequately distinguish the time period required by each code section. Depending on the bandwidth and the accuracy requirements of the statistical model, the polling interval of theDPC 110 can be adjusted by thedebug system 102. - In another implementation, the
debug system 102 supports code profiling for program code that has an extended runtime, such as a program code that includes a large amount of instructions, using a relatively limited buffer capacity. For example, thedebugger 120 can limit the number of buffered program count values. When the buffer is full, thedebugger 120 can wait for thehistographical analysis module 122 to finish processing all the buffered program count values before reading new program count values. In this case, only a relatively small amount of memory space will be needed to construct a statistical model of the code profile for a program code with extended runtime. - In yet another implementation, a histogram is built in the
debugger 120 at the same time the program count values are retrieved from theDPC 110. The buffer does not have to be full before thehistographical analysis module 122 processes the program count values. In other words, thedebug system 102 accumulates the program count value in a histogram in the debugging device. As the histogram is constructed, it can also be shown on thedisplay 124. -
FIG. 2 is a flow chart ofexemplary operations 200 that can be performed when a debug session of a microcontroller system is in process. For example, theoperations 200 can be performed by theintegrated device 107 when an external debugger, such as thedebugger 120 is connected to theOCD system 104. Theoperations 200 can begin instep 202 when the processing unit of the integrated device starts executing a set of instructions included in a program stored in its memory. - In
step 204, a processing unit (PU) executes a next instruction. In thetest system 100, the PU is theCPU 112, which fetches an instruction from thememory 114 using the program count value in thePC 116, which specifies the address of the instruction. Then, the PU, instep 206, can assert an execution signal and, instep 208, transmit a processing program count to theDPC 110. Step 208 and step 206 may be executed substantially simultaneously. In this example, the execution signal is a write enable signal that enables writing of the transmitted program count value into theDPC 110. In another implementation, theintegrated device 107 executesstep 206 beforestep 208. Theintegrated device 107 first asserts the execution signal to enable theDPC 110 for a write and then transmits the program count value to theDPC 110. For example, when the clock rate of theCPU 112 is fast, theintegrated device 107 can be configured to enable theDPC 110 first so that theDPC 110 ready to receive the program count value. - In other implementations, the
integrated device 107 first transmits the program count value and then asserts the execute signal to enable theDPC 110 for write. For example, theDPC 110 can be implemented so that a write to theDPC 110 occurs only when an assertion of the execution signal is detected. The PC bus transmitting the program count value can be active all of the time, but the value is not accepted until the execution signal is received. - Furthermore, in another implementation, the execute signal is not implemented if there is no need to validate the value stored in the
DPC 110. For example, theDPC 110 may not need an enable signal because theDPC 110 updates the stored value at every clock cycle. In another example, theDPC 110 receives other signals, such as a confirm signal from thedebugger 120, as a write enable signal. - Upon receiving the execution signal, the
DPC 110 loads the received processing program count value instep 210. Next, in anoptional step 212, theintegrated device 107 determines whether the PU received a halt instruction. For example, the PU can receive a halt instruction when it executes a software breakpoint previously inserted by thedebugger 120 in the program code, or the PU can receive a halt signal directly from thedebugger 120 via theJTAG communication link 111. If the PU did not receive a halt signal, then the PU executes the next instruction instep 204. Otherwise, instep 212, if the PU received the halt signal, then, instep 214, the serial interface, such as theJTAG TAP 108, can transmit the stored program count to an external debugger, such as thedebugger 120. For example, thedebugger 120 can receive the program count value stored in theDPC 110 at the time theCPU 112 is halted. - In another example, after
step 210, theintegrated device 107 executes thestep 214 immediately without theoptional step 212. After the serial interface transmits the program count to thedebugger 120, theintegrated device 107 can, instep 216, determine whether thedebugger 120 is requesting more program counts. If thedebugger 120 is requesting more program counts, then theintegrated device 107 returns to executestep 204. In this way, thedebugger 120 can continuously collect program count values to perform a statistical analysis of the code profile using thehistographical analysis module 122. Otherwise, instep 216, if thedebugger 120 is not requesting more program counts, theoperation 200 ends instep 218. -
FIGS. 3A-3B show exemplary outputs of thetest system 100. The outputs can be displayed on thedisplay device 124 described inFIG. 1 . Referring toFIG. 3A , adisplay output 300 is depicted which shows an example of output generated when theCPU 112 is halted and theDPC 110 is read by thedebugger 120. As shown, thedisplay output 300 includes a currentprogram count value 302 and associated data. In some implementations, the associated data is of the form of atranslation 304 of the instruction stored at the address specified by the currentprogram count value 302. In the depicted example, the currentprogram count value 302 is displayed in hexadecimal format. In another example, the currentprogram count value 302 can be displayed in binary format, decimal format, octal format or other suitable format. Thetranslation 304 is a decoded instruction from thememory 114 at a location specified by the currentprogram count value 302. For example, thedebugger 120 accesses the memory address, which is equal to the current program count value, to obtain the currently executed instruction code and translate the obtained instruction into a format more easily understandable by users, such as an assembly code format. In the depicted example, thedisplay output 300 also includes aprevious instruction 306. In some implementations, multiple values are stored in theDPC 110, and thedebugger 120 may retrieve one or more of the previous program counts from theDPC 110. - Referring to
FIG. 3B , thehistographical analysis module 122 may output information used to generate anexemplary histogram 320. Thehistographical analysis module 122 can compute a statistical model of a code profile. As shown, thehistogram 320 includes aprocessing time axis 322 and acode section axis 324. Thecode section axis 324 includes various sections of the executed program. In this example, thecode section axis 324 includes aninitialization 326, acompute X 328, asort 330, anaccess memory 332, and adisplay 334 code function. In this example, thehistographical analysis module 122 accumulates processing time spent on each code section and displays the cumulated time spent on the code section on thehistogram 320. Thehistographical analysis module 122 can record the number of times that an instruction stored at a memory address is being executed and the time required for this execution. Then thehistographical analysis module 122 can, based on the record, determine what code functions are specified by the recorded memory addresses and compute how long each code function takes to be executed. - For example, the
histographical analysis module 122 can associate the recorded program count values and the corresponding execution times with their corresponding code sections, such as separate functions or methods executed by theCPU 112. Then thehistographical analysis module 122 can display the cumulative time for each function on thedisplay device 124. In thehistogram 320, the cumulated time is displayed asvertical bars 336, each of which correspond to a separate code section. For example, thehistogram 320 indicates that the program code spent 10 μs of total processing time on executing instructions used in an initialization function. The user can use thehistogram 320 to determine what sections of the code would benefit the greatest from code optimization. For example, there may be a strict timing requirement for a section of the code that dictates that it must be finished within a specified amount of time. From thehistogram 320, the user may determine which section of the code exceeds the time requirement. In another example, the user analyzes thehistogram 320 and determines that the program spends too much time on thesort 330 algorithm. The user can then focus on optimizing the algorithm in thesort 330. -
FIG. 4 is a flowchart ofexemplary operations 400 for constructing a statistical model of a code profile. Theoperations 400 can be performed by thedebugger 120. Theoperations 400 begin instep 402 when the software front-end 118 receives a command to perform a code profiling analysis on program code executed by a device under test. For example, the software front-end 118 issues a command to thedebugger 120 to start retrieving information for code profiling when the software front-end 118 receives a start code profiling analysis instruction from the user interface or from a test program downloaded in thedebug system 102. - In
step 404, thedebugger 120 can set a JTAG poll interval. The JTAG poll interval can determine the frequency of reading of theDPC 110. In some implementations, the poll interval is specified in the test program run by thedebugger 120. In other implementations, the poll interval is entered by a user. In one example, if the user desires a more accurate analysis, then the user selects a shorter poll interval so that thedebugger 120 receives program count values more frequently. In another example, if the user desires a relatively courser analysis in order to save memory space or bandwidth, then the user selects a longer poll interval so that thedebugger 120 receives program count values less frequently. - The
debugger 120 can determine, instep 406, whether the set poll interval is within the JTAG transfer interface capabilities. If the set poll interval is not within the JTAG interface transfer capabilities (e.g., the poll interval requires the JTAG interface to transfer program count values at a speed exceeding its maximum transfer rate), then thedebug system 102 can prompt the user to enter a greater interval, and theoperations 400 return to step 404. Otherwise, if, instep 406, the set poll interval is within the JTAG interface's transfer capabilities, then thedebugger 120 can, instep 410, read the program count value from theDPC 110. In some implementations, thedebugger 120 can obtain program count values concurrently with the execution of instructions by theCPU 112. - The
debugger 120 can determine whether the reading operation is terminated instep 412. If the reading operation is not terminated, then theoperations 400 return to step 410. If the reading operation is terminated in step 412 (e.g., the program is completed), then thedebugger 120 can display, instep 414, an analysis result on thedisplay device 124 and theoperations 400 end atstep 416. -
FIG. 5 is a block diagram of an exemplary computer system that is capable of debugging and optimizing program code executed in a microcontroller. Thecomputer system 500 includes ahost computer 502 that is connected to amicrocontroller board 504 by way of aJTAG interface 506. TheJTAG interface 506 includes aJTAG master 508 and an input/output port 510. A user can operate themicrocontroller board 504 using the input/output (I/O) device 512, which is connected into an input/output port 514 on thehost computer 502. For example, the user sends control information to the board via the input/output port 514 to the input/output port 510. In particular, the user can type in a command on the keyboard of the I/O device 512 which will be processed by an application running on thehost computer 502 resulting in an instruction being sent to theJTAG interface 506. In some implementations, the instruction is sent from the input/output port 514 to input/output port 510 through a universal serial bus (USB) connection between thehost computer 502 or theJTAG interface 506. Although the user device 512 and thehost computer 502 are depicted as two in this example, in some implementations, the user device 512 and thehost computer 502 are one device, such as a laptop computer. - In the depicted example, the input/
output port 510 can send received instructions to theJTAG master 508 for interpretation. TheJTAG master 508, upon receiving the instruction, can decode the received instruction and transmit one or more appropriate instructions to themicrocontroller board 504 to execute the received instruction. - The
microcontroller board 504 includes amicrocontroller 516 and aJTAG port 518. Themicrocontroller 516, in this example, is a single integrated circuit (IC) that includes aJTAG TAP controller 520, aninternal clock controller 522,memory 526, aprocessing unit 528 and aperipheral device controller 530. Signals sent from theJTAG master 508 to the pins on theJTAG port 518 can include the JTAG clock (TCK), the test data out (TDO), test data in (TDI) and test mode select (TMS). The signals on these pins can be received on corresponding inputs on theJTAG TAP controller 520. In some embodiments, the test reset (TRST) signal is sent. - In some embodiments, the
JTAG TAP controller 520 can process the instruction and data information to determine the test interface to measure or control within themicrocontroller 504. For example, theJTAG TAP controller 520 can include a state machine to control the operation of theJTAG port 518. The TDO and TDI signals can comprise the internal JTAG signals 536 which are connected to all of the circuits within themicrocontroller 516. Theinternal clock controller 522 can include logic to generate the internal clock signal, which can be used by the modules contained within the microcontroller. In some implementations, theJTAG TAP controller 520 can use the TCK clock provided by theJTAG master 508. Theprocessing unit 528 can provide the core logic and control for themicrocontroller 516 and can utilize thememory 526 for storage of its program instructions as well as data. Thememory 526, for example, can include Electrically Erasable and Programmable Read Only Memory (EEPROM) for instruction storage and Dynamic Random Access memory (DRAM) for data storage. In another example, thememory 526 includes Flash memory and Static Random Access Memory (SRAM). - The
peripheral device controller 530 can include the logic for themicrocontroller 516 to connect to and/or communicate with other devices. For example, the controller can contain logic for themicrocontroller 516 to connect to a digital signal processor allowing it the ability to process digital image data, for example, a color image from a digital camera. In this example, the digital image data is received by the microcontroller by way of an input device connected to the peripheral device controller. - The
microcontroller 516 includesbuses 532 that can transmit address and data bits that are propagated throughout themicrocontroller 516 that can allow the core logic in theprocessing unit 528 to access and control the other logic modules within themicrocontroller 516. - A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the described embodiments. For example, the register that receives the program count from the
CPU 112 may be a general purpose register. Additionally, theOCD System 104 can include other components and interfaces not shown, such as a trace interface also used to transmit the program count values to thedebugger 120. Furthermore, the components included in theOCD system 104 may be located on a separate device from theMCU system 106. For example,DPC 110 andJTAG TAP 108 may be part of a separate integrated circuit that is connected to theMCU system 106. Accordingly, other embodiments are within the scope of the following claims.
Claims (20)
1-21. (canceled)
22. A system comprising:
a processing unit on an integrated device, the processing unit including a processing program counter where the processing unit stores addresses for instructions executed by the processing unit;
a program counter on the integrated device, wherein every time the processing unit executes any of the instructions, the processing unit also automatically transmits a value from the processing program counter to the program counter; and
a serial interface to dynamically transfer the value from the program counter to an external device while the processing unit is executing the instructions.
23. The system of claim 22 , wherein the processing unit halts execution, based on a halt instruction transmitted from the external device, before retrieval of a second value from the processing program counter.
24. The system of claim 23 , wherein the second value is retrieved from the program counter, transferred to the external device using the serial interface, and stored in a buffer on the external device.
25. The system of claim 22 , wherein the processing unit ceases automatically transmitting to the program counter in response to the external device no longer requesting values.
26. The system of claim 22 , further comprising a histogram analysis module external to the integrated device that applies a histogram algorithm on the value before storing the value in a buffer.
27. The system of claim 26 , wherein the histogram analysis module generates a histogram based on values from the program counter, the histogram generated at a same time the values are retrieved from the program counter.
28. The system of claim 26 , wherein the external device waits with reading new values from the program counter until the histogram analysis module finishes processing buffered values.
29. A system comprising:
a processing unit on an integrated device, the processing unit including a processing program counter to store an address for an instruction to be executed by the processing unit;
a debug program counter on the integrated device to receive the address from the processing unit upon the execution of the instruction by the processing unit; and
a serial interface to dynamically transfer a value from the debug program counter to a debugging device external to the integrated device while the processing unit is executing instructions;
wherein the processing unit halts execution, based on a halt instruction transmitted from the debugging device, before retrieval of a second value from the processing program counter.
30. The system of claim 29 , wherein the second value is retrieved from the debug program counter, transferred to the debugging device using the serial interface, and stored in a buffer on the debugging device.
31. The system of claim 29 , wherein the processing unit performs automatic value transmission to the debug program counter in response to a request from the debugging device, and wherein the processing unit ceases the automatic value transmission, while continuing to execute the instructions, in response to the debugging device no longer requesting values.
32. The system of claim 29 , further comprising a histogram analysis module external to the integrated device that applies a histogram algorithm on the value before storing the value in a buffer.
33. The system of claim 32 , wherein the histogram analysis module generates a histogram based on values from the debug program counter, the histogram generated at a same time the values are retrieved from the debug program counter.
34. The system of claim 32 , wherein the debugging device waits with reading new values from the debug program counter until the histogram analysis module finishes processing buffered values.
35. A method comprising:
executing, using a processing unit, instructions associated with respective program count values;
automatically transmitting, every time any of the instructions is executed, the program count value from a program count register accessible to the processing unit to a second register accessible to an external device; and
transmitting the program count value from the second register to the external device concurrently with the execution of the instructions.
36. The method of claim 35 , further comprising transmitting a second program count value from the second register and storing the second program count value in a buffer on the external device.
37. The method of claim 36 , further comprising transmitting an instruction to halt the processing unit before retrieval of the second program count value from the second register.
38. The method of claim 37 , further comprising outputting a second instruction associated with the second program count value.
39. The method of claim 35 , further comprising statistically analyzing program count values stored in a buffer on the external device to determine a time that the processing unit spends executing at least one of the instructions.
40. The method of claim 39 , further comprising applying a histogram algorithm on the program count value before storing the program count value in the buffer.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/563,573 US20100011250A1 (en) | 2006-02-14 | 2009-09-21 | Microcontroller information extraction system and method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/354,339 US7596719B2 (en) | 2006-02-14 | 2006-02-14 | Microcontroller information extraction system and method |
US12/563,573 US20100011250A1 (en) | 2006-02-14 | 2009-09-21 | Microcontroller information extraction system and method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/354,339 Continuation US7596719B2 (en) | 2006-02-14 | 2006-02-14 | Microcontroller information extraction system and method |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100011250A1 true US20100011250A1 (en) | 2010-01-14 |
Family
ID=38519381
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/354,339 Active 2027-06-27 US7596719B2 (en) | 2006-02-14 | 2006-02-14 | Microcontroller information extraction system and method |
US12/563,573 Abandoned US20100011250A1 (en) | 2006-02-14 | 2009-09-21 | Microcontroller information extraction system and method |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/354,339 Active 2027-06-27 US7596719B2 (en) | 2006-02-14 | 2006-02-14 | Microcontroller information extraction system and method |
Country Status (1)
Country | Link |
---|---|
US (2) | US7596719B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8161328B1 (en) | 2010-05-27 | 2012-04-17 | Western Digital Technologies, Inc. | Debugger interface |
US8640007B1 (en) | 2011-09-29 | 2014-01-28 | Western Digital Technologies, Inc. | Method and apparatus for transmitting diagnostic data for a storage device |
US9952863B1 (en) | 2015-09-01 | 2018-04-24 | Apple Inc. | Program counter capturing |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7596719B2 (en) * | 2006-02-14 | 2009-09-29 | Atmel Corporation | Microcontroller information extraction system and method |
DE102006041444B4 (en) * | 2006-09-04 | 2014-10-30 | Infineon Technologies Ag | Circuit arrangement and method for detecting an execution time of a command in a computer system |
US8635497B2 (en) * | 2011-06-28 | 2014-01-21 | Freescale Semiconductor, Inc. | Data processing system having a sequence processing unit and method of operation |
US11133703B2 (en) * | 2015-07-13 | 2021-09-28 | Vertiv Corporation | Method and apparatus to retrieve data from power distribution units |
CN107783874A (en) * | 2016-08-26 | 2018-03-09 | 华为技术有限公司 | JTAG debugging apparatus and JTAG adjustment methods |
US10318070B2 (en) * | 2017-02-15 | 2019-06-11 | Honeywell International Inc. | Touch detector with a code debugger |
CN115357439A (en) * | 2018-12-13 | 2022-11-18 | 展讯通信(上海)有限公司 | Development system for processor board level debugging |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5564041A (en) * | 1990-04-20 | 1996-10-08 | Hitachi, Ltd. | Microprocessor for inserting a bus cycle in an instruction set to output an internal information for an emulation |
US5724505A (en) * | 1996-05-15 | 1998-03-03 | Lucent Technologies Inc. | Apparatus and method for real-time program monitoring via a serial interface |
US6185732B1 (en) * | 1997-04-08 | 2001-02-06 | Advanced Micro Devices, Inc. | Software debug port for a microprocessor |
US6289300B1 (en) * | 1998-02-06 | 2001-09-11 | Analog Devices, Inc. | Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit |
US6324684B1 (en) * | 1998-03-20 | 2001-11-27 | Texas Instruments Incorporated | Processor having real-time execution control for debug functions without a debug monitor |
US6374367B1 (en) * | 1997-11-26 | 2002-04-16 | Compaq Computer Corporation | Apparatus and method for monitoring a computer system to guide optimization |
US6957180B1 (en) * | 2001-11-15 | 2005-10-18 | Cypress Semiconductor Corp. | System and a method for communication between an ICE and a production microcontroller while in a halt state |
US7149926B2 (en) * | 2003-05-22 | 2006-12-12 | Infineon Technologies Ag | Configurable real-time trace port for embedded processors |
US7216276B1 (en) * | 2003-02-27 | 2007-05-08 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7237149B2 (en) * | 2005-02-25 | 2007-06-26 | Freescale Semiconductor, Inc. | Method and apparatus for qualifying debug operation using source information |
US20070220333A1 (en) * | 2006-02-14 | 2007-09-20 | Pedersen Frode M | Microcontroller information extraction system and method |
US7281162B2 (en) * | 2001-04-20 | 2007-10-09 | Infineon Technologies Ag | Program-controlled unit |
US7325164B2 (en) * | 2000-04-29 | 2008-01-29 | Hewlett-Packard Development Company, L.P. | System and method for multiple cycle capture of chip state |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6321329B1 (en) | 1999-05-19 | 2001-11-20 | Arm Limited | Executing debug instructions |
JP2001084161A (en) * | 1999-09-10 | 2001-03-30 | Hitachi Ltd | Data processor |
US7168032B2 (en) | 2000-12-15 | 2007-01-23 | Intel Corporation | Data synchronization for a test access port |
-
2006
- 2006-02-14 US US11/354,339 patent/US7596719B2/en active Active
-
2009
- 2009-09-21 US US12/563,573 patent/US20100011250A1/en not_active Abandoned
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5564041A (en) * | 1990-04-20 | 1996-10-08 | Hitachi, Ltd. | Microprocessor for inserting a bus cycle in an instruction set to output an internal information for an emulation |
US5724505A (en) * | 1996-05-15 | 1998-03-03 | Lucent Technologies Inc. | Apparatus and method for real-time program monitoring via a serial interface |
US6185732B1 (en) * | 1997-04-08 | 2001-02-06 | Advanced Micro Devices, Inc. | Software debug port for a microprocessor |
US6374367B1 (en) * | 1997-11-26 | 2002-04-16 | Compaq Computer Corporation | Apparatus and method for monitoring a computer system to guide optimization |
US6289300B1 (en) * | 1998-02-06 | 2001-09-11 | Analog Devices, Inc. | Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit |
US6324684B1 (en) * | 1998-03-20 | 2001-11-27 | Texas Instruments Incorporated | Processor having real-time execution control for debug functions without a debug monitor |
US7325164B2 (en) * | 2000-04-29 | 2008-01-29 | Hewlett-Packard Development Company, L.P. | System and method for multiple cycle capture of chip state |
US7281162B2 (en) * | 2001-04-20 | 2007-10-09 | Infineon Technologies Ag | Program-controlled unit |
US6957180B1 (en) * | 2001-11-15 | 2005-10-18 | Cypress Semiconductor Corp. | System and a method for communication between an ICE and a production microcontroller while in a halt state |
US7216276B1 (en) * | 2003-02-27 | 2007-05-08 | Marvell International Ltd. | Apparatus and method for testing and debugging an integrated circuit |
US7149926B2 (en) * | 2003-05-22 | 2006-12-12 | Infineon Technologies Ag | Configurable real-time trace port for embedded processors |
US7237149B2 (en) * | 2005-02-25 | 2007-06-26 | Freescale Semiconductor, Inc. | Method and apparatus for qualifying debug operation using source information |
US20070220333A1 (en) * | 2006-02-14 | 2007-09-20 | Pedersen Frode M | Microcontroller information extraction system and method |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8161328B1 (en) | 2010-05-27 | 2012-04-17 | Western Digital Technologies, Inc. | Debugger interface |
US8640007B1 (en) | 2011-09-29 | 2014-01-28 | Western Digital Technologies, Inc. | Method and apparatus for transmitting diagnostic data for a storage device |
US9952863B1 (en) | 2015-09-01 | 2018-04-24 | Apple Inc. | Program counter capturing |
Also Published As
Publication number | Publication date |
---|---|
US7596719B2 (en) | 2009-09-29 |
US20070220333A1 (en) | 2007-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7596719B2 (en) | Microcontroller information extraction system and method | |
US7533302B2 (en) | Trace and debug method and system for a processor | |
US6523136B1 (en) | Semiconductor integrated circuit device with processor | |
JP4138021B2 (en) | Processor-based device, method for providing software performance profiling information, and software development system for generating and analyzing software performance profiling information | |
US6185732B1 (en) | Software debug port for a microprocessor | |
US7506205B2 (en) | Debugging system and method for use with software breakpoint | |
EP0084431A2 (en) | Monitoring computer systems | |
US8607174B2 (en) | Verification module apparatus to serve as a prototype for functionally debugging an electronic design that exceeds the capacity of a single FPGA | |
CN101840368B (en) | JTAG (Joint Test Action Group) real-time on-chip debug method and system of multicore processor | |
CN109254883B (en) | Debugging device and method for on-chip memory | |
CN101154184A (en) | JTAG debugging method for microcontroller | |
CN100444127C (en) | System and method for testing software | |
US7607047B2 (en) | Method and system of identifying overlays | |
US6484273B1 (en) | Integrated EJTAG external bus interface | |
US7373557B1 (en) | Performance monitor for data processing systems | |
US20110107072A1 (en) | Method for self-diagnosing system management interrupt handler | |
US7251751B2 (en) | Diagnostic mechanisms within multi processing systems | |
KR20170079368A (en) | CPU system including debug logic for gathering debug information, Computing system having the same and debugging method thereof | |
CN115509834A (en) | On-line debugging system and method for microprocessor based on JTAG protocol | |
US10754743B2 (en) | Apparatus and method using debug status storage element | |
CN100426234C (en) | Method for self turn-on test time for measuring basic input and output system | |
Scottow et al. | Instrumentation of real-time embedded systems for performance analysis | |
CN111290743A (en) | Computer software technology development and debugging system | |
US20230314513A1 (en) | In-circuit emulator device | |
TWI794997B (en) | Method and apparatus and computer program product for debugging solid state disk devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |