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

ARM Cortex-A9 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®-A9 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?

Software engineers designing applications for platforms powered by the ARM Cortex-A9 MPCore application processors, 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 ARM Architecture

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

ARM tools overview

ARM RealView Developer Suite • Tool Licensing • GNU and ABI • Debug Interfaces

Introduction to ARM assembler programming

Load/Store Instructions • Data Processing Instructions • Flow Control • Miscellaneous • DSP

Exception Handling

Exceptions overview • Interrupts sources and priorities • Abort Handlers • SVC Handlers • Undef Handlers • Reset Handlers

ARM Caches and TCMs

Cache basics • Caches on ARM processors • Tightly Coupled Memory (TCM) • Optimization consideration

Memory Management

Memory Management Introduction • Access Permissions and Types • Memory Protection Unit (MPU) • Memory Management Unit (MMU) • Optimizations & Issues


Why do we need synchronization? • Synchonization primitives • SWP instruction • LDREX and STREX instructions

Software Engineer's Guide to Cortex-A9

Overview • Level 1 memory system

Software Engineer's Guide to MPCore Processors

MPCore Features • Snoop Control Unit • Accelerator Coherency Port (ACP) • Interrupt Controller • Timer and watchdog • TrustZone Support • Developing for ARM MPCore Processors • Booting SMP • Configuring an interrupt • Synchronization

NEON Overview

NEON Instruction Set Overview • NEON Software Support

Power Management for Cortex-A/R Cores

Processor Power Consumption • Power Modes • NEON and MPCore

C/C++ Compiler Hints & Tips

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

Linker & Libraries Hints & Tips

Linking Basics • System and User Libraries • Veneers and Interworking • Linker Optimizations and Diagnostics • ARM Supplied Libraries

Further Compiling/Linking Hints & Tips

Mixing C/C++ and Assembler • Stack Issues • VFP/NEON • Advanced Building Facilities • Embedded Software Development

Embedded Software Development

An "Out-of-the-box" build • 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

ARM Debug and Trace

Debug Logic Overview • Debug Logic Features • Tools use of Debug Logic • Trace Logic Overview • Debug vs. Trace • System Level Debug Infrastructure • CoreSight Introduction • CoreSight Debug • CoreSight Trace

Introduction to TrustZone

Exception Handling • Memory System • Debug • Software

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