Code Generation for STM32 MCUs
using MATLAB® and Simulink®
November 2014
Key Information 2
• ARM/ST/MathWorks initiative
• Optimized Cortex-M code for Embedded Coder based on ARM’s CMSIS DSP SW library
• Peripheral blockset for Simulink provided by ST based on STM32Cube abstraction layers;
opening access for the use of whole STM32 portfolio
• Compiler / IDE integration for MATLAB, based on Keil, IAR, and Atollic IDEs
• Enables Model-Based Design Workflow for STM32 MCUs
• Create executable models, instead of paper documents
• Generate code automatically, instead of by hand
• Automate software integration, instead of manually
• Reduces cost and time, improves quality
• ~33% cost & time reduction in ECU development
• ~50% fewer specification errors
Why Matlab/Simulink on STM32 ? 3
• Simulation is always interesting when creating a mathematical
algorithm
• Matlab/Simulink not only allows this simulation, but opens access to
execution really being done on STM32 target, thus checking in real
conditions the behavior of an algorithm
• Moreover, the algorithm can be connected to real internal STM32
peripherals, ending up with a complete processing 100% done in
STM32, with no written lines of code and a complete model-driven
approach, less prone to errors
Quick description of tools 4
Toolchain
High level language for complex A toolchain from one of our
Matlab Collection of embedded partners is required to compile
calculations STM32Cube
software components, highly and link C code generated by
Embedded
portable from one STM32 to Embedded Coder,
Software
another STM32CubeMX and
Graphical development environment STM32Cube embedded
Complete environment of simulation software
Simulink
and implementation of embedded
systems. Configuration software tool
on the PC, able to generate
STM32CubeMX
initialization C code based
on user choices
C code generation for embedded
Embedded systems.
Coder Embedded system interface
Using scenarios and tools 5
• Step 1: Pure simulation MATLAB/
Simulink
• Everything done on the PC
• Step 2: Processor-in-the-loop (PIL) MATLAB/ STM32Cube
Simulink Embedded
• Algorithm fully executed on STM32 MCU Software Toolchain
Core
• Data (Input or output) exchanged Embedded
between MATLAB/Simulink and STM32 Coder STM32CubeMX
MCU via UART *: used only for UART
• Step 3: Everything on STM32 MATLAB/ STM32Cube
• Data (input or output) obtained from Simulink Embedded
Core
Software Toolchain
STM32 MCU through its peripherals ADC
(ADC, Timers, …) and algorithm fully Embedded
Coder STM32CubeMX TIM
executed on STM32 MCU
I2C
6
Step 1: Pure simulation
Create Model 7
Simulink
Stateflow
Simulate and Test on PC 8
Simulink
Command
vs.
Response
PWM Duty
Cycles
9
Step 2: Processor-in-the-loop
Processor-in-the-loop (PIL) 10
Host
Serial Cable
Target
Compare
to model
results
STM32
Generate Cortex-M Optimized Code 11
Embedded
Coder
12
Step 3: Everything on STM32
Handle data through real peripherals 13
• Configure your peripherals through a bridge with the
STM32CubeMX tool
• Flash your device and run !
• More info at www.st.com/stm32-mat-target
Summary 14
• New Support Package for MATLAB, Simulink, and Embedded Coder
• Generate optimized code
• Automate build, integration and verification steps
• Now with ST and MathWorks you can:
• Accelerate time to market
• Reduce development costs
• Improve product quality
• …. Join the Design Community !!!