Saturday 24 February 2018

Developing & Delivering KnowHow

Home > Training > ARM Cortex-M3/M4 Software Design

ARM Cortex-M3/M4 Software Design

Standard Level - 3 days

view dates and locations

This course is designed for engineers developing software for platforms based around the ARM® Cortex®-M3 and Cortex-M4 processors, including an introduction to the Cortex Microcontroller Software Interface Standard (CMSIS) library. The course covers the ARM core range, programmer's model and Thumb-2 instruction set as well as the Cortex-M3/M4 Coresight debug architecture. It includes a number of worked examples and hands-on CMSIS compliant exercises to reinforce the lecture material.

Who should attend?

Software developers who wish to develop system and application software for ARM Cortex-M3 and Cortex-M4 processor based systems.


An in-depth knowledge of microprocessors is not essential, but would be advantageous. However, all participants must be computer literate and should have a basic understanding of the programming language C.

Training materials

The training materials for this class are based on ARM's own material. Doulos is a global ARM Approved Training Center.


Day 1

Introduction to ARM

Cortex-M3/M4 Core Overview

Block Diagram • Programmer’s Model • Datapath and Pipeline • Memory Map • Bit-Banding • System Timer (SysTick) • State, Privilege, and Stacks • Alignment and Endianness • System Control Block

Tools Overview for ARM Microcontrollers

Toolchain • Models • Debug & Trace • Development Boards

v7-M Programmer’s Model

Data types • Core registers • Modes • Exceptions • Instruction Set Overview

v7-M Assembly Programming

General Points on Syntax • Data processing Instructions • Branch and Control Flow Instructions • Memory Access Instructions • Exception Generating Instructions • Accessing Special Registers • Coprocessor Instructions • Memory Barriers and Synchronization

Day 2

v7-M Memory Model

System Caches • Write Buffers • TCMs • Memory Types • Endianness • Address Map

v7-M Exception Handling

Exception Model • Interrupts • Interrupt Handling • Prioritization and Control • Writing the Vector Table and Interrupt Handlers • Internal Interrupts and RTOS Support • Fault Exceptions

Software Engineer's Guide to Cortex-M3/M4

Implementation Options • Modes and Stacks • Special Purpose Registers • System Memory Interface • Memory Map • Systick Timer • Floating Point Unit • Power Management

v7-M Compiler Hints and Tips

Basic Compilation • Compiler Optimizations • Coding Considerations • Mixing C/C++ and Assembler • Local and Global Data issues

Linker & Libraries Hints & Tips for ARM Architecture v7-M

Linking Basics • System and User Libraries • Veneers • Stack Issues • Linker Optimizations and Diagnostics • ARM Supplied Libraries • Scatter-loading

Day 3

Embedded Software Development for Cortex-M Processors

Tailoring the C library to your target • Tailoring image memory map to your target • Reset and Initialization • Further memory map considerations • Building and debugging your image

CMSIS Overview


Cortex-M3/M4 Debug

Introduction to Debug • Debug Access Port (DAP) • Breakpoints/Watchpoints & Vector Catch • Cortex-M3/M4 Debug • System Control


Keil MDK Introductory Workbook • ARM Compiler Workbook • Embedded Software Development Workbook

ARM, Cortex-M3, and Cortex-M4 are registered trade marks of ARM Holdings Plc.

This course content is fully covered by the scheduled Doulos training class "Developing with ARM Cortex-M". Please enquire using the links below or contact your local Doulos office to discuss your specific requirements.

Looking for team-based training, or other locations?

Complete an on-line form and a Doulos representative will get back to you »

Back to top