|   ABOUT   |   INSTALLATION   |   USAGE   |   HARDWARE   |  

Program Usage

The program is controlled by command sequences, either given on the command line or placed in a so called Jom File. Jom files are simple text files containing a sequence of JTAG-O-MAT commands.

jtagomat -v HALT
Stops the target CPU in verbose mode. The CPU status will be printed out.

jtagomat BATCH memdump.jom
Starts execution of the command sequence in the file memdump.jom.


All commands can be specified with their full name or abbreviated by the first letters, as long as they are unique among all commands. Up to now, all commands do have a unique first letter. Also note, that commands are not case sensitive, thus

do all specify the same command.

Most commands allow or require one or more parameters, which may be values, register names, filenames or special keywords.

We will now look to each command in detail and provide examples about how to use them.


Continues execution of commands contained in the specified batch file, optionally starting at a given label. Batch files can be nested without limitation.

Each command in a batch file must be placed in a seperate line. Empty lines are allowed and are ignored. The same applies for leading or trailing spaces.

Semicoli can be used to add comments or temporarely disable (commenting out) certain lines. The semicolon and all following characters up to the end of the line are ignored.

Labels may be added as the first word in a line and can be used as targets for the JUMP and the ONERR command.


  BATCH remap.jom
Starts execution of commands contained in a text file named remap.jom.

  BATCH upload.jom Flash
Starts execution of commands in upload.jom at label Flash.


Switches the target CPU to normal execution mode. An optional parameter can be used to specify a new program counter value.


Continues target execution at the address, where the CPU had been stopped previously.

Continues target execution at the address zero. The following sequence will do the same.


Queries the JTAG ID code of the target device. An optional parameter can be used to verify the retrieved code with an expected value.

Queries the device ID. If JTAG-O-MAT is running in verbose mode, the value will be printed out.

  ONERR BadDevice
Queries the device ID and verifies it against 0x1F0F0F0F. If not equal, the next command ONERR will continue execution at label BadDevice.


Programs or erases FLASH memory. On some platform implementations this requires, that a flasher utility is running on the target. At least one parameter is required, which specifies the base address of the FLASH device.


  FLASH 0x10000000
Queries the FLASH memory at base address 0x10000000 for its device ID. If JTAG-O-MAT is running in verbose mode, the value will be printed out. The program may internally check the ID and may set the error flag in case of unknown device codes. An ONERR command can then be used to handle such an error.

  FLASH 0x10000000 0x10002000
Erases the sector at address 0x10002000 of the FLASH device at base address 0x10000000. The error flag will be set if the erase fails.

  FLASH 0x28000000 0x28104400 0x12345678 0xF0F0F0F0
Writes the value 0x12345678 at address 0x28104400 and the value 0xF0F0F0F0 at address 0x28104404. The base address of the flash device is at 0x28000000. The error flag will be set in case of an error.

  SAVE 0x00000000 ./flasher.bin
  ONERR Exit
  FLASH 0x10000000 0x10000000
  FLASH 0x10000000 0x10002000
  ONERR Exit
  FLASH 0x10000000 0x10000000 ./image.bin
  ONERR Exit
  NOTE Flash programming OK!
  NOTE Flash programming failed!
  QUIT 3
This command sequence will load a flasher utility into the target RAM starting at address zero and start this utility. Then the first two 8 kByte sectors are erased and the contents of a binary image file will be written into the FLASH device, A message will be printed on the screen about success or failure.


Stops the target CPU to enter debug mode.


Stops the target CPU, prints the contents of the program counter and continues execution.


Continues execution at a specified label. This command is useful in batch files only.

Note, that labels are case sensitive.


  JUMP Label01
Continues with the command following Label01, which is a QUIT. The CONTINUE command is skipped.


Downloads memory or register contents from the target. The downloaded values may be displayed on the screen or stored in a file and can be optionally verified against expected values.


  LOAD 0
Download memory contents at address zero.

  LOAD 0x100 128
Download 128 bytes starting at memory address 100hex.

  LOAD 0x100 128 STDOUT
Downloads 128 bytes starting at memory address 100hex. Each 32 bit value will be printed out on a single line with its address in front. If the output is redirected to a file, this file may be later fed to SAVE STDIN to restore the memory contents.

  LOAD 0xFFE00000 32 STDOUT
Displays memory map registers of the AT91 CPU.

  LOAD R13 1 STDOUT      
Both commands display the stack pointer of an ARM CPU.

  LOAD 0x10000000 0x2000 ./romimage.bin
