SoC
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
  • Arm Cortex M3
  • Contact
Reading: ARM Cortex Reset Button and Debug Interface (SWD)
SUBSCRIBE
SoCSoC
Font ResizerAa
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Search
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Have an existing account? Sign In
Follow US
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
© S-O-C.ORG, All Rights Reserved.
Arm

ARM Cortex Reset Button and Debug Interface (SWD)

Neil Salmon
Last updated: September 16, 2023 9:05 am
Neil Salmon 11 Min Read
Share
SHARE

The reset button is an essential component on ARM Cortex microcontrollers and SoCs. Pressing the reset button restarts the processor and resets it to a known good state. This allows recovery from crashes, hangs, or other issues. The debug interface, called SWD (Serial Wire Debug), provides access to debug, programming, and profiling features built into the Cortex CPU. SWD allows halt, single-step, breakpoint, and watchpoint capabilities through an external debugger. Together, the reset button and SWD offer critical control and visibility into the processor.

Contents
Reset ButtonUses and AdvantagesReset ProcessReset SourcesDebug InterfaceSWD OverviewAdvantages of SWDSWD Debugger ToolsSWD vs JTAGReset and Debug TogetherDevelopment Board ExamplesSummary

Reset Button

The reset button, labeled RESET, RST, or similar, is a push-button that restarts the Cortex processor. It is typically located near the power switch or other controls. Pressing the reset button forces a hard reset which resets all processor registers and restarts program execution from the reset vector. This stops any running program and reinitializes the system.

On turning on power, the processor begins executing code from the preset reset vector. Pressing reset forces the processor to restart from this point. This halts any crashing, frozen, or unresponsive software and reverts the processor to a fresh state. The reset button is useful any time the system needs to be restarted such as after a crash, before uploading new firmware, or when the system is otherwise unresponsive.

The reset circuitry integrates with the processor reset pin. Pressing the button asserts the reset pin which halts the CPU and begins the restart process. The reset button is active at all times allowing emergency recovery no matter the state of the processor. Some MCUs offer wakeup on reset allowing restart from deep sleep modes.

Most ARM Cortex development boards include a reset button. It may be a tactile button, small switch, or a momentary push-button. The button triggers a level change or pulse on the reset pin. Some include a second button for bootloader mode. Reset buttons also feature on evaluation modules, baseboard add-ons, and embedded end products.

Uses and Advantages

Key uses and advantages of the reset button include:

  • Recover from crashes and hangs – Pressing reset restarts the system
  • Restart before flashing new firmware – Resets the processor to allow programming
  • Halt erratic behavior – Stops unstable code execution
  • Emergency stop for devices – Provides a quick safety reset
  • Recover lost connectivity – Restarts operation to regain contact
  • Safe known reset state – Prevents undefined startup conditions
  • Quick restore of operation – Faster than power cycling for reset

The reset button offers a fast, convenient method to restart the processor without having to power cycle the board. It quickly restores expected operation in the event of crashes, hangs, faults, or glitches. By providing an emergency restart, it improves reliability and recoverability.

Reset Process

Pressing the reset button initiates the following sequence to reset and restart the processor:

  1. Button press pulls reset pin low
  2. Reset pin assert forces core registers, logic, and clocks to reset state
  3. Processor executes reset handler code to initialize components
  4. RAM cleared, peripherals disabled, clocks started
  5. CPU begins executing code at predefined reset vector

The reset pin assertion halts the CPU and resets internal registers and logic. Clocks are recalibrated and restarted. RAM is cleared to avoid undefined startup states. Peripherals are reset and disabled. The processor then begins executing initialization code from the reset vector. This code sets up memory, clocks, I/O, and other features based on the reset source. Finally, the main application runs restarting normal operation.

Reset Sources

The Cortex processor supports multiple reset sources each with a dedicated reset handler. These include:

  • Power-on Reset – When power is first applied
  • External Reset – From reset button, reset pin
  • Watchdog Reset – From watchdog timer expiring
  • Software Reset – Initiated by runtime code
  • Debug Reset – Triggered by external debugger

Dedicated reset handlers allow customized initialization sequence tailored for the specific reset source. This improves robustness for handling different types of resets.

Debug Interface

The debug interface provides external access to internal processor state for test, debug, and trace. SWD (Serial Wire Debug) is the standard ARM Cortex debug interface. It provides a two-pin serial connection to debugger tools that enable robust development capabilities.

SWD Overview

SWD uses just two pins for bi-directional debug access over a serial connection. The SWD pins are:

  • SWCLK – Serial Clock
  • SWDIO – Bi-directional Serial Data

SWCLK clocks data over the single SWDIO pin. An external debugger connects to these pins to communicate with the SWD debug module inside the Cortex CPU. SWD operates independently from the processor allowing debug even with clocks stopped.

