Top Banner
mbeddr C An extensible version of the C programming language for Embedded Programming C the Difference C the Future gefördert durch das BMBF Förderkennzeichen 01|S11014
84

Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Mar 19, 2019

Download

Documents

vudiep
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

mbeddr C An extensible version of the

C programming language

for Embedded Programming

C the Difference – C the Future

gefördert durch das BMBF

Förderkennzeichen 01|S11014

Page 2: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 3: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

What if… you could change

languages like you can change programs?

Page 4: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

A Test, written in essentially normal C

Page 5: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

The same test, but now using additional language concepts from the unit test extension

Page 6: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

The same test, but now using additional language concepts from the unit test extension

Test Cases are a kind of void function, but with adapted syntax

Page 7: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

The same test, but now using additional language concepts from the unit test extension

Asset Statements check conditions; they are restricted to be used only in test cases.

Page 8: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

The same test, but now using additional language concepts from the unit test extension

A special expression that executes tests, and evaluates to the number of failed tests (which is then returned to the OS here)

Page 9: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

The unit testing extensions are implemented in separate language module.

The constructs become available to programmers only if they import the respective language module into their program

This keeps the overall language clean --- a precondition for building extensions targetting different audiences.

Page 10: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 11: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

mbeddr C

Approach

Page 12: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

An extensible C

with support for

formal methods,

requirements

and PLE.

Page 13: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

IDE for Everything

Page 14: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

A debugger

for all of that The Debugger debugs the code on the level of the extensions! When defining new language concepts, language developers also specify how these concepts should be debugged.

Page 15: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 16: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

SDK for building

your own

Language

Extensions! This SDK is essentially MPS , plus

some custom documentation.

Page 17: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

IDE for Everything

JetBrains

MPS Open Source

Language Workbench

Apache 2.0

Available at http://jetbrains.com/mps

Page 18: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 19: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Challenges in embedded software

development

Page 20: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Abstraction

without

Runtime Cost

Abstractions are important to write

maintainable and analyzable software;

however,

Abstractions should not incur runtime

overhead (or at least as little as possible)

Page 21: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

C considered

unsafe

void pointers are evil

standards like MISRA-C prohibit certain

constructs from being used in many

organizations

Page 22: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Program

Annotations

Things like physical units, value ranges,

or access patterns to data structures are

often defined outside the code program in

some kind of XML

The C type checker doesn‘t know about them,

a separate checker is used --- cumbersome!

Page 23: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Static Checks

and

Verification

Model Checking, SAT solving etc. are

important to „proof“ the correctness of

programs, however,

it is expensive to do on C code since C‘s

abstractions are too low-level

Page 24: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Product Lines

and

Requirement

Traces Trace links from code (or other implementation artifacts) back to requirements must be supported Product Line Variability must be handled in a more maintainable way than #ifdefs

Page 25: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Separate, hard to

integrate Tools

