odin odinthe thener nerd
play

@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


  1. @odinthenerd @odin odinthe thener nerd – not the god Auto-Intern GmbH 1

  2. @odinthenerd A possible future of embedded development Auto-Intern GmbH 2

  3. @odinthenerd Sean Parent Auto-Intern GmbH 3

  4. @odinthenerd Every rything is is Crap! A possible future of embedded development Auto-Intern GmbH 4

  5. @odinthenerd Are you a hard real-time system? Auto-Intern GmbH 5

  6. @odinthenerd Are you a hard real-time system? Are you master of everything? Auto-Intern GmbH 6

  7. @odinthenerd Are you a hard real-time system? Are you master of everything? Do you assume endless RAM? Auto-Intern GmbH 7

  8. @odinthenerd Realtime systems Auto-Intern GmbH 8

  9. @odinthenerd Realtime systems Auto-Intern GmbH 9

  10. @odinthenerd Realtime systems Auto-Intern GmbH 10

  11. @odinthenerd Functional Correctness 11

  12. @odinthenerd Functional Correctness Unit Tests 12

  13. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning 13

  14. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning auto diego = std::make_unique<radioactive_frog>(charge::max_plad); 14

  15. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning { auto diego = std::make_unique<radioactive_frog>(charge::max_plad); } 15

  16. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning { auto diego = std::make_unique<radioactive_frog>(charge::max_plad); // lots of terrible things } 16

  17. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning { auto diego = std::make_unique<radioactive_frog>(charge::max_plad); // lots of (moderately) terrible things } 17

  18. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning Formal Proof 18

  19. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning Formal Proof 19

  20. @odinthenerd Functional Correctness Localtity of Unit Tests Space Reasoning Formal Proof 20

  21. @odinthenerd Functional Correctness Localtity of Unit Tests Space Reasoning Formal Proof Out of Memory? 21

  22. @odinthenerd Functional Correctness Localtity of Unit Tests Space Reasoning Formal Proof Out of Memory? Buffer overflow? 22

  23. @odinthenerd Functional Correctness Localtity of Unit Tests Space Reasoning Formal Proof Out of Memory? Buffer overflow? Stack Overflow 23

  24. @odinthenerd Functional Correctness Localtity of Unit Tests Reasoning Formal Proof Space Out of Buffer Memory? overflow? Stack Overflow 24

  25. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Space Out of Buffer Memory? overflow? Stack Overflow 25

  26. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Latentcy Space Out of Buffer Memory? overflow? Stack Overflow 26

  27. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Latentcy Jitter Space Out of Buffer Memory? overflow? Stack Overflow 27

  28. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Latentcy Jitter Dead Time Space Out of Buffer Memory? overflow? Stack Overflow 28

  29. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Latentcy Jitter Dead Time Turn Around Space Out of Buffer Memory? overflow? Stack Overflow 29

  30. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Latentcy Jitter Dead Time Turn Around Space Out of Buffer Optimizer Memory? overflow? Stack Overflow 30

  31. @odinthenerd Functional Correctness Time Localtity of Unit Tests Reasoning Formal Proof Latentcy Jitter Dead Time Turn Around Space Out of Buffer Caching Optimizer Memory? overflow? Stack Overflow 31

  32. @odinthenerd Auto-Intern GmbH 32

  33. @odinthenerd Race conditions void some_ISR(){ global_thing++; } int main(){ --global_thing; return 0; } Auto-Intern GmbH 33

  34. @odinthenerd Race conditions auto w = global_thing; --w; global_thing = w; Auto-Intern GmbH 34

  35. @odinthenerd Race conditions auto w = global_thing; void some_ISR(){ global_thing++; } --w; global_thing = w; Auto-Intern GmbH 35

  36. @odinthenerd Atomics to the rescue? std::atomic<int> global_thing; void some_ISR(){ global_thing++; } int main(){ --global_thing; return 0; } Auto-Intern GmbH 36

  37. @odinthenerd Atomics to the rescue? std::atomic<int> global_thing; void some_ISR(){ global_thing++; } int main(){ --global_thing; return 0; } sorry, unimplemented: Thumb-1 hard-float VFP ABI Auto-Intern GmbH 37

  38. @odinthenerd Emil Fresk Auto-Intern GmbH 38

  39. @odinthenerd What abstractions can I use? Auto-Intern GmbH 39

  40. @odinthenerd What abstractions can I use? Auto-Intern GmbH 40

  41. @odinthenerd Register abstraction DSL 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)); }; Auto-Intern GmbH 41

  42. @odinthenerd Chiel Douwes Auto-Intern GmbH 42

  43. @odinthenerd What does the standard library provide? • <initializer_list> <cstddef> • <cstdarg> <type_traits> • <cstdint> <climits> <atomic> • <new> <limits> • <typeinfo> <exception> <cfloat> • <cstdlib> (program startup and termination) • <ciso646> <cstdalign> <cstdbool> 43

  44. @odinthenerd How to target 10,000 platforms • • • Auto-Intern GmbH 44

  45. @odinthenerd How to target 10,000 platforms • use an internal code generator • • Auto-Intern GmbH 45

  46. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • Auto-Intern GmbH 46

  47. @odinthenerd drivers auto myUart = make_uart( interface<blocking_tx>, uart1, 9600_baud, rx = 0.9_pin, tx = 0.10_pin ); myuart.blocking_send( "hello world" ); Auto-Intern GmbH 47

  48. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Auto-Intern GmbH 48

  49. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan SVD Auto-Intern GmbH 49

  50. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Python SVD translator Auto-Intern GmbH 50

  51. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Extend Python SVD translator Auto-Intern GmbH 51

  52. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Extend Python SVD conan translator Auto-Intern GmbH 52

  53. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Extend Python SVD conan TMP translator Auto-Intern GmbH 53

  54. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Extend Python SVD conan TMP User translator Auto-Intern GmbH 54

  55. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Extend Python SVD conan TMP User Translator Auto-Intern GmbH 55

  56. @odinthenerd drivers auto myUart = make_uart( interface<blocking_tx>, uart1, 9600_baud, rx = 0.9_pin, tx = 0.10_pin ); myuart.blocking_send( "hello world" ); Auto-Intern GmbH 56

  57. @odinthenerd How to target 10,000 platforms • use an internal code generator • use a declarative paradigm • use Conan Extend Python SVD conan TMP User Translator Auto-Intern GmbH 57

  58. @odinthenerd Event based paradigm • Sleeping is trivial • • • • Auto-Intern GmbH 58

  59. @odinthenerd Event based paradigm • Sleeping is trivial • High priority latency tool enforceable • • • Auto-Intern GmbH 59

  60. @odinthenerd Event based paradigm • Sleeping is trivial • High priority latency tool enforceable • Stack depth low and enforceable • • Auto-Intern GmbH 60

  61. @odinthenerd Event based paradigm • Sleeping is trivial • High priority latency tool enforceable • Stack depth low and enforceable • Traditionally event handlers = hard • Auto-Intern GmbH 61

  62. @odinthenerd Event based paradigm • Sleeping is trivial • High priority latency tool enforceable • Stack depth low and enforceable • Traditionally event handlers = hard • Coroutines = awesome Auto-Intern GmbH 62

  63. @odinthenerd Event based paradigm • Sleeping is trivial • High priority latency tool enforceable • Stack depth low and enforceable • Traditionally event handlers = hard • Coroutines = awesome • We may be able to fix exceptions Auto-Intern GmbH 63

  64. @odinthenerd The world will be awesome, just different Auto-Intern GmbH 64

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend