Make sure you subscribe to the icc-430 mailing list for program update announcements. Send email to icc-430-subscribe@yahoogroups.com to sign up. CHANGE LOGS: V7.12C - March 19th, 2012 Compiler / Library - FP multiply and 32 bit multiply for the 54xx devices were using incorrect IO addresses Linker / Code Compressor - Fixed a long standing bug in the code compressor where a CALL to an address outside of the text area (e.g. a handcrafted RAM function) was not handled correct and the incorrect call address was generated. Library - fixed defect in setjmp V7.12B - Dec 7th 2010 IDE - Added device entries for the CC430 cores Compiler - For asm("...%a") where "a" is the first non-register local variable, the compiler was emitting the incorrect code. - The compiler was generating incorrect code for "reverse subtract" for aggregate variables, e.g. int a[2], b[2]; b[1] = a[1] - b[1]; // <-- incorrect code was generated - For 430X only, now use absolute addressing mode to access global variables. Previously symbolic (relative) addressing was used and it does not work for variables located above 64K. Assembler / Linker - the support for MOVA and other extended 430X instructions were incorrect for immediate addresses V7.12A - Nov 10th, 2009 Compiler - typo in hardware multiplier code emitted "movb" instead of "mov.b" V7.12 - Oct 19th, 2009 7.11.02 has a bug with the listing file generator complaing "XXXX.s file not found" if Project->Options->Compiler->OutputType is set to "with assembly debugging." This does not affect code generation and is fixed in this release. IDE/Compiler - Added support for F54xx where the 32-bit multiplier is at a different address that the 16-bit multiplier in the other MSP430 devices: - added -hwmult2 switch to the compiler iccom430.exe - add support for the 32 bit multiplier for 32 bit multiplies - added radio buttons to select hardware multiplier type for custom device V7.11.02 - Oct 2nd, 2009 [ Added 64 bits dongle driver ] Compiler - Fixed a latent bug where extern func(unsigned, unsigned long, ... ... func(1, 0, ... was passing the wrong first argument. The arguments must be constant and the first argument must be one greater than the second argument (which must be a long) for this bug to show up. - Fixed a bug where the compiler did not save/restore R12-R15 if they are used within an interrupt handler. This only happened if the interrupt handler has a lot of local variables. - Fixed Register History to ignore read/write to the SR register. Linker - Round up the memory percent usage display instead of truncating (i.e. no longer display "0% used"). - Fixed a bug with 430X address range V7.11 - Sept 9, 2009 IDE - "Custom" device was not passing the RAM start address to the makefile properly. - Much faster startup time for the IDE - IDE now keeps a "Build Number" for each project. This is passed to the linker and emitted to the top of the .mp map file. - Added -D__BUILD for the Build Number. - Changed -D__ICC_VERSION=XXX where XXX is the version in integer form, e.g. 707. This allows easier conditional compilation. - Added %v (version) and %b (build number) to the macro chars for the "Execute Before Build" and "Execute After Successful Build" command box. - Modified the "checking" options, now they are "Strict Checking" (equivalent to -A command line switch). "ANSI C Portability Conformance Checking" (equivalent to -A -A). This does draconian check on conditions that exceed ANSI C minimum limits (e.g. less than 512 variables) and is usually not needed. Asm/linker - Fixed several 430X related issues. Header Files and MSP430.DLL - new releases from TI V7.10/7.10A - April 6th 2009 [ ADV/PRO only: Added basic 430X support for > 64K addressing. If you enable the "Enable 430X" checkbox under Project->Options->Target, the compiler will use CALLA/RETA for function calls. Literals and constants and interrupt handlers must reside in the lower 64K page, and this is the default unless you have large amount of such items and they overflow to the upper 64K page. There is currently no check when this happens. We will add the support later. You can check by doing View->MapFile to see where things are allocated. Currently, neither the ICC430IDE's flash downloader nor NoICE-430 can download to the upper 64K. To flash the full address range, you will need to use another flash downloader. We have good luck with the free LITE downloader from Elprotronic (http://www.elprotronic.com) ] TI header files, HIL.DLL and MSP430.DLL - Version 2.4.0.0.1 of the DLL and latest (Mar 2009) header file release from TI. Listing File Generator (ilst430) - Enhancements: == better display of global data references, e.g. (0021) x.i = 5; 05E40 40B0 0005 BDC6 mov #5,x+10 == Use 5 hex digits to display the address V7.09 - Jan 11th, 2009 Enabled the -NC Non-Commercial Use license. IDE - Added entries for F54xx Compiler - Better code for checking for inequality against zero - Fixed problem with inline asm with local variables that did not get allocated to registers Asm - Code cleanup to prepare for 430X (no 430X support yet). 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.)