Global training solutions for engineers creating the world's electronics products

Arm and Embedded Software KnowHow

Video Resources

Arm Cortex-M1 for FPGAs

Jens Stapelfeldt from Doulos describes the main features of the Arm Cortex-M1 architecture, which is a microcontroller specialized for implementation on FPGA devices.

Introduction to CMSIS for Arm Cortex-M

Jens Stapelfeldt from Doulos describes CMSIS, the Arm Cortex Microcontroller Software Interface Standard, which provides an abstraction layer for programming all Cortex M microcontrollers.

Using the Cortex-M3/M4 Flash Patch Breakpoint Unit

David Cabanis from Doulos explains how to use the flash patch breakpoint unit of the Arm Cortex-M3 and M4 processors.


Using your C Compiler to Exploit NEON

Dave Cabanis from Doulos explains how to exploit the NEON coprocessor unit found in the ARM Cortex A processor family from your C code.

Webinars On-Demand

Getting started with Cortex-M3 CMSIS programming

David Cabanis from Doulos explains the basics of creating a CMSIS compliant, Cortex-M3 based project and taking it through the MDK tool chain.

Retargeting a C Library Function

David Cabanis from Doulos touches on the topics of semi-hosting and standard C library function retargetting. In addition the Cortex-M3 Instrumentation Trace Macrocell (ITM) will be put to use as a mean to communicate with a debug host.

Programming the MCBSTM32 Evaluation Board

David Cabanis from Doulos looks at programming the Keil Cortex-M3 evaluation board (MCBSTM32) using a CMSIS compliant approach whilst accessing specific device's perpherials.

Getting started with CMSIS - The Cortex Microcontroller Software Interface Standard

CMSIS supports developers and vendors in creating reusable software components for Arm® Cortex®-M based systems. This 17 page tutorial (pdf), created by Doulos Arm experts, provides a thorough introduction to the new standard, and includes two tutorial examples.

Papers and Presentations

Embedded C programming for Cortex-M Processors
In this extended presentation, David Cabanis from Doulos explains the basics of embedded C programming in the context of Cortex-M processors and how to bring a bare metal system to life. Amongst the covered topics you will find: Cortex-Mx startup code and vector tables, linker scripts, CMSIS compliant C code and assembler programming.

Using FreeRTOS on the Arm/NXP mbed
Frank Mölendörp from Doulos explains how to run the FreeRTOS on the Arm/NXP mbed prototyping kit.

uClinux on an Arm Cortex-M4: a cost-benefit analysis
Frank Mölendörp from Doulos gives a short introduction to the possibilities and the limitations of running uClinux on a small microcontroller.

Using the Cortex-M3/M4 Flash Patch and Breakpoint Component
Marcus Harnisch from Doulos explains how to use the Cortex-M Flash Patch and Breakpoint unit to make firmware updates in an MCU-vendor independent manner.

Migrating from AHB to AXI based SoC Designs
Marcus Harnisch from Doulos explains the evolution of the Arm bus architecture from the original AHB standard through to the latest AXI4-Stream and AXI4-Lite variants.

Using your C compiler to exploit NEON™ Advanced SIMD
With the v7-A architecture, Arm has introduced a powerful SIMD implementation called NEON™. NEON is a coprocessor which comes with its own instruction set for vector operations. While NEON instructions could be hand coded in assembler language, ideally we want our compiler to generate them for us. This paper explains how the RealView compiler tools (RVCT) and other modern compilers use a blend of sophisticated analysis techniques and language extensions to fulfill their job.

The quickest way to develop your Arm Cortex-M based product
The ARMArm Microcontroller Prototyping System (MPS) is based on a platform using FPGAs and allows the fast and easy evaluation and development of an Arm Cortex-M system. This paper will discuss the possibilities and limits of this system, will reflect on the first experience and shows the system design flow with the available hardware and software IP.

Product Migration from FPGA (Cortex-M1) to a Standard Arm Based Microcontroller
Introducing the Arm Cortex-M1 and Cortex-M3 architectures, this technical paper shows how to migrate a product from an FPGA to a standard Arm-based microcontroller. It was first presented at the Embedded World Conference 2008.

Implementation of a Cordic Algorithm using the Actel Cortex M1 Dev-Kit
In this extensive tutorial Doulos Arm experts discuss the use of the Actel Cortex-M1 Development Kit to demonstrate how to create a microprocessor-based system, along with user-defined hardware functions coded in VHDL, in a single FPGA device.

Hints & Tips

Embedded Linux Commands Sheet
This Doulos Embedded 'Linux Commands' sheet created by Doulos Senior Member, Technical Staff, Simon Goda provides a handy reminder of how to work on the command line, with examples of how to work with files and folders, searching, managing archives and much more.


Embedded Linux: Debugging User Space Seg Fault
In this article Simon Goda from Doulos Embedded takes a brief look at some of the tools there are available in a typical embedded Linux development environment, which can help track down problems.

Here you will find some short technical articles relating to the use of the Arm instruction set.

Configuring (X)Emacs for Arm RVCT

In this article Marcus Harnisch from Doulos introduces Emacs as an editor that can be customized easily to support Arm's RealView Compilation Tools (RVCT).

Implementing Semaphores on Arm processors

Semaphores are used to manage access to a shared resource. Depending on the type of semaphore, one or more clients may be granted access.

Efficient byte swapping of data blocks in Armv6 and Armv7-A/R

Since the introduction of the Arm11 processor family, the Arm instruction set supports on-the-fly switching of the current endian mode. Natively a little endian architecture, the processor can be put into a big endian mode to process chunks of data in that format. DSPs, network adapters and similar peripherals might return processed data in big endian format.

For further information about the Doulos Arm training portfolio visit

Arm is a registered trademark, and Cortex is a trademark of Arm Holdings Plc.