© 2015 the mathworks, inc.€¦ · 4 what to consider for model-based design component-based...

43
1 © 2015 The MathWorks, Inc.

Upload: others

Post on 22-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

1© 2015 The MathWorks, Inc.

Page 2: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

2© 2015 The MathWorks, Inc.

New Perspective for Large and

Complex Production Software

Development

류성연차장

대규모 SW 개발에적합한모델링패턴및코드생성방안

Page 3: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

3

Issues for Large-scaled Embedded Software Development

Work Phase

IssuesModeling

Code

Generation

1. Complexity

2. Integration

(Reusability + Scalability)

3. Scheduling

4. Multi-instantiation

Page 4: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

4

What to Consider for Model-Based Design

▪ Component-based design

▪ Integration in a composition level

▪ Component scheduling

▪ Code generation on SW frameworks

▪ Generated code customization

SW modeling patterns

Code generation workflow

Your-custom Framework

Page 5: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

5

For Software Modeling PatternsExample: Throttle body control system

Throttle body controller

Plant(throttle body)

Acceleration pedal Input

Throttle position feedback

Code generation

model

Signal processing

PID

controllerActuation

command

Page 6: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

6

Inadequate Software Modeling & Code Generation

Not adequate for

larger-scale software !!

❖Not reflecting SW architecture

1) Modeling in one Simulink file

2) Generated code in one function and one file

3) Hard to analyze interfaces among units

4) Unit execution orders are predefined

ThrottleBodyModel.slx

Page 7: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

7

▪ If there are many models from other developers or teams…

Let’s Start from Software Architecture

ThrottleController.slx

Page 8: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

8

▪ Modeling based on component and integration as a composition using

Model Reference

Integration in a Composition Level

Component 1

Component 2S/W Composition

Page 9: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

9

What the Model Reference…?

▪ Model Reference enables to design models based on SW component

C1_Main.slx

C1_5ms.slx

C1_aync.slx

Page 10: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

10

Creating Separate Test Harness Model

▪ Your model for code generation is separate from test harness model

Only for testing

(unit test/integration test)

Model Reference block

Signal processing

PID

controller

Actuation

command

Only for code generation

Page 11: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

11

Issues for Large-scaled Embedded Software Development

Work Phase

IssuesModeling

Code

Generation

1. Complexity

2. Integration

(Reusability + Scalability)

3. Scheduling

4. Multi-instantiation

Page 12: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

12

▪ Requirement to analyze the results according to scheduling

SW Scheduling for Larger-scale Software

Is your execution sequence always simple?

How

guarantee

…?

OS/ scheduler

Multicore execution

Multi tasking

t t+1 t+2 t+3 t+4 t+5

t t+1 t+2 t+3 t+4 t+5

a a+1 a+2

task1

task2

Or not?

Page 13: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

13

Typical Workflow for Software Integration and Scheduling

▪ Collecting models for code generation with considering scheduling

Now how do I integrate

to base code?

C1.slxC2.slx

Page 14: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

14

Collect Entry Point Functions for Each Component

c1

c2

c1_step0()

c1_async()

c1_step1()

c2_step0()

c2_async()

c2_step1()

And, how do I create

scheduling orders?

Page 15: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

15

Application Integrated to Base Software

▪ Integrate entry point functions from components with run-time environment

Event Handler 2

Event Handler 1

Periodic Task 20ms

Periodic Task 10msOS/

Scheduler

c1

c2

c1_step0()

c1_async()

c1_step1()

c2_step0()

c2_async()

c2_step1()

But, I want to know

scheduling effects

before integration!

Page 16: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

16

Software Testing with Scheduling EffectsExport Function

Scheduler Export Function Models

triggered by scheduler

Scheduler makes periodic events (ex. 5ms/10ms)

Page 17: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

17

Redesigned Model with Scheduler and Export FunctionsExport Function

Throttle body controller

Scheduler

Throttle body controller

Signal

processing

PID

controller

Actuation

command

Page 18: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

18

Demo: SW Modeling with Export FunctionsExport Function

Page 19: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

19

Testing Scheduling Effects from Different Patterned ModelsSchedulable Component

▪ What if there are any other models with different modeling patterns ?

Wow, How do I resolve

this struggles?

To integrate,

change to

export functions

No, impossible…

Export-function modelsRate-based models

Page 20: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

20

Creating Schedulable Component from Model ReferenceSchedulable Component

Rate-based model: Model executing in periodic sampling rate

Schedulable Component

Event port for scheduling

This port is

not for code generation

but only for simulation

Page 21: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

21

Demo: SW Modeling with Schedulable ComponentsSchedulable Component

Page 22: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

22

Issues for Large-scaled Embedded Software Development

Work Phase

IssuesModeling

Code

Generation

1. Complexity

2. Integration

(Reusability + Scalability)

3. Scheduling

4. Multi-instantiation

Page 23: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

23

Modeling for Access to Hardware ResourcesSimulink Function

AD

C0

PW

M

AD

C1

Application

▪ Some application SW does not process

external signals directly. Or…

Page 24: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

24

Modeling for Access to Hardware ResourcesSimulink Function

AD

C0

PW

M

AD

C1

Application

Basic software

▪ Some application SW does not process

external signals directly. Or…

▪ External signals are processed in BSW

or HAL and accessed by applications

▪ Application software use APIs to

request or send data

Simulink Function

Application

Function Caller

Function Caller

Basic software

Only for simulation

request

Page 25: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

25

Access to Shared Resources with Simulink FunctionsSimulink Function

Page 26: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

26

Demo: SW Modeling with Simulink FunctionsSimulink Function

