Length: 2 Days
Print Friendly, PDF & Email

Software Engineering for Embedded Systems Training Workshop by Tonex

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 Book

Software Engineering for Embedded Systems, 2nd Edition

Course Content for Software Engineering for Embedded Systems

Software Engineering for Embedded and Real-Time Systems

  • Software Engineering
  • Embedded Systems
  • Real-Time Systems
  • Example of a Hard Real-Time System
  • Real-Time Event Characteristics
  • Challenges in Real-Time System Design
  • The Embedded System’s Software Build Process
  • Distributed and Multiprocessor Architectures
  • Software for Embedded Systems
  • Hardware Abstraction Layers for Embedded Systems

Software Development Process

  • Getting Started
  • Requirements
  • Architecture
  • Design
  • Implementation
  • Testing
  • Rolling It Together: Agile Development
  • Advanced Topics
  • Conclusion
  • Exercises

Embedded and Multicore System Architecture—Design and Optimization

  • Introduction
  • The Right Way and the Wrong Way
  • Understanding Requirements
  • Mapping the Application
  • Helping the Compiler and Build Tools
  • Power Optimization

Basic Programming Techniques

  • Introduction
  • Reference Platform Overview
  • SDK Installation
  • Target System Configuration and Initialization
  • Programming Examples
  • Summary

Programming and Implementation Guidelines

  • Introduction
  • Starting the Embedded Software Project
  • Variable Structure
  • Content Learning Exercises

Operating Systems

  • Foreground/Background Systems
  • Real-Time Kernels
  • RTOS (Real-Time Operating System)
  • Assigning Task Priorities
  • Determining the Size of a Stack
  • Preemptive Scheduling
  • Scheduling Points
  • Round-Robin Scheduling
  • Context Switching
  • Interrupt Management
  • The Clock Tick (or System Tick)
  • Resource Management
  • Synchronization
  • Bilateral Rendez-vous
  • Message Passing
  • Flow Control
  • Clients and Servers
  • Summary

Open-Source Software

  • Linux
  • U-Boot
  • FreeRTOS
  • Questions

Software and Compiler Optimization for Microcontrollers, Embedded Processors, and DSPs

  • Introduction
  • Development Tools Overview
  • Understanding the Embedded Target Architecture
  • Basic Optimization Goals and Practices
  • General Loop Transformations
  • Code Size Optimization
  • Data Structures

9: Embedded Software Quality, Integration, and Testing Techniques

  • What Is Software Test?
  • Why Should We Test Software?
  • How Much Testing Is Enough?
  • When Should Testing Take Place?
  • Who Makes the Decisions?
  • Available Techniques
  • Setting the Standard
  • Dealing With the Unusual
  • Implementing a Test Solution Environment
  • Summary and Conclusions

10: Embedded Multicore Software Development

  • Symmetric and Asymmetric Multiprocessing
  • Parallelism Saves Power
  • Look for Parallelism Opportunities
  • Multicore Application Locality
  • Multicore Programming Models
  • Performance and Optimization of Multicore Systems
  • Language Extensions Example—OpenMP
  • Pulling It All Together

Safety-Critical Development

  • Introduction
  • Project-Planning Strategies
  • Faults, Failures, Hazards, and Risk Analysis
  • Safety-Critical Architectures
  • Software Implementation Strategies
  • Exercises

Networking Software

  • Introduction
  • Embedded Linux Networking
  • Moving From the Linux Kernel to User Space
  • Life of a Packet in a Native Linux Network Stack
  • Networking Performance Optimization Techniques
  • Case Studies: Covering Microcontrollers to Network Processors
    Exercises

Internet of Things

  • Introduction
  • History and Device Progression
  • Applications
  • Enabling Technologies
  • Internet of Things Architecture
  • Communications Used in Internet of Things
  • Data Analytics
  • Internet of Things Development Challenges
  • Exercises

Security and Cryptography

  • What Is Security?
  • Cryptology
  • Life Cycle of a Secure Embedded System
  • Threat Analysis
  • Components of Secure Embedded Systems
  • Questions

Machine Learning at the Edge

  • Introduction
  • What Is Artificial Intelligence
  • What Is Machine Learning?
  • Feeding Your Brain—Data
  • Support Vector Machine
  • k-NN (Nearest Neighbor) Algorithm
  • Decision Trees
  • Neural Nets
  • What Is Necessary to Bring ML to the Edge?
  • Edge Learning/Training

Performance Analysis Using NXP’s i.MX RT1050 Crossover Processor and the Zephyr™ Real-Time Operating System

  • Introduction
  • Configuration Information
  • Scope of Analysis
  • Analysis Results
  • Summary and Conclusions

 

Request More Information

Please enter contact information followed by your questions, comments and/or request(s):
  • Please complete the following form and a Tonex Training Specialist will contact you as soon as is possible.

    * Indicates required fields

  • This field is for validation purposes and should be left unchanged.

Request More Information

  • Please complete the following form and a Tonex Training Specialist will contact you as soon as is possible.

    * Indicates required fields

  • This field is for validation purposes and should be left unchanged.