## 20 Utility Commands

### 20.1 RAM testing

There is often a need to stress-test random access memory (RAM) for errors. OpenOCD comes with a Tcl implementation of well-known memory testing procedures allowing the detection of all sorts of issues with electrical wiring, defective chips, PCB layout and other common hardware problems.

To use them, you usually need to initialise your RAM controller first; consult your SoC’s documentation to get the recommended list of register operations and translate them to the corresponding `mww`/`mwb` commands.

Load the memory testing functions with

    source [find tools/memtest.tcl]

to get access to the following facilities:

Command: memTestDataBus address

  Test the data bus wiring in a memory region by performing a walking 1’s test at a fixed address within that region.

Command: memTestAddressBus baseaddress size

  Perform a walking 1’s test on the relevant bits of the address and check for aliasing. This test will find single-bit address failures such as stuck-high, stuck-low, and shorted pins.

Command: memTestDevice baseaddress size

  Test the integrity of a physical memory device by performing an increment/decrement test over the entire region. In the process every storage bit in the device is tested as zero and as one.

Command: runAllMemTests baseaddress size

  Run all of the above tests over a specified memory region.

### 20.2 Firmware recovery helpers

OpenOCD includes an easy-to-use script to facilitate mass-market devices recovery with JTAG.

For quickstart instructions run:

    openocd -f tools/firmware-recovery.tcl -c firmware_help