$295.00 USD

SOLID Principles for Embedded Software Design

Today’s embedded systems need to be flexible, scalable, and reusable. Many teams across the globe are creating embedded software platforms that will be the base software for dozens of products that must be supported for years to come. To be successful, you must adopt and leverage modern development techniques and SOLID principles for embedded software design.

In this hands-on workshop, you’ll learn how to apply SOLID principles to architect, build, simulate, test, and scale embedded software. You’ll learn the principles that allow you to design a flexible and scalable architecture. With these skills, you’ll be able to use modern development practices like Test-Driven Development (TDD) and simulation seamlessly within your development environment.

By the end of this course, you’ll have skillfully designed, simulated, implemented, and scaled a temperature monitor system into a temperature controller. You’ll have experience with TDD and simulating embedded systems. You’ll even learn about modern build systems, and scalable firmware techniques like configuration tables, hardware abstraction layers, and other techniques for creating flexible software.

Key topics covered in this workshop:

  • SOLID principles
  • Embedded software architecture design
  • HAL and API design
  • Test-Driven Development (TDD)
  • Simulation techniques
  • Configurable firmware
  • Modern development techniques

The workshop includes five sessions on the following topics:

  1. Embedded Software Architecture Design
  2. Applying SOLID Principles to Embedded Software
  3. Embedded Software Simulation Techniques
  4. HALs, APIs, and Abstractions
  5. Test-Driven Development

Each session will be accompanied by a hands-on lab that allows you to apply the skills learned in the session.

Join us for this immersive workshop and unlock the keys to mastering modern embedded software practices through an in-depth exploration of SOLID embedded software principles.

On-demand and/or Live:

Session 1 May 14, 2024 11 - 12:30 EDT

Session 2 May 28, 2024 11 - 12:30 EDT

Session 3 June 4, 2024 11 - 12:30 EDT

Session 4 June 11, 2024 11 - 12:30 EDT

Session 5 June 18, 2024 11 - 12:30 EDT

Detailed Session Descriptions:

Session 1: Embedded Software Architecture Principles

In this session, participants will learn about modern embedded software architecture principles and techniques. We will identify what a software architecture is, the qualities that make modern architectures successful, and key characteristics. You’ll learn about common architectural design patterns before applying them to design a temperature monitor. Topics covered include, but are not limited to:

  • How to design a modern embedded software architecture
  • Design patterns
  • Modern build systems

Lab: Hello World Build System Setup with initial monitor architecture design

 

Session 2: Applying SOLID Principles to Embedded Software

Participants will delve into the SOLID principles that can help them to architect a more scalable and reusable software architecture. You’ll learn how to manage module dependencies, design abstractions, and more. Topics covered include, but are not limited to:

  • SOLID Principles
    • The Single Responsibility Principle
    • The Open-Closed Principle
    • The Liskov Substitution Principle
    • The Interface Segregation Principle
    • The Dependency Inversion Principle
  • Applying SOLID principles to embedded software
  • The impact of applying SOLID principles

Lab 2: Review and update monitor architecture and implement host-based prototype

 

Session 3: Embedded Software Simulation Techniques

This session covers practical aspects of simulating embedded software. You’ll learn about the various techniques that can be used to rapidly develop and prove out your embedded software without your target hardware available. Topics covered include, but are not limited to:

  • Hardware simulation
  • Application code simulation
  • How to accelerate development with simulation

Lab: Continue monitor implementation with simulator integration

 

Session 4: HALs, APIs, and Abstractions

In this session, you’ll learn about how to create hardware abstraction layers, application programming interfaces, and other abstractions. You’ll learn how to implement and integrate them with your build system to allow you to build for simulation or target. Topics covered include, but are not limited to:

  • HAL design and implementation techniques
  • Compile time polymorphic behavior
  • Build system integration techniques

Lab: Temperature monitor target implementation with simulator

 

Session 5: Test-Driven Development

The final session will empower participants with the knowledge to incorporate Test-Driven Development (TDD) into the development processes. You’ll learn the fundamentals of TDD and use it to scale your temperature monitoring system into a temperature controller system. You’ll see how our architectural design and SOLID principles allow us to scale and adapt with minimal rework, time, and budget. Topics covered include, but are not limited to:

  • Introduction to Zephyr’s connectivity stacks, including Bluetooth Low Energy (BLE)
  • Strategies for integrating wireless communication in embedded devices
  • Best practices for network security and data integrity

Lab: Use TDD to scale the temperature monitor into a temperature controller

Frequently Asked Questions (FAQ)

 1) Will the recording be available?

    Yes. The recording will be made available after each session

 

2) How long will I have access to the materials?

    You will have access to the materials indefinitely. The goal is to provide you with a quality, professional class you can reference to refresh the concepts as needed.

 

3) How do I access the course? 

    The course is hosted on Jacob’s Kajabi site. You’ll receive a login and instructions upon signing up. Live sessions use Zoom.

 

4) When are the live sessions scheduled?

     The 2024 Spring Live sessions will take place on the following days:

Session 1 May 14, 2024 11 - 12:30 EDT

Session 2 May 28, 2024 11 - 12:30 EDT

Session 3 June 4, 2024 11 - 12:30 EDT

Session 4 June 11, 2024 11 - 12:30 EDT

Session 5 June 18, 2024 11 - 12:30 EDT

Recordings are provided and if you are unable to make these dates, you can still take this course on-demand.

 

5) Can my entire team attend?

    Yes. There are various course licensing options available. In general, we provide one login and access per person. However, if you have a team, please contact [email protected] to discuss the best options.

 

6) What development board is used for the course?

    You’ll be able to apply these techniques to any development board; However, the class examples will use an STM32L475 IoT Discovery Board. All of Jacob’s courses currently use this board. However, with slight modifications, you can use any ST board, or any development board you have at your disposal. (Sorry, we won’t support issues encountered with other development boards).

 

7)   Are there hands-on labs?

    Yes, this course includes hands-on exercises.