SoC
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
  • Arm Cortex M3
  • Contact
Reading: Using ST-Link debugger with Cortex-M1 FPGA design
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

Using ST-Link debugger with Cortex-M1 FPGA design

David Moore
Last updated: September 20, 2023 11:04 am
David Moore 6 Min Read
Share
SHARE

The ST-Link debugger is an extremely useful tool for debugging and programming Cortex-M microcontroller designs implemented in an FPGA. By connecting the ST-Link to the SWD (Serial Wire Debug) header on the FPGA board, users can leverage the full debug and programming capabilities offered by ST-Link to develop and test their Cortex-M1 FPGA design.

Contents
Overview of ST-Link DebuggerUsing ST-Link with Cortex-M1 FPGA Design1. Implement SWD Interface in HDL Design2. Generate Debug Symbols for Firmware3. Implement Connection to ST-Link Hardware4. Install and Configure Debugging Software5. Connect and Start Debug SessionKey Debugging CapabilitiesRuntime Control and VisibilityBreakpointsCode DebuggingTraceChallenges and ConsiderationsSWD Interface AccuracyFPGA Pin PlanningLimited Soft Core DebugFPGA Speed vs ST-LinkIntegration with Debug ToolsConclusion

Overview of ST-Link Debugger

The ST-Link debugger and programmer allows debugging and programming of STM32 microcontrollers and any Cortex-M core based microcontroller using the SWD debug protocol. It comes in various hardware models like the ST-Link V2, V2-1, V3 etc. The debugger connects via USB to the PC and interfaces with the target Cortex-M MCU using the SWD port.

Key features offered by ST-Link Debugger: – Debugging capabilities like breakpoints, watchpoints, register and memory access – Programming flash memory and SRAM on target MCU – Support for various debugging tools like IDEs, debug probes and debug servers – Versatile connectivity via JTAG or SWD to target device – Compatible with all STM32 devices and any Cortex-M core based MCUs – Available on variety of hardware models for different use cases

Using ST-Link with Cortex-M1 FPGA Design

Here are the key steps to use an ST-Link debugger with a Cortex-M1 soft core FPGA design:

1. Implement SWD Interface in HDL Design

A Serial Wire Debug (SWD) interface will need to be implemented in the HDL (Verilog or VHDL) design that instantiates the Cortex-M1 core in the FPGA. This will comprise the SWDIO, SWCLK, SWO and optional TRACESWO pins. The SWD interface connects internally within the FPGA to the Cortex-M1 TAP controller signals like TCK, TMS, TDI, TDO etc. Consult the SWD specification and Cortex-M1 integration manual for details.

2. Generate Debug Symbols for Firmware

For debugging capabilities like setting breakpoints, watchpoints, accessing registers and memory in firmware, debug symbols will need to be generated. This is done by compiling and linking the firmware code with debug symbol generation enabled. The resulting firmware ELF/DWARF file contains the debug symbols mapping code addresses to source files, variables etc.

3. Implement Connection to ST-Link Hardware

A connector needs to be provided, typically a 2×5 ARM 10-pin Cortex debug connector, to which the ST-Link debugger can be connected. This provides the physical interface for the ST-Link to drive the SWDIO, SWCLK and other signals on the target FPGA board.

4. Install and Configure Debugging Software

Software tools like IDEs, debug servers and probes need to be installed to allow interfacing the ST-Link hardware and leverage its debugging capabilities. For example, Eclipse IDE, OpenOCD debug server, STMCube programmer software etc. These need to be configured for the specific FPGA board and Cortex-M1 design being debugged.

5. Connect and Start Debug Session

With the debugger hardware connected to the FPGA board’s SWD port, the debugging software can now connect to the ST-Link, establish a link to the Cortex-M1 core and start a debug session. Cortex-M1 can be halted, reset, registers and memory examined, breakpoints set, code stepped through etc. just like debugging on silicon Cortex-M1 chips.

Key Debugging Capabilities

Here are some of the key debugging activities that can be performed on the Cortex-M1 FPGA design using the ST-Link:

Runtime Control and Visibility

– Halt/run Cortex-M1 core execution

– Reset Cortex-M1 system components like core, peripherals, interconnect

– Read CPU registers like R0-R12, LR, PC, PSR

– Access memory like code area, RAM

Breakpoints

– Set software breakpoints on code addresses

– Set hardware breakpoints on data accesses

– Set watchpoints for memory access and modification

Code Debugging

– Step through code execution line by line

– Skip over subroutines

– Enable semi-hosting for debug output

Trace

– Instrument code to output printf traces

– Embedded Trace Macrocell (ETM) for instruction trace

– Trace port analysis using timing viewer tools

Challenges and Considerations

Here are some of the challenges and considerations when implementing ST-Link based debugging for Cortex-M1 FPGA designs:

SWD Interface Accuracy

– The SWD interface in HDL has to conform precisely to specification

– Any timing issues or protocol errors will prevent debug link up

FPGA Pin Planning

– SWDIO, SWCLK, TRACESWO pins need to be routed to device pins

– May need internal FPGA logic analyzer pins also

Limited Soft Core Debug

– Lack of hardware breakpoints unlike silicon Cortex-M1

– Usually only 2 or 4 breakpoint registers in FPGA soft cores

FPGA Speed vs ST-Link

– Ensure FPGA design clock speed can be handled by ST-Link

– May require reducing frequency for initial debug access

Integration with Debug Tools

– Soft core debug view not always smooth in IDEs like Eclipse

– May need debug server like OpenOCD for some use cases

Conclusion

In summary, the ST-Link debugger provides a flexible and cost-effective solution for debugging Cortex-M1 designs implemented on FPGAs. With the detailed hardware connectivity and tool configuration in place, the rich debugging feature set of ST-Link enables a very productive Cortex-M1 firmware development experience right within the FPGA prototyping environment. Engineers can seamlessly progress from initial debug access to optimization using trace, facilitating rapid Cortex-M1 soft core based design implementation.

Newsletter Form (#3)

More ARM insights right in your inbox

 


Share This Article
Facebook Twitter Email Copy Link Print
Previous Article Debugging Cortex-M1 on Arty without adaptor or DAPLink
Next Article Common Vivado Issues on Windows for ARM Developers
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

Debugging Multi-Core ARM Designs with SWD

ARM processors are extremely popular in embedded systems due to…

7 Min Read

Tips for Debugging ARM Cortex-M3 with OpenOCD and GDB

Debugging ARM Cortex-M3 with OpenOCD and GDB can seem daunting…

15 Min Read

What does LDR mean in ARM assembly?

LDR is an ARM assembly language instruction that stands for…

5 Min Read

STR instructions in Arm Cortex-M

The STR (store register) instructions in Arm Cortex-M processors are…

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

Sign in to your account