Submit Search
Upload
Embedded Software Design Essentials
•
10 likes
•
7,064 views
AI-enhanced title
Anil Kumar Pugalia
Follow
Embedded System specific Design aspects
Read less
Read more
Technology
Report
Share
Report
Share
1 of 29
Recommended
Character Drivers
Character Drivers
Anil Kumar Pugalia
Bootloaders
Bootloaders
Anil Kumar Pugalia
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Block Drivers
Block Drivers
Anil Kumar Pugalia
Understanding a kernel oops and a kernel panic
Understanding a kernel oops and a kernel panic
Joseph Lu
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
Basic Linux Internals
Basic Linux Internals
mukul bhardwaj
I2c drivers
I2c drivers
Pradeep Tewani
Recommended
Character Drivers
Character Drivers
Anil Kumar Pugalia
Bootloaders
Bootloaders
Anil Kumar Pugalia
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Block Drivers
Block Drivers
Anil Kumar Pugalia
Understanding a kernel oops and a kernel panic
Understanding a kernel oops and a kernel panic
Joseph Lu
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
Basic Linux Internals
Basic Linux Internals
mukul bhardwaj
I2c drivers
I2c drivers
Pradeep Tewani
U Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
Linux Porting
Linux Porting
Anil Kumar Pugalia
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
Character drivers
Character drivers
pradeep_tewani
Linux Internals - Part II
Linux Internals - Part II
Emertxe Information Technologies Pvt Ltd
Step for installing linux server
Step for installing linux server
syed mehdi raza
Linux Internals - Part I
Linux Internals - Part I
Emertxe Information Technologies Pvt Ltd
U-Boot presentation 2013
U-Boot presentation 2013
Wave Digitech
Introduction to Unix operating system Chapter 1-PPT Mrs.Sowmya Jyothi
Introduction to Unix operating system Chapter 1-PPT Mrs.Sowmya Jyothi
Sowmya Jyothi
Toolchain
Toolchain
Anil Kumar Pugalia
Yocto project and open embedded training
Yocto project and open embedded training
H Ming
Uboot startup sequence
Uboot startup sequence
Houcheng Lin
Qemu Pcie
Qemu Pcie
The Linux Foundation
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
Gene Chang
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
Architecture Of The Linux Kernel
Architecture Of The Linux Kernel
Dominique Cimafranca
Platform Drivers
Platform Drivers
SysPlay eLearning Academy for You
Hacking QNX
Hacking QNX
ricardomcm
Init of Android
Init of Android
Tetsuyuki Kobayashi
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
SUSE Labs Taipei
Board Bringup
Board Bringup
Anil Kumar Pugalia
Functional Programming with LISP
Functional Programming with LISP
Anil Kumar Pugalia
More Related Content
What's hot
U Boot or Universal Bootloader
U Boot or Universal Bootloader
Satpal Parmar
Linux Porting
Linux Porting
Anil Kumar Pugalia
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
Character drivers
Character drivers
pradeep_tewani
Linux Internals - Part II
Linux Internals - Part II
Emertxe Information Technologies Pvt Ltd
Step for installing linux server
Step for installing linux server
syed mehdi raza
Linux Internals - Part I
Linux Internals - Part I
Emertxe Information Technologies Pvt Ltd
U-Boot presentation 2013
U-Boot presentation 2013
Wave Digitech
Introduction to Unix operating system Chapter 1-PPT Mrs.Sowmya Jyothi
Introduction to Unix operating system Chapter 1-PPT Mrs.Sowmya Jyothi
Sowmya Jyothi
Toolchain
Toolchain
Anil Kumar Pugalia
Yocto project and open embedded training
Yocto project and open embedded training
H Ming
Uboot startup sequence
Uboot startup sequence
Houcheng Lin
Qemu Pcie
Qemu Pcie
The Linux Foundation
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
Gene Chang
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
Architecture Of The Linux Kernel
Architecture Of The Linux Kernel
Dominique Cimafranca
Platform Drivers
Platform Drivers
SysPlay eLearning Academy for You
Hacking QNX
Hacking QNX
ricardomcm
Init of Android
Init of Android
Tetsuyuki Kobayashi
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
SUSE Labs Taipei
What's hot
(20)
U Boot or Universal Bootloader
U Boot or Universal Bootloader
Linux Porting
Linux Porting
SPI Drivers
SPI Drivers
Character drivers
Character drivers
Linux Internals - Part II
Linux Internals - Part II
Step for installing linux server
Step for installing linux server
Linux Internals - Part I
Linux Internals - Part I
U-Boot presentation 2013
U-Boot presentation 2013
Introduction to Unix operating system Chapter 1-PPT Mrs.Sowmya Jyothi
Introduction to Unix operating system Chapter 1-PPT Mrs.Sowmya Jyothi
Toolchain
Toolchain
Yocto project and open embedded training
Yocto project and open embedded training
Uboot startup sequence
Uboot startup sequence
Qemu Pcie
Qemu Pcie
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Architecture Of The Linux Kernel
Architecture Of The Linux Kernel
Platform Drivers
Platform Drivers
Hacking QNX
Hacking QNX
Init of Android
Init of Android
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
Viewers also liked
Board Bringup
Board Bringup
Anil Kumar Pugalia
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
Interrupts
Interrupts
Anil Kumar Pugalia
Introduction to Linux Drivers
Introduction to Linux Drivers
Anil Kumar Pugalia
Viewers also liked
(18)
Board Bringup
Board Bringup
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
Interrupts
Interrupts
Introduction to Linux Drivers
Introduction to Linux Drivers
Similar to 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
Similar to 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
More from 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
Video Drivers
Video 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
Processes
Processes
Anil Kumar Pugalia
Linux File System
Linux File System
Anil Kumar Pugalia
More from Anil Kumar Pugalia
(14)
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
Video Drivers
Video 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
Processes
Processes
Linux File System
Linux File System
Recently uploaded
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Zilliz
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Mark Simos
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Safe Software
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Alfredo García Lavilla
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Patryk Bandurski
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Padma Pradeep
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Zilliz
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
hariprasad279825
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
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
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
Fwdays
Recently uploaded
(20)
Training state-of-the-art general text embedding
Training state-of-the-art general text embedding
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
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?