Zibb

Robert CravottaTechnical Editor Robert Cravotta explores processor and software-processing architectures and the impact they have on system and software development. Relevant architectures include microprocessors, microcontrollers, digital signal processors (DSPs), multiprocessor architectures, processor fabrics, coprocessors, and accelerators, plus embedded cores in FPGAs, SOCs, and ASICs.



   Advertisement

Profile

RSS Feed

  • Add this blog to your RSS newsreader!

Recent Posts

Recent Comments

Most Commented On

Archives

By Category

Processor-based Design Articles

Blog

Thursday, September 4, 2008

Debuggers for embedded systems: More than just fixing software bugs

Sep 4 2008 2:14AM | Permalink |Comments (4) |


As part of a continuing effort to determine what is different between embedded software and application level software, this week's design feature ("Shedding light on embedded debugging") explores how embedded developers are using debugging tools. One difference is that many embedded systems must resolve whether unexpected inputs are due to the variable nature of real world interfaces or artifacts of closed-loop control algorithms where outputs affect inputs. In fact, several inputs may be influenced by multiple outputs in complex relationships. In many cases, characterizing the behavior of the whole system cannot be performed until system level integration is underway.

A primary capability of a debugger is to provide the developer with visibility into how the system is working. It is this core capability that makes debuggers expedient tools to characterize the behavior of a complex sense-and-control system during system level integration. Is it still debugging, or is it a design aid, if developers are using debugging tools to characterize a poorly understood set of sense and control relationships?

While debugging tools may provide visibility into the operation of the processor core, correlating the software state with the rest of the system is pretty much an exercise left to the developer to patch together. While system-level simulators that can support virtual as well as hardware-in-the-loop simulations can help with this exercise, they are often an order of magnitude more expensive than traditional software development tools. As embedded systems incorporate ever more intelligence in their behavior, the need for the developer to understand the system level interactions becomes that much more important, and the lack of many of today's software development tools to provide that level of correlated understanding of the system is an area of ripe opportunity for future tool differentiation.

Multicore or multiple-processor designs further increase the amount of complexity and difficulty in correlating the different components affecting a system's behavior. With these types of systems, the developer needs to be able to understand how the data and memory architectures affect the flow, timing, and latency of data and messages between processors. At this point, developers are using ad hoc configurations of tools to capture and aid the visualization of the behavior of the multiple processor system.

EEMBC's MultiBench is an industry-level first attempt to enable developers to characterize the behavior and performance of a set of software across different multiple processor configurations. Markus Levy, EEMBC president, and Shay Gal-On, EEMBC director of software engineering, have authored an article, "Challenges and design decisions for measuring multicore performance," that discusses a few of the challenges and design decisions facing developers that want to measure system performance for multiple processor designs.


Reader Comments



at 9/4/2008 6:51:38 AM, speedplane said:
While generic benchmarks may provide a rough baseline for determining the performance of a multicore system, I'm skeptical that they can really help engineers choose between two similar architectures or chip variants. The performance is most likely application specific.



at 9/4/2008 1:43:04 PM, IMHO said:
That's why EEMBC benchmarks are broken up into suites, each suite reflecting the workload of a specific application. Like imaging, networking, etc. Standardized benchmarks (Linpack, SPEC, Dhrystone) offer no hints of performance that's application-specific, but EEMBC's application-specific suites do give such an indication.



at 9/5/2008 3:37:29 AM, Bluebear said:
A taxonomy that attempts to classify software by grouping them into either application or embedded may cause undue confusion. Application is about function. Embedded is about form. Form should not be on the same taxonomy page with function. In the taxonomy of software function, a top level grouping may be: (1) application software, (2) middleware, and (3) system software. Application software solves the user’s problem supposedly independently from the specifics of the hardware. System software controls the specific hardware. Middleware, a newer term coiled with the move in the early 90’s towards meta languages, sits between application and system software to make a common virtual hardware machine out of various different hardware physical machines. Middle ware is a term used in business ERP and database world that is equivalent to hardware control processes in embedded development world, or hardware abstraction layer in software tooling world. In the taxonomy of form, on the other hand, a top level grouping may be: (1) embedded SW or firmware, (2) PC SW or workstation SW, and (3) mainframe SW or server SW. Server as contrast to workstation software is for a distinction of multi- vs. single-user software; and is different from server as contrast to client to identify the provider from the requestor of service or data. I agree that it is not an easy cut, but I think the one most profound identity of embedded software, as contrast to PC and mainframe software, is the use of a cross-compiler. A cross-compiler runs on a host CPU (such as a Win32/64, a Solaris workstation, or a Unix server mainframe) to compile and link the source and library codes into a binary code to run on a different target CPU (such as an 8051 or a Freescale’s HCS12/ColdFire/MPCxxxx, etc.). This cross-compiling is unique to embedded world. Debugging a cross-compiled code presents a challenge and a need to use a special tool called an emulator. Many long-term embedded developers themselves confuse between the emulator and the BDM or JTAG transceiver pod. Emulator is not a hardware board or pod, it is a software that runs in the host machine and that replicates (emulates) the runtime environment of the target CPU. By replicating the physical machine as a virtual one in the host RAM and keeping the two machines run in synchronization, we can add visibility (break points, traces, memory and register dumps, etc…) to ease the debugging effort. Presently, the convergence of background communication protocols to very few (e.g. BDM, JTAG, USB) and the use of flash instead of UV ROM have made programming the chips much more easy. However, finding effective emulation software to debug embedded codes, especially those that fork new processes in real time, remains a real challenge facing the embedded development world. This challenge is unfortunately not an entrepreneur’s opportunity and likely will not be addressed adequately until a future time when the MCU variations will have converged to fewer count. Developing emulators is not a technical problem, it is a business challenge due to many factors such as the economies of scale of the demand market is relatively small, the educational selling process takes long lead time, the cost to maintain a technologically sophisticated call center is high, the average lifetime of the targets’ technologies is too short, and the receivables maintenance overhead is high i.e. an ancillary software that encodes and floats an emulator license on a server network to count up to 10 concurrent users in 5 countries around the world is a costly project by itself.



at 9/6/2009 8:43:20 AM, Adam said:
Great post, actually I just watched a business documentary about today & future of the entrepreneurship in US.Some interesting cases.

The film named ''The YES Movie''produced by the Young Entrepreneur Society-Louis Lautman.

Post a comment



Display Name

Change Image
Before submitting this form, please type the characters displayed above.
Note the letters are NOT case sensitive.


ADVERTISEMENT

©1997-2009 Reed Business Information, a division of Reed Elsevier Inc. All rights reserved.
Use of this Web site is subject to its Terms of Use | Privacy Policy

Please visit these other Reed Business sites