|
|
|
|
| FIRST DAY - ARCHITECTURE |
| INTRODUCTION TO ARM CORTEX-M4 |
 |
ARM Cortex-M4 processor macrocell |
 |
Programmer’s model |
 |
Instruction pipeline |
 |
Fixed memory map |
 |
Privilege, modes and stacks |
 |
Memory Protection Unit |
 |
Interrupt handling |
 |
Nested Vectored Interrupt Controller [NVIC] |
 |
Power management |
 |
Debug |
| ARM CORTEX-M4 CORE |
 |
Special purpose registers |
 |
Datapath and pipeline |
 |
Write buffer |
 |
Bit-banding |
 |
System timer |
 |
State, privilege and stacks |
 |
System control block |
| ARCHITECTURE OF A SOC BASED ON CORTEX-M4 |
 |
Internal bus matrix |
 |
External bus matrix to support DMA masters |
 |
Connecting peripherals |
 |
Sharing resources between Cortex-M4 and other CPUs |
 |
Connection to Power Manager Controller |
| SECOND DAY - PROGRAMMING |
| EMBEDDED SOFTWARE DEVELOPMENT WITH CORTEX-M4 |
 |
Application startup |
 |
Placing code, data, stack and heap in the memory map, scatterloading |
 |
Reset and initialisation |
 |
Placing a minimal vector table |
 |
Further memory map considerations, 8-byte stack alignment in handlers |
| THUMB-2 INSTRUCTION SET |
 |
General points on syntax |
 |
Data processing instructions |
 |
Branch and control flow instructions |
 |
Memory access instructions |
 |
Exception generating instructions |
 |
If…then conditional blocks |
 |
Stack in operation |
 |
Exclusive load and store instructions, implementing atomic sequences |
 |
Memory barriers and synchronization |
| CORTEX-M4 DSP INSTRUCTION SET |
 |
Multiply instructions |
 |
Packing / unpacking instructions |
 |
V6 ARM SIMD packed add / sub instructions |
 |
SIMD combined add/sub instructions, implementing canonical complex operations |
 |
Multiply and multiply accumulate instructions |
 |
SIMD sum absolute difference instructions |
 |
SIMD select instruction |
 |
Saturation instructions |
| FLOATING POINT UNIT |
 |
Introduction to IEEE754 |
 |
Floating point arithmetic |
 |
Cortex-M4F single precision FPU |
 |
Register bank |
 |
Enabling the FPU |
 |
FPU performance, fused MAC |
 |
Improving the performance by selection flush-to-zero mode and default NaN mode |
 |
Extension of AAPCS to include FP registers |
| C/C++ COMPILER HINTS AND TIPS FOR Cortex-M4 |
 |
Mixing C/C++ and assembly |
 |
Coding with ARM compiler |
 |
Measuring stack usage |
 |
Unaligned accesses |
 |
Local and global data issues, alignment of structures |
 |
Further optimisations, linker feedback |
| THIRD DAY - EXCEPTIONS, DEBUG |
| INTERRUPTS |
 |
Basic interrupt operation, micro-coded interrupt mechanism |
 |
Interrupt entry / exit, timing diagrams |
 |
Interrupt stack |
 |
Tail chaining |
 |
Interrupt response, pre-emption |
 |
Interrupt prioritization |
 |
Interrupt handlers |