ICC430 Readme file Make sure you subscribe to the icc-430 mailing list for program update announcements. Refer to http://www.dragonsgate.net/mailman/listinfo for details. CHANGE LOGS: V7.08A - June 4th, 2008 [ TI DLL ] - V2.03.4.2 of the TI MSP430.DLL. IDE - Minor licensing engine enhancement. - x64 compatible dongle driver C Preprocessor - Fixed problems with "Relative Path" IDE project V7.08 - May 12th, 2008 [ Removed the rarely if ever used RCS interface. Note: ICC no longer uses any GPL utilities. ] [ TI DLL and header files ] - V2.03.4 of the TI MSP430.DLL with support for MSP430Xv2 chips - new header files for MSP430F54x (msp430x54x.h) and MSP430FE42x2 (msp430xE42x2.h) IDE - Minor terminal function enhancements. - Added Project->Options->Project->"Makefile Options" of two choices "Relative Paths" or "Absolute Paths" - fixed the problem with "NoICE" button sometimes being squashed. Compiler - Added the following INTRINSIC functions: int GET_SR(void), GET_SR_IRQ(void); void PUT_SR(int), PUT_SR_IRQ(int); for accessing the SR status register in a normal function and interrupt handler. - Added NOP after the initial DINT for monitor functions. - In the code fragment: long *dst, *src; ... *dst++ = *src++; if src (which must be a "long *") did not get allocated to a register, incorrect code might result. - Fixed a bug where under some conditions, the use of LPMx macros might cause stack inbalance especially when it is followed by complex floating point expressions. - XOR was broken for one specific code pattern due to a typo: extern short a, b; ... b = a ^ b; generated incorrect code Library - Fixed a bug where strncpy incorrect zeroed out the SRC string if the count argument is shorter than the src string. V7.07 - March 3rd, 2008 TI Supplied Files - new header files from TI - 2.3.x MSP430.DLL IDE - [ADV and PRO only] Added capability to create Library projects. Compiler [ the optimizations below should improve code size 2-4%, depending on the application ] - now generate sym(Rx) addressing mode, e.g. char buf[]; ... int i; ... = buf[i] ... would use a single addressing mode to access the item - More optimal code for some cases when comparing against a constant. (The MSP430 does not have a full set of branch instructions nor does it allow an immediate as the second operand of a CMP instruction. With some comparisons, the old code generates moving of the constant to a register. The new code adjusts the constant by one and eliminates this move) - Added CALL/RET -> BR tail call optimization - Added support for volatile tracking, with effect that the peephole and register history optimizations being more effective. Library - the low level floating point to (unsigned) long conversion function was not working correctly for numbers larger than ~16000000. V7.06A - Sept 27th 2007 Compiler - [ bug introduced in 7.05 ] if a long expression is used in two comparisions, the 2nd one may get the wrong result. e.g. long x = 10000, y = 19000; if (x > y) if (x < 2*y) // should be true V7.06 - June 25th 2007 [ Vista compatible licensing engine ] IDE/Compiler - Added checkbox and switch "Vectors start at 0xFFC0" / -dvec for 430X and other devices that has larger vector space. DLL - Includes 2.1.10 of MSP430.DLL Header files - New header files from TI V7.05A - Feb 14th 2007 IDE/Compiler - Added F22xx and F23xx as 430X devices V7.05 - Feb 8th 2007 IDE/Compiler - Added device listing for the 430X FG46xx devices. No > 64K addressing supported yet (TBD later in ADV/PRO versions). Compiler - Further improvement to 32 bit == != code (thanks to Kirk Bailey) - Interface to the 32 bit internal functions for longs and floating point now use R12/R13 in addition to R14/R15 for argument passing, resulting in smaller and faster code. To function names are slightly changed with the addition of a "x" suffix so any attempt to link with older libraries would correctly fail. Library - faster structure copying and str*/mem* functions TI DLL for flash programming and debugging - upgraded to the latest 2.8.1 of the MSP430.DLL and HIL.DLL Documentation - Fixed documentation to list R8/9 as volatile registers and not preserved registers V7.04 - Jan 11th 2007 Minor licensing changes IDE - Some of the F2xxx devices have the incorrect SRAM sizes - Added all latest devices Header Files - New header files from TI Linker - Static variables and functions now appear in the .mp MAP file Library - Much faster floating point divide function, courtesy of Jon Kirwan. V7.03 - Oct 16th 2006 Compiler - Much better code generation for 32 bit compare - Structure assignment via pointer was incorrectly trashing the pointer value after the copy Library - itoa/ltoa/print %d/%ld now print -32768 and -2147483648 (e.g. high bit on) instead of -0 V7.02A - August 29th 2006 Licensing should be more tolerant with laptop docking station, bluetooth devices etc. Compiler - MIO/PRO fixes and improvements - reverted to the V6 behaviors of single instruction Read-Write-Modify on volatile variables and IO registers. Library - abs was incorrect since V7.01 - added %p to printf and scanf V7.02 - July 18 2006 [ PRO version with MIO first release ] IDE - Added device settings for 200x and 201x devices - Added %D (for project directory) macro for command expansion IDE/Compiler - Added MIO global optimizer V7.01 - June 1 2006 Installer - Due to the fact that some customers have custom modified MSP430.dll for special JTAG device, the installer now always ask if the user wants to overwrite the DLL IDE/Compiler - After performing a "Project->SaveAs...", doing other project operations such as adding a file to the project may cause the IDE to generate an Access Violation error. - Project file list changes were not automatically saved when the IDE exited. C Preprocessor - Completely NEW C99 conformant C preprocessor (VARARGS macros etc.) Compiler/Library - Much faster conversion code between float and unsigned number Compiler - The compiler was not eliminating mov.b X,X note: if the operand is register, this sequence may still get emitted to zero out the upper byte - signed multiply by a constant of power of two was using the HW Multiply unit when it would be faster to do left shifting. Linker / Code Compressor (ADV/PRO only) - Calling a function outside of the text area (e.g. a bootloader function) was causing the code compressor to assert. Library - the low level Floating Point multiply routine using the HW multiplier was not disabling/enabling the interrupt and hence is not safe when used in an interrupt environment ICC430DL.exe (command line flash programming utility) - Added "blow security fuse" option: icc430dl -SECURE only work with USB JTAG. Use with care!!! V7.00 Feb. 28th, 2006 IDE - Added all known MSP430 flash devices to the device list - Corrected RAM memory map for devices with mirrored SRAM - File->"Close All Files" now have the option is save all or prompt for changes - Fixed a problem where if a project .src file is readonly, the IDE was not able to close the project. - Many miscellaneous GUI bug fixes and enhancements over V6 IDE Compiler - Improved global register allocation. - Improved local register allocation. Should see less register moves after a function call. - MUL by power of 2 are done by shifts regardless whether there is a MULT hardware unit or not - The sequence Jxx L1 JMP L2 L1: ... is now replaced by Jxx L2 Header Files - Added support for all known devices (courtesy of TI Inc.)