Embedded Debugging with Arm DS IDE: Secure Tools & Techniques for App Developers

A step-by-step guide to debugging bare-metal embedded software on Corellium Atlas with Arm DS IDE, from device setup to advanced debugging techniques.
Embedded Debugging with Arm DS IDE: Secure Tools & Techniques for App Developers

Debugging embedded systems can be complex, especially when working with security-critical firmware and custom hardware. Arm DS IDE offers a powerful environment for developers building on Arm-based platforms, but combining this with modern virtualization strategies can dramatically accelerate workflows, reduce hardware reliance, and improve security visibility using modern embedded debugging tools.

Arm DS IDE is an integrated development environment (IDE) for developing, debugging, and optimizing embedded and bare-metal software on Arm-based processors. It provides a full suite of tools that help developers create, test, and fine-tune code across a wide range of Arm architectures.

Corellium Atlas is a virtual hardware platform built to provide embedded software engineers with the power to jumpstart building and debugging their software before, during, and after silicon is available. Atlas includes a preconfigured GDB Server that can be connected to either directly through the device service IP address or using the provided GDB Accelerator. There is no need for debuggers or physical configurations to utilize the GDB debugger. 

In this guide, we’ll explore how to get the most from Arm DS IDE, walk through embedded debugging techniques, and show how virtualized Arm-native platforms like Corellium help modernize secure development.

Embedded Debugging Tools: How Atlas Hardware Models with Arm DS IDE

In contrast to physical device limitations, platforms like Corellium can virtualize Arm targets for efficient embedded debugging. We can use the built-in GDB server on Corellium Atlas and the service IP and port to connect Arm DS IDE to any of the models supported on the platform. The following steps will show how to connect and debug an instance on Arm DS IDE. 

Setup a virtual device manually using the Web UI 

These steps create a device in the Corellium UI manually: 

  • Login to your corresponding Corellium domain:
    • Navigate to exampledomain.app.avh.corellium.com
    • Login with your username and password 
    • You are now in the Devices screen of the Corellium UI 
  • Create a device from the Devices screen: 
    • Click the “+ Create device” button on the Devices screen 
    • Click on the project card you want to create a device in 
      • Example: “Default Project 
    • Click on the device card for the device you want to create 
      • Example: “RD-1AE” 
    • Configure the device and select a “Firmware version” from the drop down 
      • RD-1AE: “Critical Application Monitor (Baremetal, Debian) (1.1.1)” 
    • Click the “Select” button on the Configure your device screen 
    • Confirm your details and click the “Create device” button 
  • Confirm device creation: 
    • Watch the progress as the device is built, booted, and made accessible 
    • Navigate back to the Devices screen 
    • View the newly instantiated device in the list of devices 

Setup the Arm DS IDE 

Next, you should download and install the Arm DS IDE corresponding to the host operating system: Go here for additional Arm DS IDE Documentation

Setup the Corellium Debug Accelerator 

Download and install the Debug Accelerator corresponding to the host operating system.

Configure Arm DS IDE for Corellium Atlas 

The following steps can be used to connect Arm DS IDE to an Atlas instance and then debug software. After setting up Arm DS IDE on your host machine, a connection will need to be configured. 

  • Start the debug accelerator and set it up to be used with the configured RD-1AE 
    • Collect the IP address from the “Connect” tab in the Corellium UI for the instance created at setup 
    • Start the debug accelerator 
    • Paste the service IP address in the “Remote” field with GDB port 4000 
    • “10.11.1.16:4000” 
  • Keep the default IP address and port 
    • “127.0.0.1:4001” 
  • Start the Arm DS IDE software and setup the debug configuration 
    • Click the “Run” button 
    • Select the “Debug Configurations...” option 
    • The “Debug Configurations” window will appear 
    • Right click the “Generic Arm C/C++ Application”  
    • Select the “New Configuration” option 
    • Select the target in the “Select target”  
    • Type “gdb” into the field 
      • Expand the “GDB Debug” 
      • Expand “Connections via gdbserver to a bare metal target” 
      • Select the “Connect to already running application” 
    • In the “Connections” section 
      • In the gdbserver (TCP) area, input the IP Address and Port from the GDB Accelerator local address 
        • Address: “<local IP address>” 
        • Port: 4001 
    • Click the “Apply” button 
    • Click the “Debug” button 
  • Upload a binary to collect the symbols for debugging 
    • Click the “File” drop down 
    • Select the “Import” option 
    • Select the binary file you want to debug through Arm DS IDE to load the symbols 
  • Review the “Console”, “Commands”, “Variables”, “Registers”, “Memory”, “Disassembly”, “Target Console” 

You will now be able to debug the binary on the RD-1AE as the binary executes. You will see the various symbols and steps in the code that are running on the RD-1AE. 

Using Corellium to Accelerate Arm-Based R&D

Ready to learn more about Corellium Atlas? Request a free trial to discover the power of our virtual hardware platform for automotive software development, testing, and automation—including for software-defined vehicles (SDVs) —with integrations into CI/CT, DevOps, and DevSecOps flows not possible with physical hardware.