Adding New ARM Targets - Format of NoICEARM_targets.ini

The ARM targets listed in the Target Chip/Environment drop-list of the Target Communications dialog are read from the file NoICEARM_targets.ini, found in the NoICE\config directory. This page explains the format of this file, in case you wish to add a new target or customize the settings for an existing target.

If you have questions, or if your target isn't listed in the drop-list, please contact us.

Here is an example of the section of NoICEARM_targets.ini that pertains to the Philips LPC2106

	[Philips LPC2106]
	datasheet=LPC2104-5-6UM.pdf
	burnerFile=lpc21xx_burner.mot
	flashbase1=0x00000000
	flashsize1=0x0001E000
	rambase1=0x40000000
	ramsize1=0x00010000
	resetInstructions=J10 R0 D500 I1 r1 t0
	remarks=Philips LP2106

These items, and some less common ones, are defined below.

[title in brackets]

The first entry for each section must be contained in square brackets. This text is shown in the Target Chip/Environment drop-list.

datasheet

This optional item is currently not used at runtime by NoICE. It is present to document the name and version of the datasheet from which the data about this chip was obtained.

burnerFile

This optional item specifies the name of a Motorola S-record file that contains a Flash burner program appropriate to this chip. If this item is not present, Flash burning will not be available for the chip.

Note that the burner file is highly specific to a chip or chip family. Attempting to use a burner file for other than its intended chip may cause damage to the target chip. If you are not absolutely sure of what you are doing, do not change this item.

burnerOption

This optional item specifies an integer parameter that allows a single burnerFile to be used with more than one type of target chip. For example, the LPC2106, LPC2114 and LPC2131 (among others) share the same Flash algorithm but have different sector layouts. The burnerOption is used to specify the correct layout. If this item is not specified, a value of zero is used.

Note that the burner file and parameter are highly specific to a chip or chip family. Attempting to use a burner file or parameter for other than its intended chip may cause damage to the target chip. If you are not absolutely sure of what you are doing, do not change this item.

flashbase1/flashsize1 through flashbaseN/flashsizeN

Each optional flashbase/flashsize pair is used to specify an address range as being Flash memory. NoICE uses these ranges in order to know when a LOAD command needs to burn Flash rather than simply write to RAM.

The ST7xx family have Flash at address 0x40000000, but a portion of the Flash also aliased at address zero in order to provide interrupt vectors. Thus, code files for these chips will often contain code near address zero as well as near address 0x40000000. In order to properly control the Flash burner, the ini file will specify two Flash ranges for these chips. The Flash burner code understands that these ranges actually represent the same Flash sectors.

rambase1/ramsize1 through rambaseN/ramsizeN

Each optional rambase/ramsize pair is used to specify an address range as being RAM memory. NoICE uses these ranges in order to know when software breakpoints (if available) may be used. Software breakpoints will only be used for addresses within ranges specified by a rambase/ramsize pair.

remarks

This optional item contains a fuller description of the chip or environment. This text is shown as the first line of the data summary in the Target Communications dialog.

bigEndian

This optional item specifies whether the target is big-endian (=1) or little-endian (=0). If this item is not specified, the default is little-endian.

nHardBreakpoints

This optional item specifies the number of hardware breakpoints available. If this item is not specified, a value of two is used, which is appropriate for all current ARM7 targets. During startup, NoICE will attempt verify if all of these breakpoints can be used, and may adjust the actual number downward. For example, in some cases one hardware breakpoint is used to implement software breakpoints, leaving only one available for use as a hardware breakpoint

nSoftBreakpoints

This optional item specifies the number of software breakpoints available. During startup, NoICE will attempt verify if software breakpoints can be used. In most cases, if software breakpoints are available at all, there are no limits as to how many may be used, and that is the default if this item is not specified. This item may be specified if you need to specify a limit for the number of software breakpoints.

ArmBreakpointInstruction

This optional item specifies the instruction to be used for software breakpoints in ARM mode. If this item is not specified, the value 0xE1200070 (BKPT #0) will be used. Many target communications mechanisms, including RDI and OpenOCD, will ignore this item. It is provided for use by non-JTAG GDB targets.

ThumbBreakpointInstruction

This optional item specifies the instruction to be used for software breakpoints in Thumb mode. If this item is not specified, the value 0xBE00 (BKPT #0) will be used. Many target communications mechanisms, including RDI and OpenOCD, will ignore this item. It is provided for use by non-JTAG GDB targets.

vectorAddress

The ARM reset and interrrupt vectors are normally at address zero. However, in some cases, "high vectors" may be used, which places the vectors at 0xFFFF0000. This optional item specifies the address of the reset and interrupt vectors. If this item is not specified, a value of zero will be used.

resetInstructions

This optional item applies to the Segger JLink only. It controls reset processing, which is a much bigger deal on ARM than it ought to be. If you are using a JTAG interface other than the JLink, you may be able to get equivalent behavior using the Play After Reset File, or the OpenOCD cfg file.

If no resetInstructions exists for a target, the default value is

   resetInstructions=J10 R0 D500 I1 r1 t1

Parameters as as follows

Jnn
Set the initial JTAG speed to nn kHz. Default is 10 kHz. Used on targets such as the Atmel SAM7 that start up on a slow RC clock.
Rn
Set reset type. Default is 0: normal. Values Include
  • 0 Normal using hardware reset pin and halt.
  • 1 Use hardware reset and a breakpoint at address zero. Generally not recommended.
  • 2 Special processing for Analog Devices. Should not be used on other chips.
  • 3 No reset.
  • 4 Use hardware reset and halt (Undocumented).
  • 5 Use hardware reset and halt (Undocumented).
  • 6 Soft (simulated) reset not using reset pin.
  • 7 (Undocumented)
  • 8 Special processing for Atmel SAM7. Should not be used on other chips.
  • 9 Special processing for Philips/NXP LPC2xxx. Should not be used on other chips.
Dnn
Set the delay after reset to nn msec. Default is 500 msec
In
Specifies whether or not to set target registers. Default is 1 (yes)
rn
Specifies whether or not to toggle reset pin. Default is 1 (yes)
tn
Specifies whether or not to toggle TRST pin. Default is 1 (yes)

NoICE (tm) Debugger, Copyright © 2019 by John Hartman

Using NoICE - Contact us - NoICE Home