C166/ST10 Tool Chain v8.6r2



This release note covers version v8.6r2. It describes the changes and new features of all TASKING C166/ST10 products since v8.5r1.

The following sections are included in this release note:


Summary of changes between v8.6r1 and v8.6r2:

Summary of changes between v8.5r2 and v8.6r1:

Summary of changes between v8.5r1 and v8.5r2:

Solved and known problems as well as known restrictions are listed in a separate file, delivered with the software package: solved_8_6r2.html.


Use PUSH/POP Instructions To Save GPRs In Interrupt Frame

The _using() attribute for interrupt functions allows a special keyword: push When specifying _using(push), the compiler will use PUSH and POP instructions instead of a context switch to save the GPRs in the interrupt frame.

Silicon Bug Workaround: -BZmovbjb

A silicon bug workaround has been added for the 'CPU_MOVB_JB'  problem (jump-bit wrongly executed after byte manipulation instructions).

Insert NOP instruction between an explicit byte-register modification and a bit-jump that uses the opposite byte of the same word GPR.

Default. Do not insert NOP instruction between explicit byte-register modification and a bit-jump.

New Pragmas

The following pragmas have been added for specific control:

#pragma prohibit_atomic / #pragma  noprohibit_atomic
When the pragma prohibit_atomic is set the compiler will issue a warning on the _atomic () intrinsic.

#pragma  prohibit_bit_init / #pragma  noprohibit_bit_init
When the pragma prohibit_bit_init is set the compiler will issue a warning when initializing a bit

#pragma  warn_signed_var_unsigned_const_relation / #pragma  nowarn_signed_var_unsigned_const_relation
When the pragma warn_signed_var_unsigned_const_relation is enabled, the compiler will generate a warning when a signed variable of type: char, short or int is compared with an unsigned constant value in the range: 0u <= value <= 255u. When an int has the type modifier 'long', or when the constant has the l/L suffix, the warning will not be generated.
With the word: "relation" the relational operators are meant, as described in the C standard (1990), section 6.3.8. According to this section, relational operators are: <, <=, > and >=. I.e: the equality operators (==, !=) are not included.

#pragma indirect_access [([_]near)]<address>[-<address>],...
With this pragma the address (ranges) that have to be accessed using an indirect addressing mode can be specified. When a near address is specified the ([_]near) keyword must be added, otherwise the address will be interpreted as _huge. In the segmented memory models, _near, _xnear and _system/_iram/_bita are all separate near memory spaces. The correct DPP-number must be included in the address.
Multiple uses of this pragma accumulate the specified addresses.

Example for a segmented memory model:

	#pragma indirect_access	(near)0x9234,(near)0x5232-0x5236,0x200200	/* include DPP number in address */

	void	main( void )
		*((_near int *)0x1234)  = 5;
		*((_xnear int *)0x1234) = 10;
		*((_far int *)0x200200) = 15;

This pragma applies to constant pointers only.

ROM/RAM Extension In Global Storage Optimizer

Previously the gso166 tool assumed all memory in a particular memory space to be the same: RAM. However, sometimes objects have to be allocated ROM. Therefore gso166 has been extended to support ROM and RAM areas in the memory spaces. To accomplish this, the command line interface as well as the file formats of gso166 have been updated.

The -m command line option has been extended to control the size of the ROM area in a particular memory space.  In addition, different object-size thresholds can be set for the ROM and RAM areas. This can be done by using the -T command line option.

The compiler and assembler have been updated to generated the correct memory-types, and are capable of reading the new file formats generated by gso166.



New Silicon Bug Check: C166SV1MOVBJB

A silicon bug check has been added for the 'CPU_MOVB_JB' problem (jump-bit wrongly executed after byte manipulation instructions).  The C166SV1MOVBJB control enables the check and the NOC166SV1MOVBJB control disables the check.




Infineon DAS (Device Access Server)  is supported as new communication channel between CrossView Pro and the target board with OCDS. CrossView Pro can connect to the DAS server using TCP/IP. The DAS server (which may run on any computer in the network) connects to the target board, using a USB or Parallel connection.  For communication with DAS via USB it is required to use a so called 'wiggler box'. This is a small device that is used to connect with USB to the JTAG port on the board. Starting v8.6r2 the old OCDS LPT drivers are no longer included and DAS should be used for debugging via LPT.

When installing the v8.6 toolset you can choose at the end of the installation to install DAS and DAS for LPT software. It is possible to install these packages afterwards from the reinstall directory in the installed product.

Configuring DAS from EDE

In the "Project Options" dialog on the page "CrossView Pro" -> "Execution Environment" you can select one DAS board configurations. When one of the DAS configurations is selected you can setup the DAS  connection on the page "CrossView Pro" -> "OCDS via DAS Setup".  Here you can also select between using the USB wiggler or an (on-board) LPT port wiggler.

Naming of On-Chip Flash

With version v8.6r2 the naming of the on chip flash devices has changed. Previously the names did include the stepping code, for example "XC167CI-16FF AB". Now the stepping code is no longer included, except for steppings that have a different flash algorithm. For  example:

XC167CI-16FF (< AC)

When using EDE to configure and launch CrossView Pro, the configuration should be updated automatically. When starting CrossView Pro outside EDE, you may need to update *.cfg files or select the correct Flash device from the Target => Flash Setup... dialog within CrossView Pro.

@(#)readme.html 1.38