This document provides notes on the current usage of arm-none-eabi-gcc, the CodeSourcery version of the GNU GCC compilers used to compile programs for the Maple. It is not intended as a reference manual for GCC; such manuals are available elsewhere.
Recent versions of arm-none-eabi-gcc and associated tools are included with the Maple IDE.
Users who wish to use arm-none-eabi-gcc in concert with a standard Unix toolchain are referred to our Unix Toolchain Quickstart reference, which describes how to set up such an environment.
LeafLabs mirrors some of the more recent versions of the compiler under http://static.leaflabs.com/pub/codesourcery/, including versions for OS X, win32, and 32-bit Linux.
This section documents the flags passed to arm-none-eabi-gcc by the Maple IDE and the default Makefile provided with libmaple. The information in this section is subject to change without notice.
The following flags are among those passed to the C compiler:
-Os -g -mcpu=cortex-m3 -mthumb -march=armv7-m -nostdlib
-ffunction-sections -fdata-sections -Wl,--gc-sections
The following flags are among those passed to the C++ compiler:
-fno-rtti -fno-exceptions -Wall
The following flags are among those passed to the assembler:
-mcpu=cortex-m3 -march=armv7-m -mthumb
This section, which is expected to grow over time, describes techniques for porting code which uses AVR-GCC features (AVR-GCC is the compiler used by many Atmel AVR-based microcontroller boards, including Arduino) for use on the Maple.
Replacing PROGMEM: You can direct the linker script provided with libmaple to store a variable in flash by using __attribute__((section (".USER_FLASH"))), like so:
uint32 arr[] __attribute__((section (".USER_FLASH"))) = {...};