Page 27: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

27

Issues for Large-scaled Embedded Software Development

Work Phase

IssuesModeling

Code

Generation

1. Complexity

2. Integration

(Reusability + Scalability)

3. Scheduling

4. Multi-instantiation

Page 28: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

28

Self-Study Resources for Embedded Code Generation

▪ Embedded Coder Quick Start Video

▪ Simulink와 Embedded Coder를이용한최적코드생성(MATLAB Expo 2017)

▪ C code generation from Simulink model(webinar)

▪ Other Embedded Coder Videos

http://www.matlabexpo.com/kr/2017/proceedings/better-than-hand-generating-highly-

optimized-code-using-simulink-embedded-coder.pdf

https://kr.mathworks.com/videos/software-design-and-c-code-generation-using-simulink-

116860.html?elqsid=1524127259550&potential_use=Commercial

https://kr.mathworks.com/videos/coder-summit-2018-how-to-generate-

production-code-in-5-minutes--1522057622892.html?s_tid=srchtitle

https://kr.mathworks.com/products/embedded-coder/videos.html?s_tid=srchtitle

Page 29: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

29

Multi-instantiation for Large-scaled Software

▪ Issues

– Limited resources for code size

– Maintenance problem

▪ Solution

– Calling the same functions

through multi-instantiation

when generating code

Generating code for multi-instantiation

Page 30: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

30

Configuration for Multi-instantiation

C

C++

Before(non-reusable) After(reusable)

Creating instances

Page 31: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

31

Issues for Large-scaled Embedded Software Development

Work Phase

IssuesModeling

Code

Generation

1. Complexity

2. Integration

(Reusability + Scalability)

3. Scheduling

4. Multi-instantiation

Page 32: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

32

Emergence of the Software Framework

Conform to a (standard) framework (ex. AUTOSAR)

COM I/OScheduler Memory

Deploy

Page 33: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

33

Issue 1: Mapping Generated Code to Software Frameworks

▪ There are many frameworks (ex. AUTOSAR, ARINC, etc) including bare-

metal software

▪ Solution : Configuration management of code mapping information apart

from S/W frameworks

– Just using code mapping information according to requirements

Code generation

for bare-metal

Software

Code generation

for AUTOSAR

ARINC, POSIX, etc

Requirement of Project A Requirement of Project B

Maximizing model reusability for

S/W maintenance, cost reduction

Function

Models

Page 34: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

34

Issue 2: Code Packaging for Efficient Code Management

▪ There are needs to manage efficient tuning parameters in large-scaled S/W

– To change only tuning parameters according to requirements

– Efficient code maintenance

▪ Solution

– Configuring storage class for code generation

– Easy customization using GUI Code for

algorithm

Controller.c

Controller.h

Code for

parameters

Parameter.h

Parameter.c

Page 35: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

35

Code Perspective & Embedded Coder Dictionary

▪ Effective code generation customization as to SW frameworks

Code Perspective

• Easy configuration for generated code into

any C/C++ SW framework

Embedded Coder Dictionary

• GUI for custom code definitions- Function template

- Storage class

- Memory section

Page 36: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

36

Embedded Coder Dictionary

• Storage classes

- Control the code generated for model data

(I/O, signals, data stores, states, parameters)

Storage allocation and scope(ex, global, extern, static, register, pointer …)

Bitfield, Constant, Pre-processer, …

Export to or import from external files, …

Etc.: Structure type, Get/Set APIs, …

Page 37: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

37

Embedded Coder Dictionary

• Function customization templates

- Control naming of model entry-point functions (ex. model_step)

- Apply memory sections to the entry-point functions

• Memory section

- Control the placement of data and functions in memory (ex. #pragma)

Page 38: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

38

Code Perspective

1) Embedded Coder Quick Help• Embedded Quick Start

• Hyperlink to configuration

and documents

• Help video clips

2) Property Inspector• Configure model properties

3-1) Model Data Editor• Inspect and edit data items

• Configure storage class of

each blocks or signals

3-2) Code Mapping Editor• Configuring model data elements

and entry-point functions for code

generation comprehensively

Page 39: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

39

Example on Issue 1: Code mapping implementation

▪ Code mapping to embedded S/W frameworks

– Entry-point functions and interfaces can be customized according to SW architecture

Code mapping to C Code mapping to AUTOSAR

Embedded Coder Dictionary

AUTOSAR Dictionary

Page 40: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

40

Example on Issue 2: Partition and Modularize Generated Code

▪ Tuning parameter modularization example with customizing storage class

Typedef struct

{

int D_Gain;

int I_Gain;

int P_Gain;

} rt_Sl_Struct_type;

customization:

Struct + ExportToFile

Algorithm code

Controller.c

Controller.h

Tuning

parameters

Parameter.h

Parameter.c

Page 41: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

41

Partition and Modularize Generated CodeExample: Tuning parameter modularization

Page 42: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

42

Issues for Large-scaled Embedded Software Development

Work Phase

IssuesModeling

Code

Generation

1. Complexity

2. Integration

(Reusability + Scalability)

3. Scheduling

4. Multi-instantiation

Page 43: © 2015 The MathWorks, Inc.€¦ · 4 What to Consider for Model-Based Design Component-based design Integration in a composition level Component scheduling Code generation on SW

43

Key Takeaway

▪ SW modeling pattern importance for effective code generation

– Component-based modeling

– Integration in a composition level using Model Reference

– Export functions/ scheduling components modeling patterns

– Simulink Function models for access to hardware resources

▪ Code generation customization framework

– Code Perspective

– Embedded Coder Dictionary