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.
The first entry for each section must be contained in square brackets. This text is shown in the Target Chip/Environment drop-list.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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