@odinthenerd
@odin
- dinthe
thener nerd
– not the god
Auto-Intern GmbH 1
@odin odinthe thener nerd not the god Auto-Intern GmbH 1 - - PowerPoint PPT Presentation
@odinthenerd @odin odinthe thener nerd not the god Auto-Intern GmbH 1 @odinthenerd A possible future of embedded development Auto-Intern GmbH 2 @odinthenerd Sean Parent Auto-Intern GmbH 3 @odinthenerd Every rything is is
@odinthenerd
– not the god
Auto-Intern GmbH 1
@odinthenerd
Auto-Intern GmbH 2
@odinthenerd
Sean Parent
Auto-Intern GmbH 3
@odinthenerd
Auto-Intern GmbH 4
@odinthenerd
Auto-Intern GmbH 5
Are you a hard real-time system?
@odinthenerd
Auto-Intern GmbH 6
Are you a hard real-time system?
Are you master of everything?
@odinthenerd
Auto-Intern GmbH 7
Are you a hard real-time system?
Are you master of everything? Do you assume endless RAM?
@odinthenerd
Auto-Intern GmbH 8
Realtime systems
@odinthenerd
Auto-Intern GmbH 9
Realtime systems
@odinthenerd
Auto-Intern GmbH 10
Realtime systems
@odinthenerd
11
Functional Correctness
@odinthenerd
12
Functional Correctness
Unit Tests
@odinthenerd
13
Functional Correctness
Unit Tests
Localtity of Reasoning
@odinthenerd
14
Functional Correctness
Unit Tests
Localtity of Reasoning
auto diego = std::make_unique<radioactive_frog>(charge::max_plad);
@odinthenerd
15
Functional Correctness
Unit Tests
Localtity of Reasoning
{ auto diego = std::make_unique<radioactive_frog>(charge::max_plad); }
@odinthenerd
16
Functional Correctness
Unit Tests
Localtity of Reasoning
{ auto diego = std::make_unique<radioactive_frog>(charge::max_plad); // lots of terrible things }
@odinthenerd
17
Functional Correctness
Unit Tests
Localtity of Reasoning
{ auto diego = std::make_unique<radioactive_frog>(charge::max_plad); // lots of (moderately) terrible things }
@odinthenerd
18
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
@odinthenerd
19
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
@odinthenerd
20
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space
@odinthenerd
21
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space
Out of Memory?
@odinthenerd
22
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space
Out of Memory? Buffer overflow?
@odinthenerd
23
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space
Out of Memory? Buffer overflow? Stack Overflow
@odinthenerd
24
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space
Out of Memory? Buffer
Stack Overflow
@odinthenerd
25
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space
Out of Memory? Buffer
Time
Stack Overflow
@odinthenerd
26
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space Time
Latentcy
Out of Memory? Buffer
Stack Overflow
@odinthenerd
27
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space Time
Latentcy Jitter
Out of Memory? Buffer
Stack Overflow
@odinthenerd
28
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space Time
Latentcy Jitter Dead Time
Out of Memory? Buffer
Stack Overflow
@odinthenerd
29
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space Time
Latentcy Jitter Dead Time Turn Around
Out of Memory? Buffer
Stack Overflow
@odinthenerd
30
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space Time
Latentcy Jitter Dead Time Turn Around Optimizer
Out of Memory? Buffer
Stack Overflow
@odinthenerd
31
Functional Correctness
Unit Tests
Localtity of Reasoning
Formal Proof
Space Time
Latentcy Jitter Dead Time Turn Around Optimizer Caching
Out of Memory? Buffer
Stack Overflow
@odinthenerd
Auto-Intern GmbH 32
@odinthenerd
Race conditions
Auto-Intern GmbH 33
void some_ISR(){ global_thing++; } int main(){
return 0; }
@odinthenerd
Race conditions
Auto-Intern GmbH 34
auto w = global_thing;
global_thing = w;
@odinthenerd
Race conditions
Auto-Intern GmbH 35
auto w = global_thing; void some_ISR(){ global_thing++; }
global_thing = w;
@odinthenerd
Atomics to the rescue?
Auto-Intern GmbH 36
std::atomic<int> global_thing; void some_ISR(){ global_thing++; } int main(){
return 0; }
@odinthenerd
Atomics to the rescue?
Auto-Intern GmbH 37
std::atomic<int> global_thing; void some_ISR(){ global_thing++; } int main(){
return 0; }
sorry, unimplemented: Thumb-1 hard-float VFP ABI
@odinthenerd
Auto-Intern GmbH 38
Emil Fresk
@odinthenerd
Auto-Intern GmbH 39
What abstractions can I use?
@odinthenerd
Auto-Intern GmbH 40
What abstractions can I use?
@odinthenerd
Register abstraction DSL
Auto-Intern GmbH 41
struct my_thing{ static constexpr auto init = list( set(thing_hw::super_bit), clear(thing_hw::naughty_bit), unsafe_write(42_c,thing_hw::danger_zone)); };
@odinthenerd
Auto-Intern GmbH 42
Chiel Douwes
@odinthenerd
What does the standard library provide?
43
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 44
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 45
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 46
@odinthenerd
drivers
Auto-Intern GmbH 47
auto myUart = make_uart( interface<blocking_tx>, uart1, 9600_baud, rx = 0.9_pin, tx = 0.10_pin ); myuart.blocking_send("hello world");
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 48
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 49
SVD
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 50
SVD Python translator
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 51
SVD
Extend
Python translator
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 52
SVD conan
Extend
Python translator
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 53
SVD conan TMP
Extend
Python translator
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 54
SVD conan TMP User
Extend
Python translator
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 55
SVD conan TMP User
Extend
Python Translator
@odinthenerd
drivers
Auto-Intern GmbH 56
auto myUart = make_uart( interface<blocking_tx>, uart1, 9600_baud, rx = 0.9_pin, tx = 0.10_pin ); myuart.blocking_send("hello world");
@odinthenerd
How to target 10,000 platforms
Auto-Intern GmbH 57
SVD conan TMP User
Extend
Python Translator
@odinthenerd
Event based paradigm
Auto-Intern GmbH 58
@odinthenerd
Event based paradigm
Auto-Intern GmbH 59
@odinthenerd
Event based paradigm
Auto-Intern GmbH 60
@odinthenerd
Event based paradigm
Auto-Intern GmbH 61
@odinthenerd
Event based paradigm
Auto-Intern GmbH 62
@odinthenerd
Event based paradigm
Auto-Intern GmbH 63
@odinthenerd
The world will be awesome, just different
Auto-Intern GmbH 64
@odinthenerd
@odinthenerd
04.11.2016 Auto-Intern GmbH 65