ScanWorks Embedded Diagnostics

ScanWorks Embedded Diagnostics

With embedded JTAG-based run-control, information about difficult-to-reproduce failures in the field can be captured for analysis.

  • Embed debug logic in the board to retrieve information for use in diagnosing failures that occur in the field
  • Eliminate the need for external cables and hardware probes
  • Provide 24×7 debug access to low-level hardware, firmware, silicon and software faults

JTAG-based embedded In-Target Probe (ITP)

ScanWorks Embedded Diagnostics (SED) is a custom embedded ITP implementation that provides on target run-control via the Baseboard Management Controller (BMC) for target applications that require 5 nines or 6 nines reliability. In these applications, a failure must be analyzed without the actual plugging in of an ITP JTAG probe. This requirement implies that the software is already resident on the target and that an external processor (BMC) has the ability to conduct forensics on the hung server processor. Intel has implemented the ability for a crashed/hung processor to keep valuable postmortem information available within the CPU.

SED operates in two modes:
1. Run CScripts from a remote host connected to the failing server to extract this data prior to system reset.
2. Implement on-target diagnostics (OTD) using Python or C/C++ directly on the BMC.

SED’s architecture delivers superior:
1. Speed
2. Scalability
3. Security
versus alternative solutions.

ScanWorks Embedded Diagnostics eResources

Blog Posts About ScanWorks Embedded Diagnostics

Coding to the SED API: Part 4

In Part 3 of this series, we did a code review of “ltloop”, a utility firmware application that uses the BMC to do out-of-band stress tests of PCI Express ports. In this article, we begin to examine a more general-purpose application that uses JTAG to extract register, memory and IO contents of the target. This On-Target Diagnostic (OTD), called “libtest”, is used by ASSET to test the functionality of run-control on new targets.

Coding to the SED API: Part 3

In the last article on this topic, we did a dive into the main routine of the lt_loop JTAG-based On-Target Diagnostic, seeing the overall flow of the program. In this article, we’ll look at the routine that does the heavy lifting for retraining the PCI Express link and checking for errors.

Coding to the SED API: Part 2

In my previous blog, I did a walkthrough of the source code for main() within the ltloop JTAG-based on-target diagnostic. This article covers main() in more detail, and provides insight into some of the operations of the utility functions and data structures.

Coding to the SED API: Part 1

In my UEFI Forum webinar, I demonstrated a utility function for stressing PCI Express ports at-scale using JTAG. Let’s walk through the source code and see how it works under the hood.

ScanWorks Embedded Diagnostics Video