SlideShare une entreprise Scribd logo
1  sur  29
© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Embedded Software Design
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© 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© 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© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Functional Design & Programming
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© 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© 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© 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© 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© 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© 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© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Design for Fault Tolerance
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© 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© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Hardware aware Design & Programming
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© 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© 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© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Design & Programming for Performance
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© 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© 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© 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© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Design for Maintainability
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© 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© 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© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Any Queries?

Contenu connexe

Tendances

U-Boot presentation 2013
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013Wave Digitech
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device driversHoucheng Lin
 
BeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream ComponentsBeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream ComponentsGlobalLogic Ukraine
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel SourceMotaz Saad
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBabak Farrokhi
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal BootloaderSatpal Parmar
 

Tendances (20)

Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
Character Drivers
Character DriversCharacter Drivers
Character Drivers
 
USB Drivers
USB DriversUSB Drivers
USB Drivers
 
Interrupts
InterruptsInterrupts
Interrupts
 
Toolchain
ToolchainToolchain
Toolchain
 
A practical guide to buildroot
A practical guide to buildrootA practical guide to buildroot
A practical guide to buildroot
 
U-Boot presentation 2013
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013
 
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
 
Processes
ProcessesProcesses
Processes
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm 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 ComponentsBeagleBone Black: Platform Bring-Up with Upstream Components
BeagleBone Black: Platform Bring-Up with Upstream Components
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
 
Linux Booting Steps
Linux Booting StepsLinux Booting Steps
Linux Booting Steps
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 

En vedette (16)

Functional Programming with LISP
Functional Programming with LISPFunctional Programming with LISP
Functional Programming with LISP
 
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux DriversMobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
Linux User Space Debugging & Profiling
Linux User Space Debugging & ProfilingLinux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
 
Timers
TimersTimers
Timers
 
Threads
ThreadsThreads
Threads
 
Linux Network Management
Linux Network ManagementLinux Network Management
Linux Network Management
 
Embedded C
Embedded CEmbedded C
Embedded C
 
System Calls
System CallsSystem Calls
System Calls
 
Synchronization
SynchronizationSynchronization
Synchronization
 
Signals
SignalsSignals
Signals
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
 
Network Drivers
Network DriversNetwork Drivers
Network Drivers
 
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
 
References
ReferencesReferences
References
 
Introduction to Linux Drivers
Introduction to Linux DriversIntroduction to Linux Drivers
Introduction to Linux Drivers
 

Similaire à Embedded Software Design Essentials

Introduction to Embedded Systems
Introduction to Embedded SystemsIntroduction to Embedded Systems
Introduction to Embedded SystemsAnil 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... 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...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
 
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docxsleeperharwell
 
Virtualization and Cloud Computing
Virtualization and Cloud ComputingVirtualization and Cloud Computing
Virtualization and Cloud ComputingJosh Folgado
 
Vasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python ProfilingVasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python ProfilingSergey Arkhipov
 
If your computer is cloud what its Operating System look like?
If your computer is cloud what its Operating System look like?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 ConsiderationsVMware View – Storage Considerations
VMware View – Storage ConsiderationsCalin Damian Tanase
 
Get to know the browser better and write faster web apps
Get to know the browser better   and write faster web appsGet to know the browser better   and write faster web apps
Get to know the browser better and write faster web appsLior Bar-On
 
Embedded systems in brief
Embedded systems   in briefEmbedded systems   in brief
Embedded systems in briefkrnathan
 
Octobus technical university def
Octobus technical university   defOctobus technical university   def
Octobus technical university defDaniela Zuppini
 
Andon Applications with InduSoft Web Studio
Andon Applications with InduSoft Web StudioAndon Applications with InduSoft Web Studio
Andon Applications with InduSoft Web StudioAVEVA
 
Ppt on embedded system
Ppt on embedded systemPpt on embedded system
Ppt on embedded systemPankaj joshi
 
Design of Software for Embedded Systems
Design of Software for Embedded SystemsDesign of Software for Embedded Systems
Design of Software for Embedded SystemsPeter Tröger
 

Similaire à Embedded Software Design Essentials (20)

Introduction to Embedded Systems
Introduction to Embedded SystemsIntroduction to Embedded Systems
Introduction to Embedded Systems
 
Embedded Applications
Embedded ApplicationsEmbedded 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... 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...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 SystemsReal Time Systems
Real Time Systems
 
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
9781337117562_ppt_ch01.pptxChapter 1An Overview of Compute.docx
 
Virtualization and Cloud Computing
Virtualization and Cloud ComputingVirtualization and Cloud Computing
Virtualization and Cloud Computing
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 
Vasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python ProfilingVasiliy 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?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 ConsiderationsVMware View – Storage Considerations
VMware View – Storage Considerations
 
PowerAI Deep Dive ( key points )
PowerAI Deep Dive ( key points )PowerAI Deep Dive ( key points )
PowerAI Deep Dive ( key points )
 
Processes
ProcessesProcesses
Processes
 
Get to know the browser better and write faster web apps
Get to know the browser better   and write faster web appsGet 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 briefEmbedded systems   in brief
Embedded systems in brief
 
Kairos aarohan
Kairos  aarohanKairos  aarohan
Kairos aarohan
 
Octobus technical university def
Octobus technical university   defOctobus technical university   def
Octobus technical university def
 
Andon Applications with InduSoft Web Studio
Andon Applications with InduSoft Web StudioAndon Applications with InduSoft Web Studio
Andon Applications with InduSoft Web Studio
 
Ppt on embedded system
Ppt on embedded systemPpt on embedded system
Ppt on embedded system
 
Design of Software for Embedded Systems
Design of Software for Embedded SystemsDesign of Software for Embedded Systems
Design of Software for Embedded Systems
 

Plus de Anil Kumar Pugalia (12)

File System Modules
File System ModulesFile System Modules
File System Modules
 
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
 
System Calls
System CallsSystem Calls
System Calls
 
Introduction to Linux
Introduction to LinuxIntroduction to Linux
Introduction to Linux
 
Playing with R L C Circuits
Playing with R L C CircuitsPlaying with R L C Circuits
Playing with R L C Circuits
 
Audio Drivers
Audio DriversAudio Drivers
Audio Drivers
 
Power of vi
Power of viPower of vi
Power of vi
 
gcc and friends
gcc and friendsgcc and friends
gcc and friends
 
"make" system
"make" system"make" system
"make" system
 
Hardware Design for Software Hackers
Hardware Design for Software HackersHardware Design for Software Hackers
Hardware Design for Software Hackers
 
RPM Building
RPM BuildingRPM Building
RPM Building
 
Linux File System
Linux File SystemLinux 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 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)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.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo 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.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.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?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
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.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

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 2024Transcript: 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.pptxThe 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)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.pptxMerck 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 PlanHow 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 2024What'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 365Ensuring 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 2024SIP 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.pptxThe 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.pptxunit 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.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?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative 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 NoSQLDeveloper 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 MavenDevoxxFR 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 embeddingTraining 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.pptxUse 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 2024Transcript: 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 BrandWordPress 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.pdfMoving 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?