Release Notes for MPLAB® C Compiler for PIC32 MCUs

v1.05
March 2009

Table of Contents

  1. Overview
  2. GNU General Public License
  3. Devices Supported
  4. Installation
  5. Compiler Documentation
  6. What's New
  7. Migration Issues
  8. Documentation Updates
  9. Fixed Issues
  10. Limitations
  11. Feature-Limited Versions
  12. Customer Support


  1. Overview

    The 32-Bit language tools consist of a compiler (pic32-gcc.exe), an assembler (pic32-as.exe), a linker (pic32-ld.exe), and an archiver/ librarian (pic32-ar.exe). Additional tools distributed with this release include a binary to Intel[intl] Hex converter (pic32-bin2hex.exe) and miscellaneous binary utilities (pic32-strip.exe, pic32-strings.exe, pic32-readelf.exe, etc). In addition, the compiler utilizes a license manager (pic32-lm.exe) as part of the time-limited evaluation version.

    As described in the user's guides, all of the language tools are sensitive to case on the command line, including the case of file names. In particular, the C compiler shell (pic32-gcc) requires that C source files be named on the command-line with a lower-case .c extension. If an upper-case .C filename extension is used, the compiler assumes that the file is a C++ file, which is not supported. Similarly, the compiler shell passes a file with an upper-case .S filename extension through the C preprocessor before passing it to the assembler, but it passes a file with a lower-case .s extension directly to the assembler.

  2. GNU General Public License

    The MPLAB® C Compiler for PIC32 MCUs tools are written and distributed under the GNU General Public License (GPL) which means that its source code is freely distributed and available to the public.

    The source for the tools under the GNU GPL may be downloaded separately from the Microchip WWW web page. You may read the GNU GPL in the file named COPYING located the docs subdirectory of your install directory. A general discussion of principles underlying the GPL may be found at www.gnu.org/copyleft.

    Support code provided for the header files, linker scripts, and runtime libraries are proprietary code and not covered under the GPL. See the full MPLAB C Compiler for PIC32 MCUs License Agreement for details.

  3. Devices Supported

    The following PIC32MX devices are supported:
    (No new devices for v1.04 or v1.05)

    Part Number Part Number
    PIC32MX320F032H PIC32MX320F064H
    PIC32MX320F128H PIC32MX320F128L
    PIC32MX340F128H PIC32MX340F128L
    PIC32MX340F256H PIC32MX340F512H
    PIC32MX360F256L PIC32MX360F512L
    PIC32MX420F032H PIC32MX440F128H
    PIC32MX440F128L PIC32MX440F256H
    PIC32MX440F512H PIC32MX460F256L
    PIC32MX460F512L PIC32MXGENERIC

    The PIC32MXGENERIC device is, as its name implies, a non-specific target that can be used to represent a generic core device.

  4. Installation

    If using MPLAB IDE, be sure to install MPLAB IDE v8.10 or later before installing these tools.

    To install the MPLAB C Compiler for PIC32 MCUs tools, perform the following steps:

    1. Locate the setup program on the 'MPLAB C Compiler for PIC32 MCUs' CD ROM.
    2. Run the setup program.
    3. Follow the directions on the screen. To install the evaluation version, leave the license-key field blank when prompted. To install the full version, enter your full license key.
    4. If the installation program indicates that it is necessary, reboot your computer to complete the installation.
    5. When the installation is complete, verify that the executable directory has been correctly added to your PATH (i.e., if you chose to install the tools in the default directory, c:\Program Files\Microchip\MPLAB C32, then ensure that c:\Program Files\Microchip\MPLAB C32\bin has been added to your PATH. On some systems, the default path is c:\Program Files\Microchip\MPLAB C32 Suite.).

      From a Windows command prompt (cmd.exe), type: c:\>PATH

  5. Compiler Documentation

    The following documents pertain to the MPLAB C Compiler for PIC32 MCUs. They may be installed in the compiler's doc subdirectory, but you should check Microchip's website for the latest revisions.

    Additional documentation on the GNU Assembler and Linker is available on the GNU Binutils website.

  6. What's New

    New Features in v1.05

  7. New Features in v1.04

    New Features in v1.03

  8. Migration Issues

    The following changes may affect migration from older versions of the compiler.

    Migrating to Version v1.05

    Migrating to Version v1.04

    Migrating to Version v1.03

    Migrating to Version v1.02

  9. Documentation Updates

    Compiler documentation updates

    This section describes pending updates to the MPLAB C Compiler for PIC32 documentation. These changes will be incorporated into the next full revision of the documents.

    Linker documentation updates

    This section describes important MPLAB Linker for PIC32 information that will be included in future linker documentation

  10. Fixed Issues

    The following issues have been resolved in this release

    Fixed in v1.05

    C32-064:
    Code generated using -Os -mips16 and a very large number of common subexpressions now compiles correctly.
    C32-232:
    Interrupt context-saving code now preserves the assembler temporary ($at) register. While the compiler does not use this register for standard C code, the general DSP library or the optimized math library use this register.
    Peripheral Library:
    The peripheral-library source files listed below contain fixes and improvements. See the updated peripheral-library documentation for further details.
    • pic32mx/include/peripheral/int.h
    • pic32mx/include/peripheral/incap.h
    • pic32mx/include/peripheral/nvm.h
    • pic32mx/include/peripheral/dma.h
    • pic32mx/include/peripheral/ports.h
    • pic32mx/include/peripheral/uart.h
    • pic32mx/include/peripheral/i2c.h
    • pic32mx/include/peripheral/outcompare.h
    • pic32mx/include/peripheral/cmp.h
    • pic32mx/include/peripheral/timer.h
    • pic32mx/include/peripheral/reset.h
    • pic32mx/include/peripheral/pcache.h
    • pic32mx/include/peripheral/system.h
    • pic32mx/include/peripheral/bmx.h
    • pic32-libs/peripheral/nvm/source/nvm_operation_lib.c
    • pic32-libs/peripheral/i2c/source/idle_i2c2_lib.c
    C32-42:
    The compiler now emits a more useful diagnostic message when multiple -mprocessor options appear on the command line.

    Fixed in v1.04

    No significant fixed issues for this release

    Fixed in v1.03

    BIN32-30:
    Assertion statements in the linker scripts now correctly compare the size of an exception vector to the vector spacing.
    C32-179:
    The gmtime() library function now links without error. In previous releases, the linker would complain about an undefined reference to 'offtime_r'
    C32-172:
    The config pragma now defaults the DEVCFG0 MSb to zero.
    C32-171:
    The first call to getchar() now calls _mon_getc(). The previous implementation treated the initial STDIN character as an ungetc() pushed-back character.
    C32-164:
    The device-specific header files now use '__asm__' rather than 'asm' when mapping each SFR struct to it's symbol name. Previous versions of these files did not compile when building with the compiler's -ansi option.
    C32-147:
    The interrupt attribute now properly accepts an uppercase IPLx value. Earlier compiler versions could reject the uppercase IPLx with an internal error.

    Fixed in v1.02

    C32-119:
    Removed pipeline interlock in ISR handling
    C32-141:
    Large malloc() calls no longer generate a general exception vector instead of returning a NULL pointer.
    C32-144:
    Interrupt macro now sets nomips16
    C32-145:
    Include C startup code source is now provided in the standard distribution
    C32-151:
    IPL7 prologue code now sets incorrect bits in status register
  11. Limitations

    The current limitations are as follows.

    Compiler

    DAYHLD-10:
    For PIC32MX USB devices, such as the PIC32MX440F512H, the USB PLL Input (UPLLIDIV) config pragma setting has values DIV_10 and DIV_12 incorrectly named DIV_7 and DIV_8 respectively.

    Assembler

    None reported.

  12. Feature-Limited Versions

    Time-Limited Evaluation Version

    Feature Limitations - Microchip provides a free time-limited evaluation version of the MPLAB C Compiler for PIC32 MCUs. The evaluation version of the compiler provides full functionality for 60 days. After the evaluation period has expired, the compiler becomes feature limited, and optimization features associated with levels -O2, -O3, and -Os are disabled. In addition, MIPS16 code generation is disabled. The compiler continues to accept the -O1 and -O0 optimization levels indefinitely.

    Installing the evaluation version - To install the time-limited evaluation version of the compiler, run the evaluation version installer and follow the on-screen instructions. If the installer asks for a license key, leave the field blank and continue.

    Upgrading to a full version license - For applications requiring additional code efficiency, as well as full support via http://support.microchip.com, users are encouraged to upgrade to a full-version compiler license. For further information on upgrading to a full-version license (Part Number: SW006015), visit http://www.microchipdirect.com or contact your preferred Microchip distributor.

    Once you've obtained a full-version license key, run the Upgrader tool (pic32-upgrader\upgrader.exe) as a Windows administrator. After you enter your license key and press the Upgrade button, the license manager should then report the license upgrade status.

    Academic Version

    Feature Limitations - Microchip provides a free academic version of the MPLAB C Compiler for PIC32 MCUs intended for use in academic projects. This version of the compiler does not support optimization features associated with levels -O2, -O3, and -Os. In addition, this version does not support MIPS16 code generation.

    Upgrading to a full or evaluation version - To take advantage of the advanced optimization and MIPS16 code generation features, you can upgrade to a full or 60-day evaluation version. To upgrade to a full or 60-day evaluation version, uninstall the academic version using the standard Windows Add/Remove Programs feature. Next, install the full or evaluation version by running the appropriate installer and following the on-screen instructions.

  13. Customer Support

    Microchip provides online support via our home page at:
    http://www.microchip.com

    Technical support is available through the web site at:
    http://support.microchip.com

    A forum for discussion of Microchip products and tools is available at:
    http://forum.microchip.com

    Microchip PIC32 documentation and product info is available at:
    http://www.microchip.com/pic32

    MPLAB® C Compiler for PIC32 MCUs updates and information are available at:
    http://www.microchip.com/c32