<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">
  <meta http-equiv="Content-Type" content=
  "text/html; charset=us-ascii">

  <title>MPLAB C Compiler for PIC32 v1.03, Release Notes</title>
<style type="text/css">
span {
        font-family: Arial;
        color: #000000;
        background: #FFFFFF;
        font-size: 10pt;
}
pre {
        font-family: monospace;
        color: #000000;
        background: #FFFFFF;
        font-size: 10pt;
}
p.Heading0, li.Heading0, div.Heading0, span.Heading0 {
        font-size:14.0pt;
        font-family:Arial;
        font-weight:bold;
}
h1 {
        margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:.3in;
        text-indent:-.3in;
        page-break-after:avoid;
        font-size:14.0pt;
        font-family:Arial;
}
h2 {
        margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:3.0pt;
        margin-left:.4in;
        text-indent:-.4in;
        page-break-after:avoid;
        font-size:12.0pt;
        font-family:Arial;
}
DL, DT, OL, UL, LI, DD {
    list-style-position: outside;
}
pre {
    font-family: monospace;
    font-size: 10pt;
}
table {
    font-size: 10pt;
}
</style>
<style type="text/css">
 :link { color: blue }
 :visited { color: purple }
 ol.c10 {list-style-type: decimal;}
 dl.c9 {font-weight: normal; font-size: 10pt;}
 li.c8 {font-weight: bold;}
 span.c7 {font-style: italic;}
 span.c6 {font-weight: bold;}
 ul.c5 {font-weight: normal; font-size: 10pt;}
 span.c4 {color: green; font-size: 120%}
 ol.c3 {font-weight: normal; font-size: 10pt;}
 span.c2 {color: green}
 p.c1 {font-weight: normal; font-size: 10pt;}
</style>
</head>

