Development Environment

Source Code, Compilers, and System Generator

ARMv7-M Architecture Support

SDVOS kernel has been ported to the ARMv7-M architecture. MCUs currently tested include ARM Cortex M3 and M4. For Cortex M4, the FPU is also supported natively. To select the ARMv7-M architecture while building the kernel, a global macro named __ARCH_ARMV7M__ must be defined. However, you would never do this yourself since it is included in the board configuration file. For instance, src/board/NUCLEOF401RE/config.mk has the following line:

CFG += -D__ARCH_ARMV7M__

To compile the kernel for the ARMv7-M architecture, you would need a bare metal cross compiler (GCC) that generates ARM binaries, with no host specified, and features the Embedded ABI (EABI). By GCC naming convention, the compiler would be called arm-none-eabi-gcc.

You can compile your toolchain from the source code. I would not cover that process in this tutorial. I recommend downloading the binaries from launchpad.net. Any version greater than 4.8 should work (most before 4.8 should work too), I personally tested 4.8.2 and 4.9.3. Choose a relatively new version of the toolchain and compile some of the example applications first. If you find out that a specific version of GCC does not work, please let me know.


After downloading or building the toolchain, copy or install it and make sure the installation path is in your shell PATH. In the board configuration file (e.g. src/board/NUCLEOF401RE/config.mk), the toolchain names will be defined to their default names. One example might look like:

CC = arm-none-eabi-gcc
LD = arm-none-eabi-ld
OBJDUMP = arm-none-eabi-objdump
SIZE = arm-none-eabi-size
OBJCPY = arm-none-eabi-objcopy

If your toolchain has a different name (it really shouldn't though), make sure you change them in the configuration file.

With the toolchain installed, you should now be able to configure and build the kernel and your applications. Take a look at the tutorials for your target board and example applications to get started.