SEARCH
TOOLBOX
LANGUAGES
modified on 3 November 2010 at 12:19 ••• 30,311 views

Cortex M3 FAQ Software

From Manuals

Jump to: navigation, search

Contents

Can I develop and debug code for my Micromint ARM Cortex-M3 controller using a Linux PC? a Mac OS X workstation?

Yes. CodeBlocks, Eclipse, OpenOCD and GNU cross compilers for ARM are available for Windows, Linux and Mac OS X. EWARM is only available for Microsoft Windows.

What filesystem types, volume size and filename formats are supported on microSD cards?

The code examples use the FatFS 0.04b library which supports FAT12, FAT16 and FAT32 filesystems. We have tested 4GB microSD cards but the library supports larger volumes. The filename format is 8.3. Long file names are implemented in FatFS 0.07 or above.

How can I detect if the application is compiled with IAR or GCC?

You can use compiler predefined macros as in the example below.

#if defined(__IAR_SYSTEMS_ICC__)
  /* Code to use with IAR compiler */
#elif defined(__GNUC__)
  /* Code to use with GCC compiler */
#else
  #warning Compiler is not supported
#endif

For more details on predefined macros, consult the C preprocessor manuals.

GNU C Preprocessor

Why are some source code statements skipped and some variables unavailable when debugging?

When you enable code optimization, the object code does not necessarily follow the same sequence as the source code. Optimizing compilers like IAR or GCC use loop unrolling, loop collapsing, branch elimination and other techniques that rearrange code to increase execution speed and/or reduce code size. These changes could also eliminate the need for some variables. A common practice during development is to disable compiler optimizations when debugging. The desired optimizations should normally be enabled after most of the debugging is done and the code is stable. For a more consistent debugging environment, any libraries used by the project should be compiled with the same options and compiler version as the application.