Objectives
|
- Convenient course material with space for taking notes
- Example code, labs and solutions
- A STM32F2 (Cortex-M3) Board for Labs
- A PC for two trainees with the free System Workbench for STM32 IDE to flash and debug applications
- Basic knowledge of C language (or another low-level language)
- Knowledge of binary arithmetic
- The knowledge of embedded processor philosophy is recommended
- Cours théorique
- Support imprimé et PDF (en anglais).
- Assistance du formateur tout au long de la formation.
- Activités pratiques (40-50% de la durée)
- Exemples de code, exercices et solutions.
- Un PC (un par binôme au-delà de 6 stagiaires) avec carte cible si nécessaire.
- Machine virtuelle préconfigurée téléchargeable pour refaire les TP après le cours.
- Chaque session débute par un point avec les stagiaires.
- Tout ingénieur ou technicien en systèmes embarqués possédant les prérequis ci-dessus.
- Les prérequis sont évalués avant la formation.
- Les progrès sont évalués par le formateur via les exercices pratiques, et par des quizz pour les sections sans exercices.
- Chaque stagiaire reçoit une attestation de réussite.
- En cas de prérequis manquant, une formation différente ou complémentaire est proposée.
Plan du cours
- Using cross compilation
- Compiler, Assembler and Linker Purpose
- C source program structure
- Preprocessor
- #define, #include instructions
- Writing Macros with precaution
- Writing Header files with precaution
- Reviewing the different object file sections
- Library inclusion
- Startup file
- GCC compiler options
- Configuring the linker to place code and data in the memory, executing code from RAM
- Makefile
| Exercise : | Following the different build steps of a simple program | |
| Exercise : | Working with Conditional Compilation | |
| Exercise : | Working with the linker, placing code and data in the memory | |
- Creating a project from scratch
- Debug probe
- Communicating with the Target
- Debugger Windows : Source (C and Disassembly), Memory, Stack, Variables, Registers
- Breakpoints
- Variable storage class (static, automatic, register et extern) with their location and lifetime
- Local and global variable declaration
- Scalar types (char, halfword, int, float and double)
- Constants
- Strings
- Type conversion, casting
- The volatile attribute
- C operators (logical, arithmetical and relational)
- Operator priority
| Exercise : | Working with types and operators | |
- If/else structure
- Switch/case structure
- While, do/while and for loopf
- Break, continue and go instructions
| Exercise : | Working with control structures | |
- Pointer definition
- Pointer Initialization, pointer access, pointer operations
- Constant and volatile pointer
- The restrict attribute
- One- and Multi-dimensional arrays
- Array initialization, array access, array operations
- Pointer array
| Exercise : | Working with pointers | |
| Exercise : | Working with arrays | |
- Structure variable declaration
- Structure variable pointer declaration
- Structure field access
- Padding, #pragma pack compilation directive
- Big and little endian format
- Bit field structure declaration
- Modeling peripheral register
- Structure array
- Typedef type
- Enum type
- Union declaration
- Union intitialization and operation
| Exercise : | Modeling a STM32F2 timer to program it | |
- Function prototype (arguments, return value)
- Function definition and declaration
- Function visibility
- Function pointer
- Function call
- Passing parameter
- Stack operation
- Stack frame, call stack
- The recursivity and the stack
- Macro vs function
- Pipeline and branch
- Function inlining
- Interfacing C and Assembler
| Exercise : | Passing parameter to function | |
| Exercise : | Analyzing the stack utilization | |
- Stdio library
- Getchar and putchar functions
- Memcpy function
- Printf and scanf functions
- File access function review
- Programming FIFOs
- Programming Linked list (simple and double)
| Exercise : | Working with linked list | |
- Dynamic allocation functions: malloc, free function
- Sizeof operator
- Dynamic memory allocation vs static memory allocation
- Stack vs Heap
- Memory management algorithms overview
- Buddy System
- Best fit / First Fit
- Pools Management
- Memory management errors
| Exercise : | Using dynamic allocation | |
- Peripheral Programming
- Peripheral register access and Memory access
- Signed vs unsigned
- Memory latency
- Cache
- Synchronization
- Interruption necessity in an embedded context
- Level and pulse triggered interrupts
- Interrupt clearance
- Interrupt handler writing
- Vector table
- Vector installation
- V7-M Architecture Overview
- Harvard Architecture, I-Code, D-Code and System Bus
- Registers (Two stacks pointers)
- States
- Different Running-modes and Privileged Levels
- System Control Block
- Systick Timer
- Alignment and Endianness
- CMSIS Library
- Exception / Interrupt Mechanism Overview
- Vector Table
- Interrut entry and return Overview
- Tail-Chaining
- Pre-emption (Nesting)
- NVIC Integrated Interrupt Controller
- Exception Priority Management
- Debug Interface Ovevriew
- Clarifying the boot sequence
| Exercise : | Timer Interrupt Management | |
- Compiler optimizations
- Mixing C and Assembly
- AAPCS
- Function inlining
- Unaligned Accesses, padding
- Local and global data issues, alignment, Structure
| Exercise : | Interfacing C and Assembler | |
| Exercise : | Demo: Long Branch, Function inlining, padding | |
- ARM core based architecture
- Description of STM32F407X SoC architecture
- Clarifying the internal data and instruction paths: Bus Matrix, AHB-lite interconnect, peripheral buses, AHB-to-APB bridges, DMAs
- Memory Organization
- Flash memory read interface
- Adaptive Real-Time memory accelerator, instruction prefetch queue and branch cache
- Sector and mass erase
- Internal SRAMs
- Concurrent access to 112 KB and 16 KB blocks
- SoC mapping
- Flash Programming methods
- Boot Configuration
- Power, Reset and Clocking Overview
- DMA Overview
- UART Overview
| Exercise : | Get Metrics for a data copy using the DMA or not | |
| Exercise : | Programming the UART to redirect the printf on the serial port | |
| Exercise : | Displaying ADC value on LCD | |
Plus d'information
Pour vous enregistrer ou pour toute information supplémentaire, contactez nous par email à l'adresse info@ac6-formation.com.
Les inscriptions aux sessions de formation sont acceptées jusqu'à une semaine avant le début de la formation. Pour une inscription plus tardive nous consulter
Vous pouvez aussi remplir et nous envoyer le bulletin d'inscription
Ce cours peut être dispensé dans notre centre de formation près de Paris ou dans vos locaux, en France ou dans le monde entier.
Les sessions inter-entreprises programmées sont ouvertes dès deux inscrits. Sous condition d'un dossier complet, les inscriptions sont acceptées jusqu'à une semaine avant le début de la formation.
Dernière mise à jour du plan de cours : 20 mai 2026
L'inscription à nos formations est soumise à nos Conditions Générales de Vente