Soumettre la recherche
Mettre en ligne
Embedded Software Design Essentials
•
10 j'aime
•
7,064 vues
Titre amélioré par l'IA
Anil Kumar Pugalia
Suivre
Embedded System specific Design aspects
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 29
Recommandé
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Board Bringup
Board Bringup
Anil Kumar Pugalia
Intro to Embedded OS, RTOS and Communication Protocols
Intro to Embedded OS, RTOS and Communication Protocols
Emertxe Information Technologies Pvt Ltd
Block Drivers
Block Drivers
Anil Kumar Pugalia
Bootloaders
Bootloaders
Anil Kumar Pugalia
Video Drivers
Video Drivers
Anil Kumar Pugalia
Linux Serial Driver
Linux Serial Driver
艾鍗科技
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
RuggedBoardGroup
Recommandé
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Board Bringup
Board Bringup
Anil Kumar Pugalia
Intro to Embedded OS, RTOS and Communication Protocols
Intro to Embedded OS, RTOS and Communication Protocols
Emertxe Information Technologies Pvt Ltd
Block Drivers
Block Drivers
Anil Kumar Pugalia
Bootloaders
Bootloaders
Anil Kumar Pugalia
Video Drivers
Video Drivers
Anil Kumar Pugalia
Linux Serial Driver
Linux Serial Driver
艾鍗科技
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
RuggedBoardGroup
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
Emertxe Information Technologies Pvt Ltd
Character Drivers
Character Drivers
Anil Kumar Pugalia
USB Drivers
USB Drivers
Anil Kumar Pugalia
Interrupts
Interrupts
Anil Kumar Pugalia
Toolchain
Toolchain
Anil Kumar Pugalia
A practical guide to buildroot
A practical guide to buildroot
Emertxe Information Technologies Pvt Ltd
U-Boot presentation 2013
U-Boot presentation 2013
Wave Digitech
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
Emertxe Information Technologies Pvt Ltd
Processes
Processes
Anil Kumar Pugalia
Arm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
BeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream Components
GlobalLogic Ukraine
Browsing Linux Kernel Source
Browsing Linux Kernel Source
Motaz Saad
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
Embedded Linux on ARM
Embedded Linux on ARM
Emertxe Information Technologies Pvt Ltd
Basic Linux Internals
Basic Linux Internals
mukul bhardwaj
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
Babak Farrokhi
U-Boot - An universal bootloader
U-Boot - An universal bootloader
Emertxe Information Technologies Pvt Ltd
Linux Booting Steps
Linux Booting Steps
Anando Kumar Paul
U Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
Functional Programming with LISP
Functional Programming with LISP
Anil Kumar Pugalia
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Anil Kumar Pugalia
Contenu connexe
Tendances
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
Emertxe Information Technologies Pvt Ltd
Character Drivers
Character Drivers
Anil Kumar Pugalia
USB Drivers
USB Drivers
Anil Kumar Pugalia
Interrupts
Interrupts
Anil Kumar Pugalia
Toolchain
Toolchain
Anil Kumar Pugalia
A practical guide to buildroot
A practical guide to buildroot
Emertxe Information Technologies Pvt Ltd
U-Boot presentation 2013
U-Boot presentation 2013
Wave Digitech
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
Emertxe Information Technologies Pvt Ltd
Processes
Processes
Anil Kumar Pugalia
Arm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
BeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream Components
GlobalLogic Ukraine
Browsing Linux Kernel Source
Browsing Linux Kernel Source
Motaz Saad
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
Embedded Linux on ARM
Embedded Linux on ARM
Emertxe Information Technologies Pvt Ltd
Basic Linux Internals
Basic Linux Internals
mukul bhardwaj
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
Babak Farrokhi
U-Boot - An universal bootloader
U-Boot - An universal bootloader
Emertxe Information Technologies Pvt Ltd
Linux Booting Steps
Linux Booting Steps
Anando Kumar Paul
U Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
Tendances
(20)
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
Character Drivers
Character Drivers
USB Drivers
USB Drivers
Interrupts
Interrupts
Toolchain
Toolchain
A practical guide to buildroot
A practical guide to buildroot
U-Boot presentation 2013
U-Boot presentation 2013
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
Processes
Processes
Arm device tree and linux device drivers
Arm device tree and linux device drivers
BeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream Components
Browsing Linux Kernel Source
Browsing Linux Kernel Source
SPI Drivers
SPI Drivers
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
Embedded Linux on ARM
Embedded Linux on ARM
Basic Linux Internals
Basic Linux Internals
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
U-Boot - An universal bootloader
U-Boot - An universal bootloader
Linux Booting Steps
Linux Booting Steps
U Boot or Universal Bootloader
U Boot or Universal Bootloader
En vedette
Functional Programming with LISP
Functional Programming with LISP
Anil Kumar Pugalia
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Anil Kumar Pugalia
Shell Scripting
Shell Scripting
Anil Kumar Pugalia
Linux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
Anil Kumar Pugalia
Timers
Timers
Anil Kumar Pugalia
Threads
Threads
Anil Kumar Pugalia
Linux Network Management
Linux Network Management
Anil Kumar Pugalia
Embedded C
Embedded C
Anil Kumar Pugalia
System Calls
System Calls
Anil Kumar Pugalia
Synchronization
Synchronization
Anil Kumar Pugalia
Signals
Signals
Anil Kumar Pugalia
Inter Process Communication
Inter Process Communication
Anil Kumar Pugalia
Network Drivers
Network Drivers
Anil Kumar Pugalia
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
References
References
Anil Kumar Pugalia
Introduction to Linux Drivers
Introduction to Linux Drivers
Anil Kumar Pugalia
En vedette
(16)
Functional Programming with LISP
Functional Programming with LISP
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Shell Scripting
Shell Scripting
Linux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
Timers
Timers
Threads
Threads
Linux Network Management
Linux Network Management
Embedded C
Embedded C
System Calls
System Calls
Synchronization
Synchronization
Signals
Signals
Inter Process Communication
Inter Process Communication
Network Drivers
Network Drivers
Kernel Debugging & Profiling
Kernel Debugging & Profiling
References
References
Introduction to Linux Drivers
Introduction to Linux Drivers
Similaire à Embedded Software Design Essentials
Introduction to Embedded Systems
Introduction to Embedded Systems
Anil Kumar Pugalia
Embedded Applications
Embedded Applications
Anil Kumar Pugalia
Beyond PowerPlay: Choose the Right OLAP Tool for Your BI Environment (Cognos...
Beyond PowerPlay: Choose the Right OLAP Tool for Your BI Environment (Cognos...
Senturus
ITT 2015 - Kirk Pepperdine - The (not so) Dark Art of Performance Tuning, fro...
ITT 2015 - Kirk Pepperdine - The (not so) Dark Art of Performance Tuning, fro...
Istanbul Tech Talks
Real Time Systems
Real Time Systems
Anil Kumar Pugalia
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
sleeperharwell
Virtualization and Cloud Computing
Virtualization and Cloud Computing
Josh Folgado
Linux Memory Management
Linux Memory Management
Anil Kumar Pugalia
Vasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python Profiling
Sergey Arkhipov
If your computer is cloud what its Operating System look like?
If your computer is cloud what its Operating System look like?
Asher Sterkin
VMware View – Storage Considerations
VMware View – Storage Considerations
Calin Damian Tanase
PowerAI Deep Dive ( key points )
PowerAI Deep Dive ( key points )
Paulo Sergio Lemes Queiroz
Processes
Processes
Anil Kumar Pugalia
Get to know the browser better and write faster web apps
Get to know the browser better and write faster web apps
Lior Bar-On
Embedded systems in brief
Embedded systems in brief
krnathan
Kairos aarohan
Kairos aarohan
berasrujana
Octobus technical university def
Octobus technical university def
Daniela Zuppini
Andon Applications with InduSoft Web Studio
Andon Applications with InduSoft Web Studio
AVEVA
Ppt on embedded system
Ppt on embedded system
Pankaj joshi
Design of Software for Embedded Systems
Design of Software for Embedded Systems
Peter Tröger
Similaire à Embedded Software Design Essentials
(20)
Introduction to Embedded Systems
Introduction to Embedded Systems
Embedded Applications
Embedded Applications
Beyond PowerPlay: Choose the Right OLAP Tool for Your BI Environment (Cognos...
Beyond PowerPlay: Choose the Right OLAP Tool for Your BI Environment (Cognos...
ITT 2015 - Kirk Pepperdine - The (not so) Dark Art of Performance Tuning, fro...
ITT 2015 - Kirk Pepperdine - The (not so) Dark Art of Performance Tuning, fro...
Real Time Systems
Real Time Systems
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
Virtualization and Cloud Computing
Virtualization and Cloud Computing
Linux Memory Management
Linux Memory Management
Vasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python Profiling
If your computer is cloud what its Operating System look like?
If your computer is cloud what its Operating System look like?
VMware View – Storage Considerations
VMware View – Storage Considerations
PowerAI Deep Dive ( key points )
PowerAI Deep Dive ( key points )
Processes
Processes
Get to know the browser better and write faster web apps
Get to know the browser better and write faster web apps
Embedded systems in brief
Embedded systems in brief
Kairos aarohan
Kairos aarohan
Octobus technical university def
Octobus technical university def
Andon Applications with InduSoft Web Studio
Andon Applications with InduSoft Web Studio
Ppt on embedded system
Ppt on embedded system
Design of Software for Embedded Systems
Design of Software for Embedded Systems
Plus de Anil Kumar Pugalia
File System Modules
File System Modules
Anil Kumar Pugalia
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
System Calls
System Calls
Anil Kumar Pugalia
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Playing with R L C Circuits
Playing with R L C Circuits
Anil Kumar Pugalia
Audio Drivers
Audio Drivers
Anil Kumar Pugalia
Power of vi
Power of vi
Anil Kumar Pugalia
gcc and friends
gcc and friends
Anil Kumar Pugalia
"make" system
"make" system
Anil Kumar Pugalia
Hardware Design for Software Hackers
Hardware Design for Software Hackers
Anil Kumar Pugalia
RPM Building
RPM Building
Anil Kumar Pugalia
Linux File System
Linux File System
Anil Kumar Pugalia
Plus de Anil Kumar Pugalia
(12)
File System Modules
File System Modules
Kernel Debugging & Profiling
Kernel Debugging & Profiling
System Calls
System Calls
Introduction to Linux
Introduction to Linux
Playing with R L C Circuits
Playing with R L C Circuits
Audio Drivers
Audio Drivers
Power of vi
Power of vi
gcc and friends
gcc and friends
"make" system
"make" system
Hardware Design for Software Hackers
Hardware Design for Software Hackers
RPM Building
RPM Building
Linux File System
Linux File System
Dernier
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
LoriGlavin3
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
BkGupta21
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
Curtis Poe
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
blackmambaettijean
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Raghuram Pandurangan
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Zilliz
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
LoriGlavin3
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
gvaughan
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
LoriGlavin3
Dernier
(20)
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
How to write a Business Continuity Plan
How to write a Business Continuity Plan
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Embedded Software Design Essentials
1.
© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Embedded Software Design
2.
2© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. What to Expect? Functionality Design & Programming Design for Fault Tolerance Hardware aware Design & Programming Design & Programming for Performance Design for Maintainability
3.
3© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Special about Embedded Software Full Featured with Smaller Binary Size Seamless Hardware Interaction with High Fault Tolerance Time Tolerant (Running forever) Good Performance with Limited Processor Power Capable of Remote Testing, Debugging, Fixing In short, it is Optimized, Robust, Continuously Performing, Maintainable
4.
4© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. W's of Embedded Software Design Do NOT start coding, Design First Design means “Data Structures, Interfaces & Algorithms” If comfortable, put down “C” structs and “C” function prototypes, And Design “C” pseudo code using them How to Proceed? Understand the overall requirements Break them into smaller manageable/thinkable chunks Think & Propose designs for each one of them To meet all the requirements If some requirement(s) are not met Tweak / Modify the designs to meet all of them Because trying to meet them later may turn out to be costly In terms of both time & effort
5.
5© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Design & Programming
6.
6© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Design Approach Preferred Design Approach → Top-down Design interfaces to meet the customer requirement Implement interfaces compatible with the OS i/fs, Or So-called system calls in Linux If any interface changes, review the complete path Advantages Reduce trial and error coding Reduce bugs & hence reduce debugging efforts More productive time for better designs
7.
7© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Programming Tidbits Processes vs Threads Limited Memory vs Synchronization Extras Independent Units vs Event Driven Programs Security vs Inherent Communication Process Usages Multi-processors and Multi-tasking Minimal Process Inter-communication Communication using IPCs Native Implementation
8.
8© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Programming Tidbits Threads Usages Multi-processors and Parallel Programming Hand-in-hand Blocking & Execution Code & Libraries need to be re-entrant & thread-safe Implementation using pthreads library Model Cases Delegation or Manager-Worker (e.g. Web Server) Pipeline (e.g. Events in a GUI) Peer (e.g. Multiple I/O Processing) Producer-Consumer (e.g. Manufacturing Unit)
9.
9© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Programming Tidbits Schedulers & Priorities Normal vs Real Time Nice vs Priority Time Slicing vs Starvation Synchronization in Priority based Scheduling Deadlock Avoidance (Banker's Algorithm) Deadlock Prevention (Conditional Variables)) Priority Inversion Resolution Techniques Priority Inheritance, Priority Ceiling, Priority Protect
10.
10© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Programming Tidbits Signals vs Polling Asynchronous vs Synchronous Racing vs Blocking Timers vs Loops Interrupts vs Signals Kernel Space vs User Space Hardware vs Software
11.
11© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Functional Programming Tidbits Sockets Inter-system communication Control, Data Interface to Multiple Devices Interface to Multiple Channels / Functionalities On a Device Model case Client-Server (e.g. for debugging, logging, ...)
12.
12© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Extra Miles for Embedded Software Even after a good functional design, including the functional programming tidbits, there are many other design & programming aspects, which need to be taken care for Embedded Software Can be learnt in two ways The hard way by experiencing yourself, Or By applying from others learnings So, here goes some from my learnings
13.
13© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Fault Tolerance
14.
14© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Fault Tolerance Design for Uninterrupted Execution Avoid race conditions w/ proper synchronization Avoid memory leaks w/ memory usage balancing Verify with memory profilers Handle all error cases, extreme conditions default for a switch, else for an if, ... Avoid infinite loops. Rather put timeouts Re-organize code to avoid / prevent deadlocks
15.
15© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Fault Tolerance Design for Crash Recovery By restarting the crucial flows Example: The Main Task Design for Hang Recovery With watchdogs Design for Power Failures With brown-out detections With power-down saves
16.
16© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Hardware aware Design & Programming
17.
17© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Hardware Speed Mismatch Hardware (Faster / Slower) Interact using interrupt-mechanism Time-sensitive Hardware Interaction Specific hardware protocols like I2S, SPI, ... Use precise (busy-wait) delays Non-responsive Hardware Use timeouts rather than unconditional accesses Hardware with Irregular/Incorrect Responses Do proper error handling for the extreme / abnormal / invalid cases Hardware Delays (like Debouncing, Rise Time, ...) Use appropriate Timers &/or Delays to offset them
18.
18© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Programming for Hardware Passive vs Active Devices (Memory vs Device) Code Optimization vs Change outside Program Use programming specific keywords, like volatile Memory Caching at various levels May need to bypass/disable/flush for addr-mapped devices Using architecture specific instructions / APIs CPU Optimizations (Re-ordering of CPU instructions) May need to be locally disabled for correct device operations Using architecture specific barriers
19.
19© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Programming for Hardware Virtual Memory Accesses for DMA May need to be translated to Physical Addresses Cache consistency needs to be taken care of Using OS specific lookup APIs Register Specific Programming May need specific programming sequences As per the device datasheet Examples Clear-on-write, Multiple writes Indirect Access, Protected Access
20.
20© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design & Programming for Performance
21.
21© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Performance IPC vs Synchronization Multi-process (Context Switching) vs Multi-threaded (Same Context) Communication vs Synchronization Overheads Schedulers & Priorities Normal vs Real Time Nice vs Priority Yielding vs Busy Wait Latency vs Precision Interrupt / Signal Usage Higher Priority and Asynchronous Attention But too many / missing them may invalidate assumptions
22.
22© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Performance Swap Space May reduce individual task performance Though, may improve overall performance By letting many more tasks run Provided by swap partition or file Usage could be controlled by adjusting swappiness Physical Memory Minimizing memory allocation / deallocation (Secondary) Storage Usage & Accesses Minimize / Eliminate for best consistent performance Possibly by pre-loading into memory or using mmap
23.
23© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Real Time Performance Have very few Real Time Processes Keep the RT Applications Short & Efficient Do not do heavy duty operations Like Memory Allocation, ... If essential, move to Initialization Sections Testability for the RT working of the other RT Apps Testability of the performance of the needed OS service If any RT App has priority higher than the OS Service Testability for other needed non-RT Apps' performance
24.
24© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Programming for Performance System Calls vs Library Functions Direct vs Indirect w/ Internal Overheads Single Buffered vs Multi-buffered Example: File Operations (read / write / ... vs fread / fwrite / ...) Buffer Caching vs Direct Access Repeated Accesses vs One Time Access Possible Thrashing vs Uniform Slow Performance Controlled using O_DIRECT Code Optimization Techniques Compiler Optimizations for Performance, esp by removing redundant code Reduce/Remove Code Bottlenecks detected using Profilers Placing often used variables into registers, but may affect other computations Making functions inline, but may increase code size Using likely / unlikely constructs for code placement to minimize cache misses
25.
25© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Maintainability
26.
26© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Design for Maintenance Embedded Systems are Highly Constrained Critically Operating In case of issues, need to be resolved urgently And, most of the times remotely at customer site Demands for an excellent debugging framework For the overall embedded system Be it Kernel Space or User Space And, ways to fix problems remotely
27.
27© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Debugability & Fixability Provide enough debugging support through logging hooks May keep the minimal light weight support enabled, by default (Remote) Support for further enabling / disabling the logs Multiple log levels depending on the criticality of the situation (Remote) Access to the Log from the Embedded System Logs & Dumps should be from the various parts of the System Kernel, Startup, Applications, … Could be centralized &/or de-centralized depending on the ES At the least, the following Activity Logs should be designed & coded Login, Network, Reboots, Device Access, ... And last but not least, Automatic / Remote mechanisms for Update / Patch should be implemented
28.
28© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. What all have we learnt? Functionality Design & Programming Design for Fault Tolerance Hardware aware Design & Programming Design & Programming for Performance Design for Maintainability
29.
29© 2010-15 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Any Queries?