release date: 5 august 2014
-
[c166 compiler]
-
corrected: warning c912 'constant': value truncated removed on expressions that used local variables definition. example:
void main (void) { unsigned char a = 8; unsigned char b = a 5; // <- incorect warning generation c192: 'constant': value truncated. while(1); }
-
corrected: incorect return type conversion from int to huge pointer. example:
#include "string.h" int foo (char *a, char *b, unsigned char c, unsigned char d, unsigned char e) { return (c == d) && ((e == d) ? (a == b) : strcmp(a,b)); // warning c40: 'int' converted to 'huge' pointer }
- added: error e201 to show errors with 'const sdata' attributes.
-
corrected: warning c912 'constant': value truncated removed on expressions that used local variables definition. example:
-
[l166 linker]
- increased: maximum amount of symbols for linking from 32000 to 48000.
-
[oh66 object\hex converter]
- enhanced: oh166 supports now an invocation line up to 255 characters.
-
[μvision debugger\simulator]
- corrected: the watch window displayed erroneously sfrs as 32 bit values. sfr values displayed correctly as 16 bit values.
- corrected: under some circumstances signal functions could change the content of the disassembly window. this problem was introduced with c166 version 753.
- corrected: under some circumstances after run a load command, previously defined and used debug functions become undefined identifiers.
- improved: loader can read hex files with corrupted line endings.
-
- this c166 release comes with μvision v5.11.2.0.
c166 version 7.53 release
release date: 4 july 2013
-
[c166 compiler]
-
corrected: an address conversion error. address conversion from xhuge address to 'unsigned long' does not consider 64k segment boundaries. example:
#pragma large browse mod167 debug unsigned char xhuge ucarr[0x20000]; // assuming that this array is located at address 0x10204. unsigned int xhuge * addr1 = &ucarr[0x10000]; // the addr1 is 0x20204 which is the expected address. unsigned long const addr2 = (unsigned long)(&ucarr[0x10000]); // the addr2 is 0x10204 which is an incorrect result. // this cast does not consider the 64k segment overvlow.
-
corrected: a stack corruption when __inline function is used with ot(4) or greater. this problem was introduced with c166 version 750. example:
unsigned char g_ucarr[4]={0x10,0x11,0x12,0x13}; static __inline void inlfnc(unsigned char par) { signed long *sldat; unsigned char ucarr[4]; ucarr[0]=g_ucarr[3]; ucarr[1]=g_ucarr[2]; ucarr[2]=g_ucarr[1]; ucarr[3]=g_ucarr[par]; sldat=(signed long *)ucarr; } void foo(void) // in function foo(), the compiler alocates only 2 bytes on the stack, { // while the object inside the inlined function inlfnc() needs 4 bytes. inlfnc(0); // that causes corruption of other data on the stack. }
-
corrected: an address conversion error. address conversion from xhuge address to 'unsigned long' does not consider 64k segment boundaries. example:
-
-
since c166 version 7.52 the firmware of the ulink2 target debuger will be updated to version 2 which will not work with older c166 installations.
the .\c166\ulink\utilities\ul2_configure.exe tool allows to switch back to an older firmware version when backward compatibility is needed.
-
since c166 version 7.52 the firmware of the ulink2 target debuger will be updated to version 2 which will not work with older c166 installations.
-
- this c166 release comes with μvision v4.72.9.0.
- refer to for a complete list.