Framework-Based Debugging for Embedded Systems

Framework-Based Debugging for Embedded Systems

Gokhan Tanyeri (Clarinox Technologies Pty Ltd, Australia), Trish Messiter (Clarinox Technologies Pty Ltd, Australia) and Paul Beckett (RMIT University, Australia)
Copyright: © 2014 |Pages: 31
DOI: 10.4018/978-1-4666-6194-3.ch018


Debugging embedded systems is almost guaranteed to cause headaches. Embedded systems, and especially portable embedded systems, are becoming increasingly complex and have unique constraints that make them hard to debug. Traditional static debugging tools provided by the embedded development tool chains are important but are only part of the story. Time-dependant issues cannot be debugged by such tools. Embedded environments have to provide efficient mechanisms for managing a range of issues such as thread interaction, control of timers, semaphores and mutexes, IPC message passing, event handling, and finite-state machine organizations. This chapter looks at issues of escalating complexity in modern heterogeneous embedded systems and their impact on debugging techniques and advocates a framework approach to manage this complexity. Using the ClarinoxSoftFrame® Suite framework as an illustrative example, this chapter describes how a modular and open approach to debugging can aid the rapid development of robust wireless-enabled embedded systems that employ a variety of operating systems and platforms. The overall objective in this type of approach is to leverage prebuilt code infrastructure plus existing development skills as much as possible, thereby avoiding the need for engineering staff to learn and re-learn a range of compilers, operating systems, and the like. Overall, debug time can be greatly reduced by improved visibility into the complex interactions between cooperating processes within the code. Collateral benefits can include a reduction in the size of the necessary development team with a reduction in skills specialization.
Chapter Preview

Complexity In Embedded Systems

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. - Brian Kernighan

Key Terms in this Chapter

Heterogeneous Embedded System: A computing system that includes a range of computational units with different instruction set architectures, each targeting specific parts of the overall task. Computational units could include general-purpose processors, digital signal processors, graphics processing units or application-specific integrated circuits.

Embedded Framework: Software layers sit between the operating system and the user applications to provide OS agnostic and platform agnostic services for embedded developments.

Middleware: Software that extends the services provided to an application by the operating system, often related to special-purpose communication and input/output tasks.

Wireless: Connection and communication over electromagnetic waves (e.g. radio frequency, infrared, light), rather than over a physical cable connection.

Dynamic Debugging: Debugging of a computer system while it is executing. Optionally a dynamic debugger provides a console to interact with the system.

Real-Time Operating System: An operating system (OS) specifically set up to provide deterministic consistency when responding to application requests for services.

Plug-In: A small DLL-based module by which developers can add their own debugging functionality to a base environment.

Embedded System: An application specific microcomputer system that is a key part of a larger system.

Complete Chapter List

Search this Book: