Name
JTAG support — Usage
Use of JTAG for debugging
JTAG can be used to single-step and debug loaded RAM applications, or even applications resident in ROM.
Debugging of ROM applications is only possible if using hardware breakpoints. The ARM7TDMI core of the AT91SAM7S only supports two such hardware breakpoints, and so they should be used sparingly. If using a GDB front-end such as Eclipse, check it has not set unnecessary extra breakpoints. Some JTAG devices give the option of whether to set hardware or software breakpoints by default. Be sure to configure your device appropriately.
Abatron BDI2000 notes
On the Abatron BDI2000, the bdi2000.at91sam7sek.cfg
file should
be used to setup and configure the hardware to an appropriate state to load
programs. This includes setting up the PLL and flash memory controller.
The bdi2000.at91sam7sek.cfg
file also contains an option
to define whether hardware or software breakpoints are used by default, using
the BREAKMODE
directive in the [TARGET]
section. Edit this file if you wish to use software break points, and remember
to use the boot command on the BDI2000 command line interface
to make the changes take effect.
On the BDI2000, debugging can be performed either via the telnet interface or using arm-eabi-gdb and the bdiGDB interface. In the case of the latter, arm-eabi-gdb needs to connect to TCP port 2001 on the BDI2000's IP address. For example:
(gdb) target remote 111.222.333.444:2001
By default when the BDI2000 is powered up, the target will always run the
initialization section of the bdi2000.at91sam7sek.cfg
file (which configures the CPU clock among other things), and halts the target.
This behaviour is repeated with the reset halt command.
If the board is reset when in 'reset halt' mode (either with the 'reset halt' or 'reset' commands, or by pressing the reset button) and the 'go' command is then given, then the board will boot from ROM as normal.
It is also possible for the target to always run, without initialization, after the reset button has been pressed. This mode is selected with the reset run command. This conveniently allows the target to be connected to the JTAG debugger, and be able to reset it with the reset button, without being required to always type 'go' every time. Thereafter, invoking the reset command will repeat the previous reset style. Also in this mode, exceptions will be handled by board software, rather than causing the JTAG debugger to halt the CPU.
Suitably configured RAM applications can be loaded either via GDB, or directly via the telnet CLI. For example:
SAM7S>load 0x00201000 /test.bin bin
Loading /test.bin , please wait .... Loading program file passed SAM7S>go 0x00201000
Consult the BDI2000 documentation for information on other formats.
Ronetix PEEDI notes
On the Ronetix PEEDI, the peedi.at91sam7sek.cfg
file should
be used to setup and configure the hardware to an appropriate state to load
programs. This includes setting up the PLL and flash memory controller.
The peedi.at91sam7sek.cfg
file also contains an option
to define whether hardware or software breakpoints are used by default, using
the CORE0_BREAKMODE
directive in the [TARGET]
section. The supplied version of the file defaults to software breakpoints.
With this default, hardware breakpoints can still be set from GDB using the
hbreak command. The default can be changed to hardware
breakpoints, and remember to use the reboot command
on the PEEDI command line interface, or press the reset button to make the changes
take effect.
On the PEEDI, debugging can be performed either via the telnet interface or using arm-eabi-gdb. In the case of the latter, arm-eabi-gdb needs to connect to TCP port 2000 on the PEEDI's IP address. For example:
(gdb) target remote 111.222.333.444:2000
By default when the PEEDI is powered up, the target will always run the
initialization section of the peedi.at91sam7sek.cfg
file (which configures the CPU clock among other things), and halts the target.
This behaviour is repeated with the reset command.
If the board is reset with the 'reset' command, or by pressing the reset button and the 'go' command is then given, then the board will boot from ROM as normal. A similar effect can be achieved in GDB by connecting with target remote and immediately typing continue or c.
It is also possible for the target to always run, without initialization,
after the reset button has been pressed. This mode is selected with the
CORE0_STARTUP_MODE
directive in the
[TARGET]
section of the
peedi.at91sam7sek.cfg
file. This conveniently allows
the target to be connected to the JTAG debugger, and be able to reset it
with the reset button, without being required to always type
'go' every time.
Suitably configured RAM applications can be loaded either via GDB, or directly via the telnet CLI. For example:
sam7sek> memory load tftp://192.168.7.9/test.bin bin 0x201000
++ info: Loading image file: tftp://192.168.7.9/test.bin
++ info: At absolute address: 0x00201000
loading at 0x201000
loading at 0x205000
Successfully loaded 28KB (29064 bytes) in 0.1s
sam7sek> go 0x201000
Consult the PEEDI documentation for information on other formats and loading mechanisms.
Configuration of RAM applications
If the JTAG device has initialized the processor, such as by using the
bdi2000.at91sam7sek.cfg
configuration on the BDI2000
or peedi.at91sam7sek.cfg
configuration on the PEEDI,
applications can be loaded directly into RAM without requiring
a ROM monitor. This loading can be done directly through the JTAG device,
or where supported by the JTAG device, through GDB.
In order to configure the application to support this mode, some configuration
settings are required. Firstly CYGSEM_HAL_USE_ROM_MONITOR
must be disabled. Secondly
the CYGDBG_HAL_DIAG_TO_DEBUG_CHAN
option should be
disabled in order to prevent HAL diagnostic output being encoded into
GDB ($O) packets. Selecting the JTAG startup type in the configuration
tool sets these options automatically.
Running RAM applications
Once loaded and running via JTAG, HAL diagnostic output will appear by default
on the serial debug port. USART 0 can be chosen instead by setting the
CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL
configuration option in the platform HAL to channel 1.
2024-03-18 | eCosPro Non-Commercial Public License |