- Important information
- New features
- Known problems
- Program corrections
- User guide corrections
- Miscellaneous
- Release history
Important information
-
The C-SPY macro
__loadModule(filename, suppress)
has been renamed to__loadImage(patch, offset, debugInfoOnly)
. -
The C-SPY macro
__sleep(microseconds)
has been replaced with__delay(milliseconds)
. Note the different time resolution. -
C-SPY in IAR Embedded Workbench for ARM comes with an improved mechanism and configuration scheme for the flash loader function. An existing project that employs a flash loader with a legacy configuration, will be automatically migrated to the new scheme with default settings. The default settings will in most cases be sufficient. Old settings are converted to a new configuration file (with the extension
.board
) and may be used if the default settings are not appropriate. Read more about the new mechanism and configuration scheme for flash loaders in the Flash Loader Guide.
New features
ETM/ETB selection
It is now possible to chose between ETM and ETB for devices with support for both.
Known Problems
The Task List window, column Max (and Max %) display a value that is 4x the correct value in the uC/OS-II RTOS awareness plug-in.
[EW22933]The semihosting (Terminal I/O) does not work correctly after flash download when using the XDS100 debugger driver. A workaround is to stop the debugger, and then start debugging without download.
The support for Cortex-M interrupts is limited in the simulator. Only one interrupt at a time is simulated. No nested interrupts, tail-chaining etc. The NVIC interrupt controller is not simulated. Interrupts can only be enabled/disabled globally using the PRIMASK register or the intrinsic functions
__enable_interrupt()
and__disable_interrupt()
.The disassembler does not fully support unified assembler.
Watch on a static variable defined within a function fails because the variable is handled in the wrong scope. The workaround is to use the Locals window or to specify a name within the scope in the Watch window, for example
main::the_static_var
.When performing a Go To command in the Memory window in little-endian mode, the position (shown as
pos #######
in the lower right corner of the IDE main window) will not be the same as the value entered in the Go To field.
[EW14355]Choosing Project Options>Debugger>Plugins and selecting the Factory settings option does not have any effect.
[EW16078]Profiling large projects can be slow.
[EW17781]If the same name is used for a data type and a data object, the data object is not displayed in the Watch window.
[EW19334, EW21566]An array located at an absolute address is displayed in the Watch window as a single integer instead of an array. Problem does not occur if variable is located at a user defined segment.
[EW20207]The stack graph and the data log graph, in the Timeline window for Cortex-M with ETM, do not correlate exactly in time. To find the source of a data log event, double-click on the event.
Sometimes "step into" is executed as a "step over" when standing on variadic function calls (i.e. with variable number of arguments).
[EW20673]The step over (F10) function does not work when standing on the last instruction in an interrupt routine.
[EW22343]Attach to program does not work when debugging on ARM7 and ARM9.
[EW22435]A static variable, defined in more than one source file, will become ambiguous if a pre-include file is used by the compiler.
[EW22487]In some cases it is difficult to disable power sampling in the debugger. If the Status text box for PC Sampling in the SWO Configuration dialog box says "ON: PC Sampling for Power Logs", then the power sampling can be disabled by 1. Enabling Function Profiling, 2. Right-clicking in the Function Profiler window and deselecting Power Sampling.
[EW22779]The Timeline Window is not updated correctly when data log configuration is changed during a debug session. For example when adding or enabling/disabling Data Log Breakpoints. It is updated correctly if the debugger is restarted.
[EW22807]When reading the
FIQ
register group in the XDS100 debugger driver, incorrect values are recorded. The actual behavior depends on the current cpu mode. This will cause the stack checking to give false warnings in the log window. A workaround is to turn off the stack checking from the menu Tools>Options>Stack and disable all stack options.
[EW22839]
Program Corrections
-
Evaluating a cast expression that contains a plain char, such as
(char *)42
, when the application does not use the plain char type anywhere, could result in a crash. This has been corrected.
[EW20519] -
C-SPY no longer terminates unexpectedly when right-clicking in a ThreadX RTOS plugin view.
[EW22508] -
A warning message no longer pops up when debugging an AM1808 device.
[EW22557] -
In the Watch window, pointers to Thumb functions are now displayed with the correct function name.
[EW22664] -
Single stepping or running to breakpoints when the Call Stack window is open no longer causes the IDE to become unresponsive.
[EW22765] -
If you used two or more monitors, ending a debug session with the main IDE window open on one monitor but the Disassembly window on another monitor, IAR Embedded Workbench could terminate unexpectedly when you restarted the debug session. This has been corrected.
[EW22762] -
In EWARM 6.30.3:
The debugger no longer terminates unexpectedly during long trace acquisition (several hours) in the Timeline window.
[EW22452] -
In EWARM 6.30.3:
The simulator now simulates theSPSR
instruction correctly in System mode.
[EW22801] -
In EWARM 6.30.3:
A problem in the breakpoint handling in the P&E Micro debugger driver could lead to unexpected behavior when stepping in the source code. This has been corrected.
[EW22838] -
In EWARM 6.30.6:
Trying to load a file containing modules produced withgcc
no longer causes the IDE to crash.
[EW22866] -
In EWARM 6.30.6:
Support for the new CMSIS SVD keywordRESERVED
is now implemented.
[EW22895] -
In EWARM 6.30.6:
The contents of the Statics window were not filtered when it was opened after the start of a debugging session. The correct contents were not displayed until after a window update (for example after executing a step command). This has been corrected.
[EW22900] -
In EWARM 6.30.6:
In some cases, executing multiple Page Up commands in the Disassembly window could cause the code to be disassembled incorrectly. This has been corrected.
[EW22922] -
In EWARM 6.30.6:
The Interrupt Log Summary window could show uninitialized content directly after a debugging session started. This has been corrected.
[EW23007]
User guide corrections
- None.
Miscellaneous
Running the debugger as a command line tool
This is now covered in the Debugging Guide.Passing command line parameters to a debugged application
A rudimentory mechanism exists to pass command line parameters to a debugged application. Use the/args
option on the Extra Options page in the Debugger category of the Project options dialog box. Syntax:/args arg0 arg1 ...
Multiple lines with/args
are allowed. For example:/args --logfile log.txt /args --verbose
In the application, the following variables must be defined. The variables will be initialized by the debugger at application start.__no_init int __argc; __no_init const char* __argv[MAX_ARGS]; __no_init __root char __argvbuf[MAX_ARG_SIZE];
__argc
The number of arguments in
__argv
__argv
An array of pointer to strings holding the arguments, must be large enough to fit the number of parameters
__argvbuf
Storage area for
__argv
, must be large enough to hold all command line parameters
Release history
V6.21 2011-07-05
Program corrections-
Executing Add to Watch on a selection in the editor window not only opens the Watch window but now also adds an entry to it.
[EW22408] -
Disassembly of an unknown address no longer causes the debugger to crash.
[EW22458] -
The Stack window no longer crashes upon opening when, under certain circumstances, C-Spy has insufficient information about target system stacks to display stack information as intended.
[EW22486] -
In EWARM 6.21.2:
The C-SPY driver for P&E Micro no longer causes the debugger to crash.
[EW22554] -
In EWARM 6.21.3:
The checkmark in front of the Mixed-Mode entry on the disassembly window context menu is now displayed correctly.
[EW22604]
Support for Texas Instruments XDS100v2
The Texas Instruments debug probe XDS100v2 is now supported for TI TMS570 devices. To use XDS100v2, select TI XDS100 in the Driver drop-down list on the Debugger>Setup options page. The XDS100v2 debug driver requires the Texas Instruments emulator package to be installed. To install the emulator package, start...\arm\drivers\ti-xds\ti_emupack_setup.exe
and follow the installation procedure. Make sure to install the emulator package in the suggested default location. This will allow the debugger to find the emulator package automatically. If for some reason the package is installed in a custom location, the option--xds_rootdir=path
must be specified on the options page Debugger>Extra Options.
V6.20 2011-04-29
Program corrections-
Variables of array, struct, union or class type placed at an absolute address are now displayed properly in the Watch window family.
[EW19987] -
Correct values are now displayed for the
LR
andPSP
registers in the Register window.
[EW22279] -
The simulator now resets the pending bit of the
PendSV
exception when that exception is executed. It also simulates exception priorities in a better way. Changing exception priorities dynamically and using priority grouping is now supported.
[EW22301] -
The 32-bit thumb instruction
LDR(literal)
is now decoded and simulated correctly for all combinations of operands.
[EW22360] -
LSRS R0,R0,#32
is now simulated correctly.
[EW22371] -
In EWARM 6.20.4:
Now programming flash works correctly with macroexecUserFlashInit()
.
[EW22473]
None.
V6.10 2010-11-04
Program corrections-
There was a redundant warning when the flash loader checked for the presence of arguments. This warning is no longer issued.
[EW21861] -
Namespaces could not be used when the IAR C-SPY Debugger resolved names. This has been corrected.
[EW21868] -
A variable declared in an assembly file could be given an incorrect address when displayed in a Watch window. This has been corrected.
[EW21873] -
The embOS and PowerPac RTOS awareness plugins did not display the Settings and About dialog boxes correctly on Windows7.
[EW21901] -
Setting up a Trace/SWO port now leaves other bits in the SFR (e.g.
DBGMCU_CR
) untouched.
[EW21970] -
The last index in a trace is now included when saved to file.
[EW22012] -
C-SPY macro
__setLogBreak()
is now recognized by all relevant debugger drivers.
[EW22030] -
Stepping and setting breakpoints now take
#line
directives into account.
[EW22044] -
In EWARM 6.10.2:
The uCOS-II plugin now save settings in the registry subtreeHKEY_CURRENT_USER
instead ofHKEY_LOCAL_MACHINE
.
[EW22109] -
In EWARM 6.10.2:
When displaying theCP15
registerCPACR
in the Register window, the values for the individual bits are now correctly displayed.
[EW22128] -
In EWARM 6.10.2:
The IDE no longer crashes if the Message Queues window of the ThreadX plugin contains a lot of messages in a single queue.
[EW22142] -
In EWARM 6.10.3:
Type definitions containing pointers to functions no longer produces incorrect debug information that led to unexpected IAR Embedded Workbench termination when the debugger was started.
[EW22176]
Memory region blacklist (new in 6.10.2)
The device description file can optionally specify valid memory regions for a device. User access outside valid regions will be blocked.New context menu entry in editor while debugging with trace
If Trace is available in a driver, a new context menu item Find in Trace will appear in the editor context menu (when the debugger is running). If you click in source code that corresponds to code in the target, and the trace window is not empty, the menu item will be enabled. If you select it, it will directly search the trace window for occurrences of the given trace data and report the result in the standard Find in Trace window.Navigating to code from Timeline window and related windows
Existing functionality: Double-clicking in the Timeline window (when it has something to show, of course) will open an editor window with the insertion point at the corresponding source code location, if any. This also happens when double-clicking in some other related windows, such as the Data Log or Interrupt Log windows.
New functionality for the same situation: If the disassembly window is already open, its insertion point will also be positioned at the proper location. If the desired code location has no corresponding source code (and the code thus cannot be shown in an editor window) the code will only be shown in the disassembly window, and this window will then be opened if necessary.The power log system will show if a log has been produced during processor 'idle' mode
The Power Log window, the PowerStripe tooltip, and the system saving power logs to a file will all be displaying the word 'idle' as the PC value if the target has signalled that the log is generated during idle mode.
V5.50 2010-04-21
Program corrections-
In EWARM 5.50.5:
The CMX plugin module now updates the task window when used with J-Link and Cortex-M.
[EW21819] -
In EWARM 5.50.6:
When returning from an exception routine executing in ARM to Thumb state, the returnpc
value was sometimes incorrect in the simulator.
[EW21908] -
In EWARM 5.50.6:
The simulation of the instructionsQADD
,QDADD
andQDSUB
no longer produces incorrect result for some input values.
[EW21971] -
In EWARM 5.50.6:
The debugger no longer terminates with a crasch when the trace-based profiling is activated while the Trace window is closed.
[EW21919] -
In EWARM 5.50.6:
TheUNPRIV
bit in theCONTROL
register is now reset correctly in the simulator. This means that the simulator no longer starts in unprivileged mode for Cortex-M3 and Cortex-M4 devices.
[EW21982]
- The Function Profiler window can now optionally use a flat sampling method when the input is ETM trace. This will give accurate profiling even in situations where the debugger fails to build a correct call chain, for example when the application uses a RTOS.
V5.41 2009-12-14
Program corrections-
The
LDREX
andSTREX
instructions are no longer missing in the simulator for Cortex-M3.
[EW19814] -
Dragging an expression containing a dereferenced function pointer onto the Memory window no longer causes the debugger to crash.
[EW21390] -
Editing a Trace Starting, Stopping or Filter point, set on a source line, no longer results in an error message.
[EW21393] -
The CMX RTOS plugin no longer fails if some symbols, for example "queue", are missing in the target project.
[EW21437] -
In EWARM 5.41.2:
When simulating theRFE
instructon, bits are no longer copied incorrectly from memory to theCPSR
register.
[EW21580] -
In EWARM 5.41.2:
Code size limitation control in C-SPY no longer includes constant data or data initializers.
[EW21591]
-
New C-SPY macro function
__targetDebuggerVersion()
returns the version of the debugger. This makes it possible to write debugger macro scripts that adapt to different versions of the debugger.
V5.40 2009-07-10
New features-
Interrupt definitions in
ddf
files is available in the interrupt simulation setup dialogs for Cortex-M devices. -
These new features have been added to cspybat:
- code coverage
- download only mode
- timeout option
-
A new C-SPY macro
__delay(milliseconds)
.
-
The debugger could end up in infinite loops while unwinding call stack.
[EW20280] -
Debug information for stepping was off by one line when an include file was completely empty.
[EW20541] -
The C-SPY macro
__gdbserver_exec_command
was missing.
[EW20857] -
It is now possible to simulate exceptions with exception numbers below 16 for Cortex-M cores.
[EW20866,EW20867,EW20931] -
The possibility to edit interrupt descriptions has been disabled for cores that has only
IRQ
andFIQ
interrupts. This will prevent confusing error messages from appearing.
[EW20868] -
A rare problem with downloading files in the Motorola S37 format into the wrong memory location has been corrected.
[EW20964] -
In EWARM 5.40.4:
Using the--drv_vector_table_base
option no longer causes the flash loader to fail.
[EW21171] -
In EWARM 5.40.4:
The Function Profiler now shows correct values.
The disassembly in the trace window is now correct for Cortex-M.
[EW21187] -
In EWARM 5.40.4:
The source file paths retrieved from the externally built ELF/DWARF object file are now correctly interpreted by the debugger.
[EW21223] -
In EWARM 5.40.4:
Line number information in the debugger is now accurate. Highlighting and breakpoint setting now works correctly.
[EW21268] -
In EWARM 5.40.4:
Downloading to flash memory no longer causes the IDE to become unresponsive.
[EW21297] -
In EWARM 5.40.4:
Stepping in a complex C++ program no longer causes the displayed source code location not to reflect the current program counter.
[EW21300] -
In EWARM 5.40.4:
The CMX plugin no longer fails to detect the CMX RTOS when the RTOS is compiled in thumb mode.
[EW21311]
5.30 2009-01-23
Program corrections-
The Auto window is available in this release.
-
The CMX plugin module uses one breakpoint instead of two during its initialization. This reduces the risk of plugin failure due to lack of hardware breakpoints.
[EW19139] -
The result of some floating-point expressions was incorrectly displayed in the Watch window.
[EW20303] -
With the Luminary FTDI driver, data breakpoints could only be used right after first download. For any subsequent download, data breakpoints were disabled and could not be enabled.
[EW20360] -
CPSID
andCPSIE
were incorrectly exchanged when disassembling in ARM mode. This has been corrected.
[EW20521] -
The
MCR
instruction was incorrectly disassembled asMCR2.
This has been corrected.
[EW20523] -
The flash loader based on a previous flash loader framework could not properly be invoked from
cspybat.exe
. This has been corrected.
[EW20529] -
The C-SPY macro
__openFile ( input_file, "r+b" )
could earlier fail if the input file had the read-only attribute set. This has been corrected.
[EW20268] -
The debugger did not support the semihosting command
SYS_FLEN
which caused the C library functionsfseek()
andftell()
to fail. This has been corrected.
[EW20680] -
When the Simulator attempted to execute a VFP instruction with VFP disabled (EN in FPSCR), it correctly took the UNDEF interrupt (offset 0x4) but the LR was off by 2 bytes - not 4 bytes as it should. This has been corrected.
[EWARM-169]
5.20 2008-07-11
Program correctionsIf an external editor was used in the IDE, it was also used in the debugger. This could make it impossible to set breakpoints in the source code. Now the debugger always uses the built-in editor.
[EW19591]If the simulator executed a tight loop containing illegal instructions, it would flood the debug log window with error messages and the IDE would hang. This has been corrected.
[EW19815]The debugger can now read all RealView 3.1 generated ELF/DWARF files.
[EW19868]Examining a function pointer that is a class member, either with a tooltip or by adding it to the watch window, no longer makes the debugger crasch.
[EW20034]A multiple failure to open a file using the
fopen()
library function could use up all available file handles. This no longer occurs.
[EW20102]For Cortex-M cores, the 16 bit MOV(register) instruction is now simulated correctly when PC is the destination register.
[EW20200]
- Debugger startup
You can now start the debugger with or without downloading code, using two new buttons on the toolbar, or two new Project menu commands. There are also two new corresponding ways to restart the debugger during the debug session. - Loading multiple ELF images
The debugger can load multiple ELF images using the C-SPY macro__loadModule()
. - Symbols window
The Symbols window displays the complete list of symbols used within the project. In contrast to the Source Browser, the list of symbols is not based on project source files but is retrieved from the debug information. This means, that it also lists symbols from libraries that you do not have the source for. It also lists assembler labels, which are not conveniently visible in any other window. - New flash loader mechanism
A new flash loader mechanism is available that adds increased speed and flexibility.
5.11 2007-11-28
Program correctionsThe macro function
__openFile()
now takes all kind of parameters, not only"r"
or"w"
. In particular, it is possible to use the"b"
parameter, to open the file in binary mode.
[EW17017, EW19034]CPSID
andCPSIE
were exchanged in disassembly for Cortex-M.
[EW18739]When simulating a core with no system coprocessor (CP15) support, a CP15 instruction could crash the simulator.
[EW19244]When several compilation units used the same type, a problem with debug information could earlier cause some of the instances of that type to be incorrectly handled by C-SPY. This could cause syntax errors in C-SPY expressions containing the type and also make it impossible to expand its members.
[EW19338, EW19340]The simulator did not simulate the
SVC
instruction correctly for Cortex-M cores.
[EW19484]Corrupted semihosting data structures could cause the debugger to crash.
[EW19507]In some cases, references were incorrectly shown in the QuickWatch, Watch and Locals windows. This has been corrected.
[EW19542]Setting a breakpoint in a large switch statement could earlier fail.
[EW19553,19611]When debugging nested switch statement in ARM mode, the current source code location displayed could be incorrect. This made it look like the wrong case statement was executed.
[EW19681]
Support for the Cortex-M1 core.
5.10 2007-07-02
Program correctionsCortex-M3 devices were earlier started in unprivileged mode in the simulator.
[EW18742]The debugger used to crash for code where the base class is a template class.
[EW18999]C-SPY no longer crashes if a C-SPY macro invoked by a breakpoint deletes the very same breakpoint.
[EW19001]C-SPY is now able to download a large image to the target.
[EW19855]
V4.41A 2006-12-08
Program correctionsInterrupt simulation was always incorrectly enabled after reload of a project.
[EW18578]
- Exporting command line for cspybat
C-SPY now generates a file with helpful information that can be used for running the debugger from the command line using the cspybat utility. Every time the debugger is initialized (technically, it happens when a project is loaded and when terminating a debug session) abat
file is generated that can be used almost without modifications to start cspybat from the command line with the same settings as in the IDE. The file is generated as$PROJ_DIR$\settings\projectname.cspy.bat
V4.40A 2006-05-18
Program correctionsThe CMX plugin could crash the debugger if debug information generation was disabled in project options.
[EW17832]Debugger testing for read/write memory when setting breakpoints interfered with the ST STR910 flash controller.
[EW17930]The C-SPY macro
__emulatorStatusCheckOnRead()
did not work correctly, causing problems when debugging TI TMS470R1B1M.
[EW17992,EW18012]Some ThreadX views could crash the debugger when running in big endian mode.
[EW18010]A row with a single newline in the debugger Extra Options dialog crashed the debugger.
[EW18011]A syntax error message and a macro definition error message appeared erroneously in the debug window under certain circumstances.
[EW18069]
- Support for the Cortex-M series has been added
Symbolic Memory window
A symbolic memory window has been added. It displays raw memory contents annotated with any global symbols present.
V4.31A 2006-02-03
Program corrections
The Live watch window is currently only supported by the simulator, and should not be active for other debugger drivers, like JTAG.
[EW15698]MSR
with an immediate operand was disassembled and simulated incorrectly for some immediate values.
[EW17465]The simulator could errorneously set the processor mode to system mode when running
SWI
,LDM
,STM
orBKPT
instructions.
[EW17454]Selecting hardware reset when using a flash loader should give one reset before flashing and a second reset just before starting the application. The second hardware reset was not performed.
[EW17777]
Stack window
To monitor the memory consumption and the integrity of the stack, a new Stack window has been added. It shows the stack contents as raw data, C/C++ variables, and function frames. It also shows current and maximum stack consumption graphically. Warnings can be issued when the stack exceeds a certain level or if the stack pointer points outside the stack memory.- New breakpoint category - Log breakpoint
Log breakpoints make it easy to log messages whenever execution passes a certain code location without having to add any code to the target application. When a log breakpoint is triggered, it writes to the Debug Log window and then the application continues execution. - New way to toggle breakpoints
You can now set or clear a breakpoint by double-clicking in the left margin of the editor window; the breakpoint location is marked by a red X. If there is more than one possible breakpoint location in the source line, the breakpoint is placed on the first location.
V4.30A 2005-06-23
Program corrections
The Memory window now displays “--“ for each individual memory unit that cannot be read accessed; as opposed to the whole row.
[EW16446]- Setting data breakpoints in explicitly sized (8/16/32) memory crashed the debugger. [EW16756]
- The CMX RTOS plugin could fail to be activated because it did not properly detect the CMX operating system. [EW16890]
-
The simulation of the
SMLAL
instruction was incorrect. Upon entry to the instruction the content of the upper wordRdHi
was lost (RdHi
was set equal toRdLo
). [EW16902] - When disassembling in Thumb mode, labels were shown on a separate line, with a preceeding blank line. When single-stepping, the blank line was highlighted instead of the line with the current instruction.
V4.20A 2005-01-10
Program corrections
The simulation of the VFP coprocessor could not be disabled by clearing the
EN
bit in theVFPEXC
.
[EW14654]At certain conditions when debugging for big endian processors C-SPY could crash or stop responding.
[EW15126]The debugger disassembly wrongly switched to thumb mode 64 bytes after an arm label if the code was followed further down by a thumb label.
[EW15571]The Analog Devices (ADUC702X) flash programming algorithm failed if the binary image contained gaps.
[EW15780]Setting breakpoints in C was not possible if the
PC
did not line up with a statement boundary.
[EW15590]The simulator incorrectly set the
Q
-flag when executingSMLAxy
orSMLAWy
instructions even when no overflow occured in the execution.
[EW15603]The file
CMXTinyArmPlugin.ewplugin
contained an incorrect path.
[EW15702]Under certain circumstances, IAR Embedded Workbench could crash when starting C-SPY and the CmxArmPlugin or the CMXTinyArmPlugin was used.
[EW15703]Annoying 'data coverage not supported' log message removed.
[EW15704]If the flash loader operation failed and gave an error dialog box the progress bar could be left open.
[EW16050]If, during a simulation, execution reached unallocated memory, a new memory block would be allocated and filled with zeros. Then the execution would continue in this block, since 0x0 is a valid instruction in both ARM and Thumb mode. The execution would continue, potentially until the memory runs out on the host machine. This has been fixed. Now the simulation stops and an error message is displayed whenever the program reaches memory that has not been allocated. The simulator allocates memory in 16 Kbyte blocks. If the error message "Tried to execute instruction in unallocated memory space, address
0xXXXXX000
" is displayed, the execution did go wrong in the 16 Kbyte block before0xXXXXX000
. Then it continued until it reached the 16 Kbyte border, at0xXXXXX000
, where it stopped.
[EW16085]
New features-
By using different memory zones, you can control the access width used
for reading and writing in, for example, the Memory window. For normal
memory, the default zone
Memory
can be used, but certain I/O registers may require to be accessed as 8, 16, or 32 bits to give correct results. - The debugger displays I/O register bit names for most supported devices.
V4.11A 2004-06-10
At certain conditions when debugging for big endian processors, C-SPY could crash or stop responding.
[EW15126]Incorrect simulation of the
SMULL
instruction.
[EW15191]Wrong simulation of the instructions
SMLAW
[EW15463](SMLAWB, SMLAWT)
SMLA(SMLABB, SMLABT, SMLATB, SMLATT)
SMLAL(SMLALBB, SMLALBT, SMLALTB, SMLALTT)
SMULW(SMULWB, SMULWT)
A debug information construct was wrongly handled by the debugger and caused it to crash.
[EW15712]The simulator always started at address zero regardless of the start address specified by the program start label. The simulator now starts at the program start label if it exists, if not it will start at address zero.
V4.10B 2004-03-09
- None.
V4.10A 2004-02-21
Packed structs (
#pragma pack
) are not correctly displayed in C-SPY.
[EW14151]Executing a "Memory Fill" command for very large chunks of memory could take a long time and occasionally lead to debugger crashes.
[EW14252]The simulator responded with an illegal instruction error when executing coprocessor instructions. The new behavior is to silently ignore them unless it is recognized by the simulator, for example the VFP.
[EW14489]Long pathnames to projects could trigger a bug that forced the driver to use big endian mode.
[EW14860]Wrong simulation of
QDADD
andQDSUB
.
[EW14884]
V3.40B-P1 2003-10-06
Error in simulation of the VFP instructions
FMSC
,FNMAC
andFNMSC
.
[EW14464]VFP conversion of doubles to float could trash other VFP registers.
[EW14473]
V3.40A 2003-07-03
-
Program corrections
-
Pressing the End key anywhere on the last line in the Memory window will
put the cursor to the end of the previous line. This also happens when
selecting memory.
[EW12542, EW12645, EW12649] -
A problem where .ddf files containing lines longer than 1024 characters could not be
loaded has been fixed. The maximum line length is still fixed, but is now 16384 characters.
[EW13875] - Support for the Vector Floating-point Architecture (VFP).
- The simulator gives a warning in the log window if it detects an unaligned access. This is because ARM processors do not support unaligned accesses to memory.
New features
V3.30A 2003-02-18
-
Fixed problem: When executing in pipeline simulation mode the fatal error
"Unknown exception 9 in driver" occurred.
[EW13064, EW13065]
V3.21A 2002-09-30
-
The
R0-R14
,SPSR
registers were not properly synchronized with theR0, R14, SPSR_<mode>
registers when modifying one of these registers. -
The
MSR
instruction was incorrectly simulated. -
The
LDM
instruction restoring thePC
and theCPSR
masked bit 1 of thePC
when switching to Thumb mode. -
When enabling pipeline mode, breakpoints are triggered when OP-fetch is done
which can cause the debugger to stop at an instruction that will not reach
the execution stage later on. You must have this in mind when setting
breakpoints when running in pipeline mode. In this release, the library
function
exit()
has been modified, and will not interfere with the application anymore.
[EW12432]
[EW12434]
[EW12347]
V3.20A 2002-06-19
- ARM instruction set version 5TE is now supported.
-
Additional disassembly comments to instructions with the
[#xx,PC]
operand is now supported. -
The registers
SPSR
,R8_usr
toR14_usr
are now accessible through the Register window. - C-SPY could could give an error message about an illegal instruction for valid code.
-
Reading
SPSR
does not take the current processor mode into account, causing the wrong value to be read. - When expanding a structure with bitfields, C-SPY crashed.
- Terminal I/O input did only accept ASCII characters (0-127), now characters 0-255 are supported.
[EW12247]
[EW12040]
[EW11379]
[EW11969]
V3.11A 2001-12-03
- The Call Stack window could sometimes fail to show parameter values.
- Code coverage in Thumb mode did not work.
- Interrupt simulation did not work properly.
[EW10086]
V3.10A 2001-10-02
- Data breakpoints on character variables located on even addresses could fail.
- The C-SPY SFR window flagged some values as lost and no change of SFR value was possible.
- Entering pointers to structure members or array elements in the location field of the edit breakpoint dialog caused a fatal C-SPY error.
-
The C-SPY simulator could mix up
ASR
andLSR
in some cases. For example: -
The C-SPY simulator did not handle the
UMLAL
instruction correctly. -
The simulator did not handle the simulation of
LDMIA SP!,{...,PC}^
correctly when returning from IRQ to SVC mode. Instead of incrementingSP_irq
,SP_svc
was modified. -
The first message printed in a program using
printf()
could be lost in the terminal I/O window. - Doing a reset after program termination failed.
- Enable pipeline mode. Select Low level - Memory Access Configuration from the menu bar. In the dialog box, click Add. If the OK or Cancel button was clicked, C-SPY crashed.
- Single-step in assembler mode when debugging C code crashed C-SPY if the Trace option on the Control menu was enabled.
[EW10081]
[EW10085]
[EW10293]
ldr r4, [r1, r2, LSR #24]
[EW10296]
[EW10298]
[ARMDTW0020]
[ARMDTW0023]
[ARMDTW0024]
[ARMDTW0025]
[ARMDTW0026]
V2.10D 2001-06-29
-
The simulator does not consider the mode used when doing this instruction:
MRS R3,SPSR
. It always read fromSPSR_SVR
. This is now corrected.
[ARMDTW0010]
V2.10A 2001-02-21
-
Support for big-endian mode is implemented in this release. Big-endian
mode is selected with the command line option
-e
. The default mode is little-endian. -
Support for ARM9TDMI simulation is implemented. This affects the pipeline
simulation and the cycle counter. The ARM9 simulation mode is selected
with the command line option
-v1
. The default mode is ARM7 (-v0
).
V1.30A 2000-09-08
- Device definition file handling has been implemented in this release. Select the appropriate ddf file in the C-SPY options dialog box in the Embedded Workbench. It will then be possible to open the sfr window and access the sfrs defined for the current chip. The currently available ddf files are installed in the config directory. Corresponding include files (io*.h) are installed in the inc directory.
V1.20A 2000-05-28
- The name of this component has been changed from CWARM to CSARM.
- Selection of disassembly mode is implemented in this release. Select one of the entries in the Low Level menu.
- The cycle-accurate simulation mode is implemented. To enter this mode from start, select "Enable pipeline simulation" on the Simulator tab on the C-SPY options page to start the simulation in cycle accurate mode.
- Clock Speed Register is implemented. Fill in the clock speed in Hz. C-SPY will calculate the execution time in microseconds, and display it in the Register window.
Disassemble in Thumb mode
Disassemble in ARM mode
Disassemble in Current processor mode
Disassemble in Auto mode
To refresh the display of the disassembled code after the mode is changed, you need to scroll the window up and down far enough to get a refresh.
V1.10A 1999-12-30
- First release.