C166/ST10 Tool Chain v7.5r1

RELEASE NOTE


SUMMARY

This release note covers version of v7.5r1. It describes the changes and new features of all TASKING C166/ST10 products with respect to v7.0r1.

The following parts are described:

The solved and known problems are not part of this release note, they are described in separate files: "solved_<name>_7_5r1.html".

The main reasons for this release are:

Details and more features are described in the following paragraphs.

 

 

EDE

Project Hierarchies

EDE now supports project hierarchies. Project hierarchies can be used to include libraries in a project or to specify dependencies in multi-core projects. First the sub-projects should be created as normal projects. Then to create a project hierarchy:  

  1. Select the parent project in the EDE project pane 
  2. Click the right mouse button 
  3. Select entry "Include Sub-Project" from the popup menu 
  4. Use the file browser to select the project file of the sub-project (project-name.pjt) This sub-project can be any EDE project file. It does not have to appear in the EDE project pane. 
  5. Once the sub-project is included in the parent project the build process will check whether all sub-projects are up-to-date before the build of the parent project will start.

System Stack Size for Extend2 Architectures

The system stack size for Extend2 processor architectures is now interpreted as a word value in the startup code. EDE requested a byte value in Expert mode and a word value in Easy mode. This has changed to word value in all cases. Please check your system stack size value for Extend2 processor architectures and ensure that you specified a word value.

Technical Support Menu

The EDE menu includes a new sub-menu "Technical Support", which contains the item "Prepare Email...". This will start a dialog for preparing an e-mail message to our technical support desk. The dialog will automatically gather all kind of information needed to enable our support engineers to help you quickly with problems and questions that you report. Besides this, a link list is shown for easy access to our C166/ST10 support pages on the Internet.

Startup code to project 

Including the startup code (..\lib\src\start.asm) to your project is easier then ever: select EDE | CPU Configuration | Enable, and tick the checkbox "Add system startup code to project".

Output Format 

It is now possible to select multiple output formats at the same time (see EDE | Linker/Locator Options | Format). This is useful for example if you want to generate both an IEEE-695 file for CrossView Pro Debugger and a HEX file for your EPROM programmer.

Python Scripting

You can now configure EDE to use Python scripts. The purpose of integrating the Python interpreter with EDE is to control EDE or external applications by using Python scripts. This is useful to connect multiple CrossView Pro debuggers with arbitrary third-party tools, like Matlab, RiMC or Consystant.

See also: Embedded Development Environment Manual - Appendix A ("C166_ST10 EDE Manual" on Windows only)

 

 

C COMPILER

Global Storage Optimization (GSO)

A new application wide optimization has been added. The Global Storage Optimization (GSO) allows the compiler to fill in memory qualifiers automatically based on the suitability of objects in _near, _system, _iram, _xnear, _far, _shuge or _huge memory spaces. This reduces the need to explicitly use memory qualifiers in your C source code. The best results of the GSO are achieved when using as few as possible memory qualifiers in your C source code. This new optimization has a global application scope, meaning that the whole application is pre-compiled first to gather information about all its static objects and then compiled again, using the best memory configuration as determined by the Global Storage Optimization. This optimization offers better utilization of the characteristics of any memory model but in particular the small memory model. The GSO is currently not supported by the EDE and the control program cc166

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 12.6 "gso166"

New Memory Qualifier _xnear

In order to support more short addressable memory space as well as more flexible usage of DPP-registers, the _xnear memory space has been introduced. This memory space is only available in the segmented memory models (large/medium) and shares a data page with the user stack. Accesses to this memory space will be done through DPP1. The _xnear memory qualifier can be used just like any other memory qualifier (e.g., near). The _xnear memory space is formed by creating a new data group C166_XGROUP. This group is build from sections that contain objects defined in the _xnear memory space and the user stack. Objects in the _xnear memory space are allocated in sections with suffix:

The class of the generated sections is CUSTACK by default but this can be overruled by:

See also:  C Cross-Compiler User's Guide - 3.2.1.7 "Near, Xnear, Far, Huge and Shuge" 

Packed Structures

The C compiler aligns structure members according to their types: a char is aligned at a byte, int is aligned at a word, etc. With this alignment  the compiler can generate the most optimal code for accessing the structure members. But in some specific cases it is required that this alignment is not done. For example, accessing a memory mapped device using a structure will not work if the registers in this device are not aligned as the compiler does. In many devices the registers are byte aligned. When using structures to access this kind of devices the  _packed qualifier can be used for the structure definition. 

See also: C Cross-Compiler User's guide - 3.2.8 "Using Packed Structures"

MAC Intrinsic Functions

A new rich set of MAC intrinsic functions have been added to allow utilization of the Multiply-Accumulate unit directly from your C source code. This MAC unit is available on some C166/ST10 derivatives and previously was only programmable from (in-line) assembly.  These new intrinsics are only available when the MAC instruction set is enabled with the compiler option -xd. The new intrinsics are: _CoABS, _CoADD, _CoADD2, _CoASHR, _CoCMP, _CoLOAD, _CoLOAD2, _CoMAC, _CoMACsu, _CoMACu, _CoMAC_min, _CoMACsu_min, _CoMACu_min, _CoMAX, _CoMIN, _CoMUL, _CoMULsu, _CoMULu, _CoNEG, _CoNOP, _CoRND, _CoSHL, _CoSHR, _CoSTORE, _CoSTOREMAH, _CoSTOREMAL, _CoSTOREMAS, _CoSTOREMSW, _CoSUB, _CoSUB2

Many CoXXX instructions are automatically generated if a special sequence is recognized. This only applies when the compiler options -xd -Oj are used.

Examples:

_CoLOAD( arg1 ); _CoABS();
// generates the CoABS op1, op2 instruction.
_CoMUL( arg1, arg2 ); _CoRND();
// generates the CoMUL op1, op2, rnd instruction.
_CoSUB( arg1 ); _CoNEG();
// generates the CoSUBR op1, op2 instruction.
_CoMAC_min( arg1, arg2 ); _CoNEG(); _CoRND();
// generates the CoMACR op1, op2, rnd instruction.

The CoXXXus instructions are identical to the CoXXXsu variants with exchanged operands, e.g. CoMACus op1, op2, rnd is identical to CoMACsu op2, op1, rnd.

A header file can be made containing the "missing" _CoXXX intrinsics as macros. It could look like this:

#define _CoMUL_rnd(x,y) _CoMUL((x),(y)); _CoRND()
#define _CoSUBR(x) _CoSUB(x); _CoNEG()
#define _CoMACR(x,y) _CoMAC_min((x),(y)); _CoNEG()

See also: C Cross-Compiler User's Guide - 3.16 "Intrinsic Functions" 

Compiler Option for Super10M345 Support

The C compiler is extended with the -x22 option to support the Super10M345. Setting the -x22 automatically implies the -x2 option for the C166S v2.0 / Super10 architecture. The -x22 option enables support of the new 3 rd local register bank similar to the already supported 2 local register banks of the original Super10 architecture. In addition, the new CoSHL xxxxxxx ,rnd instruction will be used in the C compiler’s peepholer to accommodate the MAC intrinsic functions. This instruction replaces the generation of the instructions CoSHL followed by CoRND which are used in the MAC intrinsic functions. An error message will be generated when the new local register bank is used when the -x22 option is not used. 

Compiler Options for CPU Functional Problems

The following flags have been added to the -B option for working around CPU functional problems:

Flags Regarding
k and K Protecting  BFLDH/BFLDL instructions by an ATOMIC instruction. This is a bypass for the CPU.21 CPU functional problem.
n and N  Avoiding pipeline conflict after CoSTORE instruction. This is a bypass for the Kfm_BR03 CPU functional problem.
Zc166sv1cp and Zno_c166sv1cp Preventing pipeline problems after changing CP. This is a bypass for the CR105840 (preliminary number) functional problem.
Zc166sv1div and Zno_c166sv1div Generating protected division instructions. This is a bypass for the CR105893 (preliminary number) functional problem.
Zc166sv1sp and Zno_c166sv1sp Preventing pipeline problems after changing SP. This is a bypass for the CR105685 (preliminary number) functional problem.

See also:
C Cross-Compiler User's Guide - 4.3 Detailed Description of the C-166 options
C Cross-Compiler User's Guide - Appendix G , CPU Functional Problems

MISRA C

The Safer C support is renamed to MISRA C. The option for specifying the MISRA C rules to be checked is now: -misrac. The -saferc option is no longer available.

See also: C Cross-Compiler User's Guide - 4.3 "Detailed Description of the C-166 options"  

New C Preprocessing Options

The C preprocessor of the C compiler has the following new flags for the -E option:

c don't strip comments
i keep #include directives
p don't generate #line source position info
x disable macro expansion

See also: C Cross-Compiler User's Guide - 4.3 Detailed Description of the C-166 options

Automatic Save of MAC Registers

The MAC registers are now automatically saved in an interrupt frame. The #pragma savemac is no longer needed. The pragma still exists so that a save of the MAC registers can be forced.

See also: C Cross-Compiler User's Guide - 4.5 Pragmas

 

 

ASSEMBLER

Assembler Controls for Checking CPU Functional problems.

The following controls have been added for checking for CPU functional problems:

CPU Problem Reference   

Controls   

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide

CPU.3   

CHECKCPU3/NOCHECKCPU3   

7.3 Description of a166 Controls - CHECKCPU3

CR105893   

CHECKC166SV1DIV/NOCHECKC166SV1DIV   

7.3 Description of a166 Controls - CHECKC166SV1DIV

CR105685   

CHECKC166SV1SP/NOCHECKC166SV1SP   

7.3 Description of a166 Controls - CHECKC166SV1SP

CR105840   

CHECKC166SV1CP/NOCHECKC166SV1CP   

7.3 Description of a166 Controls - CHECKC166SV1CP

Assembler control for Super10M345 Support

A new assembler control EXTEND22 specifies to use the  Super10M345 architecture.

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 7 "ASSEMBLER CONTROLS"

New Control PEC/NOPEC

When the check for CPU.21 silicon problem is enabled with the CHECKCPU21 control, a warning is given if the BFLDx instruction is not protected by ATOMIC, EXTR, EXTP, EXTPR, EXTS or EXTSR. In this case a PEC transfer may occur just before the execution of BFLDx.

If you know that PEC transfers do not occur, you can use NOPEC/PEC to prevent this warning. Currently this information is used in conjunction with the CHECKCPU21 control. For CPU.21, you can also use this control if PEC transfers can occur, but not in a problematic way. For example if your PEC source and destination pointers point to proper addresses.

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 7 "ASSEMBLER CONTROLS"

Macro Preprocessor Control LINE

The macro preprocessor Control LINES is renamed to LINE. This way the name no longer overlaps with the assembler LINES control.

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 3.4.1 "Overview m166 Controls"

MISRA C

The Safer C support is renamed to MISRA C. The control for passing the MISRA C rules to be checked to the locator is now: MISRAC. 

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 7 "ASSEMBLER CONTROLS"

 

 

LINKER/LOCATOR

Smart Linking

Smart linking offers the possibility to only include those functions from libraries and objects that are actually used by the application. Previous versions of the linker/locator included a whole object from a library when at least 1 function from this object was called by the application. This could mean that when such an object contained more functions, that these functions would also be linked with the application even when they were not used. Smart linking removes those unused functions from the application automatically which results in a smaller application size. 

The Smart linking feature is fully implemented in and controlled by l166. However, currently the compiler groups the code from one module containing multiple functions into one section preventing l166 to remove unused functions. The compiler c166 has been extended with the fragment pragma which generates a separate section for each function in a module, thus facilitating the Smart linking feature.

The Smart linking feature can be controlled from the EDE. In order to fragment your C code, please enable the "EDE | C-Compiler | Output | Create new section for individual functions" checkbox. In order enable Smart linking from the linker/locator l166, enable the "EDE | Linker/locator | Linker/Locator | Remove unused sections" checkbox.

See also: 
C Cross-compiler User's Guide - 3.2.3 "Code Memory Fragmentation" 
Cross-Assembler, Linker/Locator, Utilities User's Guide - 11.10.4 "Overview l166 Controls"

CHECKMISMATCH Control

When two declarations of a symbol have a different type, the linker/locator now issues an error (E 408, E 409 or E 410) instead of a warning. For backwards compatibility reasons, this error can be turned into a warning with the NOCHECKMISMATCH control. The normal WARNING control can then be used to suppress the warning as well.

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 11.10.4 "Overview l166 Controls"

NOCHECKFIT Control

When a relocatable value is obtained that does not exactly fit inside the space reserved for it an error will be issued. In versions older than v7.5r1 a warning was issued, while the result would be incorrect. For users relying on the 'incorrect' result the NOCHECKFIT control can be used to reinstate the old behavior of generating a warning. The NOWARNING control can then be used to suppress these warnings.

See also: USER'S GUIDE ADDITIONS

New Predefined Symbols

Class begin and end address information is now available through predefined symbols ?CLASS_name_TOP and ?CLASS_name_BOTTOM, where name is the name of the class.

The predefined variables ?USRSTACK2_TOP and ?USRSTACK2_BOTTOM will be automatically set to the begin and end of the C166_US2 user stack for the new local register bank 3 of the Super10M345 architecture.

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 11.9 "Predefined Symbols" 

Unique Class Range Reservation

The CLASSES control of the locator is extended with a UNIQUE keyword:

CLASSES(class-control, ...) 
class-control: [']class-name['], ... ({address1 (-|TO) address2 [UNIQUE]},...)

When the UNIQUE (abbreviation: UN) keyword is specified, the locator will locate only this class in the specified range. After all sections with a CLASSES control have been located, the locator will reserve the remaining ranges with UNIQUE control. The map file will list these as 'Reserved'.

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 11.10.4 "Overview l166 Controls"

 

 

INTEL HEX FORMATTER

The Intel Hex formatter ihex166 is extended with several new options:

