This is an overview of the compilation tools support for ARMv6-M (ARMv6 architecture targeted at the microcontroller profile). Microcontroller profiles implement a programmers' model designed for fast interrupt processing, with hardware stacking of registers and support for writing interrupt handlers in high-level languages. The processor is designed for integration into an FPGA and is ideal for use in very low power applications. It supports the 16-bit Thumb instruction set and a small number of 32-bit Thumb instructions. The following table shows useful command-line options.
|ARMv6 microcontroller profile with Thumb only (no ARM instructions), and processor state instructions|
|ARMv6 microcontroller profile with Thumb only (no ARM instructions), plus processor state instructions and OS extensions|
Key features for ARMv6-M:
The compiler supports the 16-bit Thumb instruction set and a small number of 32-bit Thumb instructions. The 32-bit instructions are
By default, the compiler uses ARMv6 unaligned access support
to speed up access to packed structures, by allowing
to load from and store to words that are not aligned on natural
Unaligned data accesses are converted into two or three aligned accesses, depending on the size and alignment of the unaligned access. This stalls any subsequent accesses until the unaligned access has completed. You can control alignment by using the DCode and System bus interfaces.
You can produce either little-endian or big-endian code using
the compiler command-line options
ARMv6-M supports the following endian modes: