Keil Logo

What's New in C166 Version 7.53

  • [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.
      }
      
  • [ULink2]
    • 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.
  • [µVision4]
    • This C166 release comes with µVision V4.72.9.0.
    • Refer to Revision History for a complete list.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.