mbedtarget - a simulink target for cortex-m microcontrollers · simulink model.slx simulink coder...

37
MbedTarget - A Simulink Target for Cortex-M Microcontrollers Olaf Hagendorf

Upload: others

Post on 27-Oct-2019

65 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

MbedTarget - A Simulink

Target for Cortex-M

Microcontrollers

Olaf Hagendorf

Page 2: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018 2

Inhalt

Motivation und Ziele

Cortex-M Mikrocontroller

Simulink/Embedded Coder Targets

Mbed Target

Fazit/Ausblick

Page 3: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018 3

Spezifikationen

Prozessanalyse

(Technologieschema,..)

Modellierung

Simulation

Entwickl. von

Steuerungsfunktionen

Erprobung

Codierung

Test des

Gesamtsystems

Test von

Teilsystemen

Komponententests

ImplementierungImplementierung

Page 4: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Masterarbeit – mechatronische Hand

4

Page 5: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

studentischen Arbeiten – Segway und

Strömungskanal

5

Page 6: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Entwurf Regler/Steuerung

6

Page 7: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Entwurf Regler/Steuerung

7

Realer Prozess

Page 8: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Ziel

8

Page 9: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Cortex-M Serien

9

Quelle: https://www.arm.com

Page 10: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Standardisierte Cortex Mx Kerne

10

Quelle: https://www.arm.com

Page 11: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Cortex M4F: STM32F407

11

Quelle: https://www.st.com Datasheet STM32F407xx

Page 12: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed

12

Quelle: https://www.mbed.com/en/

Page 13: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed

13

Quelle: https://www.mbed.com/en/

Page 14: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed OS Grundstruktur

14

allg. Code identisch für alle Targetsmbed API

Applikation

mbed HAL

Hersteller HAL

CMSIS

Mikrocontroller

targetspezifischer wrapper zw.

Mbed HAL und Hersteller HAL

allg. Hersteller HAL+CMSIS (nicht mbed spezif.)

C++

C

Page 15: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed Beispiel: Blinky

15

#include "mbed.h"

DigitalOut myled(LED1);

int main() {

while (1) {

myled = 1;

wait(0.5);

myled = 0;

wait(0.5);

}

}

Page 16: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Simulink Targets für Cortex-M

Von Mathworks:

Embedded Coder Support Package for STMicroelectronics

Discovery Boards

Simulink Coder Support Package for STMicroelectronics Nucleo

Boards

Vom MCU Hersteller:

STM32-MAT/TARGET

Von Drittanbietern:

Waijung Blockset

16

Page 17: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Simulink Targets für Cortex-M

Bewertung:

Sehr unterschiedliche Funktionalität:

STM32-MAT/TARGET – fast vollständige MCU

Support Packages von Mathworks – minimal

Eingeschränkte Kompatibilität

Mathworks: verschiedene Targets für wenige MCUs

Herstellerspezifisch: nur vom Hersteller

Closed Source

17

Page 18: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed Target

Blockset für Peripheriefunktionen basierend auf Mbed OS

Digital- und Analog Input/Output, Timer, Encoder, …

Kommunikation: UART, I2C, SPI, Onewire, Ethernet, …

Externe ICs:

ADCs, DACs, I/O

Sensoren: Temperatur, Druck, Entfernung, IMUs

Aktoren: Schrittmotor

Basiert auf Mbed Offline Toolchain

Unterstützt Embedded Coder und Simulink Coder

Open Source

18

Page 19: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed Target - Beispiel

19

Page 20: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed Target - Beispiel

20

Page 21: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

%function Start(block, system) Output

%assign nPortName = LibBlockParameterValue(PortName, 0)

%assign nPinNumber = LibBlockParameterValue(PinNumber, 0)

%assign pname = "P" + FEVAL("char",nPortName+64) + "_" + FEVAL("int2str",nPinNumber-1)

%assign name = FEVAL("strrep",LibGetFormattedBlockPath(block),"/","_")

...

// %<Type> (digitalOutput): '%<Name>'

DigitalOut %<name>(%<pname>);

...

%endfunction

%function Outputs(block, system) Output

%assign u1_val = LibBlockInputSignal(0, "", "", 0)

%assign name = FEVAL("strrep",LibGetFormattedBlockPath(block),"/","_")

%<name> = %<u1_val>;

%endfunction

Mbed Target – Simulink Block

21

S-Function

DigitalOut myled(LED1);

myled = 1; myled = 0;

TLC Datei

Mbed Code

Page 22: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed Target - Workflow

22

Simulinkmodel.slx

Simulink CoderBuild

Target Language Compiler

Make

Target flash

model.cpp+

Makefile

model.rtw

Mbed OS SimulinkProject generator

Mbed OS 5library

target_tools.mk

Simulink CoderSimulink Coder

Run-time interfacesupport files

extensionlibraries

model.bin

librarieslibraries

Mbed OS 5offline toolchain

Page 23: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Mbed Target

23

Page 24: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

24

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 25: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

25

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 26: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

26

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 27: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

27

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 28: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

28

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 29: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

29

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 30: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

30

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 31: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

31

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 32: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

32

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 33: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

33

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Page 34: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

34

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Nachteil: Ressourcenverbrauch (Speicher)

Page 35: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

35

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Nachteil: Ressourcenverbrauch (Speicher)

programming

principle

Flash size

(byte)

RAM size

(byte)

assembler 88 0

C without library 716 1632

MCU specific HAL 13921

28522

10321

10322

Mbed HAL 225763

377164

14323

84844

MbedTarget v1 58932 8060

1 low layer library used [5] 2 high layer library used [5]3 without RTOS 4 with RTOS (default config.)

Page 36: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018

Fazit/Ausblick

36

Fazit:

Komplett freies Target für Simulink und Embedded Coder

Unterstützung aller Mbed kompatiblen Mikrocontroller

Umfangreiches Blockset für Mbed OS API

Nachteil: Ressourcenverbrauch (Speicher)

Ausblick:

Weitere Vereinfachung der Benutzung

Unterstützung External Mode

Erweiterung des Block Sets

Page 37: MbedTarget - A Simulink Target for Cortex-M Microcontrollers · Simulink model.slx Simulink Coder Build Target Language Compiler Make Target flash model.cpp + Makefile model.rtw Mbed

Olaf Hagendorf, ASIM Fachtagung Heilbronn 08./09.03.2018 37

Fragen?