Global training solutions for engineers creating the world's electronics

Arm Cortex-M7 Software Design

Duration: 5 days


This course is available Live Online worldwide: View the Live Online full course description »


This course is designed for engineers developing software for platforms based around the Arm® Cortex®-M7 processor. The course includes an introduction to the Arm product range and supporting IP, the processor core, programmers' model, instruction set and debug architecture. It includes a number of worked examples and hands-on CMSIS compliant exercises to reinforce the training material.

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 and the hardware development board 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.

Software engineers writing application and system software for platforms using the Arm Cortex-M7 processor core.

  • Some knowledge of embedded systems
  • Basic awareness of Arm is useful but not essential
  • Knowledge of programming in C
  • Experience of assembler programming is not required but would be beneficial

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.

Arm Cortex-M7 Overview

Block diagram • Micro-architectural features • Instruction set • Memory interfaces • System buses • TCM/Caches • Memory protection • Pipeline features • Lock-step operation

Armv7-M Programmers' Model

Introduction • Data Types • Core Registers • Modes, privilege and stacks • Exceptions • Instruction Set Overview • Programming standards

Armv7-M Assembly Programming

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

Armv7-M Memory Model

Introduction • Memory Address Space • Memory Types and Attributes • Alignment and Endianness • Barriers

Armv7-M Memory Protection

Memory Protection Overview • Memory Regions • Region Attribute Control • Region Overlapping • Sub-region Support • Setting up the MPU

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

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

Armv7-M Exception Handling

Introduction • Exception Model • Exception Entry and Exit Behavior • Prioritization and Control • Interrupt Sensitivity • Writing the Vector Table and Interrupt Handlers • Internal Exceptions and RTOS Support • Fault Exceptions

Cortex Microcontroller Software Interface Standard (CMSIS)

Introduction • CMSIS-Core • CMSIS-DSP • CMSIS-Driver • CMSIS-RTOS • CMSIS-SVD • CMSIS-Pack • CMSIS-DAP

Cortex-M7 Level 1 Sub-Systems

Caches • Cache Fundamentals • Cortex-M7 L1 Cache Sub-system • Tightly Coupled Memory (TCM) • System Considerations

Armv7-M Debug

Introduction to Debug • Debug • Events and Reset • Flash Patch and Breakpoint Unit (FPB) • Data Watchpoint and Trace Unit (DWT) • Instrumentation Trace Macrocell (ITM) • Embedded Trace Macrocell (ETM) • Trace Port Interface Unit (TPIU), Trace Packets, Timestamping & Trace Bandwidth

Appendix

Cortex-M7 Processor Core

Processor Pipeline • Execution Pipelines • Prefetch Unit • Memory-mapped Registers

Armv7-M Extensions

Extensions Overview • DSP Extension • Floating-point Extension

Our hands-on exercises are provided as a self-contained virtual machine that can easily be taken away by the students by the end of the class. Our virtual machine works on most operating systems and features a full pre-configured embedded development environment based in industry de-facto standards such as GNU tools and Eclipse. The laboratories work both on pre-installed instruction set simulators and the supplied microcontroller development boards.

The exercises cover a large spectrum of topics:

  • assembly programming,
  • data transfers,
  • data processing,
  • flow control,
  • digital signal processing,
  • exception handling with the implementation priority schemes and pre-emption
  • mixing C and assembly to provide a semi-hosted solution.

STM32L552 Evaluation Board

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