Site affiché en Français Voir le site en English (USA) Voir le site en English (GB)
Vous êtes ici: ac6 > ac6-formation > ARM cores > Cortex-M4 / Cortex-M4F implementation

RM3 Cortex-M4 / Cortex-M4F implementation

This course covers both Cortex-M4 and Cortex-M4F (with FPU) ARM core

Objectives
bullet_jaune_1 This course is split into 3 important parts:
bullet_jaune_2 Cortex-M4 architecture
bullet_jaune_2 Cortex-M4 software implementation and debug
bullet_jaune_2 Cortex-M4 hardware implementation.
bullet_jaune_1 Although the Cortex-M4 seems to be a simple 32-bit core, it supports sophisticated mechanisms, such as exception pre-emption, internal bus matrix and debug units.
bullet_jaune_1 Through a tutorial, the Cortex-M4 low level programming is explained, particularly the ARM linker parameterizing and some tricky assembly instructions.
bullet_jaune_1 The course also indicates how to use new DSP and FPU instructions to boost DSP algorithm implementation.
bullet_jaune_1 Note that attendees can replay these labs after the training.
bullet_jaune_1 The course also details the hardware implementation and provides some guidelines to design a SoC based on Cortex-M4, taking benefit of concurrent AHB transactions.
bullet_jaune_1 An overview of the Coresight specification is provided prior to describing the debug related units.
Labs are run under KEIL IDE

A more detailed course description is available on request at info@ac6-training.com
Prerequisites
bullet_jaune_2 A basic understanding of microprocessors and microcontrollers.

