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 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:
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.
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.
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".
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.
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)
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"
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"
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"
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"
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.
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
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"
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
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
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 |
A new assembler control EXTEND22 specifies to use the Super10M345 architecture.
See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 7 "ASSEMBLER CONTROLS"
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"
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"
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"
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"
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"
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
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"
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"
The Intel Hex formatter ihex166 is extended with several new options:
See also: Cross-Assembler, Linker/Locator, Utilities User's Guide - 12.8 ihex166
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
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.
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:
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.
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"
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"
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:
ESD CAN/PCC ISA/200, CAN/PCC PCI/200, CAN/PCC ISA/331, CAN/PCC PCI/331, CAN/PCC PC104/331
IXXAT iPC-I 165, iPC-I 320, iPC-I 386, iPC-I 165 PCI, iPC-I 320 PCI, iPC-I 165 PCI (CP350), CANdy, tinCAN, USB-to-CAN, PCI 03 with SJA100
Phytec NET-CAN pcNET-CAN, NET-CAN iNET-CAN, NET-CAN eNET-CAN, PEAK-CAN
Vector CANcardX, CANpari, CAN-AC2, CAN-AC2-PCI
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)"
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 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.
The following information is additional to the Cross-Assembler, Linker/Locator, Utilities User's Guide.
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.