Start date: 19 May 2025
Duration: 5 days x 7 hours/day inc. breaks: 19 - 23 May 2025
Location: Online course
Certificate: N/A
Cost: Members € 700; Non-members € 1050
Course code: N/A
Programme overview
The course is relevant for engineers developing products using platforms based on the current Cortex-M Series family (with Armv8-M architecture). It includes an introduction to the Arm product range and supporting IP, the processor core, programmers' model, instruction set and debug architecture.
It is delivered as an interactive remote learning course with a maximum of 12 participants to maintain high quality training.
Learning outcomes
• How to program uding the v8M Architecture
• How to deal with interrupts and aborts
• Cortex- M23/M33 initialization procedure
• How the SAU and IDAU interact
• How to get into and out of TrustZone security states
• Understanding how registers are affected and where programmers need to take care
• Reducing overhead with CSME compliant compilers
• Reducing security impacts to non-secure software
• How to build non-secure software
• Impacts to latency caused by transitions
• Configure the Security Attribution Unit
• How violations are caught
• Practical debugging of secure applications
Who is the course for?
This course is designed for software engineers writing application and firmware for platforms using the Cortex ® v8M Architecture.
Pre-requisites:
• C programming for Embedded Systems training (or equivalent C programming knowledge)
• Experience of assembler programming is not required but would be beneficial
• Some knowledge of embedded systems
• A basic awareness of Arm is useful but not essential
Schedule
Arm v8-M Introduction
• Arm-v8M background
• Safety consideration
• TrustZone in a nutshell
• System level security features
Cortex-M23/33 Processor Core
• Cortex-M23/33 Processor
• Cortex-M23/33 Pipeline
• Cortex-M23/33 Hardware features
Armv8-M Programmers Model
• Introduction
• Data Types
• Core Registers
• Modes, privilege and stacks
• Exceptions
• Instruction Set Overview
Armv8-M Memory Protection
• Memory Map
• Memory Regions
• Memory Attributes
• MPU Programmer’s model
• Configuring the MPU
• Memory Management Faults
Armv8-M Assembly Programming
• Introduction
• Data Processing Instructions
• Load/Store Instructions
• Flow Control
• Miscellaneous
Armv8-M Synchronization
• Introduction to synchronization and semaphores
• Exclusive accesses
• Memory ordering
Armv8-M Memory Model
• Introduction
• Memory Address Space
• Memory Types and Attributes
• Endianness
• Barriers
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
Armv8-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
• Appendix
Armv8-M Security Extension
• Overview
• Memory Configuration
• Function Calls & Toolchain Support
• Exceptions
Lab Exercises
The tool-chain required for the exercises are provided within a self-contained virtual machine. The
student is only required to install the VirtualBox software on her/his Windows/Linux/Mac host machine.
The remaining tools and exercises files are pre-configured and located inside the Virtual Machine to be
run locally. The VM can be used for day do day embedded software development and allows the student
to continue or redo his exercises even after the course has ended.
The exercises cover a large spectrum of topics amongst those:
• Assembly programming
• Exception handling with the implementation priority schemes and pre-emption
• Mixing C and assembly to provide a semi-hosted solution
• Creating linker scripts
The security related hands-on exercises are:
• Part 1: Tool Flow
• Part 2: Security Attribution Unit Configuration
• Part 3: Configuring the non-secure world
• Part 4: Transition to the non-secure world
• Part 5: Using Arm cmse attributes for non-secure calls
• Part 6: Using Arm cmse attributes for secure calls
• Part 7: Identifying the source of a function call
• Part 8: Checking a data array address range
• Part 9: Accessing secure data from a non-secure application
• Part 10: Illegal access to a secure function from the non-secure word
Trainer Profile
Dr. David Cabanis has a long career in the Semi-conductor industry. He started his career working at IBM in the hard-disks controllers design team. He then went into chip-design and verification consulting at Cadence Design Systems. For the Last 11 years Dr Cabanis has been providing training in system level modelling, Arm software development and System on Chip integrations for Doulos’ customers. Dr Cabanis is an accredited Arm trainer, he also has both Arm’s AAE and AAME accreditations.