Two part series
- Part 1: Internal Tests (this document)
- Part 2: External & Interactive Tests
While boundary-scan is an excellent way to test for structural faults, the
relatively low speed often limits the usefulness for functional, at speed
testing. ScanExpress JET helps close the test coverage gap and adds more
flexibility to JTAG tests. To get an idea of how JET can test peripherals within
an embedded system, we’ll look at the TI OMAP 35x EVM test procedure available
for Runner-Lite and evaluate each individual test step.
Script vs. Embedded
From a test development point of view, JET steps can be divided into two main
types: script tests, and embedded tests. We can test any peripheral that the CPU
is capable of controlling—either by executing a script and directly controlling
the CPU with the JTAG port (script test), or by loading binaries to
cache/RAM/Flash and having the CPU execute the code at speed (embedded test).
Internal, External, and Interactive
For the purposes of this discussion, we’ll divide test types into three
categories that directly affect the test operator—internal, external, and
interactive. The diagram below lays out some of the common JET test types within
an embedded system.
Figure 1: Diagram of JET Peripheral Tests
These tests include standalone peripherals such as memory and flash as well as
internal loopbacks for communication devices. As a result, we get a very simple
to run test—just connect to JTAG and click run.
RAM Data Bus Test
This script based test issues single memory reads and writes to verify the data
bus to the memory device is functional. Data bus faults can be detected and
diagnosed to the pin level. Critical control bus faults will also result in
RAM Address Bus Test
This script based test issues single memory reads and writes to verify the
address bus to the memory device is functional. Similar to the data bus test,
address bus faults can be detected and diagnosed to the pin level.
RAM Real Time Exhaustive Test
This embedded test runs at processor speed and uses a proprietary algorithm for
exhaustively testing the memory device for any error. This is a comprehensive
functional test of the memory.
UART Internal Loopback Test
This script based test performs an internal loopback test on the UART port. The
loopback is performed internally and may not catch external faults.
Flash Device ID Check Test
This script based test reads the Flash Device ID and verifies that it is the
exact Flash part expected. This type of test may be used on many different Flash
types and interfaces, including standard NAND, NOR, SPI, & I2C Flash devices.
EMAC Internal Loopback Test
This script based test performs an internal loopback test on the Ethernet port.
No external cable is required.
I2C Discovery Test
This embedded test queries the CPU I2C ports for any device response and reports
back the addresses where devices were found.
While very convenient for automation, these tests are pretty boring—no flashing
lights, no cable hookups, and no key presses! In the next installment, we’ll
discuss tests that require external hardware or user input to verify
functionality of a given interface.