Mode{ing too{s don‘t integrate we{{ with each other, or with manually written code Mode{ing too{s aren‘t rea{{y extensib{e, making them hard to adapt to specific domains

Page 26: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 27: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

mbeddr C

Solution

Philosophy

Page 28: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

more specialized domains

more specialized languages

Extension Extension Domains can be seen as

specializations of

others. Each may require

specialized language

support

Page 29: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

more specialized domains

more specialized languages

Extension Extension There is a general

domain the encompasses

all programs writable

in C

Page 30: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

more specialized domains

more specialized languages

Extension Extension Embedded software is a

specialzation of C ---

requiring special

language abstractions

Page 31: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

more specialized domains

more specialized languages

Extension Extension Automotive or

Aerospace are subsequent

specia{izations … ad

infinitum, in principle.

Page 32: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 33: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Incremental Trafo

Assume we have a

module which

contains a

components which in

turn contains a

state machine. How

is this compiled?

Page 34: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Incremental Trafo

Assume we have a

module which

contains a

components which in

turn contains a

state machine. How

is this compiled?

Page 35: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Incremental Trafo

In the first step,

the state machine

is reduced to a

component operation

that contains e.g.

the usual switch/

case way of

implementing a SM

Page 36: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Incremental Trafo

In the next step,

the component is

reduced to a bunch

of normal C methods;

the contains switch

/case statement just

remains unchanged.

Page 37: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Incremental Trafo

Finally, we

generate text from

the C program and

feed it into a

regular compiler,

such as GCC. mbeddr

uses incremental

reduction!

Page 38: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 39: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Language Extension

The core contains all of C plus a couple of utilities such as namespaces, closures, real boolean types and integration with make. A few changes have been made relative to standard C --- these are clearly explained in the docs. It is designed to be extensible by users, e.g. it is simple to provide an integration with a custom build infrastructure

Page 40: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Language Extension

These standard extensions are intended to be useful by

many embedded software proejects. Most of them will become

Open Source during 2012

Page 41: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Language Extension The SDK lets users build their own language extensions

in a modular way --- without changing the existing

languages, and independent of other extensions.

Page 42: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 43: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Subset of

Available

Extensions

Page 44: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

All of C

(cleaned-up) no preprocessor (better replacements!),

modules/namespaces, unit tests, C99 primitive types

required, booleans, binary literals, function references,

closures

Page 45: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 46: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

modules

export

instead of

header

module

imports

Page 47: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Retargettable

Build

Integration

Page 48: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 49: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Example: different

target used for

generating lego

NXT Osek make

files (special

format)

Page 50: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Native Support

for Unit Testing

and Logging

Page 51: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 52: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Test Case

Assert

Statement

Fail

Statement

Expression to

run a set of

tests

Page 53: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 54: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Message

Definitions with

ID, arguments

and explaining

text

Various forms of

report state-

ments to report

messages.

Translated

differently

dependending on

the target

platform

Messages can be

deactivated ---

no reporting,

zero overhead!

Page 55: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Components

Interfaces

Contracts

Instances

Mocks & Stubs

Page 56: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 57: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Interface with

Operations

Optionally with

pre- and post

conditions ---

automatically

enforced in

every

implementing

component

Instantiatable,

stateful compo-

nents that

provide and

require ports Components

implement

operations of

provided ports Optional

overhead-free

translation to

plain C – no

polymorphism

Page 58: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 59: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Instantiation

and port

connection

Mock components

specify expected

behavior

Test case uses mocks; if

behavior is different

from specified expected

behavior, the test fails

Page 60: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

State Machines

+

Model Checking

Page 61: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 62: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

in events with

arguments

bounded int

types for better

checking

Out events with

optional bindings

to functions

Statemachine-local

variables

States with

entry and exit

actions

Transition using

C expressions as

guards

Transitions also

have transition

actions

Page 63: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 64: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Model Checker

Results as Tabke A number of

default

properties for

reachability,

non-determinism,

variable ranges

Additional

properties can

be described

using an

abstraction of

LTL/CTL

Counter example if a

property failes ---

clicking on example

highlights code in

model

Page 65: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Requirements

Tracability

Page 66: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 67: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Simple way to specify

requirements (kind,

ID, description)

Alternatively import

them from external

tool

Requirements traces

can be attached to

any program element

expressed in any

language --- no

changes to host

language necessary

Requirements kind

and trace kind can be

extended.

Page 68: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

And code can also be

edited without the

traces, if developers

prefer that.

Page 69: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Product Line

Variability

Page 70: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Textual Notation for

Feature Models

Optional Feature

Configuration Model

(„intance“ of the

Feature Model) that

selects a set of

features

Page 71: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Code contains

annotations with

boolean expressions

over the features in

Feature Model

Color depends on

expression --- same

expression, same

color

This page shows the

product line mode ---

all options in code

Page 72: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Code in the debug

configuration ---

„everything in“

Page 73: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Code in the

production

configuration ---

„everything out“

Page 74: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 75: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Status

and

Availability

Page 76: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

http://mbeddr.com

Introduction, Blog, Papers, Code

Page 77: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

LWES Language Workbenches

for Embedded Systems

Developed in the

gefördert durch das BMBF

Förderkennzeichen 01|S11014

Project runs till June 2013 itemis, fortiss, SICK, Lear

Page 78: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Core is

Open Source

(EPL) Eclipse Public License Essentually no restrictions regarding commercial use

Page 79: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Some Extensions

will be

Open Sourced

this year

We have to finish/stabilize them before we make them available Statemachines & Components will certainly be part of the Open Source package

Page 80: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

Custom

Extensions and

Professional

Services by

Introducing the tool

Language Definition and Extension

We‘re {ooking for protype customers!

Page 81: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

support for

graphical early

2013 state machines and block diagrams

integrated with text

Page 82: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

integration

in early 2013

native integration with Eclipse UI

EMF export already possible today

Page 83: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into
Page 84: Hier ist der Font - mbeddr - engineering the future of ...mbeddr.com/files/mbeddroverviewslides-ii.pdfIncremental Trafo Finally, we generate text from the C program and feed it into

mbeddr C An extensible version of the

C programming language

for Embedded Programming

C the Difference – C the Future

http://mbeddr.com