scispace - formally typeset
Search or ask a question
Proceedings ArticleDOI

A debugger RTOS for embedded systems

TL;DR: A software debugging mechanism for embedded systems that provides automatic error detection, classification and location capabilities for a set of algorithmic errors for an integer divide-by-zero error is presented.
Abstract: A software debugging mechanism for embedded systems is presented. The debugger is a dynamically loadable and linkable module of the operating system. The methodology presented provides automatic error detection, classification and location capabilities for a set of algorithmic errors. An example implementation of our approach is given for debugging an integer divide-by-zero error.

Content maybe subject to copyright    Report

Citations
More filters
Journal ArticleDOI
TL;DR: The proposed method introduces a reverse execution methodology at the assembly instruction level with low memory and time overheads that generates, from a program, a reverse program by which a destroyed state is almost always regenerated rather than being restored from a record.
Abstract: Assembly instruction level reverse execution provides a programmer with the ability to return a program to a previous state in its execution history via execution of a "reverse program." The ability to execute a program in reverse is advantageous for shortening software development time. Conventional techniques for recovering a state rely on saving the state into a record before the state is destroyed. However, state-saving causes significant memory and time overheads during forward execution.The proposed method introduces a reverse execution methodology at the assembly instruction level with low memory and time overheads. The methodology generates, from a program, a reverse program by which a destroyed state is almost always regenerated rather than being restored from a record. This significantly reduces state-saving.The methodology has been implemented on a PowerPC processor with a custom made debugger. As compared to previous work, all of which heavily use state-saving techniques, the experimental results show from 2X to 2206X reduction in run-time memory usage, from 1.5X to 403X reduction in forward execution time overhead and from 1.2X to 2.32X reduction in forward execution time for the tested benchmarks. Furthermore, due to the reduction in memory usage, our method can provide reverse execution in many cases where other methods run out of available memory. However, for cases where there is enough memory available, our method results in 1.16X to 1.89X slow down in reverse execution.

38 citations

Patent
Keun Soo Yim1, Jung-Keun Park1, Jeong-Joon Yoo1, Jaedon Lee1, Chae-seok Im1, Youngsam Shin1 
07 May 2007
TL;DR: A kernel-aware debugging system as mentioned in this paper is a debugging interface that includes a conditional breakpoint setting unit that checks a currently operating object inside a kernel of a target system when a central processing unit (CPU) of the target system stops operating at a particular position where the breakpoint is set and making the CPU proceed to operate when it is determined that it is not intended that the currently operating objects be debugged.
Abstract: A kernel-aware debugging system, medium, and method. The kernel-aware debugging system may include a kernel-aware debugging interface including a conditional breakpoint setting unit which sets a kernel-aware conditional breakpoint by checking a currently operating object inside a kernel of a target system when a central processing unit (CPU) of the target system stops operating at a particular position where the breakpoint is set and making the CPU proceed to operate when it is determined that it is not intended that the currently operating object be debugged. Moreover, the kernel-aware debugging interface may include a unit which stores control flow information for detecting faults due to asynchronous events, a profiling unit which collects profile information and allows back-tracing when faults occur, and a unit which debugs a synchronization problem between multitasks.

36 citations

Patent
22 Jul 2008
TL;DR: In this paper, an operating system including a software development environment is programmed into the on-chip flash memory of a system-on-a-chip type microcontroller, which includes an editor, a line-by-line bytecode compiler, a flasher, and an interactive debugger.
Abstract: An operating system including a software development environment is programmed into the on-chip flash memory of a system-on-a-chip type microcontroller. The software development environment is configured to reside entirely in the microcontroller's on-chip flash memory and includes an editor, a line-by-line bytecode compiler, a flasher, and an interactive debugger. A user operating a terminal emulator on a host computer connects to the microcontroller chip by means of a serial (USB) connection based on an FTDI protocol, or other serial link, in order to develop a BASIC program for the embedded system. The operating system is configured to permit external I/O pins on the microcontroller chip to be mapped to special “pin variables” for manipulation or examination by the user program, and to manage internal peripherals (timers, UARTs) of the microcontroller chip so as to permit application-level interrupt handling.

23 citations