SWD provides the following debug capabilities:

  • Run control – Halt, single-step
  • Breakpoints – Set software breakpoints
  • Watchpoints – Monitor memory/peripherals
  • Register access – Processor register read/write
  • Memory access – RAM and flash read/write
  • Flash programming
  • Debug logging

This provides robust tools for low-level debugging and program trace. Supported debuggers include J-Link, ULINK, OpenOCD, pyOCD, and ARM Keil MDK. SWD is built into all Cortex-M cores making it the de facto standard for ARM debug.

Advantages of SWD

SWD provides several benefits compared to previous JTAG interfaces:

  • Two pins versus 5+ for JTAG reducing board space
  • Faster serial interface than JTAG
  • Supports multiprocessor debugging
  • More flexible than JTAG
  • Supported on all Cortex-M cores

The two-pin SWD interface saves pins over JTAG. It offers faster performance with clock rates up to 10 MHz. SWD also enables simultaneous debugging of multiple processors. Overall, SWD provides a superior debug experience than legacy JTAG.

SWD Debugger Tools

Many debugger tools integrate with SWD. This allows robust debugging using SWD capabilities. Common SWD debug tools include:

  • J-Link – SEGGER J-Link debug probes
  • ULINK – Keil ULINK and ULINKpro debug adapters
  • OpenOCD – Open On-Chip Debugger software
  • PyOCD – Python OpenOCD Python-based debugger
  • ARM Keil MDK – ARM Microcontroller Development Kit

These tools connect over SWD and leverage the debug and test capabilities exposed. J-Link and ULINK provide robust professional hardware probes. OpenOCD and PyOCD offer open-source debugger software solutions. And MDK integrates a full IDE with debug capabilities.

SWD vs JTAG

JTAG (Joint Test Action Group) is an older standard debug interface supported on some Cortex chips. The key differences between SWD and JTAG are:

  • Pins – SWD uses just 2, JTAG requires 5+ pins
  • Speed – SWD supports faster clock rates
  • Flexibility – SWD has more flexible debug architecture
  • Multicore – SWD better supports multicore debugging
  • Popularity – SWD is the standard for Cortex-M cores

In most cases, SWD provides major advantages over legacy JTAG interfaces. The two-pin SWD delivers lower pin count, better speed, and greater flexibility. JTAG may offer some additional test capabilities on certain chips. But overall SWD is the preferred choice for Cortex debug.

Reset and Debug Together

The reset button and SWD interface provide complementary capabilities to control and observe processor operation:

  • Reset button restarts the processor
  • SWD interface provides debug visibility
  • Reset recovers from faults and hangs
  • SWD enables detailed program trace
  • Reset offers quick emergency restart
  • SWD allows inspecting internal CPU state

Together they form critical tools for development, testing, and debugging. The reset button provides a rapid way to restart the system. SWD enables inspecting and controlling the detailed internal processor state. Having both on development boards accelerates troubleshooting firmware issues and crashes.

Development Board Examples

ARM Cortex development boards provide reset buttons and SWD connectors for easy access. Here are some common examples:

  • STM32 Nucleo – Reset button, SWD connector
  • NXP LPCXpresso – Reset button, 10-pin SWD connector
  • Raspberry Pi Pico – Reset button, SWD pins broken out
  • Microchip Curiosity Nano – Reset button, SWD debug port
  • Cypress PSoC 6 – Reset button, SWD pins

The onboard reset button offers quick access to restart these boards. The exposed SWD pins or connectors enable connecting a debug probe. Together they provide ideal development and debugging capabilities.

Summary

The reset button provides a quick and easy way to restart an ARM Cortex processor. This recovers operation from crashes, hangs, and faults. The SWD interface enables powerful control and visibility through an external debugger. With capabilities like halt, step, breakpoint, and register/memory access, SWD offers robust debugging using just two pins.

Having both a reset button and SWD access on development boards makes debugging and development much easier. The reset button offers simple restart while SWD enables deep inspection and control. Combining these two critical capabilities accelerates the development and debugging process on ARM Cortex platforms.

Newsletter Form (#3)

More ARM insights right in your inbox

 


Share This Article
Facebook Twitter Email Copy Link Print
Previous Article What is the difference between JTAG and SWD?
Next Article SysTick interrupt doesn’t trigger (Arm Cortex M0)
Leave a comment Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

2k Followers Like
3k Followers Follow
10.1k Followers Pin
- Sponsored-
Ad image

You Might Also Like

Tips on Cortex-M3 Memory Mapping

The Cortex-M3 processor has a flexible memory mapping scheme that…

8 Min Read

ARM7 Interview Questions

The ARM7 processor is a popular 32-bit RISC CPU core…

10 Min Read

Modified Harvard Architecture in ARM Cortex-M Chips

The ARM Cortex-M series of microcontroller chips utilize a modified…

18 Min Read

What is the arm cortex-M0?

The ARM Cortex-M0 is a 32-bit reduced instruction set computing…

7 Min Read
SoCSoC
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
Welcome Back!

Sign in to your account