Downloads 8 kBytes starting at memory address 0x10000000 and saves the binary image in the specified file.

  LOAD 0 1024 ./ram.bin ./expect.bin
Downloads 1 kBytes starting at memory address zero, saves the binary image in ram.bin and verifies the downloaded contents against the contents of expect.bin. If not equal, the error flag will be set.

  ONERR NotEqual
  SAVE R2 0
Compares the contents of register R0 with the contents of register R1. If both are equal, register R2 will be cleared. Otherwise the execution continues at label NotEqual.


Not yet implemented.


Switches format of downloaded images from binary (default) to Intel Hex.


Displays a note.


  NOTE Hello world!


Similar to the JUMP command. However, the jump is performed only if the internal error flag is set. Otherwise execution continues on the next line. If the error flag is set, then the ONERR command will clear it again.


  ONERR Failed
If stopping the target CPU failed, execution of the batch file commands continues at label Failed.

  LOAD R0 1 0
  LOAD R1 1 0
  LOAD R2 1 0
  ONERR Unexpected
Verifies that registers R0, R1 and R2 are all cleared to zero. If any of the three registers contains a non-zero value, the sequence will continue at label Unexpected and the error flag will be cleared again.


Stops execution of the current Jom Batch. Optionally an error code may be returned.


Stops execution of the current batch file. If it has been called from within another batch file via the BATCH command, then execution will continue with the next command within the calling batch. Otherwise JTAG-O-MAT will exit.

  QUIT 2
Stops execution of the current batch file and returns the error code 2. If it has been called from within another batch file via the BATCH command, then the error flag will be set and execution will continue with the next command within the calling batch. Otherwise JTAG-O-MAT itself will exit with this error code.


Toggles the hardware reset of the target. This may not be supported by all hardware adapters. Optionally the hardware reset may be set or cleared with this command.


Toggles the target hardware reset.

  WAIT 1000
Keeps the hardware reset active for 1 second.


Uploads memory or register contents to the target. For FLASH memory the FLASH command must be used.


  SAVE 0 0
Clears memory location 0.

  SAVE LR 0x1000
Sets the link register to 1000 hex.

  SAVE R0 R1
Copies contents of register R1 to register R0.

  SAVE 0x100 ./app.bin
Stores binary image file at memory address 0x100.

Reads a sequence of lines with a memory addresse or a register name followed by a value and stores these values at the given locations. The standard input may be re-directed to a file, which had been created by re-direction of the standard output of a LOAD command. Here is an example how to store and re-store the program counter from the command line.
jtagomat LOAD PC 1 STDOUT >regs.txt      
jtagomat SAVE STDIN <regs.txt

  SAVE 0xFFE00000 0x1000213D
  SAVE 0xFFE00004 0x20003E3D
  SAVE 0xFFE00020 0x00000001
This example shows how to invoke the remap command for an AT91 CPU.


Delays command execution for one second or a specified number of milliseconds.


Waits one second before continuing.

  WAIT 200
Starts the target CPU at address zero and stops it again after 200 milliseconds. The actual running time of the CPU will be larger, depending on the speed of the host computer running JTAG-O-MAT.


For further flexibility, macros may be used in batch files. While reading a batch sequence, JTAG-O-MAT will check each line for macros and expand them before the line is finally executed. Macro definitions may be nested. That means, a macro may expand to another macro, which is expanded again and so forth until all macros had been expanded.

Macros are given as simple words with a dollar sign in front. Replacements for macros may either be specified as command line paramters (-D) or environment variables.

This is how a line in a batch file with a macro looks like. Something will be set to zero. Without an adequate macro definition, this line will result in a syntax error.

jtagomat -DADDR=0x100 batch.jom
When starting JTAG-O-MAT like this, all occurences of $ADDR in the batch file will be replaced by 0x100.

SET ADDR=0x100
jtagomat batch.jom
This gives the same result, when running JTAG-O-MAT on a Windows PC. The replacement for $ADDR will be retrieved from the shell environment.

export ADDR=0x100
jtagomat batch.jom
This shows how to use the environment on a Linux PC.

SET ADDR=0x100
jtagomat -DADDR=PC batch.jom
If both, the environment and a command line parameter define the same macro expansion, then the latter will be used, PC in this case.

SET ROMSTART=0x10000000
jtagomat -DADDR=$ROMSTART batch.jom
This example uses recursive macro expansions. Finally all occurences of $ADDR will be replaced by 0x10000000.

This website is hosted at

SourceForge.net Logo