Proceedings ArticleDOI
11 Jul 2005
TL;DR: Boundary scan testing (also named JTAG) is appeared and the embedded system debugger based on JTAG technology is proposed, which is proposed to solve the debugging problem of embedded systems.
Abstract: In the past the Embedded Software was used for controlling industrial apparatus but now is used in control systems for military, home appliances and automatic sensor systems and so on at present. Embedded systems are different from conventional computer system and this distinction makes it much difficult to debug as well as develop the embedded systems because of the lack of resources and sensitiveness in target system such as memory, power, timing constraint, etc. Especially huge integrated system like SoC (System-on-a-Chip)-that has memory, I/O port, etc.-has no space to locate debugging gadget so that the debugging of the embedded system is more difficult. To solve above problem, Boundary scan testing (also named JTAG) is appeared and we proposed the embedded system debugger based on JTAG technology in this paper

9 citations

Dissertation
01 Jan 2004
TL;DR: This dissertation presents a streaming method, which is implemented and simulated on an MBX860 board and on a hardware/software co-simulation platform in which the PowerPC architecture was used, that enables small memory footprint devices to run applications larger than the physical memory by using the memory management technique.
Abstract: Downloading software from a server usually takes a noticeable amount of time, that is, noticeable to the user who wants to run the program. However, this issue can be mitigated by the use of streaming software. Software steaming is a means by which software can begin execution even while transmission of the full software program may still be in progress. Therefore, the application load time (i.e., the amount of time from when an application is selected for download to when the application can be executed) observed by the user can be significantly reduced. Moreover, unneeded software components might not be downloaded to the device, lowering memory and bandwidth usages. As a result, resource utilization such as memory and bandwidth usage may also be more efficient. Using our streaming method, an embedded device can support a wide range of applications which can be run on demand. Software streaming also enables small memory footprint devices to run applications larger than the physical memory by using our memory management technique. In this dissertation, we present a streaming method we call block streaming to transmit stream-enabled applications, including stream-enabled file I/O. We implemented a tool to partition software into blocks which can be transmitted (streamed) to the embedded device. Our streaming method was implemented and simulated on an MBX860 board and on a hardware/software co-simulation platform in which we used the PowerPC architecture. We show a robotics application that, with our software streaming method, is able to meet its deadline. The application load time for this application also improves by a factor of more than 10X when compared to downloading the entire application before running it. The experimental results also show that our implementation improves file I/O operation latency; in our examples, the performance improves up to 55.83X when compared with direct download. Finally, we show a stream-enabled game application combined with stream-enabled file I/O for which the user can start playing the game 3.18X more quickly than using only the stream-enabled game program file alone.

8 citations

References
More filters
Book
14 Apr 1983
TL;DR: An algorithm that can fix a bug that has been identified, and integrate it with the diagnosis algorithms to form an interactive debugging system that can debug programs that are too complex for the Model Inference System to synthesize.
Abstract: The thesis lays a theoretical framework for program debugging, with the goal of partly mechanizing this activity. In particular, we formalize and develop algorithmic solutions to the following two questions: (1) How do we identify a bug in a program that behaves incorrectly? (2) How do we fix a bug, once one is identified? We develop interactive diagnosis algorithms that identify a bug in a program that behaves incorrectly, and implement them in Prolog for the diagnosis of Prolog programs. Their performance suggests that they can be the backbone of debugging aids that go far beyond what is offered by current programming environments. We develop an inductive inference algorithm that synthesizes logic programs from examples of their behavior. The algorithm incorporates the diagnosis algorithms as a component. It is incremental, and progresses by debugging a program with respect to the examples. The Model Inference System is a Prolog implementation of the algorithm. Its range of applications and efficiency is comparable to existing systems for program synthesis from examples and grammatical inference. We develop an algorithm that can fix a bug that has been identified, and integrate it with the diagnosis algorithms to form an interactive debugging system. By restricting the class of bugs we attempt to correct, the system can debug programs that are too complex for the Model Inference System to synthesize.

1,166 citations


"A debugger RTOS for embedded system..." refers methods in this paper

  • ...Two other related methods for simplifying the job of locating the error in the program are divide-and-query [ 6 ] and program slicing [7]....

    [...]

