Embedded Firmware Development
Learn how to build embedded firmware quickly and effectively and control physical hardware with it.
Firmware development process involves many moving parts, many tools and many areas of knowledge that you as a firmware developer need to combine towards the purpose of creating functional, robust and secure firmware.
This is an alpha version of a training that aims to help you accomplish exactly that. It is an alpha version because it still does not deliver fully on that promise and it is provided to you as a live preview where any part of the content may change at any time.
This training builds further on the concepts already covered in some of the earlier training. Most notably:
- Embedded DevOps: or proven management strategies for an embedded firmware project. This training drives the point home about why we use CI in the first place.
- Embedded CI Infrastructure Setup: this is a practical training with many code samples that walks you through the (rather detailed) process of setting up embedded firmware CI. You need this in order to work effectively with firmware.
- Embedded C Programming Design Patterns: this training gives you an overview of design patterns you will very often encounter in well designed embedded software. It combines theory and simple code examples to illustrate the point.
In contrast with other training that deals with surrounding infrastructure or patterns of development, in this training we deal with problems of actual firmware development. Which includes understanding of:
- What hardware do we use to control a particular physical device
- How do we work with device drivers?
- How do we implement support for new hardware?
- What is hardware anyway and how does it interact with our code?
This training is made up of following modules:
- Building blocks: this section covers major building blocks of firmware development. We look at tools, mathematical disciplines and do a recap of build process.
- How tools fit: in this section we take all the tools and combine them to compile, simulate, flash and debug a simple application. This module is designed to give you practical experience so that the rest of the training is easier.
- Hardware: here we dive into hardware that comes with many system on chip devices which you will be very often interacting with. It is important to know what hardware you have available and what it can be used for. This section covers exactly that.
- Device Driver Model: here we look at how we can write generic, reusable device drivers and connect them together in flexible ways without having to modify our code across platforms. This is our device driver model. It is crucial to understand it before we start going over device drivers.
- CraneControl Hardware: in this section we start looking at a practical application - the hardware of mobile movie production camera crane. This hardware ties in all content covered so far and gives it a concrete physical shape. Here we go through every block on the PCB and look at its function. We will need this knowledge when we start developing firmware for controlling this hardware.
- CraneControl Firmware: in this section we look at the original firmware that I wrote for the CraneControl boards. In subsequent sections we are going to bring this firmware up to best possible standard, but in this section we will familiarize ourselves with it and look at how it works.
- Testing Overview: in this section we look at CMock, Renode and Unity and go over programming details that upcoming modules are going to take for granted that you understand very well. We look at how to setup simulation, how to generate mocks and how we structure out testing.
- More modules to come..
As a member you have a unique opportunity to influence what goes into this training. It is therefore important that you send in your questions and requests directly to me at martin.schroder@swedishembedded.com.
How to enroll
This training is available to paid members only.
Membership offers you additional benefits such as: