Suche senden
Hochladen
2013 09-02 senzations-bimschas-part3-wiselib
•
Als PPTX, PDF herunterladen
•
1 gefällt mir
•
1,409 views
Daniel Bimschas
Folgen
Technologie
Business
Melden
Teilen
Melden
Teilen
1 von 53
Jetzt herunterladen
Empfohlen
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
Daniel Bimschas
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
Daniel Bimschas
WISEBED Tutorial @ ADHOCNETS 2011
WISEBED Tutorial @ ADHOCNETS 2011
Daniel Bimschas
Using Qt under LGPLv3
Using Qt under LGPLv3
Burkhard Stubert
Hexagonal Architecture: The Standard for Qt Embedded Applications
Hexagonal Architecture: The Standard for Qt Embedded Applications
Burkhard Stubert
Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with Docker
Burkhard Stubert
Maximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN Bus
Janel Heilbrunn
LAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development Lifecycle
Linaro
Empfohlen
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
2013 09-02 senzations-bimschas-part2-smart-santander-experimentation
Daniel Bimschas
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
2013 09-02 senzations-bimschas-part4-setting-up-your-own-testbed
Daniel Bimschas
WISEBED Tutorial @ ADHOCNETS 2011
WISEBED Tutorial @ ADHOCNETS 2011
Daniel Bimschas
Using Qt under LGPLv3
Using Qt under LGPLv3
Burkhard Stubert
Hexagonal Architecture: The Standard for Qt Embedded Applications
Hexagonal Architecture: The Standard for Qt Embedded Applications
Burkhard Stubert
Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with Docker
Burkhard Stubert
Maximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN Bus
Janel Heilbrunn
LAS16-106: GNU Toolchain Development Lifecycle
LAS16-106: GNU Toolchain Development Lifecycle
Linaro
LAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android N
Linaro
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with docker
Qt
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
Linaro
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Burkhard Stubert
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Julio Palma Vázquez
TULIPP at the 10th Intelligent Imaging Event
TULIPP at the 10th Intelligent Imaging Event
Sundance Multiprocessor Technology Ltd.
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Shannon McFarland
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
LAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoS
Linaro
PL-4051, An Introduction to SPIR for OpenCL Application Developers and Compil...
PL-4051, An Introduction to SPIR for OpenCL Application Developers and Compil...
AMD Developer Central
OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on Ze...
OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on Ze...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
Perceptual Computing Workshop à Paris
Perceptual Computing Workshop à Paris
BeMyApp
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
RISC-V International
LEGaTO Integration
LEGaTO Integration
LEGATO project
Intel® RDT Hands-on Lab
Intel® RDT Hands-on Lab
Michelle Holley
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
RISC-V International
Perceptual Computing Workshop in Munich
Perceptual Computing Workshop in Munich
BeMyApp
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & Inference
Mr. Vengineer
Java applications containerized and deployed
Java applications containerized and deployed
Anthony Dahanne
Linux on RISC-V
Linux on RISC-V
Drew Fustini
End-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNX
Nick Pentreath
An Update on the European Processor Initiative
An Update on the European Processor Initiative
inside-BigData.com
Weitere ähnliche Inhalte
Was ist angesagt?
LAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android N
Linaro
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with docker
Qt
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
Linaro
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Burkhard Stubert
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Julio Palma Vázquez
TULIPP at the 10th Intelligent Imaging Event
TULIPP at the 10th Intelligent Imaging Event
Sundance Multiprocessor Technology Ltd.
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Shannon McFarland
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
Samsung Open Source Group
LAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoS
Linaro
PL-4051, An Introduction to SPIR for OpenCL Application Developers and Compil...
PL-4051, An Introduction to SPIR for OpenCL Application Developers and Compil...
AMD Developer Central
OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on Ze...
OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on Ze...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
Perceptual Computing Workshop à Paris
Perceptual Computing Workshop à Paris
BeMyApp
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
RISC-V International
LEGaTO Integration
LEGaTO Integration
LEGATO project
Intel® RDT Hands-on Lab
Intel® RDT Hands-on Lab
Michelle Holley
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
RISC-V International
Perceptual Computing Workshop in Munich
Perceptual Computing Workshop in Munich
BeMyApp
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & Inference
Mr. Vengineer
Java applications containerized and deployed
Java applications containerized and deployed
Anthony Dahanne
Linux on RISC-V
Linux on RISC-V
Drew Fustini
Was ist angesagt?
(20)
LAS16-201: ART JIT in Android N
LAS16-201: ART JIT in Android N
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with docker
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
LAS16-301: OpenStack on Aarch64, running in production, upstream improvements...
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
TULIPP at the 10th Intelligent Imaging Event
TULIPP at the 10th Intelligent Imaging Event
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
Daneyon Hansen - Intro to OpenStack - Feb13 OpenStack Denver Meetup
IoTivity for Automotive IoT Interoperability
IoTivity for Automotive IoT Interoperability
LAS16-207: Bus scaling QoS
LAS16-207: Bus scaling QoS
PL-4051, An Introduction to SPIR for OpenCL Application Developers and Compil...
PL-4051, An Introduction to SPIR for OpenCL Application Developers and Compil...
OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on Ze...
OpenCV acceleration battle:OpenCL on Firefly-RK3288(MALI-T764) vs. FPGA on Ze...
Perceptual Computing Workshop à Paris
Perceptual Computing Workshop à Paris
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
LEGaTO Integration
LEGaTO Integration
Intel® RDT Hands-on Lab
Intel® RDT Hands-on Lab
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Perceptual Computing Workshop in Munich
Perceptual Computing Workshop in Munich
Cloud Deep Learning Chips Training & Inference
Cloud Deep Learning Chips Training & Inference
Java applications containerized and deployed
Java applications containerized and deployed
Linux on RISC-V
Linux on RISC-V
Ähnlich wie 2013 09-02 senzations-bimschas-part3-wiselib
End-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNX
Nick Pentreath
An Update on the European Processor Initiative
An Update on the European Processor Initiative
inside-BigData.com
Open Source AI - News and examples
Open Source AI - News and examples
Luciano Resende
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
Samsung Open Source Group
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooks
Luciano Resende
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
Srikanth Pilli
Ankit sarin
Ankit sarin
sarinsahab
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPC
Facultad de Informática UCM
Deploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNX
Databricks
Leveraging Artificial Intelligence Processing on Edge Devices
Leveraging Artificial Intelligence Processing on Edge Devices
ICS
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for Code
Luciano Resende
HiPEAC2023-DL4IoT Workshop_Jean Hagemeyer presentation
HiPEAC2023-DL4IoT Workshop_Jean Hagemeyer presentation
VEDLIoT Project
License Plate Recognition System using Python and OpenCV
License Plate Recognition System using Python and OpenCV
Vishal Polley
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Ismailkhan77481
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
Srivatsan Ramanujam
CURRICULUM VITAE
CURRICULUM VITAE
MohamedKaroui3
An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0
Alpen-Adria-Universität
Scaling up deep learning by scaling down
Scaling up deep learning by scaling down
Nick Pentreath
SysML for Modeling Co-Simulation Orchestration over FMI, INTO-CPS Approach
SysML for Modeling Co-Simulation Orchestration over FMI, INTO-CPS Approach
Alessandra Bagnato
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
Embarcados
Ähnlich wie 2013 09-02 senzations-bimschas-part3-wiselib
(20)
End-to-End Deep Learning Deployment with ONNX
End-to-End Deep Learning Deployment with ONNX
An Update on the European Processor Initiative
An Update on the European Processor Initiative
Open Source AI - News and examples
Open Source AI - News and examples
IoTivity for Automotive: meta-ocf-automotive tutorial
IoTivity for Automotive: meta-ocf-automotive tutorial
Ai pipelines powered by jupyter notebooks
Ai pipelines powered by jupyter notebooks
Srikanth_PILLI_CV_latest
Srikanth_PILLI_CV_latest
Ankit sarin
Ankit sarin
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPC
Deploying End-to-End Deep Learning Pipelines with ONNX
Deploying End-to-End Deep Learning Pipelines with ONNX
Leveraging Artificial Intelligence Processing on Edge Devices
Leveraging Artificial Intelligence Processing on Edge Devices
Inteligencia artificial, open source e IBM Call for Code
Inteligencia artificial, open source e IBM Call for Code
HiPEAC2023-DL4IoT Workshop_Jean Hagemeyer presentation
HiPEAC2023-DL4IoT Workshop_Jean Hagemeyer presentation
License Plate Recognition System using Python and OpenCV
License Plate Recognition System using Python and OpenCV
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
Advanced View Pic Microcontroller Projects List _ PIC Microcontroller.pdf
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
PyMADlib - A Python wrapper for MADlib : in-database, parallel, machine learn...
CURRICULUM VITAE
CURRICULUM VITAE
An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0
Scaling up deep learning by scaling down
Scaling up deep learning by scaling down
SysML for Modeling Co-Simulation Orchestration over FMI, INTO-CPS Approach
SysML for Modeling Co-Simulation Orchestration over FMI, INTO-CPS Approach
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
Webinar: Começando seus trabalhos com Machine Learning utilizando ferramentas...
Kürzlich hochgeladen
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
Pixlogix Infotech
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Delhi Call girls
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
hans926745
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
Kürzlich hochgeladen
(20)
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Slack Application Development 101 Slides
Slack Application Development 101 Slides
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
2013 09-02 senzations-bimschas-part3-wiselib
1.
1Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. SMART SANTANDER Programming Heterogeneous IoT Platforms The Wiselib Daniel Bimschas E-mail: bimschas@itm.uni-luebeck.de Palic, 2nd September 2013
2.
2Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. Learning Goals – Understand This! (Platform-independent Wiselib application to read sensor values and write them to UART)
3.
3Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. Learning Goals • After this tutorial you will… – Understand the basics of C++ template programming (necessary for Wiselib) – Understand why Wiselib is *awesome* – Understand basic concepts and architecture – Know how to write a (very) basic platform- independent Wiselib application – Know where to find source code, documentation, and applications – … be hungry for more
4.
4Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. Learning Goals • After this tutorial you will not… – Know how to write application X with Algorithm Y for OS Z – Be an expert in Wiselib
5.
5Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. Outline 1. Introduction – What is the Wiselib? 2. Basics: C++ Template Programming 3. Architecture OS Facets, Data Structures, Algorithms & Applications 4. Usage Scenarios 5. Message Serialization 6. Callback Mechanism 7. Programming Environments 8. Summary & Resources
6.
6Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 1. INTRODUCTION – WHAT IS THE WISELIB? Programming Heterogeneous IoT Platforms – The Wiselib
7.
7Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 1. Introduction – What is the Wiselib? • The Wiselib is... – a library for networked embedded devices – contains re-usable code (just like the C++ STL) – platform-independent – highly efficient – implemented using C++ templates (comparable to Boost) • The Wiselib contains... – a collection of algorithms – an abstraction of embedded operating systems – utility functions and data structures (pSTL, pMP)
8.
8Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 1. Introduction – Algorithm Categories Algorithm Category Count Routing 13 Clustering 9 Time Synchronization 4 Localization 6 Energy Saving Schemes 6 Security 9 Graph Algorithms 8 Target Tracking 2 Neighbourhood Discovery 1 Data Collection 1 10 Categories, Total: 59 From: Dissertation Tobias Baumgartner, 2012/07
9.
9Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 1. Introduction – Supported Hardware From: Dissertation Tobias Baumgartner, 2012/07 = Fully Supported = Supported, still in testing stage
10.
10Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 1. Introduction – GSoC Projects • Wiselib has been/is mentoring organization at Google Summer of Code in 2012 & 2013 (!) • Projects 2012: – OpenWrt Port – Android Port – Arduino Port – 6LoWPAN • Projects 2013: – NS-3 Port – IPv6 on Distributed Protocol Stacks – Remote-controlled IoT with JS – Wisebender Online-IDE – Completion of Arduino Port – Constrained Application Protocol (CoAP)
11.
11Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 1. Introduction • The Wiselib is heavily based on C++ template programming in order to… – achieve platform independence (heterogeneity) – produce highly efficient machine code – enable programming in C++ for heavily resource constrained (IoT) devices • So, let’s look at the basics and properties of template programming…
12.
12Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. BASICS: C++ TEMPLATE PROGRAMMING Programming Heterogeneous IoT Platforms – The Wiselib
13.
13Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Parameterized Library Code (max.hpp) Generated Code Template “instantiation” Application (main.cpp) Compilation Executable Binary “triggers”
14.
14Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Function templates are… – instantiated and compiled only for functions that are actually called – implicitly inline (allows compiler optimizations) – instantiated for every type parameter used – typically located in header files as implementation source is needed for instantiation + - +
15.
15Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Template Specialization – allows optimizations for concrete types – sometimes necessary to work correctly with certain types + - Specialization for char*
16.
16Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Advanced example (multiple type parameters)
17.
17Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Partial Specialization (two identical parameters)
18.
18Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Partial Specialization (one concrete parameter)
19.
19Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Partial Specialization (two pointer types)
20.
20Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Default type parameters
21.
21Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Default value parameters – dynamic memory management can be avoided (highly efficient) – only primitive types (not classes) allowed as value parameters +
22.
22Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Bound dynamic polymorphism (OO-inheritance) GeoObj draw() get_position_x() get_position_y() Line draw() Circle draw() extends extends
23.
23Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Bound dynamic polymorphism (OO-inheritance)
24.
24Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Bound dynamic polymorphism (OO-inheritance)
25.
25Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Bound dynamic polymorphism (OO-inheritance) – Shared code only compiled once – Allows inhomogeneous sets (data structures bound to instances of base class) – Good compiler error messages – Generates virtual function tables (overhead for program memory and runtime) – Virtual methods can not be inlined (prevents compiler optimizations) + + + - -
26.
26Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Unbound static polymorphism (using templates) GeoObj <<concept>> draw() get_position_x() get_position_y() Line draw() Circle draw() models models exists only in documentation, not known to compiler, no IDE support
27.
27Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Unbound static polymorphism (using templates) No common base class, but same “interface” (a.k.a. concept)
28.
28Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Unbound static polymorphism (using templates)
29.
29Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Unbound static polymorphism (using templates) • Concepts exist only in documentation • Concepts describe “interface” of template class • Programming: interfaces and classes • Metaprogramming: concepts and models • Multiple inheritance equally possible
30.
30Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 2. Basics: C++ Template Programming Unbound static polymorphism (using templates) – Faster & smaller machine code (no pointer indirection, no vtables are generated) – Enables heavy compiler optimizations (inlining) – No inhomogeneous sets possible (reason: no common base class, only concepts) – Compiler error messages hard to read + + - -
31.
31Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 3. ARCHITECTURE Programming Heterogeneous IoT Platforms – The Wiselib
32.
32Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 3. Architecture Constraints Some target architectures are heavily resource- constrained. Wiselib applications must therefore adhere to some restrictions: • No dynamic memory allocation – no new, delete, malloc, free, only static allocation (!) • No STL, use picoSTL • No Runtime Type Information (RTTI) – no dynamic_cast<> -> no type safety checks • No virtual inheritance
33.
33Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 3. Architecture Image Source: Dissertation Tobias Baumgartner, 2012
34.
34Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 3. Architecture – Basic OS Concepts Image Source: Dissertation Tobias Baumgartner, 2012 Concept Description OS Describes platform capabilities by providing only type definitions (base for other concepts) Radio Send & receive functions, type definitions for node and message IDs (e.g., a node ID may be an 802.15.4 or an IPv6 address…) Timer Allows to schedule callbacks Clock Allows to read system time Debug printf-like logging facility, can print to UART or e.g., forward to sink Serial UART, I2C, … … … More concepts: http://www.ibr.cs.tu-bs.de/users/tbaum/wiselib/doxygen/testing/html/group__concepts.html
35.
35Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. Parameterized Algorithm 3. Architecture – Algorithm Example OS Abstraction Layer Data Structure static allocation Use of typedefs to have a fixed name to reference
36.
36Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 3. Architecture – Algorithm Example Instantiated template class (when compiling for iSense) (probably unprecise and/or partially incorrect, but you should get the idea) Use of typedefs to have a fixed name to reference
37.
37Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 4. USAGE SCENARIOS Programming Heterogeneous IoT Platforms – The Wiselib
38.
38Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 4. Usage Scenarios The Wiselib can be used in two ways: 1. As an algorithm library – Use classes for special purposes, e.g., routing – “Embed” Wiselib in your host application 2. As a “generic application” – Can be compiled to each supported platform (portable) – Limited to Wiselib concepts (no direct access to OS functionality)
39.
39Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 4. Usage Scenarios – Algorithm Library OS Abstraction Layer Data Structure Algorithm Example from $WISELIB_HOME/apps/iapps/wiselib_example Radio, Timer, Debug concepts all modeled by iSenseOsModel (using multiple inheritance)
40.
40Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. FacetProvider hides initialization details 4. Usage Scenarios – Generic App OS Abstraction Layer Data Structure Algorithm Example from $WISELIB_HOME/apps/generic_apps/routing_test static allocation References to typedefs declared in OS models Reference to internal typedefs makes code more readable
41.
41Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 4. Usage Scenarios – Compiling Makefile from $WISELIB_HOME/apps/generic_apps/routing_test
42.
42Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 5. CALLBACK MECHANISM Programming Heterogeneous IoT Platforms – The Wiselib
43.
43Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 5. Callback Mechanism Some concepts require to register callbacks (e.g., radio, timer)… Makefile from $WISELIB_HOME/apps/generic_apps/example_app
44.
44Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 6. MESSAGE SERIALIZATION Programming Heterogeneous IoT Platforms – The Wiselib
45.
45Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 6. Message Serialization 1. Word Width 2. Byte Order 3. Alignment 45 Jennic MSP430 A B C D D C B A Big Endian Little Endian Shawn on Desktop MSP430 Write int Write uint32_t uint16_t at odd address
46.
46Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 6. Message Serialization Solution: Templated Serialization provided by Wiselib – Can be specialized for each system and each data type
47.
47Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 6. Message Serialization
48.
48Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 7. PROGRAMMING ENVIRONMENTS Programming Heterogeneous IoT Platforms – The Wiselib
49.
49Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 8. Programming Environments • Wisebender is an Online-IDE for Wiselib- Development – Fork of the popular (Arduino) Codebender IDE http://codebender.cc/ – Currently being developed in GSoC 2013 – Edit and compile code without *any* toolchain installation (!!!) • Wisebender Beta Access: http://wisebender.cti.gr/app_dev.php/
50.
50Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 8. Programming Environments • The WISEBED VM is a pre-configured Linux Development Environment containing: – Compilers for various IoT hardware platforms – Various sensor node operating systems – The Shawn network simulator – The Wiselib • Get it from: wisebed.eu/site/application- development/virtual-machine/ • Or from the USB sticks I brought!
51.
51Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 8. SUMMARY & RESOURCES Programming Heterogeneous IoT Platforms – The Wiselib
52.
52Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 8. Summary • Code library of algorithms – Write once, compile everywhere – Highly efficient, portable libraries and applications – Variety of well-known algorithms implemented – Open-Source • Supports a variety of hardware platforms and simulators – Easily extensible, e.g., to other (C/C++/nesC) platforms – Helps to avoid vendor lock-in • Growing community of contributors – Benefit from others, contribute for others
53.
53Copyright © SmartSantander
Project FP7-ICT-2009-5 257992. All Rights reserved. 8. Resources Lots of Sources & Examples in Repo git clone git@github.com:ibr- alg/wiselib.git Read Documentation https://github.com/ibr- alg/wiselib/wiki Join Mailing List wiselib-subscribe@wiselib.org Apply for GSoC 2014 :)
Jetzt herunterladen