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

ARM Cortex-A15 MPCore Software Design ONLINE

Duration: 5 sessions (6 hours each)

This training course is ideal for engineers involved in developing software for platforms powered by the ARM® Cortex®-A15 application processors.

Hands-on Labs

The learning is reinforced with unique Lab exercises which are run inside a self contained virtual machine environment. This allows the student to experience a real-life and project-ready development environment without the complexity of installing complex software prior to the class. This virtual machine is for the student to keep after the training class, allowing you to further experiment with embedded software development once the class has come to completion.

Who should attend?

This course is aimed at software developers writing low level and bare-metal code for ARMv7-A processors, concentrating on the Cortex-A15 processor, and at operating system developers who need to understand the details of the Arm v7A processors' architecture.


Delegates should have some understanding of embedded programming in C and assembler. Knowledge of other processors is a benefit but is not strictly required for attending this class.

Training materials

This class uses training materials developed by Arm® and is complemented by Doulos' own lecture and laboratory material. This offers the students a well rounded and practical view of the topics covering both the processor's features along with how to program it.

Structure and Content

Introduction to the ARM Architecture

Architecture versions • Registers and instruction sets • Exception model • Memory model • Coprocessors • Architecture extensions • The Future

Cortex-A15 Overview

Introduction • New Features in Cortex-A15 • big/LITTLE Processing

ARMV7-A/R ISA Overview

Load/Store • Data Processing • Flow Control • Misc • DSP

Exception Handling

Introduction • Interrupts • Abort Handlers • SVC Handlers • Undef • Handlers • Reset Handlers

Caches and Branch Prediction

Caches basics • ARM Cache example • L1 and L2 Cache Interactions • Caching policies • Inner and Outer Caches • Cache Determinism • Maintenance and Coherency • Branch Prediction

Cortex-A15 Cache Coherency

L1 & L2 cache coherency and maintenance • MPCore • coherency


Introduction to atomicity • Load exclusive and store exclusive instructions • Code examples • Multi-core, coherency • Exclusive reservation granule

Memory Management

Short-descriptor Format • Long-descriptor Format • Memory Types and Attributes • Using the MMU

Understanding Barriers

Data barriers • Instruction barriers

Cortex-A Power Management

ARM core power modes • Power control • ARM multi-core processor power modes • Power state coordination

Booting a Cortex-A15 processor

Overview • Booting a single CPU • Booting a cluster

Embedded Software Development

Semihosting / retargeting • Mixing C/C++ and assembly • Application Startup • Tailoring image memory map to your target • Accessing memory mapped peripherals • Additional considerations

OS Support

Multi-Processing • Translation tables • Context switching • Timers

GICv1 & GICv2 Programming

Distributor and CPU Interfaces • How to enable and configure interrupts • How to handle interrupts • How to send software interrupts • Security Extensions


Why do we need a Secure environment? • ARMv7-A Security Extensions • Software • Memory System • Debug

NEON Overview

Introduction • NEON Instruction Set Overview • NEON Software Support


Invasive Debug • Non-Invasive Debug • PMU • Trace

GNU Compiler Hints and Tips

Basic Compilation • Compiler Optimizations • Coding Considerations • Local and Global Data Issues

GNU Linker Hints and Tips

Linking Basics • System and User Libraries • Linker Script • Veneer and Interworking • Linker Optimizations and Diagnostics • GNU Embedded Development Libraries




Cross-Cluster MP Programming

Introduction • Multi-Cluster Configurations • Miscellaneous Considerations


Overview of Virtualization Extensions • Memory Management • Exception handling

Lab Exercises

The learning is reinforced with practical exercises using the GCC software development tool chain and covers advanced topics such as Arm/Thumb2 assembly, writing low level device drivers, exception handlers and linker scripts.

Looking for team-based training, or other locations?

Complete an enquiry form and a Doulos representative will get back to you.

Enquiry FormPrice on request