aboutsummaryrefslogtreecommitdiffstats
path: root/source/arm-gcc.rst
diff options
context:
space:
mode:
Diffstat (limited to 'source/arm-gcc.rst')
-rw-r--r--source/arm-gcc.rst72
1 files changed, 54 insertions, 18 deletions
diff --git a/source/arm-gcc.rst b/source/arm-gcc.rst
index 8435a1f..ef745f5 100644
--- a/source/arm-gcc.rst
+++ b/source/arm-gcc.rst
@@ -1,34 +1,70 @@
.. _arm-gcc:
-============
- GCC on ARM
-============
+GCC for Maple
+=============
-This document provides an introduction to using
-:command:`arm-none-eabi-gcc`\ , the `CodeSourcery
-<http://codesourcery.com>`_ version of the GNU `GCC
-<http://gcc.gnu.org/>`_ compilers used to compile programs for the
-Maple.
+This document provides notes on the current usage of
+``arm-none-eabi-gcc``, the `CodeSourcery <http://codesourcery.com>`_
+version of the GNU `GCC <http://gcc.gnu.org/>`_ compilers used to
+compile programs for the Maple. It is not intended as a reference
+manual for GCC; such manuals are available `elsewhere
+<http://gcc.gnu.org/>`_.
-Stub.
+Obtaining ``arm-none-eabi-gcc``
+-------------------------------
+Recent versions of ``arm-none-eabi-gcc`` and associated tools are
+included with the :ref:`Maple IDE <ide>`.
-.. _arm-gcc-avr-gcc-diff:
+Users who wish to use ``arm-none-eabi-gcc`` in concert with a standard
+Unix toolchain are referred to our :ref:`unix-toolchain` 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.
-Differences with AVR-GCC
-------------------------
+Compiler Flags Used by libmaple
+-------------------------------
-people coming from arduino and other Atmel AVR powered microcontroller
-platforms are likely to be used to AVR-GCC. our compiler is
-different. explain why (stub).
+This section documents the flags passed to ``arm-none-eabi-gcc`` by
+the :ref:`Maple IDE <ide>` and the default Makefile provided with
+:ref:`libmaple <unix-toolchain>`. The information in this section is
+subject to change without notice.
+.. highlight:: sh
+
+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
+
+.. highlight:: cpp
+
+.. _arm-gcc-avr-gcc:
+
+Switching from AVR-GCC
+----------------------
+
+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.
.. _arm-gcc-attribute-flash:
-Tips and Tricks
----------------
+- 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::
-* you can use ``__attribute__`` to stick things in flash (stub)
+ uint32 arr[] __attribute__((section (".USER_FLASH"))) = {...};