DSP56xxx Toolchain v3.5r3


TASKING DSP56xxx Product Page, TASKING DSP56xxx Support Page, TASKING Developers' Forum, TASKING Home Page


This release note describes the changes and new features of all TASKING DSP56xxx products with respect to v3.5r1 and previous versions.

The following parts are described:

The solved and known problems are not part of this release note, they are described in a separate file: Solved_v3_5r3.html.

The main reasons for this release are:



Careful interpretation of CrossView Pro's CCNT register (5600x only)

CrossView Pro uses the on-chip timer/counter module to perform hardware profiling. For this it uses profile.asm which initializes the timer and calculates the elapsed time in between breakpoints. Previous versions used timer mode 0 with limited accuracy since the TCR register cannot be used to read the current counter value. With this release mode 5 (period measurement mode) is used instead with increased accuracy but also limiting profiling to 2000000H program oscillator clock cycles. Even though TCR can be read to determine the current counter value this mode does not at the same time support detecting overflows. Therefore it cannot be guaranteed that the CCNT value read from CrossView Pro's register window has overflowed or not. Also note that profile.asm  assumes PB0 (alias H0) is wired to TIO since mode 5 measures periods on TIO. A warning is issued by default to make sure such a connection is made between the two pins. Finally note this restriction only applies to the 5600x series. The 563xx and 566xx series use triple timers both capable of detecting overflows and at same time reading the current counter value.

DELFEE language: Asterisks (*) allowed in names (since version 3.0r2)

Version 3.0r2 of the locater allows asterisks (*) in names. The consequence is that the asterisks should be separated by spaces to specify a valid multiply.


#define INT_P_RAM (80k - SWITCH_SIZE*SWITCH_SELECT)   // Wrong since v3.0r2
#define INT_P_RAM (80k - SWITCH_SIZE * SWITCH_SELECT) // Correct

Please check your user defined DELFEE files (*.dsc, *.cpu and *.mem) for non-space separated asterisks

Default interrupt priority of serial port (since version 3.0r1)

The default of the IPR for the serial port was set to 1 in previous releases. In the current release the default is set to 2 to make it possible to have a higher and a lower priority. It is possible to overwrite this default by setting the define SER_IRQ_LEVEL when building serio.c.

DSP563xx/6xx VBA support (since version 2.3r0)

The startup code (lib\src\56*.asm) will now set up the VBA register if it is set on the command line (VBAVALUE=<newvalue>, with <newvalue> replaced with the value to write to VBA). You must replace the library startup code or add the startup code to your project if you want to use this. All generated interrupt vectors will be automatically shifted to the new location. Please refer to the C manual for more details on the startup code.

Cache enabled by default on DSP56307 (since version 2.3r0)

The cache is now enabled for the DSP56307 (and DSP56311), and the default memory layout will have the VBA set to just after the cache (P:$400). This will improve the performance when executing from external memory. As with all other startup code, defining NOCACHE on the command line will disable the use of the cache (useful if your application fits in internal memory in that case). You must however also add -emCACHE_SELECT=0 on the locator command line to allow locating the vectors in the former cache area. In EDE, you can add this option to Project | Project Options... | Linker/Locator | Locator Miscellaneous | Additional Options entry field.

Stack layout and stack memory changed (since version 2.2r1)

The layout of the user stack in C compiled code has been changed to improve code density and speed. By default, the stack is now placed in L-memory and the stack pointer points to the top-of-stack item. This change requires some work to upgrade existing projects to this revision. As a minimum, a complete Rebuild of the project is required (if it contains only C source files). Command line switches are provided for backward compatibility.

The required changes are:

See the manual and lib\src\readme.txt file for details on how to recompile the C library. See the section about the stack layout for details of the new system. Note that the L-memory stack is compatible with sources compiled for either X or Y default memory (-Mx or -My), so it is not necessary to switch that off for compatibility.

For boards that have a very small amount of L memory (most notably the DSP56002 EVM with unified memory map) care must be taken to select the correct memory model and stack size. On the DSP5600x, select either the reentrant or the static model, but not the mixed model in this situation. If the available amount of dynamic stack is not enough, the program must be translated without the L-stack option (and the C library retranslated accordingly).

