Remote Debug Feature Proposal for Arm (Aarch64) based Servers using OpenBMC

Supreeth Venkatesh supreeth.venkatesh at arm.com
Fri Jul 19 06:26:20 AEST 2019


OpenBMCers,

Just a heads up...

Would anyone be interested in collaborating on Remote Debug for Arm
(Aarch64) based  Servers?

A brief design document (may not be in OpenBMC design document format
yet.)

The design is in flux at the moment and will appreciate your
inputs/feedback.

Problem Description
Arm (Aarch64) SOC based servers need a remote source level debugging
capability over JTAG.

There are several proprietary solutions. However, standardization is
key to ensure that Arm Ecosystem does not get fragmented by point
solutions that plague the industry today.

Background and References
What is Remote Debug?
Server Remote Debug is the act of gaining visibility of the hardware
and software behaviors of an SoC, using a debugger which is not
directly connected to the Server SoC.

Requirements
Arm (Aarch64) SOC based server interface requirements
1. Must have JTAG port.
2. Must have Arm Debug Access Port (DAP)
3. Authentication to allow debug access.

BMC Stack
1. Integration of OpenOCD stack.
2. Authentication of user (debugger) to BMC.
3. Re-use/Leverage existing BMC JTAG driver. (if any)
4. Framework for "other" traffic over JTAG and Arm DAP (e.g. for
authentication on SOC)
5. Leverage/Define protocols for communicating between the debugger and
the BMC.
6. Define mechanisms for ensuring only suitable debuggers can access
the SoC.

Proposed Design
Proposal is to integrate OpenOCD within OpenBMC stack.
OpenOCD is a open source on-chip debuging solution for JTAG connected
processors. It enables sourcelevel debugging with GNU gdb. It can also
intergrate with and GDB aware IDE, such as eclipse.

"OpenOCD provides debugging support with a
layered architecture of JTAG interface and TAP support including:
- (X)SVF playback to faciliate automated boundary scan and FPGA/CPLD
  programming;
- debug target support (e.g. ARM, MIPS): single-stepping,
  breakpoints/watchpoints, gprof profiling, etc;
- flash chip drivers (e.g. CFI, NAND, internal flash);
- embedded TCL interpreter for easy scripting.

Several network interfaces are available for interacting with OpenOCD:
telnet, TCL, and GDB. The GDB server enables OpenOCD to function as a
"remote target" for source-level debugging of embedded systems using
the GNU GDB program (and the others who talk GDB protocol, e.g. IDA
Pro)."

Alternatives Considered
RFC

Impacts
TBD

Testing
TBD

Thanks,
Supreeth & Jeff



More information about the openbmc mailing list