TechOnline India Header
Most Popular
Top 5 Courses
  • Fundamentals of Signal Integrity
  • Fundamentals of DSP
  • Fundamentals of MOSFETs for Switching
  • Fundamentals of Multicore Processing
  • Fundamentals of Microcontrollers
    Most Popular
    Top 5 Technical Papers
  • Digital Signal Processing: A Practical Guide (Part 1)
  • How to Inexpensively Design an ASIC in 5 Weeks
  • Digital Signal Processing: A Practical Guide (Part 2)
  • Digital Signal Processing: A Practical Guide (Part 5)
  • Digital Signal Processing: A Practical Guide (Part 4)
    Most Popular
    Top 5 Virtual Labs
  • MC9S12NE64
  • Texas Instruments eZ430-RF2500 Wireless Development Tool
  • MC9S08QG
    Most Popular
    Top 5 Webinars
  • Mutexes vs. Semaphores: How to Use Each Properly
  • An Overview of ADI's iSensor' Intelligent Motion-sensing Technology
  • The Big Design Squeeze: How to get faster design turns in FPGA-based designs
  • Learn how to run the uC/OS-III real-time kernel on an ARM Cortex M3
    All Articles Products Courses Papers VirtuaLabs Webinars
    Top Search Items
    zigbee
    microcontroller
    digital filter
    LTE
    xilinx


    Techpaper Spotlight

    Wind River
    Accelerating the Development of Embedded Linux Devices with JTAG On-Chip Debugging
        Login | Register | Welcome, Guest

    Topics
    POLL
    How much code have you produced in your career?
    A few KLOC
        37%
    100s of KLOC
        46%
    Millions of LOC
        11%
    A trillion
        6%
     



    Combining error-detection techniques to find bugs in embedded C software
    Embedded Europe
    Software verification techniques such as pattern-based static code analysis, runtime memory monitoring, unit testing, and flow analysis are all valuable techniques for finding bugs in embedded C software. On its own, each technique can help you find specific types of errors. However, if you restrict yourself to applying just one or some of these techniques in isolation, you risk having bugs that slip through the cracks.

    A safer, more effective strategy is to use all of these complementary techniques in concert. This establishes a bulletproof framework that helps you find bugs which are likely to evade specific techniques. It also creates an environment that helps you find functional problems, which can be the most critical and difficult to detect.

    This paper will explain how automated techniques such as pattern-based static code analysis, runtime memory monitoring, unit testing, and flow analysis can be used together to find bugs in an embedded C application. These techniques will be demonstrated using Parasoft C++test, an integrated solution for automating a broad range of best practices proven to improve software development team productivity and software quality.

    As you read this paper — and whenever you think about finding bugs — it's important to keep sight of the big picture. Automatically detecting bugs such as memory corruption and deadlocks is undoubtedly a vital activity for any development team. However, the most deadly bugs are functional errors, which often cannot be found automatically. We'll briefly discuss techniques for finding these bugs at the conclusion of this paper.

    Introducing the scenario

    To provide a concrete example, we will introduce and demonstrate the recommended bug-finding strategies in the context of a scenario that we recently encountered: a simple sensor application that runs on an ARM board.

    Assume that so far, we have created an application, however, when we uploaded it to the board and tried to run it, we did not see an expected output on the LCD screen.

    It's not working, but we're not sure why. We can try to debug it, but debugging on the target board is time-consuming and tedious. We would need to manually analyze the debugger results and try to determine the real problems on our own. Or, we might apply certain tools or techniques proven to pinpoint errors automatically.

    At this point, we can start count on good luck as we try to debug the application with the debugger. Or, we can try to apply an automated testing strategy in order to peel errors out of the code. If it's still not working after we try the automated techniques, we can then go to the debugger as a last resort.

    1 | 2 | 3 | 4 | 5 NEXT >
     
     
    Latest Webinars
    · Distributor Brand Preference Study
    · Editorial Webinar: Optimized Linux Development Tools for Multicore
    · High-Power Amplifier Characterization using a Nonlinear Vector Network Analyzer
    · Completing LTE eNB Closed-loop Conformance Tests
    · Build Smart Products: Maximize return on investment through cross-discipline trade studies
     
    Member Company Spotlight
    Freescale Semiconductor
     

    The FTF Design Challenge encourages embedded engineers and engineering students to create new products that will improve the environment. The second annual challenge offers engineers the chance to get complimentary or discounted tools, access virtual labs, experience designing with CodeWarrior® development tools, win cash and attend FTF. Five global challenges will open in September through December, 2008. Do you have the next green idea? Click to get started.


    Member Companies

    Virtualab
    Freescale Semiconductor

    DEMO9S08LC60