Documentation

This section has all sorts of useful information about programming the Propeller with C or C++, as well as information about the Propeller GCC tool suite itself.  Click a sub-page link at the left to find out more.

Brief Overview


Propeller GCC can compile programs for propeller in several modes. Each mode has advantages and limitations.

 Memory Mode  GCC Switch  Code Limit  Data Limit  Performance*  Usage
 COG  -mcog  2KB  Shared  20MIPS  Soft Devices
 LMM -mlmm  32KB   Shared  5MIPS  8 Core SMP
 CMM -mcmm  32KB   Shared < 5MIPS  8 Core SMP
 XMMC  -mxmmc 256MB   32KB < 5MIPS  Large Code
 XMM-SINGLE  -mxmm-single 256MB   Shared < 5MIPS  Large RAM
 XMM-SPLIT  -mxmm-split 256MB    256MB < 5MIPS  Flash/RAM

COG - Name for one of eight Propeller execution cores having 2KB memory and two counter modules.
LMM - "Large Memory Model" method defined by Bill Henning to fetch/run instructions from HUB memory.
CMM - "Compressed Memory Model" method based on LMM, with code size and speed reduction.
XMMC - "eXternal Memory Model Code" fetch/run instructions from external memory using a cache.
XMM-SINGLE - model where code and data reside in a single external device block.
XMM-SPLIT - model where code and data reside in separate external device blocks.

The XMM modes must have appropriate external hardware.

COG programs can either be normal C programs or COG C programs designed for creating devices such as 115200 full duplex UART, SPI / SDIO master, I2C master or slave, etc.... Select code can run as LMM even in XMM-type memory modes. Other XMM type memory mode layouts are possible using custom linker scripts. All current XMM designs are cached, but it is possible to use non-cached modes depending on the memory access driver design.

*Maximum performance based on a typical 80MHz system clock using 5MHz crystal and PLLx16.