AQ430X Code Development Tools: Differences between versions
(Bugs are highlighted in RED)


Released  5/1/2007

First release


Released  5/19/2007

 * Fixed edit context menu in text mode
 * Added per project file save and restore


Released 5/26/2007

  • Fixed simulator problem
  • Added memory use indication to make/build without load


Released 6/10/2007

  • Fixed tab/ number of spaces problem in editor customization


Released 8/12/2007

  • Fixed a bug in AQ430LINK, which was causing the linker to quit with an internal error in "reorder_segs".
  • Fixed a bug in AQ430LINK, which was causing the linker to ignore ldseg= directives when an lddata= directive (used always for the msp430x) is in effect.
  • Fixed a bug in AQ430C, which was causing the compiler to terminate abnormally, due to a botch in the program code, when checking to see if an indirection through a bit field reference contains an operator which requires the use of a function call.
  • Fixed a bug in the new floating point multiply function, that was causing the function to return infinity instead of zero, when the exponent of the result was too small to represent.
  • Compiles for the MSP430x now create a separate code segment for each function, instead of for each file, being compiled. This will decrease the average code segment size, making it much less likely that there could be a linking failure due to being unable to fit a bunch of large code segments into the available address space, which has a gap in the middle for the interrupt vectors. However, any single function must take up less than 64K.
  • Fixed bug that kept loading previous executable when new compilation of project has errors
  • Added menu option to skip interrupts while stepping
  • Added menu option to keep warning and error messages in the output window rather than erasing them for each new file compile
  • Added menu option to insert an aq430x project in a workspace


Released 9/3/2007

  • Added “tabbed view” for source files
  • Fixed problem with display of individual status bits in CPU window
  • We fixed a bug which caused the register allocator to emit a  "suspicious move instruction" error when

generating code for a multiplication of two 16 bit operands to produce a 32 bit result, and when the option "-Vhw_mul=2" (use multiplier in unprotected mode) was in effect.


Released 9/13/2007

  • We fixed a bug in the code generated for register saves/restores for the msp430x, whereby the compiler was assuming that the registers to be preserved were in a single contiguous set, suitable for pushm/popm, when in fact they were not.


Released 9/22/2007

  • Added support for MSP430F43x1
  • Fixed bug in File/Open when workspace is empty (used to call File/New)
  • Fixed a problem with the assembler, whereby it was restricting the range of pc-relative addresses to (-32768,32767). It now allows a range of (-32768,65536), on the understanding that the resulting 16 bit values are treated as signed.