Journal ArticleDOI
TL;DR: This work introduces Mercury, a new purely declarative logic programming language designed to provide the support that groups of application programmers need when building large programs, and presents a new and relatively simple execution model that takes advantage of the information these systems provide, yielding very efficient code.
Abstract: We introduce Mercury, a new purely declarative logic programming language designed to provide the support that groups of application programmers need when building large programs. Mercury's strong type, mode, and determinism systems improve program reliability by catching many errors at compile time. We present a new and relatively simple execution model that takes advantage of the information these systems provide, yielding very efficient code. The Mercury compiler uses this execution model to generate portable C code. Our benchmarking shows that the code generated by our implementation is significantly faster than the code generated by mature optimizing implementations of other logic programming languages.

390 citations


"A debugger RTOS for embedded system..." refers methods in this paper

  • ...[5] Z. Somogyi, F. Henderson, and T. Conway, “The Execution Algorithm of Mercury: An efficient purely declarative logic programming language”, JLP 29, October 1996, pp. 1-3....

    [...]

  • ...Going one step further, some logic programming languages have been developed depending on the assertion methodology such as Godel [4] and Mercury [5]....

    [...]

Journal ArticleDOI
TL;DR: If debugging tools provided explicit support for many tasks manually that the tools could perform automatically, the debugging process could be automated to a significant extent.
Abstract: Programmers spend considerable time debugging code. Symbolic debuggers provide some help but the task remains complex and difficult. Other than breakpoints and tracing, these tools provide little high-level help. Programmers must perform many tasks manually that the tools could perform automatically, such as finding which statements in the program affect the value of an output variable for a given test case, and what was the value of a given variable when the control last reached a given program location. If debugging tools provided explicit support for these tasks, the debugging process could be automated to a significant extent. In this paper we present a debugging model, based on dynamic program slicing and execution backtracking techniques, that easily lends itself to automation. This model is based on experience with using these techniques to debug software. We also present a prototype debugging tool, SPYDER, that explicitly supports the proposed model, and with which we are performing further debugging research.

338 citations

Book
25 Oct 1999
TL;DR: This is a tutorial paper on the linking and loading stages of the language transformation process, and the hnking process is treated in terms of the various times at which it may occur.
Abstract: From the Publisher: Whatever your programming language, whatever your platform, you probably tap into linker and loader functions all the time. But do you know how to use them to their greatest possible advantage? Only now, with the publication of Linkers & Loaders, is there an authoritative book devoted entirely to these deep-seated compile-time and run-time processes. The book begins with a detailed and comparative account of linking and loading that illustrates the differences among various compilers and operating systems. On top of this foundation, the author presents clear practical advice to help you create faster, cleaner code. You’ll learn to avoid the pitfalls associated with Windows DLLs, take advantage of the space-saving, performance-improving techniques supported by many modern linkers, make the best use of the UNIX ELF library scheme, and much more. If you’re serious about programming, you’ll devour this unique guide to one of the field’s least understood topics. Linkers & Loaders is also an ideal supplementary text for compiler and operating systems courses. Features Includes a linker construction project written in Perl, with project files available for download. Covers dynamic linking in Windows, UNIX, Linux, BeOS, and other operating systems. Explains the Java linking model and how it figures in network applets and extensible Java code. Helps you write more elegant and effective code, and build applications that compile, load, and run more efficiently. About the Authors John Levine is the author or co-author of many books, including lex & yac (O'Reilly), Programming for Graphics Files in C and C++ (Wiley), and The Internet for Dummies (IDG). He is also publisher emeritus of the Journal of C Language Translation, long-time moderator of the comp.compilers newsgroup, and the creator of one of the first commercial Fortran 77 compilers. He holds a Ph.D. in Computer Science from Yale University.

285 citations


"A debugger RTOS for embedded system..." refers background in this paper

  • ...However, this updating degrades performance considerably due to further processing of binary executable at run-time [11]....

    [...]

Book
05 Apr 1994
TL;DR: Part 1 Overview of Goedel: introduction types formulas equality and numbers modules various data types control input/output meta-programming example programs and description of polymorphic many-sorted logic.
Abstract: Part 1 Overview of Goedel: introduction types formulas equality and numbers modules various data types control input/output meta-programming example programs. Part 2 Definition of Goedel: syntax semantics system modules and utilities. Appendix: polymorphic many-sorted logic.

236 citations


"A debugger RTOS for embedded system..." refers methods in this paper

  • ...[4] P. Hill, and J. Lloyd, The Godel Programming Language, MIT Press, Cambridge MA, 1994....

    [...]

  • ...Going one step further, some logic programming languages have been developed depending on the assertion methodology such as Godel [4] and Mercury [5]....

    [...]