Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Mobile blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Smart Homes
    • Tools, Software and IDEs blog
    • Works on Arm blog
    • 中文社区博客
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Arm Community blogs
Arm Community blogs
Embedded blog Debugging Embedded Systems: the Problems and Solutions
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • arm cortex m
  • Debugging
  • blog
  • somnium
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Debugging Embedded Systems: the Problems and Solutions

Daniel O'Hara
Daniel O'Hara
June 8, 2016

Debugging Embedded Systems: the Problems and Solutions

This article is the first in a series on the new debug features in SOMNIUM DRT.

We all know from experience(and this is confirmed by many studies) that debugging takes up a significant part of the time in software development. Software systems are complex and debugging is hard. This is especially true for embedded systems where there may be real-time constraints on when data is received or sent, the timing of interrupts, and so on. This means that traditional techniques, such as breakpoints or changing to code to print out state information, cannot be used because they will drastically change the timing and therefore the behavior of the program. Program flow is often controlled by asynchronous and external events, for example inputs from touch sensors and other peripherals. Therefore the real-time behavior of the program cannot be understood simply by looking at the control flow in the source code.

SOMNIUM DRT includes features to support debugging embedded systems. One of these enables the live, non-intrusive display of interesting data. Another is the ability to trace program flow so you can step backwards and forwards through the execution history to see how you to to a particular state.

SOMNIUM DRT is is a set of development tools for ARM Cortex-M based devices [such as the Kinetis and LPC devices from NXP and the STM32 devices from STMicroelectronics]. It is fully compatible with industry-standard tools such as the GNU toolchain and Eclipse IDE. DRT uses our patented techniques to produce highly optimized code by exploiting information about the embedded processor, the memory system and other peripherals to deliver improved performance, lower code size and reduced energy use.

It also includes some great debugging tools such as trace, live expressions and fault diagnosis.

Live Expression View

The first of these is the live view of expressions. This enables you to see the value of global variables, and expressions using them, change as the program runs. This is minimally intrusive - it cycle-steals from the bus to grab the data but does not affect the processor itself - so there is far less chance that it will change the behavior of the running program. There are no source code changes required, you just need to click the icon in the expressions view to enable live updates. The debugger will periodically read the selected memory locations and update the values in the expressions view without interrupting program execution.

Watch our demo of DRT'a Live Expression Viewer.

A free trial of DRT is available. DRT is able to automatically import projects from other Eclipse-based development environments, making it simple to migrate your projects to DRT so you can quickly see the benefits for yourself. Download your free trial today and try out these powerful debug features for yourself.

Anonymous
Embedded blog
  • The cloud-native approach to the software defined car

    Girish Shirasat
    Girish Shirasat
    Cloud native approaches are critical to enabling the software defined car, read more in this blog post.
    • September 14, 2021
  • Arm and ETAS partner to optimize model-based development for Arm devices

    Guilherme Marshall
    Guilherme Marshall
    Arm and ETAS bring optimum runtime performance and simplified development flow for model-based development and automated code generation in safety applications
    • January 7, 2021
  • The Flexible Approach to Adding Functional Safety to a CPU

    Naresh Menon
    Naresh Menon
    Find out more about Functional Safety with SoC designs and Software Test Libraries.
    • October 22, 2020