See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 12.8 ihex166

 

 

CROSSVIEW PRO DEBUGGER

Menus and Buttons

The CrossView Pro menus have been restructured to make it easier to find all the features supported by the debugger. The button bars of all windows are redesigned and have now small buttons by default. It is still possible to select an enlarged version of the buttons from the File | Options ... | Desktop dialog

Save and Restore Desktop

When closing an application, CrossView Pro now saves the desktop. This includes all windows and their positions, the breakpoints and  view and watch data window contents. On reload of the application the windows are restored and breakpoints are set as saved. The saved desktop is per application, which means that you have to setup your windows each time you start debugging a new application.

Breakpoints

New interface

In our continuing efforts to simplify the CrossView Pro user interface we have redone the Breakpoint dialogs. The new dialogs have been combined into a tabbed dialog. In addition, breakpoints now can be saved when the user exits XVW. The new GUI lets the user set breakpoints based on:

Probe Points

In addition to defining a Breakpoint as permanent or temporary, CrossView Pro now gives the user the option to define the condition as a Probe Point. When a Probe Point occurs, CrossView is notified but no windows are updated and the target continues to run. Probe Points are useful for setting breakpoints based on a sequence of events. Probe points are also useful for controlling IO simulation.

Breakpoint sequencer

Users now have the ability to define a breakpoint based on a sequence of events. The functionality is similar to that of setting up trigger sequences in a logic analyzer. Boolean functions are provided to allow the user to create complex sequences. In addition, sequences can be nested. This will be very useful for quickly identifying those hard to find, intermittent problems.

See also: CrossView Pro Debugger User's Guide - 7 "BREAKPOINTS AND ASSERTIONS"

I/O Simulation (IOS)

The C166/ST10 tools offer 3 types of I/O simulation:

In previous versions of CrossView Pro, the control and setup of these functions were done via separate dialogs. Now, we have consolidated these dialogs, so the user goes to one tabbed dialog in CrossView Pro to set up I/O simulation.

See also: CrossView Pro Debugger User's Guide - 10 "I/O SIMULATION"

CAN Host Adapter Support

The list of supported CAN host adapters has been heavily extended with 21 new adapters from ESD, IXXAT, Phytec and Vector. In addition the CAN ROM-Monitor can now be configured to any CAN identifier. This means that CrossView Pro can connect to any CAN device in a CAN network as long as the ROM-Monitor is available on this CAN device. The following CAN host adapters are currently supported by the CrossView Pro ROM-Monitor debugger:

In order to be able to debug your application using the CAN interface, please make sure that the CAN ROM-Monitor burned in to ROM, EPROM or FLASH on your target or that the CAN ROM-Monitor is downloaded serially first.

See also: 
CrossView Pro Debugger User's Guide - Addendum C166/ST10 Family Target Boards - 5 "The RAM and ROM Debug Monitor"
CrossView Pro Debugger User's Guide - Addendum C166/ST10 Family Target Boards - 8.2 "CAN (Windows Only)"

COM and DDE Support

CrossView Pro now provides a COM object interface on MS-Windows platforms. The purpose of the COM object interface is to make the command-line interface of the command window available to the outside world. Simultaneously, a callback mechanism is provided which allows the outside world to tap into events that occur within CrossView Pro (for example a breakpoint hit message). This is achieved by a COM connection point interface to which multiple programming languages can connect.

CrossView Pro now offers an Inter-Process Communications (IPC) option using the Microsoft Windows Dynamic Data Exchange (DDE) interface for external control of CrossView Pro. The DDE interface offers direct access to the CrossView Pro command interpreter. Via the DDE interface you can execute every CrossView Pro command that you can access via the regular CrossView Pro command window, and retrieve the output produced by the executed command.

See also: CrossView Pro Debugger User's Guide - Appendix B "Interprocess Communication"

CrossView Pro and Windows 95

CrossView Pro requires the DLL ws2_32.dll which is not standard available on Windows 95 systems without any service pack installed. If you start up CrossView Pro and get a message that it cannot find the ws2_32.dll, you should either install Windows 95 Service Pack 1 or download the DLL.

 

 

USER'S GUIDE ADDITIONS

The following information is additional to the Cross-Assembler, Linker/Locator, Utilities User's Guide.

Linker/Locator Control CHECKFIT/NOCHECKFIT

Default: CHECKFIT

Abbreviation: CF/NOCF

Description:

When a relocatable value is obtained that does not exactly fit inside the space reserved for it an error will be issued. In versions older than v7.5r1 a warning was issued, while the result would be truncated. For users relying on the truncated result the NOCHECKFIT control can be used to reinstate the old behavior of generating a warning. The NOWARNING control can then be used to suppress these warnings.

 


Copyright (c) 2001 TASKING, Inc.