<body lang="EN-US">
  <div class="Heading0">
    Release Notes for MPLAB<sup>&reg;</sup> C Compiler for PIC32
    MCUs<br>
  </div>v1.03<br>
  3 July 2008<br>
  <br>

  <div class="Heading0">
    Table of Contents
  </div>

  <ol>
    <li><a href="#Overview">Overview</a></li>

    <li><a href="#GPL">GNU General Public License</a></li>

    <li><a href="#Devices">Devices Supported</a></li>

    <li><a href="#Install">Installation</a></li>

    <li><a href="#Document">Compiler Documentation</a></li>

    <li><a href="#WhatsNew">What's New</a></li>

    <li><a href="#Migration">Migration Issues</a></li>

    <li><a href="#DocUpdate">Documentation Updates</a></li>

    <li><a href="#Fixes">Fixed Issues</a></li>

    <li><a href="#Limits">Limitations</a></li>

    <li><a href="#TimeDemo">Time-Limited Evaluation
    Edition</a></li>

    <li><a href="#Support">Customer Support</a></li>
  </ol>
  <hr>
  <br>

  <ol class="c10">
    <li class="Heading0">
      <h1><a name="Overview" id="Overview">Overview</a></h1>

      <p class="c1">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 <a href="#TimeDemo">time-limited evaluation
      edition</a>.</p>

      <p class="c1">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 (pic30-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.</p>
    </li>

    <li class="Heading0">
      <h1><a name="GPL" id="GPL">GNU General Public
      License</a></h1>

      <p class="c1">The <i>MPLAB<sup>&reg;</sup> C Compiler for
      PIC32 MCUs</i> 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.</p>

      <p class="c1">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
      <a href=
      "http://www.gnu.org/copyleft">www.gnu.org/copyleft</a>.</p>

      <p class="c1">Support code provided for the header files,
      linker scripts, and runtime libraries are proprietary code
      and not covered under the GPL. See the full
      <i>MPLAB<sup>&reg;</sup> C Compiler for PIC32 MCUs</i>
      License Agreement for details.</p>
    </li>

    <li class="Heading0">
      <h1><a name="Devices" id="Devices">Devices Supported</a></h1>

      <p class="c1">The following PIC32MX devices are
      supported:<br>
      <span class="c2">New items in green.</span></p>

      <table align="center" border="2" cellpadding="3" cellspacing=
      "3" summary="PIC32MX Part Support">
        <tbody>
          <tr>
            <th>Part Number</th>

            <th>Part Number</th>
          </tr>

          <tr>
            <td align="center">PIC32MX320F032H</td>

            <td align="center">PIC32MX320F064H</td>
          </tr>

          <tr>
            <td align="center">PIC32MX320F128H</td>

            <td align="center">PIC32MX320F128L</td>
          </tr>

          <tr>
            <td align="center">PIC32MX340F128H</td>

            <td align="center">PIC32MX340F128L</td>
          </tr>

          <tr>
            <td align="center">PIC32MX340F256H</td>

            <td align="center">PIC32MX340F512H</td>
          </tr>

          <tr>
            <td align="center">PIC32MX360F256L</td>

            <td align="center">PIC32MX360F512L</td>
          </tr>

          <tr>
            <td align="center">PIC32MX420F032H</td>

            <td align="center">PIC32MX440F128H</td>
          </tr>

          <tr>
            <td align="center">PIC32MX440F128L</td>

            <td align="center">PIC32MX440F256H</td>
          </tr>

          <tr>
            <td align="center">PIC32MX440F512H</td>

            <td align="center">PIC32MX460F256L</td>
          </tr>

          <tr>
            <td align="center">PIC32MX460F512L</td>

            <td align="center">PIC32MXGENERIC</td>
          </tr>
        </tbody>
      </table>

      <p class="c1">The PIC32MXGENERIC device is, as its name
      implies, a non-specific target that can be used to represent
      a generic core device.</p>
    </li>

    <li class="Heading0">
      <h1><a name="Install" id="Install">Installation</a></h1>

      <p class="c1">If using MPLAB IDE, be sure to install MPLAB
      IDE v8.00 or later before installing these tools.</p>

      <p class="c1">To install the <em>MPLAB<sup>&reg;</sup> C
      Compiler for PIC32 MCUs</em> tools, perform the following
      steps:</p>

      <ol class="c3">
        <li>Locate the setup program on the
        <em>MPLAB<sup>&reg;</sup> C Compiler for PIC32 MCUs</em> CD
        ROM.</li>

        <li>Run the setup program.</li>

        <li>Follow the directions on the screen.</li>

        <li>If the installation program indicates that it is
        necessary, reboot your computer to complete the
        installation.</li>

        <li>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).

          <p>From a Windows command prompt (cmd.exe), type:
          c:\&gt;PATH</p>
        </li>
      </ol>
    </li>

    <li class="Heading0">
      <h1><a name="Document" id="Document">Compiler
      Documentation</a></h1>

      <p class="c1">The following documents pertain to the
      MPLAB<sup>&reg;</sup> C Compiler for PIC32 MCUs. They may be
      installed as part of the full product or downloaded from
      <a href="http://www.microchip.com/c32">Microchip's
      website</a>:</p>

      <ul class="c5">
        <li><cite>MPLAB<sup>&reg;</sup> C32 C Compiler User's Guide
        (DS51686A)</cite></li>

        <li><cite>MPLAB<sup>&reg;</sup> C32 C Compiler Libraries
        (DS51685A)</cite></li>

        <li><cite>PIC32 Peripheral Libraries for
        MPLAB<sup>&reg;</sup> C32 Compiler</cite></li>
      </ul>
    </li>

    <li class="Heading0">
      <h1><a name="WhatsNew" id="WhatsNew"></a>What's New</h1>

      <h2>New Features in v1.03</h2>

      <ul class="c5">
        <li><strong>Optimized math library</strong> -- The
        floating-point math library provided with the compiler has
        been significantly optimized to take full advantage of the
        PIC32 instruction set. The improved library provides the
        greatest benefit for the more complex operations, offering
        a greater than 5x performance improvement over the 1.02
        library for many operations and an even more significant
        improvement for some operations. In addition,
        single-precision math library functions are now available,
        giving users a choice between double- and single-precision
        operations. See math.h for more information.</li>
      </ul>

      <ul class="c5">
        <li><strong>Time-Limited Evaluation Edition</strong> -- The
        new evaluation edition provides <strong>full functionality
        for 60 days</strong>. After the evaluation period has
        expired, the compiler becomes feature limited. See <a href=
        "#TimeDemo">this section</a> for further details.</li>
      </ul>

      <ul class="c5">
        <li><strong><tt>__C32_VERSION__</tt> predefined
        macro</strong> -- The C compiler defines the constant
        <tt>__C32_VERSION__</tt>, giving a numeric value to the
        version identifier. This macro can be used to construct
        applications that take advantage of new compiler features
        while still remaining backward compatible with older
        versions. The value is based upon the major and minor
        version numbers of the current release. For example,
        release version 1.03 will have a <tt>__C32_VERSION__</tt>
        definition of 103. This macro can be used, in conjunction
        with standard preprocessor comparison statements, to
        conditionally include/exclude various code constructs.</li>
      </ul>

      <ul class="c5">
        <li>
          <strong><tt>__ISR_SINGLE__</tt> and
          <tt>__ISR_SINGLE_AT_VECTOR__</tt> convenience
          macros</strong> -- The sys/attribs.h header file now
          provides two new macros intended to simplify the use of
          the single-vector interrupt mechanism. See the
          sys/attribs.h header file for more information.

          <ul>
            <li>The <tt>__ISR_SINGLE__</tt> macro specifies a
            function as an interrupt-service routine in
            single-vector mode. This will place a jump at the
            single-vector location to the interrupt handler.</li>

            <li>The <tt>__ISR_SINGLE_AT_VECTOR__</tt> macro places
            the entire single-vector interrupt handler at the
            vector 0 location. The user is responsible for ensuring
            that the vector spacing is set to accommodate the size
            of the handler.</li>
          </ul>
        </li>
      </ul>
    </li>

    <li class="Heading0">
      <h1><a name="Migration" id="Migration"></a>Migration
      Issues</h1>

      <p class="c1">The following changes may affect migration from
      older versions of the compiler.</p>

      <h2>Migrating to Version v1.03</h2>

      <ul class="c5">
        <li class="c8">Peripheral Library

          <ul class="c5">
            <li>Modified SYSTEMConfigXXX functions to use revised
            flash speed of 30 MHz. If you are currently using a
            SYSTEMConfigXXX function, your application will
            automatically use the new flash-speed
            specification.</li>
          </ul>
        </li>

        <li class="c8">Examples

          <ul class="c5">
            <li>Modified all plib_examples to use SYSTEMConfig()
            function. This function allows users to selectively
            configure certain parameters only.</li>
          </ul>
        </li>
      </ul>

      <h2>Migrating to Version v1.02</h2>

      <ul class="c5">
        <li>
          <span class="c6">Processor Header files</span>

          <ul>
            <li>Removed Extended Mode (XM bit) in DMA
            controller</li>
          </ul>
        </li>

        <li class="c8">Peripheral Library<br>

          <ul class="c5">
            <li>DMA Extended mode is removed. The maximum transfer
            length is now 256 bytes, even for memory copy and CRC
            functions.</li>

            <li>Symbols DMA_OPEN_NORM and DMA_OPEN_EXT used in the
            DmaChnOpen() call were removed. A new symbol,
            DMA_OPEN_DEFAULT was added.<br></li>

            <li>A new function, DmaGetMaxTxferSize() was added, to
            return the maximum supported size of a transfer,
            variant dependent. Right now, only 256 bytes transfer
            size supported.<br></li>

            <li>DmaChnSetExtTxfer() was removed, no longer
            relevant.<br></li>

            <li>DMA_CTL_EXT_EN was removed from the low level
            access routines</li>

            <li>SYSTEMConfig() function was added to enable
            user-specified configuration for a given system
            frequency.</li>
          </ul>
        </li>
      </ul>
    </li>

    <li class="Heading0">
      <h1><a name="DocUpdate" id="DocUpdate"></a>Documentation
      Updates</h1>

      <p class="c1">This section describes pending updates to the
      <em>MPLAB C Compiler for PIC32</em> documentation. These
      changes will be incorporated into the next full revision of
      the documents.</p>

      <ul class="c5">
        <li><strong><tt>__VERSION__</tt> predefined macro</strong>
        -- The <tt>__VERSION__</tt> macro expands to a string
        constant describing the compiler in use. Do not rely on its
        contents having any particular form, but it should contain
        at least the release number. Use the
        <tt>__C32_VERSION__</tt> macro for a numeric version
        number.</li>

        <li><strong>Interrupt-vector macros</strong> -- Each
        processor-support header file (e.g.
        \pic32mx\include\proc\p32mx360f512l.h) provides a macro for
        each interrupt-vector number. When used in conjunction with
        the <tt>__ISR()</tt> macro provided by the sys\attribs.h
        header file, these macros help make an interrupt service
        routine easier to write and maintain. Example: <tt>void
        __ISR (<em>_TIMER_1_VECTOR</em>, ipl7) Timer1Handler
        (void);</tt></li>
      </ul>
    </li>

    <li class="Heading0">
      <h1><a name="Fixes" id="Fixes">Fixed Issues</a></h1>

      <p class="c1">The following issues have been resolved in this
      release</p>

      <h2>Fixed in v1.03</h2>

      <dl class="c9">
        <dt>BIN32-30:</dt>

        <dd>Assertion statements in the linker scripts now
        correctly compare the size of an exception vector to the
        vector spacing.</dd>

        <dt>C32-179:</dt>

        <dd>The gmtime() library function now links without error.
        In previous releases, the linker would complain about an
        undefined reference to 'offtime_r'</dd>

        <dt>C32-172:</dt>

        <dd>The config pragma now defaults the DEVCFG0 MSb to
        zero.</dd>

        <dt>C32-171:</dt>

        <dd>The first call to getchar() now calls _mon_getc(). The
        previous implementation treated the initial STDIN character
        as an ungetc() pushed-back character.</dd>

        <dt>C32-164:</dt>

        <dd>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.</dd>

        <dt>C32-147:</dt>

        <dd>The interrupt attribute now properly accepts an
        uppercase IPLx value. Earlier compiler versions could
        reject the uppercase IPLx with an internal error.</dd>
      </dl>

      <h2>Fixed in v1.02</h2>

      <dl class="c9">
        <dt>C32-119:</dt>

        <dd>Removed pipeline interlock in ISR handling</dd>

        <dt>C32-141:</dt>

        <dd>Large <tt>malloc()</tt> calls no longer generate a
        general exception vector instead of returning a NULL
        pointer.</dd>

        <dt>C32-144:</dt>

        <dd>Interrupt macro now sets <tt>nomips16</tt></dd>

        <dt>C32-145:</dt>

        <dd>Include C startup code source is now provided in the
        standard distribution</dd>

        <dt>C32-151:</dt>

        <dd>IPL7 prologue code now sets incorrect bits in status
        register</dd>
      </dl>
    </li>

    <li class="Heading0">
      <h1><a name="Limits" id="Limits">Limitations</a></h1>

      <p class="c1">The current limitations are as follows.</p>

      <h2>Assembler</h2>

      <p class="c1">None reported.</p>

      <h2>Compiler</h2>

      <dl class="c9">
        <dt>C32-064:</dt>

        <dd><tt>-Os -mips16</tt> cannot correctly process a routine
        with a large number of common subexpressions.</dd>
      </dl>
    </li>

    <li class="Heading0">
      <h1><a name="TimeDemo" id="TimeDemo">Time-Limited Evaluation
      Edition</a></h1>

      <p class="c1"><strong>Feature Limitations</strong> -
      Microchip provides a <em>free</em> time-limited evaluation
      edition of the <em>MPLAB C Compiler for PIC32 MCUs</em>. The
      evaluation edition of the compiler provides <strong>full
      functionality for 60 days</strong>. 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.</p>

      <p class="c1"><strong>Upgrading to a full license</strong> -
      For applications requiring additional code efficiency, as
      well as full support via <a target="external" href=
      "http://support.microchip.com">http://support.microchip.com</a>,
      users are encouraged to upgrade to a full-edition compiler
      license. For further information on upgrading to a
      full-edition license (Part Number: SW006015), visit
      <a target="external" href=
      "http://microchipdirect.com/productsearch.aspx?Keywords=SW006015">
      http://www.microchipdirect.com</a> or contact your preferred
      Microchip distributor.</p>

      <p class="c1">Once you've obtained a full-edition 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.</p>
    </li>

    <li class="Heading0">
      <h1><a name="Support" id="Support">Customer Support</a></h1>

      <p class="c1">Microchip provides online support via our home
      page at:<br>
      <a target="external" href=
      "http://www.microchip.com">http://www.microchip.com</a></p>

      <p class="c1">Technical support is available through the web
      site at:<br>
      <a target="external" href=
      "http://support.microchip.com">http://support.microchip.com</a></p>

      <p class="c1">A forum for discussion of Microchip products
      and tools is available at:<br>
      <a target="external" href=
      "http://forum.microchip.com">http://forum.microchip.com</a></p>

      <p class="c1">Microchip PIC32 documentation and product info
      is available at:<br>
      <a target="external" href=
      "http://www.microchip.com/pic32">http://www.microchip.com/pic32</a></p>
    </li>
  </ol>
</body>
</html>