Plan
FIRST DAY - ARCHITECTURE
INTRODUCTION TO ARM CORTEX-M4
bullet_jaune_2 ARM Cortex-M4 processor macrocell
bullet_jaune_2 Programmer’s model
bullet_jaune_2 Instruction pipeline
bullet_jaune_2 Fixed memory map
bullet_jaune_2 Privilege, modes and stacks
bullet_jaune_2 Memory Protection Unit
bullet_jaune_2 Interrupt handling
bullet_jaune_2 Nested Vectored Interrupt Controller [NVIC]
bullet_jaune_2 Power management
bullet_jaune_2 Debug
ARM CORTEX-M4 CORE
bullet_jaune_2 Special purpose registers
bullet_jaune_2 Datapath and pipeline
bullet_jaune_2 Write buffer
bullet_jaune_2 Bit-banding
bullet_jaune_2 System timer
bullet_jaune_2 State, privilege and stacks
bullet_jaune_2 System control block
ARCHITECTURE OF A SOC BASED ON CORTEX-M4
bullet_jaune_2 Internal bus matrix
bullet_jaune_2 External bus matrix to support DMA masters
bullet_jaune_2 Connecting peripherals
bullet_jaune_2 Sharing resources between Cortex-M4 and other CPUs
bullet_jaune_2 Connection to Power Manager Controller
SECOND DAY - PROGRAMMING
EMBEDDED SOFTWARE DEVELOPMENT WITH CORTEX-M4
bullet_jaune_2 Application startup
bullet_jaune_2 Placing code, data, stack and heap in the memory map, scatterloading
bullet_jaune_2 Reset and initialisation
bullet_jaune_2 Placing a minimal vector table
bullet_jaune_2 Further memory map considerations, 8-byte stack alignment in handlers
THUMB-2 INSTRUCTION SET
bullet_jaune_2 General points on syntax
bullet_jaune_2 Data processing instructions
bullet_jaune_2 Branch and control flow instructions
bullet_jaune_2 Memory access instructions
bullet_jaune_2 Exception generating instructions
bullet_jaune_2 If…then conditional blocks
bullet_jaune_2 Stack in operation
bullet_jaune_2 Exclusive load and store instructions, implementing atomic sequences
bullet_jaune_2 Memory barriers and synchronization
CORTEX-M4 DSP INSTRUCTION SET
bullet_jaune_2 Multiply instructions
bullet_jaune_2 Packing / unpacking instructions
bullet_jaune_2 V6 ARM SIMD packed add / sub instructions
bullet_jaune_2 SIMD combined add/sub instructions, implementing canonical complex operations
bullet_jaune_2 Multiply and multiply accumulate instructions
bullet_jaune_2 SIMD sum absolute difference instructions
bullet_jaune_2 SIMD select instruction
bullet_jaune_2 Saturation instructions
FLOATING POINT UNIT
bullet_jaune_2 Introduction to IEEE754
bullet_jaune_2 Floating point arithmetic
bullet_jaune_2 Cortex-M4F single precision FPU
bullet_jaune_2 Register bank
bullet_jaune_2 Enabling the FPU
bullet_jaune_2 FPU performance, fused MAC
bullet_jaune_2 Improving the performance by selection flush-to-zero mode and default NaN mode
bullet_jaune_2 Extension of AAPCS to include FP registers
C/C++ COMPILER HINTS AND TIPS FOR Cortex-M4
bullet_jaune_2 Mixing C/C++ and assembly
bullet_jaune_2 Coding with ARM compiler
bullet_jaune_2 Measuring stack usage
bullet_jaune_2 Unaligned accesses
bullet_jaune_2 Local and global data issues, alignment of structures
bullet_jaune_2 Further optimisations, linker feedback
THIRD DAY - EXCEPTIONS, DEBUG
INTERRUPTS
bullet_jaune_2 Basic interrupt operation, micro-coded interrupt mechanism
bullet_jaune_2 Interrupt entry / exit, timing diagrams
bullet_jaune_2 Interrupt stack
bullet_jaune_2 Tail chaining
bullet_jaune_2 Interrupt response, pre-emption
bullet_jaune_2 Interrupt prioritization
bullet_jaune_2 Interrupt handlers
EXCEPTIONS
bullet_jaune_2 Exception behavior, exception return
bullet_jaune_2 Non-maskable exceptions
bullet_jaune_2 Privilege, modes and stacks
bullet_jaune_2 Fault escalation
bullet_jaune_2 Priority boosting
bullet_jaune_2 Vector table
MEMORY PROTECTION UNIT
bullet_jaune_2 Memory types
bullet_jaune_2 Access order
bullet_jaune_2 Memory barriers, self-modifying code
bullet_jaune_2 Memory protection overview, ARM v7 PMSA
bullet_jaune_2 Cortex-M4 MPU and bus faults
bullet_jaune_2 Fault status and address registers
bullet_jaune_2 Region overview, memory type and access control, sub-regions
bullet_jaune_2 Region overlapping
INVASIVE DEBUG
bullet_jaune_2 Coresight debug infrastructure
bullet_jaune_2 Halt mode
bullet_jaune_2 Vector catching
bullet_jaune_2 Debug event sources
bullet_jaune_2 Flash patch and breakpoint features
bullet_jaune_2 Data watchpoint and trace
bullet_jaune_2 ARM debug interface specification
bullet_jaune_2 Coresight components
bullet_jaune_2 AHB-Access Port
bullet_jaune_2 Possible DP implementations: Serial Wire JTAG Debug Port [SWJ-DP] or SW-DP
NON-INVASIVE DEBUG
bullet_jaune_2 Basic ETM operation
bullet_jaune_2 Instruction trace principles
bullet_jaune_2 Instrumentation trace macrocell
bullet_jaune_2 ITM stimulus port registers
bullet_jaune_2 DWT trace packets
bullet_jaune_2 Hardware event types
bullet_jaune_2 Instruction tracing
bullet_jaune_2 Synchronization packets
bullet_jaune_2 Interface between on-chip trace data from ETM and Instrumentation Trace Macrocell [ITM]
bullet_jaune_2 TPIU components
bullet_jaune_2 Serial Wire connection
FOURTH DAY – HARDWARE IMPLEMENTATION
AMBA3.0 INTERCONNECT SPECIFICATION
bullet_jaune_2 Purpose of this specification
bullet_jaune_2 Example of SoC based on AMBA specification
bullet_jaune_2 Differences between AMBA2.0 and AMBA3.0
AHB - ADVANCED HIGH PERFORMANCE BUS
bullet_jaune_2 Centralized address decoding
bullet_jaune_2 Address gating logic
bullet_jaune_2 Arbitration, bus parking
bullet_jaune_2 Indivisible transactions
bullet_jaune_2 Single-data transactions
bullet_jaune_2 Address pipelining
bullet_jaune_2 Sequential transfers
bullet_jaune_2 AHB-lite specification
bullet_jaune_2 Parameterizing the AHB core provided by ARM
APB - ADVANCED PERIPHERAL BUS
bullet_jaune_2 Second-level address decoding
bullet_jaune_2 Read timing diagram
bullet_jaune_2 Write timing diagram
bullet_jaune_2 Operation of the AHB-to-APB bridge
bullet_jaune_2 APB3.0 new features
AHB CORTEX-M4 HARDWARE IMPLEMENTATION
bullet_jaune_2 Clocking and reset, power management
bullet_jaune_2 Using an external Wake-up Interrupt Controller (WIC)
bullet_jaune_2 Bus interfaces: Icode memory interface, Dcode memory interface, System interface and External Private Peripheral Bus interface
bullet_jaune_2 AMBA-3 compliance
bullet_jaune_2 Unifying the code buses
bullet_jaune_2 Unaligned access management
bullet_jaune_2 Debug interface
bullet_jaune_2 Connection to the TPIU
bullet_jaune_2 AHB Trace Macrocell (HTM)