Go to ColdFire Development Suite order page The Crossware ColdFire ANSI standard C compiler generates code for the Motorola/Freescale ColdFire CF52xx, CF5307, CF5407, CF547x and CF548x families of microprocessors. It comes as part of the Crossware Embedded Development Studio and runs under Windows 9x, Windows NT 4.0, Windows 2000 and Windows XP. HIGHLIGHTS - Optimising ANSI C and C++ compiler with extensions for embedded development
- Compiler flow analysis enables multiple optimizations
- Additional calling conventions increase speed of compiled program
- Function in-lining and parameters passed in registers
- Source level debug output in IEEE695 format
- Pre-written library routines including 32 bit and 64 bit floating point arithmetic
- Comprehensive source-level debug output
- Wide range of output file formats
- Integrated Motorola compatible assembler
- Highly user-friendly Embedded Development Studio integrated development environment (see separate data sheet)
Migrating from C to C++ with the Crossware suite is easy. Adding two instructions to the startup code is sufficient to handle the construction and destruction of global C++ objects. Also, C source files can be switched to the C++ language simply by giving them a .CPP extension. The Crossware Code Creation Wizards are compatible with both C and C++. For example, if the Code Creation Wizards are used to insert code into a C++ source file, functions that must remain in C -- such as interrupt handlers -- are automatically qualified to keep them as C functions. The package includes the following tools and utilities: All of these tools and utilities are Win32 applications built to make the most of your 32 bit computing environment. All tools can be used outside of the Embedded Development Studio if required using conventional command-line instructions. TECHNICAL DETAILS OPTIMIZING C COMPILER Language Definition The compiler conforms to the ANSI C specification and provides a number of enhancements, including: - variables can be any length with all characters significant
- the _interrupt keyword declares a C function as an interrupt routine
- the _persist keyword declares that a variable will retain its contents (e.g., in battery backup RAM) during power down, and therefore should not be initialized
- the C++ commenting convention "//" is supported
- Variables can be defined anywhere within a block -- not just at the beginning
- Variables can be defined within the initialising expression of a for loop
In addition, the compiler supports the C++ feature that allowsvariables to be defined within the conditional expressions of the forloop, while loop, if statement, and switch statement.{> The support libraries are a subset of the ANSI standard libraries. The supported functions are listed below. Data Sizes The compiler uses the following sizes for the various C data types: char and unsigned char : | 1 byte | short int and unsigned short int : | 2 bytes | int and unsigned int : | 4 bytes | long and unsigned long : | 4 bytes | float : | 4 bytes (32 bits) | double : | 8 bytes (64 bits) | long double : | 8 bytes (64 bits) | enum : | up to 4 bytes (minimum size to accommodate members) | bit fields : | up to 32 bits | In-Line Assembler Assembler code can be embedded in your C source code using two methods. The _asm keyword can be used to embed assembler into C functions.The #asm/#endasm directive allows assembler to be placed anywherewithin a C source file, not just within functions. Strings inserted using the _asm keyword are scannedby the C preprocessor and so assembler statementscan be generated using C macros with full macrotoken replacement. Additionally, the compiler canreplace C variable names with the appropriate substringallowing easy access to global, static and localvariables and parameters. On the other hand, assembler macros are bestdefined outside of functions and the #asm/#endasmdirective allows this. Optimizations Optimizations include: - constant folding
- dead code elimination
- strength reduction
- algebraic simplification
- jump/branch optimization
- suppression of integral promotion
- global register allocation
Source Code Browsing The compiler optionally generates information on all of the definitions ofand references to the identifiers used in your program. This includes functions,function parameters, local variables, global andstatic variables, enum identifiers, typedefs, gotolabels and the tag names of structures, unions andenums. The Embedded Development Studio willthen use this information to allow you to quickly navigatethrough your source code. Code and data location Compiler-generated code and data are automatically located in appropriate memory segments. Linker options allow these segments to be located at user-defined memory locations. String constants and objects declared as const are located in code space. Initialised and uninitialised data are located in separate segments, and initialisation of these segments is carried out automatically at run time. Directives are also available allowing you to tell the compiler to placecode and data in your own named segments. This gives you furthercontrol on where code and data are placed and how data space is initialised. The Diab Data section and use_section pragmas are also supported. Code and data location Comprehensive debug records are generated by the compiler andembedded in the object files for each module. These are used by thelinker to perform cross-module type checking and for output to the finalprogram file. RELOCATING LINKER The linker combines object modules created with the compiler and/or the assembler to create the final code that will run on your target system. It carries out the following functions: - scans each module to collect segment and variable information
- arranges and positions segments at appropriate memory locations to suit the memory organisation of the target system and any specific location information supplied by the user
- finalises the values of all variables and calculates the results of any incomplete expressions
- extracts and relocates the code from each module to produce the final target program
The target program can be produced in a number of different formats including Motorola S2 and S3 records, HP/Microtec IEEE695 format, or as a binary ROM image. (A utility is provided for users who wish to divide the binary ROM image into separate files suitable for 8 bit wide memory chips.) An optional link map will show the final location and sizes of all segments and the values of all global variables. DEBUG OUTPUT The compiler and assembler can both optionally generate full source-level debug information. The linker updates these debug records to take account of the final location of the target program and outputs them to the target program file in IEEE695 format. Debuggers and in-circuit emulators that support this popular format can then use it to facilitate full source-level debugging. We have tested our software with the latest Noral Micrologics debugging environment and can confirm compatibility with their systems. LIBRARY MANAGER Instead of being used to create a final target program, the object modules produced by the compiler and assembler can be integrated into a library. The library manager performs the tasks of: - combining object modules into a library
- adding modules to an existing library
- removing or extracting modules from an existing library
- listing the contents of a library
The Library manager can be invoked automatically from the Embedded DevelopmentStudio to build a complete object code library.An object code library can then be specifiedat link time when building your program. Thelinker will search the library and extract modulesfrom it as necessary to complete yourprogram. MAKE UTILITY The MAKE utility simplifies the task of keeping object files, libraries and target programs up to date. It detects if any source or dependency files have changed since the last build, and runs the appropriate tools (compiler, assembler, linker or library manager) to rebuild out-of-date files. It supports many advanced features including macros, inference rules, conditional inclusion and other preprocessing directives, and in-line files with automatic temporary file creation. Although the Embedded Development Studio uses its own integrated routines to keep projects up to date, this stand-alone MAKE utility can be used to build projects from the command line or from within another application. The Embedded Development Studio automatically will create a makefile that is fully compatible with this stand-alone MAKE utility. Support Library Routines: abs( ) | exit( ) | gets( ) | log10( ) | sin( ) | strncpy( ) | acos( ) | exp( ) | getvect( ) | log10l( ) | sinl( ) | strpbrk( ) | acosl( ) | expl( ) | isalnum( ) | malloc( ) | sinh( ) | strrchr( ) | asin( ) | fabs( ) | isalpha( ) | memchr( ) | sinhl( ) | strspn( ) | asinl( ) | fabsl( ) | isascii( ) | memcmp( ) | sprintf( ) | strstr( ) | atan( ) | _fcvt( ) | iscntrl( ) | memcpy( ) | sqrt( ) | tan( ) | atanl( ) | ferroe( ) | isdigit( ) | memmove( ) | sqrtl( ) | tanl( ) | atoi( ) | fgetc( ) | isgraph( ) | memset( ) | srand( ) | tanh( ) | atol( ) | fgets( ) | islower( ) | pow( ) | sscanf( ) | tanhl( ) | atoff( ) | fileno( ) | isprint( ) | powl( ) | strcat( ) | time( ) | atolf( ) | floor( ) | ispuntc( ) | printf( ) | scanf( ) | toascii( ) | clearerr( ) | floorl( ) | isspace( ) | putc( ) | strchr( ) | tolower( ) | ceil( ) | fprintf( ) | isupper( ) | putchar( ) | strcmp( ) | toupper( ) | ceill( ) | free( ) | isxdigit( ) | puts( ) | strcpy( ) | ungetc( ) | cos( ) | fscanf( ) | labs( ) | rand( ) | strcspn( ) | ungetch( ) | cosl( ) | getc( ) | ldexp( ) | sbrk( ) | strlen( ) | vfprintf( ) | cosh( ) | getchar( ) | log( ) | scanf( ) | strncat( ) | vprintf( ) | coshl( ) | getche( ) | logl( ) | setvect( ) | strncmp( ) | vsprintf( ) | HOST SYSTEM REQUIREMENTS IBM compatible PC with an Intel Pentium-class CPU or above running Windows 9x, Windows NT 4.0, Windows 2000 or Windows XP. Go to ColdFire Development Suite order page
|