A. Technical Field
The present invention relates generally to the field of embedded systems, and more particularly, to systems and methods for gathering debug information from embedded systems.
B. Background of the Invention
In the development of embedded systems, such as data storage systems, debugging operations are typically performed using external hardware. The external hardware is used to monitor and control the system. FIG. 1 depicts an exemplary system of hardware used to debugging a storage system.
FIG. 1 illustrates a simplified functional view of computer system 100, which comprises one or more applications 112 at an application level of the system, a device driver 114 at the hardware abstraction level, and controller 120 at the hardware level. Debugging system 200 is connected to computer system 100 via connection 201, which may be a serial connection. A hyper terminal application 212 transmits commands through COM (communications) port 220. Controller 120 receives the commands via connection 201 and processes the commands. The resulting data is transmitted through connection 201 to debugging system 200 and may be displayed by hyper terminal 212.
While developing firmware, it is very important to have a serial port or some other type of hardware connected to controller 120 to debug it while the code. This way, a developer has extensive information, which can help find and analyze problems. A developer can also step through the code while it is executing. This functionality also allows the developer to change execution order of the code. Essentially, the developer can have full control over the software that is being developed. Although having hardware for external connections is beneficial for the development and testing of a system, the hardware is not generally included in the final product.
To reduce the final costs of the system, the hardware used to create the connection to the external hardware (e.g., debugging system 200) is typically removed. For example, a UART (universal asynchronous receiver/transmitter) (not shown), used to facilitated communications with external debugger 200, may be removed from controller 120 to help reduced the production costs of system 100. Although computer system 100 is typically very stable upon release to customers, computer system 100 may still experience some problems while being operated by a customer. Because these problems generally occur while computer system 100 is at a customer location and without any external hardware attached to system 100, it is very difficult to debug the problems that occur. The developer of the computer system may attempt to reproduce a customer's problem, but this can take considerable amounts of time. Furthermore, some problems experienced by a customer may not be able to be reproduced by the developer.
Accordingly, what is needed are systems and methods for gathering internal information of an embedded system without having additional external hardware connected.