There are occasions when a sequence of JTAG cycles must be completed in as short a time as possible. An example of this is programming certain NOR flash parts, where the enable programming command sequence must be sent within a short time window for it to be recognised.
The XJEase HOLDOFF command can be used to group together a set of write instructions which will be susequently sent in as short a time window as possible (usually occupying just a single USB packet). An example of the use of HOLDOFF is shown below. This example is extracted from the device file for an Atmel 29LV010 NOR flash device, for which the byte load time cannot exceed 150 microseconds. The HOLDOFF facility allows this specification to be met.
//-----------------------------------------------------
// Set flash operating mode
// WriteData( 0x5555, 0xAA )
// WriteData( 0x2AAA, 0x55 )
// WriteData( 0x5555, [mode] )
// Switch off device
//-----------------------------------------------------
SetMode(INT op_mode WIDTH 8)()
// The following block must be sent within a short time window.
HOLDOFF
SET nOE := 1, ADDR := 0x5555, DATA := 0xAA, nWE := 1, nCE := 1;
SET nCE := 0, nWE := 0;
SET nCE := 1, nWE := 1, ADDR := 0x2AAA, DATA := 0x55;
SET nCE := 0, nWE := 0;
SET nCE := 1, nWE := 1, ADDR := 0x5555, DATA := op_mode;
SET nCE := 0, nWE := 0;
SET nCE := 1, nWE := 1;
END;
SLEEP(20); // wait 20 ms
END;
Note that the HOLDOFF command is only supported from XJTAG version 1.1 onwards. If you have an earlier version, please contact us to arrange an upgrade.