Software Engineering for Embedded Systems, Training Workshop
Embedded Software Engineering is the process of controlling various devices and machines that are different from traditional computers, using software engineering.
Integrating software engineering with non-computer devices leads to the formation of embedded systems.
Embedded systems are typically popular in medical science, consumer electronics, manufacturing science, aviation, automotive technology, etc. A typical embedded system requires a wide range of programming tools, microprocessors and operating systems.
Embedded software engineering, performed by embedded software engineers, needs to be tailored to the needs of the hardware that it has to control and run on.
The software and operating system requirements of an embedded system is also different from a traditional computer based system. Typically embedded systems use basic embedded system software such as C, C++, ADA, etc. Some specialized embedded systems may use OS such as Windows CE, LINUX, TreadX, Nucleus RTOS, OSE, etc.
Embedded software engineering differs from traditional application development in terms of the additional consideration to external factors such as temperature and other environmental factors that may affect performance.
Today, manufacturers across all industries have increasingly incorporated electronics and software into their mechanical products in order to deliver features that customers want at a competitive price.
Essential expertise needed for software engineering for embedded systems are considerable, and include:
- Linux operating system
- Assembly programming language
- Ability to read a schematic
- Python programming language
- RISC-V instruction set architecture
- Real-time operating systems (RTOS)
Analysts believe those who focus on software engineering for embedded systems also need to focus on important future skills including understanding AI and its increasing use in embedded systems as well as skills in internet-based technologies and IoT.
Software Engineering for Embedded Systems, Training Workshop by Tonex
Software Engineering for Embedded Systems training workshop is a 4-day training workshop that provides the techniques and technologies in software engineering to optimally design and implement an embedded system. Participants will learn about key embedded systems, software engineering problems/issues and references to their solution.
In this course, learn about core methods and how to apply them, examples that demonstrate timeless implementation details, case studies, design guidelines and trade-offs.
Course Content for Software Engineering for Embedded Systems
Software Engineering for Embedded and Real-Time Systems
1 Software Engineering
2 Embedded Systems
3 Real-Time Systems
4 Example of a Hard Real-Time System
5 Real-Time Event Characteristics
6 Challenges in Real-Time System Design
7 The Embedded System’s Software Build Process
8 Distributed and Multiprocessor Architectures
9 Software for Embedded Systems
10 Hardware Abstraction Layers for Embedded Systems
Software Development Process
1 Getting Started
7 Rolling It Together: Agile Development
8 Advanced Topics
Embedded and Multicore System Architecture—Design and Optimization
2 The Right Way and the Wrong Way
3 Understanding Requirements
4 Mapping the Application
5 Helping the Compiler and Build Tools
6 Power Optimization
Basic Programming Techniques
2 Reference Platform Overview
3 SDK Installation
4 Target System Configuration and Initialization
5 Programming Examples
Programming and Implementation Guidelines
2 Starting the Embedded Software Project
3 Variable Structure
Content Learning Exercises
1 Foreground/Background Systems
2 Real-Time Kernels
3 RTOS (Real-Time Operating System)
4 Assigning Task Priorities
5 Determining the Size of a Stack
6 Preemptive Scheduling
7 Scheduling Points
8 Round-Robin Scheduling
9 Context Switching
10 Interrupt Management
11 The Clock Tick (or System Tick)
12 Resource Management
14 Bilateral Rendez-vous
15 Message Passing
16 Flow Control
17 Clients and Servers
Software and Compiler Optimization for Microcontrollers, Embedded Processors, and DSPs
2 Development Tools Overview
3 Understanding the Embedded Target Architecture
4 Basic Optimization Goals and Practices
5 General Loop Transformations
6 Code Size Optimization
7 Data Structures
9: Embedded Software Quality, Integration, and Testing Techniques
1 What Is Software Test?
2 Why Should We Test Software?
3 How Much Testing Is Enough?
4 When Should Testing Take Place?
5 Who Makes the Decisions?
6 Available Techniques
7 Setting the Standard
8 Dealing With the Unusual
9 Implementing a Test Solution Environment
10 Summary and Conclusions
10: Embedded Multicore Software Development
1 Symmetric and Asymmetric Multiprocessing
2 Parallelism Saves Power
3 Look for Parallelism Opportunities
4 Multicore Application Locality
5 Multicore Programming Models
6 Performance and Optimization of Multicore Systems
7 Language Extensions Example—OpenMP
8 Pulling It All Together
2 Project-Planning Strategies
3 Faults, Failures, Hazards, and Risk Analysis
4 Safety-Critical Architectures
5 Software Implementation Strategies
2 Embedded Linux Networking
3 Moving From the Linux Kernel to User Space
4 Life of a Packet in a Native Linux Network Stack
5 Networking Performance Optimization Techniques
6 Case Studies: Covering Microcontrollers to Network Processors
Internet of Things
2 History and Device Progression
4 Enabling Technologies
5 Internet of Things Architecture
6 Communications Used in Internet of Things
7 Data Analytics
8 Internet of Things Development Challenges
Security and Cryptography
1 What Is Security?
3 Life Cycle of a Secure Embedded System
4 Threat Analysis
5 Components of Secure Embedded Systems
15: Machine Learning at the Edge
2 What Is Artificial Intelligence
3 What Is Machine Learning?
4 Feeding Your Brain—Data
5 Support Vector Machine
6 k-NN (Nearest Neighbor) Algorithm
7 Decision Trees
8 Neural Nets
9 What Is Necessary to Bring ML to the Edge?
10 Edge Learning/Training
Performance Analysis Using NXP’s i.MX RT1050 Crossover Processor and the Zephyr™ Real-Time Operating System
A.2 Configuration Information
A.3 Scope of Analysis
A.4 Analysis Results
A.5 Summary and Conclusions
Software Engineering for Embedded Systems, Training Workshop