Mplab C Compiler Guide
Rapports de Stage : Mplab C Compiler Guide. Recherche parmi 300 000+ dissertationsPar littlesurfeur • 22 Novembre 2012 • 15 056 Mots (61 Pages) • 1 119 Vues
Release Notes for MPLAB® C Compiler for PIC18 MCUs v3.38
25 April 2011
Table of Contents
How the Standard Evaluation Edition Differs from the Full Version
Important Backward Compatibility Notes
What's New in This Release
What's Been Fixed Since v3.30
Devices Supported
MPLAB C Compiler for PIC18 MCUs Documentation
Installation and Upgrades
Using MPLAB C Compiler for PIC18 MCUs with the MPLAB IDE
Known Problems
Contributors
Customer Support
How the Standard Evaluation Edition Differs from the Full Version
MPLAB C Compiler for PIC18 MCUs is available as either a Standard Evaluation Edition or a full version. This Read Me file is the same in both.
For 60 days, the Standard Evaluation Edition of MPLAB C Compiler for PIC18 MCUs will function as the full version. After 60 days, the MPLAB C Compiler for PIC18 MCUs Standard Evaluation Edition differs from the full version in the following ways:
Not all optimizations will be supported. Namely, procedural abstraction will not be supported.
The PIC18 Extended mode (extended instruction set and indexed with literal offset addressing) will not be supported.
To purchase a full version of the MPLAB C Compiler for PIC18 MCUs, please contact your local distributor or visit http://www.microchip.com/c18.
Important Backward Compatibility Notes
COFF File Format Replaces COD File Format
Due to the elimination of the COD Format from MPASM ouput, and the use of COFF format instead, new flags have been added to COFF files that are generated by C18 v3.30 and MPASM v5.30. These flags are only recognized by MPLINK v4.30 and above. MPLINK v4.30 and above continue to recognized the old COFF files, however, earlier version of MPLINK may not recognized new COFF files.
Corrected behavior for programs with no high priority Interrupt Service Routine (ISR) due to removal of the vectors region from linker scripts
This note is only applicable to programs with the following characteristics:
Explicitly defined low priority ISR and
No defined high priority ISR and
Has the High priority interrupt enabled (either explicity or by not disabling the default)
In the previous versions of the linker scripts (with the vectors region), no code or data was being placed between the High/Low-priority interrupt vectors. Consequently, with the arrival of a High-priority interrupt, the execution of the program would (erroneously) fall into the low-priority ISR. With the removal of the vectors region from the linker scripts, other data or code may be placed at the addresses between the High and Low priority interrupt vectors. This results in a non-deterministic behavior, upon the arrival of a high priority interrupt for these programs.
MPLAB C Compiler for PIC18 MCUs Storage Qualifier Handling
The changes to fix SSR 22612 in MPLAB C18 v3.06 affect programs written without consideration of C language specifications regarding the syntactic use of const, volatile, rom, ram, near, and far qualifiers for user defined types using typedef. An error or a warning will be generated if the compiler detects such problems in code.
For example in the following code:
typedef char * cPtr_t;
cPtr_t rom rompc;
rom char romc;
void f(void)
{
rompc = &romc;
}
rompc should be [rom pointer to ram char] so MPLAB C18 v3.06 and later produce a warning indicating there is a qualifier mismatch in assignment. Please note that this program compiles with no warning in MPLAB C Compiler for PIC18 MCUs prior to this fix because in those versions, rompc was incorrectly qualified as [ram pointer to rom char]. Since romc was in rom there was no mismatch in type and qualification for this assignment in earlier versions of MPLAB C Compiler for PIC18 MCUs.
The qualifiers rom, ram, near, and far are specific to MPLAB C Compiler for PIC18 MCUs. While different from const and volatile from a semantic point of view, they are parsed in the same syntactic context, hence the above example is applicable to all qualifiers. (For more information on the syntax of using qualifiers please refer to your C programming language reference manual. For a description of rom, ram, near, and far qualifiers please refer to the "Storage Qualifiers" section of the MPLAB C18 C Compiler User's Guide.)
MPLINK™ Linker and MPLAB IDE COFF File Format
Due to a change in COFF file format, MPLAB C18 v3.00 and later will not be compatible with versions of MPLINK Linker prior to v4.00 or versions of the MPLAB IDE prior to v7.21.
MPLAB C18 v3.00 and later will have backward compatibility to earlier versions at the source level only. Any existing object files or libraries compiled with earlier versions of the tools will not link using new versions of the tools. They will need to be recompiled from source.
If the user attempts to use this release with object files or libraries compiled with earlier versions of MPLAB C18, MPLINK Linker, and MPASM Assembler, the error message that will be received will be similar to:
Error - Coff file format for 'C:\mcc18\lib/c018i.o' is out of date.
If the user attempts to use an old version of MPLINK Linker to link object files or libraries compiled with this release, the error message that will be received will
...