Constant data no longer initialized through copytable (since version 2.2r1)

The handling of constant data sections (used to store 'const' declared variables and literal strings) has been changed to avoid superfluous memory allocation. New sections with base name 'const' are generated for them, and these are no longer initialized through the copy table. These sections replace previously generated sections with base name 'string'. This change has implications for bootstrap loaders, that must be capable of handling all memory sections instead of only P memory. An example of such a bootstrap loader is given in the examples\bootrom directory.


Selectively save project options

The Project | Save Options... menu now supports selectively saving project options. The groups of options that can be saved correspond to the menu's of the Project | Project Options... menu.

CPU macro generation

Automatic makefile generation now includes the CPU macro. This macro carries the value of the derivative selected in the Project | Project Options... | CPU Selection menu. The CPU macro can be used for various solutions. For example adding:


To Project | Project Options | C compiler | Preprocessing | Include this file before source will make sure that each project C file will automatically include the correct register header file based on your CPU type thereby canceling the need to explicitly include it in the C file itself.

Automatic profile.asm project inclusion for hardware profiling using a timer

Hardware profiling using a timer can be enabled from Project | Project Options | Linker Miscellaneous and from here ticking the Use hardware timer for cycle counting checkbox. Previous versions would force profile.obj to be extracted from the standard C library yet the current implementation will create a local project copy of profile.asm and in addition add it to the project source modules. The name of profile.asm is mangled with the project name such that it becomes projectName_profile.asm.

The EDE menu structure has been made more intuitive

The default menu layout has been changed, resulting in a more comprehensible menu structure. The former 'EDE' menu has been removed, while a new 'Build' menu was added. All dialogs that used to be part of the 'EDE' menu have been subdivided over the 'Project', 'Build' and 'Help' menu.

If you prefer the menu structure you are used to, then you have the option to switch back to the old style by selecting 'TASKING Classic Style' in the Customize | Menu Layout ... dialog.

Tree-view based dialog for setting project options

The project options are grouped in a tree-view based dialog Project | Project Options... making it more orderly. It is possible to set all the project options to their default values at once.

CPU selection dialog

There is a new dialog for the selection of the 'CPU' named Project | Project Options... | CPU Selection.  The selection of the CPU family/type has consequence for:


Reported problems in the C++ compiler have been solved, no new functionality has been added.


Memory paging support

The compiler and the other parts of the toolchain now support memory paging to a maximum of 8 pages. This is done with the _bank keyword. The exact number of memory pages  can be set by the new C compiler option -p.

Restrictions Near the End of DO Loops

Regarding the DSP563xx family, more End of Do loop restrictions were added which can result in extra nop insertions.


Restrictions Near the End of DO Loops

Regarding the DSP563xx family, more End of Do loop restrictions were added which can result in extra nop insertions


Reported problems have been solved, no new functionality has been added.


Reported problems have been solved, no new functionality has been added.


Based on Motorola's application note "Implementing viterbi decoders using the VSL instruction on the DSP families DSP56300 and DSP56600" by Dana Taipale we added an IS-136 convolutional error correcting code example to this revision release almost entire written in C. The example has been added to the examples project space and is stored in the examples\viterbi folder.


General improvements

Further improvements are introduced; for instance you will be warned if a source is newer than the .abs file.
Static variables within a function can be inspected and a hexadecimal display option in the Data Window has been added.

Furthermore, the performance of the terminal windows has been improved; scrolling and updating of windows has become much faster. The GUI of CrossView has been improved, resulting in a more intuitive and user-friendly interface.

Download and Compare functionality

You can use the new File | Compare Application... dialog to check if an .abs file matches the downloaded application. This can be useful when you want to check if the program code has been changed, for example due to uninitialized pointers. The same check can be accomplished through the command window with the dcmp command.

Save Profiling Report

It is now possible to save your profiling results. Either you can use the commands cproinfo and proinfo from the command window or you can click the save button in the Tools | Profiling Report | Save... dialog from the GUI to save the profile report in a file. Note that profiling is only available when you use the simulator.

Support for USB

Now also universal DSP emulators with USB interface of Domain Technologies are supported. (USB-EMU since version 3.5r3)

Copyright 2001-2004 Altium BV