Released 10/17/2007

  • Added support for latest MSP430 releases (MSP430F47xx, MSP430F24x, MSP430F235, MSP430F233,  MSP430F24x1, MSP430F2410
  • This release corrects a bug in the most recent linker whereby it was failing to allocate space code a code segment with an address specified by ldseg= in front of data segments specified by ldseg+=, which could cause the linker to be unable to find space for the code segment.
  • The IDE will no longer warn about erasing the calibration segment, if it is excluded from erasure in the special user defined protected zones


Released 12/08/2007

  • Added feature to arrange files alphabetically in projects
  • Fixed bug that could cause crash if user picked one of the last chips in the list
  • Added support for MSP430F24x


Released 1/13/2008

  • Improved watch of multidimensional arrays and structures of structures
  • Fixed bug with interrupt vector table for F24x


Released 2/24/2008

  • Added support for F21x2
  • Improved watch of multidimensional arrays in structures
  • Fixed bug related to full path/ name display
  • Added support for .dat files to add command line parameters to C compiler


Released 3/2/2008

  • Fixed bug that caused a program to run once just after being loaded, under certain conditions.


Released 3/28/2008

  • Fixed bug in floating point library, relative to comparison of floats


Released 5/4/2008

  • Fixed problems with make vs build
  • We have changed the MDF file, which is built into AQ430PACK, to correct

an error whereby it was using a 16 bit branch instead of a 20 bit branch

for the msp430x, whenever the distance between the branch source and

the branch target exceeded the short branch range of -1024,+1022

instructions. This error was causing msp430 programs to fail when

the 16 bit branch instruction was used at addresses at or above 0x10000.


In order to force code entered from the an interrupt vector on an msp430x

to be in the lower 64K, we have made the following changes:


      - aq430link.exe now includes a default directive


        which will force any segment whose name contains "_IV" to be placed

        into the lower 64K of flash.

      - _INTERRUPT functions generated by AQ430C for the msp430x will have

       "_IV" in their unique segment name.

      - The standard startup file "cstart.asm" has had the the name of

        the code segment that contains the startup code changed to be

        "cstartup$code_IV", so that it will be linked into the lower 64K

        when built with -Vmsp430x=1 in effect.


Any user writing an interrupt handler in assembler for an msp430x processor

should either include "_IV" in the code segment name or else use an

individual linker ldseg=name+=0,0xffff directive to request the linker

to put the segment into the lower 64K.


Released 6/1/2008

  • Fixed problem with long long arithmetic
  • Added  missing aql file for F22x2


Released 7/27/2008

  • Fixed problem in watch of certain bit fields in structure
  • Now give better error message for missing labels in assembly, due to unused C code
  • Beta support for MSP430f54xx


Released 8/28/2008

  • Fixed bug in sscanf and sprintf which could occur in chips with memory larger than 64K


Released 11/2/2008

  • Fixed bug in display of sfr registers
  • Added support for Fx2xA


Released 11/15/2008

  • We changed the C compiler to permit the code generator to allow left shifts and right shifts of pointer types, which can

come up, in the left shift case, if a pointer is multiplied by a power of 2.

  • Fixed a bug in the display of program memory above 0x10000 for MSP430F54xx


Released 12/06/2008

  • Fixed a bug in the C compiler and libraries to handle hardware multiplier for MSP430F54xx (since the multiplier registers are at different addresses). We also now take advantage of the 32 bit HW multiplier, if applicable
  • Fixed a bug in the watch window, relative to bit fields in unions


Released 2/28/2009

  • Fixed a bug in the C compiler, whereby, when given a declaration like _DMEM2 int x @ 0x1000; the compiler was using a .zero instead of a .bss to reserve space for the rom memory variable.
  • Added support for the following chips: MSP430FG477, MSP430FG478, MSP430FG479 ,MSP430F477, MSP430F478, MSP430F479 ,MSP430F47197,MSP430F47187,MSP430F47177, MSP430F47196,MSP430F47186,MSP430F47176, MSP430F4152, MSP430F4132                                


Released 8/3/2009

  • Txt file now is always created in exe subfolder
  • Fixed bug related to running from CPU OFF mode in certain chips, notably 54xx
  • Fixed bug related to clearing info memory on 54xx (would fail every other time, in some cases)


Released 10/17/2009

  • Added support for MSP430F54xxa


Released 12/6/09/2009

  • Fixed problem with sfr window for MSP430F54xxa
  • Fixed problem with aql files for MSP430FG4616 and 17


Released 1/30/2010

  • No changes to the executable file. Added RTC workaround library (RTC_WorkaroundLib.lib) in include folder, as well as source code in example folder
  • Included corrected .h files for MSP430x54x in include folder


Released 5/15/2010

  • Fix bug in definition of certain chips (no HW multiplier seen)
  • added the command line option "-Vdo_switch_fix=1" to the AQ430 C compiler, to work around a problem with the (MSP430X) MSP430F5438A, whereby a "br label_table(Rn)" instruction was failing because the address of the label table was being (wrongly) sign extended by the hardware. The new command line option addresses this problem by generating slightly different code sequence when accessing a switch jump table. (it is inserted automatically by the IDE for 5438A parts)
  • Added new functions which safely allow access to data in flash  at addresses above 0xffff. These are








These functions will work for the non-msp430x parts, as well.



Released 10/3/2010


        We fixed a problem with ceil(), whereby it was computing ceil(0.9999) as 0.0 instead of as 1.0. The floor() function was broken as well.


        We fixed a "feature" of the linker, whereby an ldseg= directive to load a specific segment at a specific address could be silently ignored if the segment name was found to match an ldseg= directive using a regular expression.


        We fixed a bug in the 32 bit signed divide function, reported by a customer in Japan, which was causing incorrect results when the dividend was a large negative number (<-32768) and the divisor was positive.

        We introduced a new installation procedure, which should be more robust and work on newer OS