SlideShare a Scribd company logo
1 of 163
Download to read offline
© 1
Embedded Software
Made Easy
Embed your Ideas
Embedded Software
Made Easy
A connected chief hat reading
you a recipe you selected by
voice control and waiting you
at each step with a voice signal
before continuing to the next
one.
Let’s take an example
2
Embedded Software
Made Easy
The following content is
• Under the software point-of-view.
• Is simplified for a broader audience.
• Opinionated by 25 years of farjump’s team
experience.
Warning
3
Embedded Software
Made Easy 4
Before we get started:
Hardware vs Software
Hardware
Embedded Software
Made Easy 4
Before we get started:
Hardware vs Software
Hardware
General-PurposeSingle-Purpose
Embedded Software
Made Easy 4
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
General-Purpose
DSP
Single-Purpose
I/O Peripheral
Embedded Software
Made Easy 4
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
General-Purpose
DSP
Single-Purpose
I/O Peripheral
May contain a
General-Purpose CPU
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
ComputingI/O
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
ASIC GPU
Computing
DSP
I/O
I/O Peripheral
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
Computing
DSP
I/O
I/O Peripheral
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
Computing
DSP
The Hardware/Software Interface
(HSI)
I/O
I/O Peripheral
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
Computing
DSP
The Hardware/Software Interface
(HSI)
I/O
We (the software people) are here
I/O Peripheral
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
Computing
DSP
The Hardware/Software Interface
(HSI)
I/O
We (the software people) are here
I/O Peripheral
Managed by internal
(embedded) software
Embedded Software
Made Easy 5
Before we get started:
Hardware vs Software
Hardware
CPUMCUASIC GPU
Computing
DSP
The Hardware/Software Interface
(HSI)
I/O
We (the software people) are here
I/O Peripheral
Managed by internal
(embedded) softwareExternally controlled by
Computing Hardware
Embedded Software
Made Easy
System-on-Chip (SoC)
Before we get started:
Hardware vs Software
T h e g e n e r a l - p u r p o s e
computing hardware you deal
with is in fact compound of
many specialised sub-units.
CPU
I/OCore
I/O
6
Tree map of usual sub-units
in a SoC
MCU
CPU
I/OCore
I/O
Tree map of usual sub-units
in a MCU
Memory
Embedded Software
Made Easy
System-on-Chip (SoC)
Before we get started:
Hardware vs Software
T h e g e n e r a l - p u r p o s e
computing hardware you deal
with is in fact compound of
many specialised sub-units.
CPU
I/OCore
I/O
6
Tree map of usual sub-units
in a SoC
Somehow, this is your software
which specialises it. Once it is
embedded in a closed system,
its purpose is fixed.
MCU
CPU
I/OCore
I/O
Tree map of usual sub-units
in a MCU
Memory
Embedded Software
Made Easy 7
Before we get started:
Hardware vs Software
Example of an ARM SoC
Embedded Software
Made Easy 8
Before we get started:
Hardware vs Software
Example of the Intel 8021
Microcontroller
Embedded Software
Made Easy 9
Before we get started:
Hardware vs Software
HSI
Level of
Software
Abstraction
Hardware
Embedded Software
Made Easy 9
Before we get started:
Hardware vs Software
Low-Level Software
HSI
Level of
Software
Abstraction
Hardware
Embedded Software
Made Easy 9
Before we get started:
Hardware vs Software
Low-Level Software
HSI
Firmware
Bare-metal
Level of
Software
Abstraction
System Call
Operating System
Hardware
Embedded Software
Made Easy 9
Before we get started:
Hardware vs Software
Low-Level Software
HSI
Firmware
Bare-metal
Level of
Software
Abstraction
API
System Call
Runtime SystemLibrary
Operating System
Hardware
OS Service
Embedded Software
Made Easy 9
Before we get started:
Hardware vs Software
Low-Level Software
HSI
Firmware
Bare-metal
Level of
Software
Abstraction
API
System Call
Runtime SystemLibrary
Program
Operating System
Hardware
OS Service
Embedded Software
Made Easy 9
Before we get started:
Hardware vs Software
Low-Level Software
HSI
Firmware
Bare-metal
Level of
Software
Abstraction
API
System Call
Runtime SystemLibrary
Program
Operating System
Hardware
Be very careful with
that…
OS Service
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
10
Embedded Software
Made Easy
We need to break down the idea.
Challenge #1 - How do I know what
should be software and hardware?
10
Embedded Software
Made Easy
We need to break down the idea.
Challenge #1 - How do I know what
should be software and hardware?
10
Embedded Software
Made Easy
We need to break down the idea.
Challenge #1 - How do I know what
should be software and hardware?
10
Recipe Search Recipe ReadingPower Button
Embedded Software
Made Easy
We need to break down the idea.
Challenge #1 - How do I know what
should be software and hardware?
10
Recipe Search Recipe ReadingPower Button
Note that these are
the user interfaces…
Is that enough…?
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
11
Recipe Search
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
11
Speech Recognition
Recipe Search
Text-to-Speech
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
11
Speech Recognition
Recipe Search
Text-to-Speech
Microphone
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
11
Speech Recognition
Speaker
Recipe Search
Text-to-Speech
Microphone
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
11
Speech Recognition
Speaker
Recipe Search
Text-to-Speech
Microphone
Hardware
Software
Embedded Software
Made Easy
Hardware
Software
Challenge #1 - How do I know what
should be software and hardware?
12
Recipe Reading
Speech Recognition
Speaker
Step-by-Step Processing
Text-to-Speech
Microphone
Embedded Software
Made Easy
Software
Hardware
Challenge #1 - How do I know what
should be software and hardware?
13
Power Button
Boot Usually handled
by an OS driver
Power On Power Off
Power Unit
Power Events
Usually handled by
a firmware and
bootloader
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
14
The basic general picture for now
Embedded Software
Made Easy
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Hardware
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Hardware
I/Os
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Software
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Software
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
Executed by a
CPU
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Software
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
14
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
Managed by
drivers
Executed by a
CPU
The basic general picture for now
Recipe Search Recipe Reading
Embedded Software
Made Easy
Software
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
15
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
But we still don’t know what it exactly looks like…
Recipe Search Recipe Reading
Embedded Software
Made Easy
Software
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
15
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
Which exact I/Os?
But we still don’t know what it exactly looks like…
Recipe Search Recipe Reading
Embedded Software
Made Easy
Software
Hardware
Computing
I/Os
Challenge #1 - How do I know what
should be software and hardware?
15
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
Which exact CPU? Which exact I/Os?
But we still don’t know what it exactly looks like…
Recipe Search Recipe Reading
Embedded Software
Made Easy 16
We need to scale the hardware to our precise needs.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 16
We need to scale the hardware to our precise needs.
Challenge #2 - How do I
select the hardware?
Having a « chicken and egg »
problem?
Embedded Software
Made Easy 17
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 17
Use an empirical approach by prototyping starting
from the first observations & deductions. Then
test & evaluate and repeat further specifying your
hardware until you reach your local optimum.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 17
Use an empirical approach by prototyping starting
from the first observations & deductions. Then
test & evaluate and repeat further specifying your
hardware until you reach your local optimum.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 17
Use an empirical approach by prototyping starting
from the first observations & deductions. Then
test & evaluate and repeat further specifying your
hardware until you reach your local optimum.
When you have no idea of a starting point, start
with an XXL superset of hardware, rich enough to
run your idea, and create a functional prototype.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 18
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 18
Note that:
• This process can be endless. It only depends on
what you are trying to accomplish. So be as lean as
possible here ;-)
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 18
Note that:
• This process can be endless. It only depends on
what you are trying to accomplish. So be as lean as
possible here ;-)
• This is the moment where you may start doing
hardware development in parallel of your software
development: once the hardware chosen, the
hardware team keeps further specifying it while
you can start the software development.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
• Your I/O requirements, including the interfaces with the
CPU.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
• Your I/O requirements, including the interfaces with the
CPU.
• Your computing requirements.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
• Your I/O requirements, including the interfaces with the
CPU.
• Your computing requirements.
And only targeting the current stage of your product:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
• Your I/O requirements, including the interfaces with the
CPU.
• Your computing requirements.
And only targeting the current stage of your product:
1. Research
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
• Your I/O requirements, including the interfaces with the
CPU.
• Your computing requirements.
And only targeting the current stage of your product:
1. Research
2. Development
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 19
In any case, the overall goal here is to make compromises
between:
• Your physical constraints (space, weight, power, etc.).
• Your I/O requirements, including the interfaces with the
CPU.
• Your computing requirements.
And only targeting the current stage of your product:
1. Research
2. Development
3. Production
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 20
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 20
The IoT gives us a very unique
chance in the embedded world: it
has the same I/O interfaces and
peripheral as our mainstream
general-purpose personal
computers.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 20
The IoT gives us a very unique
chance in the embedded world: it
has the same I/O interfaces and
peripheral as our mainstream
general-purpose personal
computers.
Which means that you can connect
your IoT I/O peripherals to your own
workstation to start prototyping!
Challenge #2 - How do I
select the hardware?
Functional
Prototype
Your OS
Your Workstation
Text-to-Speech Speech Recognition
Hardware
Recipe Search Recipe Reading
Software
Embedded Software
Made Easy 20
The IoT gives us a very unique
chance in the embedded world: it
has the same I/O interfaces and
peripheral as our mainstream
general-purpose personal
computers.
Which means that you can connect
your IoT I/O peripherals to your own
workstation to start prototyping!
Challenge #2 - How do I
select the hardware?
Functional
Prototype
Your OS
Your Workstation
Text-to-Speech Speech Recognition
Hardware
Recipe Search Recipe Reading
Software
Assuming your OS has
the driver (otherwise
implement it?)…
Embedded Software
Made Easy 21
Going back to our chief hat!
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 22
I/O Requirements
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy
Challenge #2 - How do I
select the hardware?
23
It is made of single-purpose hardware which are
selected according to their characteristics and
our requirements.
I/OsPower Button Speaker Microphone
Embedded Software
Made Easy
Challenge #2 - How do I
select the hardware?
23
It is made of single-purpose hardware which are
selected according to their characteristics and
our requirements.
I/OsPower Button Speaker Microphone
A push button A speaker for
human ears…
A mic for human
sounds…
Embedded Software
Made Easy
Challenge #2 - How do I
select the hardware?
24
I/OsPower Button Speaker Microphone
A push button A speaker for
human ears…
A mic for human
sounds…
Embedded Software
Made Easy
Challenge #2 - How do I
select the hardware?
24
It gives us our first CPU requirements:
I/OsPower Button Speaker Microphone
A push button A speaker for
human ears…
A mic for human
sounds…
Embedded Software
Made Easy
Challenge #2 - How do I
select the hardware?
24
It gives us our first CPU requirements:
• They must be somehow connected to the CPU
using their interfaces (SPI, USB, PCIe…).
I/OsPower Button Speaker Microphone
A push button A speaker for
human ears…
A mic for human
sounds…
Embedded Software
Made Easy
Challenge #2 - How do I
select the hardware?
24
It gives us our first CPU requirements:
• They must be somehow connected to the CPU
using their interfaces (SPI, USB, PCIe…).
• They have bandwidth requirements of several
kbits/s.
I/OsPower Button Speaker Microphone
A push button A speaker for
human ears…
A mic for human
sounds…
Embedded Software
Made Easy 25
Computing Requirements
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 26
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 26
Select a processor according to:
• The kind of software you need to execute.
• Your I/Os requirements.
• Your physical constraints (power
consumption, temperature, etc.).
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 27
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 27
There are two main kind of processors:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 27
There are two main kind of processors:
• Computing-oriented: fast CPU with lots of
fast memory for CPU-bound programs (e.g.,
image processing).
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 27
There are two main kind of processors:
• Computing-oriented: fast CPU with lots of
fast memory for CPU-bound programs (e.g.,
image processing).
• I/O-oriented: large I/O bandwidth, optimised
I/O bridge for I/O-bound programs (e.g., a
web server).
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 28
• CPU-bound programs scale according to the
computing power of the CPU.
• I/O-bound programs scale according to the
power of the CPU required to manage these
I/Os.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 29
So what kind of software do we run?
Challenge #2 - How do I
select the hardware?
Drivers
Text-to-Speech Speech Recognition
Recipe Search Recipe Reading
At run-time, most of the
execution time will be probably
spent in the speech algorithms.
Which makes this software CPU-
bound.
Embedded Software
Made Easy 30
So what kind of software do we run?
Challenge #2 - How do I
select the hardware?
Drivers
Text-to-Speech Speech Recognition
Recipe Search Recipe Reading
Or not? Speech recognition is complex
enough to require a huge amount of
computing power we can’t afford in
our embedded system. So let’s make
benefit from the « I » of IoT and let’s
implement this unit in the cloud.
Embedded Software
Made Easy 31
So what kind of software do we run?
Challenge #2 - How do I
select the hardware?
Drivers
Text-to-Speech Speech Recognition
Recipe Search Recipe Reading
So now, most of its execution time is
spent waiting for I/Os to complete:
sending requests to a speech server in
the cloud and driving the speakers &
microphone. Our software is I/O-
bound.
Embedded Software
Made Easy 32
And don’t forget about
the new hardware and
software now required:
Challenge #2 - How do I
select the hardware?
Software
Hardware
Computing
I/Os
Drivers
Power Button Speaker Microphone
CPU
Text-to-Speech Speech Recognition
HSI
Recipe Search Recipe Reading
Network Interface
Controller
Network Stack
Embedded Software
Made Easy 33
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 33
Our CPU should include:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 33
Our CPU should include:
• The interfaces required to connect with our I/
O peripherals, unless already present in the
selected CPU/SoC/MCU.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 33
Our CPU should include:
• The interfaces required to connect with our I/
O peripherals, unless already present in the
selected CPU/SoC/MCU.
• Enough computing and I/O power to run our
peripherals and our software fast enough for
audio processing.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 34
Running benchmarks are necessary when you
have to further refine your assumptions to get
closer to the perfect hardware set.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 35
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 35
Running benchmarks in a bare-metal execution
environment is a good practice to:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 35
Running benchmarks in a bare-metal execution
environment is a good practice to:
• Be alone in the CPU and get rid of hardware
side-effects coming from concurrent or parallel
software.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 35
Running benchmarks in a bare-metal execution
environment is a good practice to:
• Be alone in the CPU and get rid of hardware
side-effects coming from concurrent or parallel
software.
• Be at the lowest software abstraction level, above
the HSI, to fully understand what’s going on
during the benchmark.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 35
Running benchmarks in a bare-metal execution
environment is a good practice to:
• Be alone in the CPU and get rid of hardware
side-effects coming from concurrent or parallel
software.
• Be at the lowest software abstraction level, above
the HSI, to fully understand what’s going on
during the benchmark.
• Do whatever you want.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 36
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 36
To do so…:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 36
To do so…:
• Select a JTAG probe compatible with your
CPU
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 36
To do so…:
• Select a JTAG probe compatible with your
CPU
• affordable
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 36
To do so…:
• Select a JTAG probe compatible with your
CPU
• affordable
• implementable in less than a week
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 36
To do so…:
• Select a JTAG probe compatible with your
CPU
• affordable
• implementable in less than a week
• with documentation & support
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 37
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 37
Or you can use instead Alpha, a GDB server,
which brings:
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 37
Or you can use instead Alpha, a GDB server,
which brings:
• the ability to run standard C (malloc, fprintf,
etc.) programs bare metal with the support
of GDB.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 37
Or you can use instead Alpha, a GDB server,
which brings:
• the ability to run standard C (malloc, fprintf,
etc.) programs bare metal with the support
of GDB.
• a bare metal execution environment ready-
to-use.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy 37
Or you can use instead Alpha, a GDB server,
which brings:
• the ability to run standard C (malloc, fprintf,
etc.) programs bare metal with the support
of GDB.
• a bare metal execution environment ready-
to-use.
Without any single JTAG probe.
Challenge #2 - How do I
select the hardware?
Embedded Software
Made Easy
Challenge #3 - How do I choose
the right software architecture?
38
Low-Level Software
Firmware
Bare-metal
Level of
Software
Abstraction
API
System Call
Runtime SystemLibrary
Program
Operating System
OS Service
By understanding the main roles in this diagram:
Embedded Software
Made Easy
• Started by the hardware from a read-only
memory (flash, etc.).
• Given the constraints of its hardware
environment, it is usually reserved for very
special cases like booting hardware units
(CPU, GPU, etc.).
Challenge #3 - How do I choose
the right software architecture?
39
Firmware
Embedded Software
Made Easy
Challenge #3 - How do I choose
the right software architecture?
40
Bare-Metal
Embedded Software
Made Easy
• Started by a firmware.
• No abstraction but the one performed by the firmware(s).
• Lowest-level software, right next to the HSI.
• Doesn’t use any OS but usually libraries provided in the CPU/
SoC/MCU SDK, from simple helper functions to full network
stacks.
Challenge #3 - How do I choose
the right software architecture?
40
Bare-Metal
Embedded Software
Made Easy
• Started by a firmware.
• No abstraction but the one performed by the firmware(s).
• Lowest-level software, right next to the HSI.
• Doesn’t use any OS but usually libraries provided in the CPU/
SoC/MCU SDK, from simple helper functions to full network
stacks.
Used when:
✓ There is not enough memory for a complete OS.
✓ High-performance computing software.
Challenge #3 - How do I choose
the right software architecture?
40
Bare-Metal
Embedded Software
Made Easy
Challenge #3 - How do I choose
the right software architecture?
41
Operating System
Embedded Software
Made Easy
• Started by an OS-loader.
The two sides of an operating system:
1. Manages the hardware.
2. Provides a software abstraction of it with its
own standard or specific interface.
Challenge #3 - How do I choose
the right software architecture?
41
Operating System
Embedded Software
Made Easy
Challenge #3 - How do I choose
the right software architecture?
42
Operating System
Embedded Software
Made Easy
Like any other software, consider its features and
use the one that best matches your needs.
Challenge #3 - How do I choose
the right software architecture?
42
Operating System
Real-Time Support
Safety Security Standard API
Standard API
Driver APIs
Tooling
Embedded Software
Made Easy
• Started by the OS.
• Benefits from the abstraction of its language
library, runtime, shared libraries, etc.
Challenge #3 - How do I choose
the right software architecture?
43
Program
Embedded Software
Made Easy
Use any language you like, the one you feel
confident with to implement your features…
Challenge #3 - How do I choose
the right software architecture?
44
Program
Embedded Software
Made Easy
Use any language you like, the one you feel
confident with to implement your features…
Challenge #3 - How do I choose
the right software architecture?
44
Program
C++
GoPython
C
NodeJS
Java
Embedded Software
Made Easy
Use any language you like, the one you feel
confident with to implement your features…
Challenge #3 - How do I choose
the right software architecture?
44
Program
C++
GoPython
C
NodeJS
Java
Correctly managing
errors is a feature…
…that some languages
provide built-in!
Embedded Software
Made Easy
Chief Hat Program
Our connected chief hat requires
enough high-level features, such
as a network stack or a power
event handler, that are good
candidates to start at least
prototyping using Linux on a
simple ARM SoC include a network
controller (e.g., wifi). The main
advantage of using Linux being its
amazing development tooling…
Challenge #3 - How do I choose
the right software architecture?
45
Linux
Power Button Speaker Microphone
ARM
Text-to-Speech Speech Recognition
Recipe Search Recipe Reading
Network Interface
Controller
Network StackARM Kernel Drivers
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
Hardware
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »
Called the
« remote » link
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »Called the « host »
Called the
« remote » link
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »Called the « host »
Called the
« remote » link
Cross-Toolchain
Embedded Software
Made Easy 46
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »Called the « host »
Called the
« remote » link
Cross-Toolchain
Tools to be executed on your
workstation to manipulate
« target » software.
Embedded Software
Made Easy 47
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »Called the « host »
Called the
« remote » link
Cross-Compiler
Tools to be executed on your
workstation to manipulate
« target » software.
Embedded Software
Made Easy 47
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Any kind of link
Called the « target »Called the « host »
Called the
« remote » link
Tools to be executed on your
workstation to manipulate
« target » software.
Cross-Compiled
Program
Embedded Software
Made Easy 48
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Cross-Compiled
Program
Any kind of link
Embedded Software
Made Easy 48
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Cross-Compiled
Program
Any kind of link
Embedded Software
Made Easy 48
Challenge #4 - How do I do
embedded programming?
HardwareYour Workstation
Cross-Compiled
Program
Any kind of link
Not working? Do it
again...
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
49
It’s still such a « hard » world…
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
50
In such « hard » world…
Can we make it easier
for Bob, its
teammates, its boss?
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Firstly…
OS
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Cross-GDB
GDB is the recommended tool. It
allows to embed, debug and test the
program, in one single amazing tool.
Firstly…
OS
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Cross-GDB
GDB is the recommended tool. It
allows to embed, debug and test the
program, in one single amazing tool.
Debug
Informations of
the Cross-
Compiled Program
Firstly…
OS
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Cross-GDB
GDB is the recommended tool. It
allows to embed, debug and test the
program, in one single amazing tool.
Alpha
Debug
Informations of
the Cross-
Compiled Program
Firstly…
OS
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Cross-GDB
GDB is the recommended tool. It
allows to embed, debug and test the
program, in one single amazing tool.
Alpha
Debug
Informations of
the Cross-
Compiled Program
Firstly…
OS
GDB Debug Protocol
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Cross-GDB
GDB is the recommended tool. It
allows to embed, debug and test the
program, in one single amazing tool.
Alpha
Debug
Informations of
the Cross-
Compiled Program
Firstly…
OS
The program is
dynamically debugged,
so no more static logs/
prints everywhere in
the code
GDB Debug Protocol
Embedded Software
Made Easy
Challenge #5 - How do I make
embedded development simple?
51
HardwareYour Workstation
Cross-Compiled
Program
Cross-GDB
GDB is the recommended tool. It
allows to embed, debug and test the
program, in one single amazing tool.
Alpha
Debug
Informations of
the Cross-
Compiled Program
Firstly…
OS
The program is
dynamically debugged,
so no more static logs/
prints everywhere in
the code
But also the entire
system, including its
OS, drivers, and other
processes.
GDB Debug Protocol
Embedded Software
Made Easy 52
Embedded Software
Made Easy 52
Embedded Software
Made Easy
And finally, how would you find mistakes before they
become bugs? Agile development? Test-Driven
Development? Continuous Integration?
Dedicate your time and energy to your product
using our second tool, Lab, which automates the
setup of a target and its interfaces. Useful even on a
day-to-day basis for your tedious manual setups of
the targets and to be able later on to run automatic
tests from a continuous integration server.
Challenge #5 - How do I make
embedded development simple?
53
Embedded Software
Made Easy 54
Embedded Software
Made Easy 54
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
Hardware
Program in Read-
Only Memory
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
HardwareProduction Test Bench
Program in Read-
Only Memory
Any kind of link
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
HardwareProduction Test Bench
Program in Read-
Only Memory
Any kind of link
In the chief hat case,
the network controller
could be used.
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
HardwareProduction Test Bench
Program in Read-
Only Memory
Any kind of link
Alpha
In the chief hat case,
the network controller
could be used.
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
HardwareProduction Test Bench
Program in Read-
Only Memory
Any kind of link
Alpha
In the chief hat case,
the network controller
could be used.
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
HardwareProduction Test Bench
Program in Read-
Only Memory
Any kind of link
Cross-GDB
Alpha
In the chief hat case,
the network controller
could be used.
Embedded Software
Made Easy 55
Challenge #6 - How do I go
in production?
HardwareProduction Test Bench
Program in Read-
Only Memory
Any kind of link
Debug
Informations of
Program in Read-
Only Memory
Cross-GDB
Alpha
In the chief hat case,
the network controller
could be used.
Embedded Software
Made Easy 56
Hardware test benches are expensive and are a
whole project of their own.
We recommend also using Lab to make it as much
software as possible:
• Connect your hardware to your test instruments.
• Connect your instruments to Lab and you are
down with hardware, you can continue fully
software…
Challenge #6 - How do I go
in production?
Simplicity is prerequisite of
reliability
Edsger W. Dijkstra
Computer Science Pioneer
linkedin.com/in/guerrajulio
Embedded Software
Made Easy
Have Fun &
Good Luck!
github.com/farjump/raspberry-pi
hello@farjump.io

More Related Content

Viewers also liked

Introduction to Internet of Things Hardware
Introduction to Internet of Things HardwareIntroduction to Internet of Things Hardware
Introduction to Internet of Things HardwareDaniel Eichhorn
 
MicroEJ OS and Edje: the software foundation for IoT devices
MicroEJ OS and Edje: the software foundation for IoT devicesMicroEJ OS and Edje: the software foundation for IoT devices
MicroEJ OS and Edje: the software foundation for IoT devicesMicroEJ
 
Long-Distance Battery-Powered Sensors for the IOT- SigFox
Long-Distance Battery-Powered Sensors for the IOT- SigFoxLong-Distance Battery-Powered Sensors for the IOT- SigFox
Long-Distance Battery-Powered Sensors for the IOT- SigFoxUS-Ignite
 
Building IoT with Arduino Day One
Building IoT with Arduino Day One Building IoT with Arduino Day One
Building IoT with Arduino Day One Anthony Faustine
 
Hacking 2017 - Le manifeste des startups
Hacking 2017 - Le manifeste des startupsHacking 2017 - Le manifeste des startups
Hacking 2017 - Le manifeste des startupsFrenchWeb.fr
 

Viewers also liked (6)

Introduction to Internet of Things Hardware
Introduction to Internet of Things HardwareIntroduction to Internet of Things Hardware
Introduction to Internet of Things Hardware
 
MicroEJ OS and Edje: the software foundation for IoT devices
MicroEJ OS and Edje: the software foundation for IoT devicesMicroEJ OS and Edje: the software foundation for IoT devices
MicroEJ OS and Edje: the software foundation for IoT devices
 
Long-Distance Battery-Powered Sensors for the IOT- SigFox
Long-Distance Battery-Powered Sensors for the IOT- SigFoxLong-Distance Battery-Powered Sensors for the IOT- SigFox
Long-Distance Battery-Powered Sensors for the IOT- SigFox
 
Building IoT with Arduino Day One
Building IoT with Arduino Day One Building IoT with Arduino Day One
Building IoT with Arduino Day One
 
Hacking 2017 - Le manifeste des startups
Hacking 2017 - Le manifeste des startupsHacking 2017 - Le manifeste des startups
Hacking 2017 - Le manifeste des startups
 
IoT architecture
IoT architectureIoT architecture
IoT architecture
 

Similar to Embed your Ideas

Hardware, Software & Firmware
Hardware, Software & FirmwareHardware, Software & Firmware
Hardware, Software & FirmwareShamima Akther
 
Chapter03 Of It .... BBa 1st
Chapter03 Of It .... BBa 1st Chapter03 Of It .... BBa 1st
Chapter03 Of It .... BBa 1st Geo-Info Ltd
 
Embedded systems tools & peripherals
Embedded systems   tools & peripheralsEmbedded systems   tools & peripherals
Embedded systems tools & peripheralsimtiazalijoono
 
Components of computer and software: Introduction
Components of computer and software: IntroductionComponents of computer and software: Introduction
Components of computer and software: IntroductionShivaraj Bhardwaj
 
Introduction To Programming in Matlab
Introduction To Programming in MatlabIntroduction To Programming in Matlab
Introduction To Programming in MatlabDataminingTools Inc
 
Computer system
Computer systemComputer system
Computer systemRajThakuri
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eGina Bullock
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eGina Bullock
 
Slides chapter 1
Slides chapter 1Slides chapter 1
Slides chapter 113harpreet
 
Software & Hardware.pptx
Software & Hardware.pptxSoftware & Hardware.pptx
Software & Hardware.pptxAnshutChitransh
 
Firmware, Middle-ware and Software Development Life Cycle (SDLC)
Firmware, Middle-ware and Software Development Life Cycle (SDLC) Firmware, Middle-ware and Software Development Life Cycle (SDLC)
Firmware, Middle-ware and Software Development Life Cycle (SDLC) Md. Hasan Imam
 
Lesson 2.5 Mobile Apps and Mobile Devices.pptx
Lesson 2.5 Mobile Apps and Mobile Devices.pptxLesson 2.5 Mobile Apps and Mobile Devices.pptx
Lesson 2.5 Mobile Apps and Mobile Devices.pptxTarOgre
 
Pivotal agile development_the_software-defined_enterprise
Pivotal agile development_the_software-defined_enterprisePivotal agile development_the_software-defined_enterprise
Pivotal agile development_the_software-defined_enterpriseEMC
 
Comp App lect 3 (Software).ppt
Comp App lect 3 (Software).pptComp App lect 3 (Software).ppt
Comp App lect 3 (Software).pptMehwishKanwal14
 

Similar to Embed your Ideas (20)

Hardware, Software & Firmware
Hardware, Software & FirmwareHardware, Software & Firmware
Hardware, Software & Firmware
 
Software and its types
Software and its typesSoftware and its types
Software and its types
 
Chapter03 Of It .... BBa 1st
Chapter03 Of It .... BBa 1st Chapter03 Of It .... BBa 1st
Chapter03 Of It .... BBa 1st
 
Embedded systems tools & peripherals
Embedded systems   tools & peripheralsEmbedded systems   tools & peripherals
Embedded systems tools & peripherals
 
Components of computer and software: Introduction
Components of computer and software: IntroductionComponents of computer and software: Introduction
Components of computer and software: Introduction
 
Introduction To Programming in Matlab
Introduction To Programming in MatlabIntroduction To Programming in Matlab
Introduction To Programming in Matlab
 
Computer system
Computer systemComputer system
Computer system
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5e
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5e
 
Slides chapter 1
Slides chapter 1Slides chapter 1
Slides chapter 1
 
Software & Hardware.pptx
Software & Hardware.pptxSoftware & Hardware.pptx
Software & Hardware.pptx
 
Introduction to embedded systems
Introduction to embedded systemsIntroduction to embedded systems
Introduction to embedded systems
 
Firmware, Middle-ware and Software Development Life Cycle (SDLC)
Firmware, Middle-ware and Software Development Life Cycle (SDLC) Firmware, Middle-ware and Software Development Life Cycle (SDLC)
Firmware, Middle-ware and Software Development Life Cycle (SDLC)
 
Lesson 2.5 Mobile Apps and Mobile Devices.pptx
Lesson 2.5 Mobile Apps and Mobile Devices.pptxLesson 2.5 Mobile Apps and Mobile Devices.pptx
Lesson 2.5 Mobile Apps and Mobile Devices.pptx
 
Unit 1.pptx
Unit 1.pptxUnit 1.pptx
Unit 1.pptx
 
Pivotal agile development_the_software-defined_enterprise
Pivotal agile development_the_software-defined_enterprisePivotal agile development_the_software-defined_enterprise
Pivotal agile development_the_software-defined_enterprise
 
Embedded systems
Embedded systemsEmbedded systems
Embedded systems
 
Computer software
Computer softwareComputer software
Computer software
 
Computer system
Computer systemComputer system
Computer system
 
Comp App lect 3 (Software).ppt
Comp App lect 3 (Software).pptComp App lect 3 (Software).ppt
Comp App lect 3 (Software).ppt
 

Recently uploaded

Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxPrakarsh -
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Projectwajrcs
 
About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9Jürgen Gutsch
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Neo4j
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 

Recently uploaded (20)

Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Sustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire ThornewillSustainable Web Design - Claire Thornewill
Sustainable Web Design - Claire Thornewill
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Kubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptxKubernetes go-live checklist for your microservices.pptx
Kubernetes go-live checklist for your microservices.pptx
 
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example ProjectMastering Kubernetes - Basics and Advanced Concepts using Example Project
Mastering Kubernetes - Basics and Advanced Concepts using Example Project
 
About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9About .NET 8 and a first glimpse into .NET9
About .NET 8 and a first glimpse into .NET9
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!Webinar - IA generativa e grafi Neo4j: RAG time!
Webinar - IA generativa e grafi Neo4j: RAG time!
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 

Embed your Ideas

  • 1. © 1 Embedded Software Made Easy Embed your Ideas
  • 2. Embedded Software Made Easy A connected chief hat reading you a recipe you selected by voice control and waiting you at each step with a voice signal before continuing to the next one. Let’s take an example 2
  • 3. Embedded Software Made Easy The following content is • Under the software point-of-view. • Is simplified for a broader audience. • Opinionated by 25 years of farjump’s team experience. Warning 3
  • 4. Embedded Software Made Easy 4 Before we get started: Hardware vs Software Hardware
  • 5. Embedded Software Made Easy 4 Before we get started: Hardware vs Software Hardware General-PurposeSingle-Purpose
  • 6. Embedded Software Made Easy 4 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU General-Purpose DSP Single-Purpose I/O Peripheral
  • 7. Embedded Software Made Easy 4 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU General-Purpose DSP Single-Purpose I/O Peripheral May contain a General-Purpose CPU
  • 8. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware
  • 9. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware ComputingI/O
  • 10. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware ASIC GPU Computing DSP I/O I/O Peripheral
  • 11. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU Computing DSP I/O I/O Peripheral
  • 12. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU Computing DSP The Hardware/Software Interface (HSI) I/O I/O Peripheral
  • 13. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU Computing DSP The Hardware/Software Interface (HSI) I/O We (the software people) are here I/O Peripheral
  • 14. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU Computing DSP The Hardware/Software Interface (HSI) I/O We (the software people) are here I/O Peripheral Managed by internal (embedded) software
  • 15. Embedded Software Made Easy 5 Before we get started: Hardware vs Software Hardware CPUMCUASIC GPU Computing DSP The Hardware/Software Interface (HSI) I/O We (the software people) are here I/O Peripheral Managed by internal (embedded) softwareExternally controlled by Computing Hardware
  • 16. Embedded Software Made Easy System-on-Chip (SoC) Before we get started: Hardware vs Software T h e g e n e r a l - p u r p o s e computing hardware you deal with is in fact compound of many specialised sub-units. CPU I/OCore I/O 6 Tree map of usual sub-units in a SoC MCU CPU I/OCore I/O Tree map of usual sub-units in a MCU Memory
  • 17. Embedded Software Made Easy System-on-Chip (SoC) Before we get started: Hardware vs Software T h e g e n e r a l - p u r p o s e computing hardware you deal with is in fact compound of many specialised sub-units. CPU I/OCore I/O 6 Tree map of usual sub-units in a SoC Somehow, this is your software which specialises it. Once it is embedded in a closed system, its purpose is fixed. MCU CPU I/OCore I/O Tree map of usual sub-units in a MCU Memory
  • 18. Embedded Software Made Easy 7 Before we get started: Hardware vs Software Example of an ARM SoC
  • 19. Embedded Software Made Easy 8 Before we get started: Hardware vs Software Example of the Intel 8021 Microcontroller
  • 20. Embedded Software Made Easy 9 Before we get started: Hardware vs Software HSI Level of Software Abstraction Hardware
  • 21. Embedded Software Made Easy 9 Before we get started: Hardware vs Software Low-Level Software HSI Level of Software Abstraction Hardware
  • 22. Embedded Software Made Easy 9 Before we get started: Hardware vs Software Low-Level Software HSI Firmware Bare-metal Level of Software Abstraction System Call Operating System Hardware
  • 23. Embedded Software Made Easy 9 Before we get started: Hardware vs Software Low-Level Software HSI Firmware Bare-metal Level of Software Abstraction API System Call Runtime SystemLibrary Operating System Hardware OS Service
  • 24. Embedded Software Made Easy 9 Before we get started: Hardware vs Software Low-Level Software HSI Firmware Bare-metal Level of Software Abstraction API System Call Runtime SystemLibrary Program Operating System Hardware OS Service
  • 25. Embedded Software Made Easy 9 Before we get started: Hardware vs Software Low-Level Software HSI Firmware Bare-metal Level of Software Abstraction API System Call Runtime SystemLibrary Program Operating System Hardware Be very careful with that… OS Service
  • 26. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 10
  • 27. Embedded Software Made Easy We need to break down the idea. Challenge #1 - How do I know what should be software and hardware? 10
  • 28. Embedded Software Made Easy We need to break down the idea. Challenge #1 - How do I know what should be software and hardware? 10
  • 29. Embedded Software Made Easy We need to break down the idea. Challenge #1 - How do I know what should be software and hardware? 10 Recipe Search Recipe ReadingPower Button
  • 30. Embedded Software Made Easy We need to break down the idea. Challenge #1 - How do I know what should be software and hardware? 10 Recipe Search Recipe ReadingPower Button Note that these are the user interfaces… Is that enough…?
  • 31. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 11 Recipe Search
  • 32. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 11 Speech Recognition Recipe Search Text-to-Speech
  • 33. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 11 Speech Recognition Recipe Search Text-to-Speech Microphone
  • 34. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 11 Speech Recognition Speaker Recipe Search Text-to-Speech Microphone
  • 35. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 11 Speech Recognition Speaker Recipe Search Text-to-Speech Microphone Hardware Software
  • 36. Embedded Software Made Easy Hardware Software Challenge #1 - How do I know what should be software and hardware? 12 Recipe Reading Speech Recognition Speaker Step-by-Step Processing Text-to-Speech Microphone
  • 37. Embedded Software Made Easy Software Hardware Challenge #1 - How do I know what should be software and hardware? 13 Power Button Boot Usually handled by an OS driver Power On Power Off Power Unit Power Events Usually handled by a firmware and bootloader
  • 38. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 14 The basic general picture for now
  • 39. Embedded Software Made Easy Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI The basic general picture for now Recipe Search Recipe Reading
  • 40. Embedded Software Made Easy Hardware Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI The basic general picture for now Recipe Search Recipe Reading
  • 41. Embedded Software Made Easy Hardware I/Os Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI The basic general picture for now Recipe Search Recipe Reading
  • 42. Embedded Software Made Easy Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI The basic general picture for now Recipe Search Recipe Reading
  • 43. Embedded Software Made Easy Software Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI The basic general picture for now Recipe Search Recipe Reading
  • 44. Embedded Software Made Easy Software Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI Executed by a CPU The basic general picture for now Recipe Search Recipe Reading
  • 45. Embedded Software Made Easy Software Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 14 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI Managed by drivers Executed by a CPU The basic general picture for now Recipe Search Recipe Reading
  • 46. Embedded Software Made Easy Software Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 15 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI But we still don’t know what it exactly looks like… Recipe Search Recipe Reading
  • 47. Embedded Software Made Easy Software Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 15 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI Which exact I/Os? But we still don’t know what it exactly looks like… Recipe Search Recipe Reading
  • 48. Embedded Software Made Easy Software Hardware Computing I/Os Challenge #1 - How do I know what should be software and hardware? 15 Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI Which exact CPU? Which exact I/Os? But we still don’t know what it exactly looks like… Recipe Search Recipe Reading
  • 49. Embedded Software Made Easy 16 We need to scale the hardware to our precise needs. Challenge #2 - How do I select the hardware?
  • 50. Embedded Software Made Easy 16 We need to scale the hardware to our precise needs. Challenge #2 - How do I select the hardware? Having a « chicken and egg » problem?
  • 51. Embedded Software Made Easy 17 Challenge #2 - How do I select the hardware?
  • 52. Embedded Software Made Easy 17 Use an empirical approach by prototyping starting from the first observations & deductions. Then test & evaluate and repeat further specifying your hardware until you reach your local optimum. Challenge #2 - How do I select the hardware?
  • 53. Embedded Software Made Easy 17 Use an empirical approach by prototyping starting from the first observations & deductions. Then test & evaluate and repeat further specifying your hardware until you reach your local optimum. Challenge #2 - How do I select the hardware?
  • 54. Embedded Software Made Easy 17 Use an empirical approach by prototyping starting from the first observations & deductions. Then test & evaluate and repeat further specifying your hardware until you reach your local optimum. When you have no idea of a starting point, start with an XXL superset of hardware, rich enough to run your idea, and create a functional prototype. Challenge #2 - How do I select the hardware?
  • 55. Embedded Software Made Easy 18 Challenge #2 - How do I select the hardware?
  • 56. Embedded Software Made Easy 18 Note that: • This process can be endless. It only depends on what you are trying to accomplish. So be as lean as possible here ;-) Challenge #2 - How do I select the hardware?
  • 57. Embedded Software Made Easy 18 Note that: • This process can be endless. It only depends on what you are trying to accomplish. So be as lean as possible here ;-) • This is the moment where you may start doing hardware development in parallel of your software development: once the hardware chosen, the hardware team keeps further specifying it while you can start the software development. Challenge #2 - How do I select the hardware?
  • 58. Embedded Software Made Easy 19 Challenge #2 - How do I select the hardware?
  • 59. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: Challenge #2 - How do I select the hardware?
  • 60. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). Challenge #2 - How do I select the hardware?
  • 61. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). • Your I/O requirements, including the interfaces with the CPU. Challenge #2 - How do I select the hardware?
  • 62. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). • Your I/O requirements, including the interfaces with the CPU. • Your computing requirements. Challenge #2 - How do I select the hardware?
  • 63. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). • Your I/O requirements, including the interfaces with the CPU. • Your computing requirements. And only targeting the current stage of your product: Challenge #2 - How do I select the hardware?
  • 64. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). • Your I/O requirements, including the interfaces with the CPU. • Your computing requirements. And only targeting the current stage of your product: 1. Research Challenge #2 - How do I select the hardware?
  • 65. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). • Your I/O requirements, including the interfaces with the CPU. • Your computing requirements. And only targeting the current stage of your product: 1. Research 2. Development Challenge #2 - How do I select the hardware?
  • 66. Embedded Software Made Easy 19 In any case, the overall goal here is to make compromises between: • Your physical constraints (space, weight, power, etc.). • Your I/O requirements, including the interfaces with the CPU. • Your computing requirements. And only targeting the current stage of your product: 1. Research 2. Development 3. Production Challenge #2 - How do I select the hardware?
  • 67. Embedded Software Made Easy 20 Challenge #2 - How do I select the hardware?
  • 68. Embedded Software Made Easy 20 The IoT gives us a very unique chance in the embedded world: it has the same I/O interfaces and peripheral as our mainstream general-purpose personal computers. Challenge #2 - How do I select the hardware?
  • 69. Embedded Software Made Easy 20 The IoT gives us a very unique chance in the embedded world: it has the same I/O interfaces and peripheral as our mainstream general-purpose personal computers. Which means that you can connect your IoT I/O peripherals to your own workstation to start prototyping! Challenge #2 - How do I select the hardware? Functional Prototype Your OS Your Workstation Text-to-Speech Speech Recognition Hardware Recipe Search Recipe Reading Software
  • 70. Embedded Software Made Easy 20 The IoT gives us a very unique chance in the embedded world: it has the same I/O interfaces and peripheral as our mainstream general-purpose personal computers. Which means that you can connect your IoT I/O peripherals to your own workstation to start prototyping! Challenge #2 - How do I select the hardware? Functional Prototype Your OS Your Workstation Text-to-Speech Speech Recognition Hardware Recipe Search Recipe Reading Software Assuming your OS has the driver (otherwise implement it?)…
  • 71. Embedded Software Made Easy 21 Going back to our chief hat! Challenge #2 - How do I select the hardware?
  • 72. Embedded Software Made Easy 22 I/O Requirements Challenge #2 - How do I select the hardware?
  • 73. Embedded Software Made Easy Challenge #2 - How do I select the hardware? 23 It is made of single-purpose hardware which are selected according to their characteristics and our requirements. I/OsPower Button Speaker Microphone
  • 74. Embedded Software Made Easy Challenge #2 - How do I select the hardware? 23 It is made of single-purpose hardware which are selected according to their characteristics and our requirements. I/OsPower Button Speaker Microphone A push button A speaker for human ears… A mic for human sounds…
  • 75. Embedded Software Made Easy Challenge #2 - How do I select the hardware? 24 I/OsPower Button Speaker Microphone A push button A speaker for human ears… A mic for human sounds…
  • 76. Embedded Software Made Easy Challenge #2 - How do I select the hardware? 24 It gives us our first CPU requirements: I/OsPower Button Speaker Microphone A push button A speaker for human ears… A mic for human sounds…
  • 77. Embedded Software Made Easy Challenge #2 - How do I select the hardware? 24 It gives us our first CPU requirements: • They must be somehow connected to the CPU using their interfaces (SPI, USB, PCIe…). I/OsPower Button Speaker Microphone A push button A speaker for human ears… A mic for human sounds…
  • 78. Embedded Software Made Easy Challenge #2 - How do I select the hardware? 24 It gives us our first CPU requirements: • They must be somehow connected to the CPU using their interfaces (SPI, USB, PCIe…). • They have bandwidth requirements of several kbits/s. I/OsPower Button Speaker Microphone A push button A speaker for human ears… A mic for human sounds…
  • 79. Embedded Software Made Easy 25 Computing Requirements Challenge #2 - How do I select the hardware?
  • 80. Embedded Software Made Easy 26 Challenge #2 - How do I select the hardware?
  • 81. Embedded Software Made Easy 26 Select a processor according to: • The kind of software you need to execute. • Your I/Os requirements. • Your physical constraints (power consumption, temperature, etc.). Challenge #2 - How do I select the hardware?
  • 82. Embedded Software Made Easy 27 Challenge #2 - How do I select the hardware?
  • 83. Embedded Software Made Easy 27 There are two main kind of processors: Challenge #2 - How do I select the hardware?
  • 84. Embedded Software Made Easy 27 There are two main kind of processors: • Computing-oriented: fast CPU with lots of fast memory for CPU-bound programs (e.g., image processing). Challenge #2 - How do I select the hardware?
  • 85. Embedded Software Made Easy 27 There are two main kind of processors: • Computing-oriented: fast CPU with lots of fast memory for CPU-bound programs (e.g., image processing). • I/O-oriented: large I/O bandwidth, optimised I/O bridge for I/O-bound programs (e.g., a web server). Challenge #2 - How do I select the hardware?
  • 86. Embedded Software Made Easy 28 • CPU-bound programs scale according to the computing power of the CPU. • I/O-bound programs scale according to the power of the CPU required to manage these I/Os. Challenge #2 - How do I select the hardware?
  • 87. Embedded Software Made Easy 29 So what kind of software do we run? Challenge #2 - How do I select the hardware? Drivers Text-to-Speech Speech Recognition Recipe Search Recipe Reading At run-time, most of the execution time will be probably spent in the speech algorithms. Which makes this software CPU- bound.
  • 88. Embedded Software Made Easy 30 So what kind of software do we run? Challenge #2 - How do I select the hardware? Drivers Text-to-Speech Speech Recognition Recipe Search Recipe Reading Or not? Speech recognition is complex enough to require a huge amount of computing power we can’t afford in our embedded system. So let’s make benefit from the « I » of IoT and let’s implement this unit in the cloud.
  • 89. Embedded Software Made Easy 31 So what kind of software do we run? Challenge #2 - How do I select the hardware? Drivers Text-to-Speech Speech Recognition Recipe Search Recipe Reading So now, most of its execution time is spent waiting for I/Os to complete: sending requests to a speech server in the cloud and driving the speakers & microphone. Our software is I/O- bound.
  • 90. Embedded Software Made Easy 32 And don’t forget about the new hardware and software now required: Challenge #2 - How do I select the hardware? Software Hardware Computing I/Os Drivers Power Button Speaker Microphone CPU Text-to-Speech Speech Recognition HSI Recipe Search Recipe Reading Network Interface Controller Network Stack
  • 91. Embedded Software Made Easy 33 Challenge #2 - How do I select the hardware?
  • 92. Embedded Software Made Easy 33 Our CPU should include: Challenge #2 - How do I select the hardware?
  • 93. Embedded Software Made Easy 33 Our CPU should include: • The interfaces required to connect with our I/ O peripherals, unless already present in the selected CPU/SoC/MCU. Challenge #2 - How do I select the hardware?
  • 94. Embedded Software Made Easy 33 Our CPU should include: • The interfaces required to connect with our I/ O peripherals, unless already present in the selected CPU/SoC/MCU. • Enough computing and I/O power to run our peripherals and our software fast enough for audio processing. Challenge #2 - How do I select the hardware?
  • 95. Embedded Software Made Easy 34 Running benchmarks are necessary when you have to further refine your assumptions to get closer to the perfect hardware set. Challenge #2 - How do I select the hardware?
  • 96. Embedded Software Made Easy 35 Challenge #2 - How do I select the hardware?
  • 97. Embedded Software Made Easy 35 Running benchmarks in a bare-metal execution environment is a good practice to: Challenge #2 - How do I select the hardware?
  • 98. Embedded Software Made Easy 35 Running benchmarks in a bare-metal execution environment is a good practice to: • Be alone in the CPU and get rid of hardware side-effects coming from concurrent or parallel software. Challenge #2 - How do I select the hardware?
  • 99. Embedded Software Made Easy 35 Running benchmarks in a bare-metal execution environment is a good practice to: • Be alone in the CPU and get rid of hardware side-effects coming from concurrent or parallel software. • Be at the lowest software abstraction level, above the HSI, to fully understand what’s going on during the benchmark. Challenge #2 - How do I select the hardware?
  • 100. Embedded Software Made Easy 35 Running benchmarks in a bare-metal execution environment is a good practice to: • Be alone in the CPU and get rid of hardware side-effects coming from concurrent or parallel software. • Be at the lowest software abstraction level, above the HSI, to fully understand what’s going on during the benchmark. • Do whatever you want. Challenge #2 - How do I select the hardware?
  • 101. Embedded Software Made Easy 36 Challenge #2 - How do I select the hardware?
  • 102. Embedded Software Made Easy 36 To do so…: Challenge #2 - How do I select the hardware?
  • 103. Embedded Software Made Easy 36 To do so…: • Select a JTAG probe compatible with your CPU Challenge #2 - How do I select the hardware?
  • 104. Embedded Software Made Easy 36 To do so…: • Select a JTAG probe compatible with your CPU • affordable Challenge #2 - How do I select the hardware?
  • 105. Embedded Software Made Easy 36 To do so…: • Select a JTAG probe compatible with your CPU • affordable • implementable in less than a week Challenge #2 - How do I select the hardware?
  • 106. Embedded Software Made Easy 36 To do so…: • Select a JTAG probe compatible with your CPU • affordable • implementable in less than a week • with documentation & support Challenge #2 - How do I select the hardware?
  • 107. Embedded Software Made Easy 37 Challenge #2 - How do I select the hardware?
  • 108. Embedded Software Made Easy 37 Or you can use instead Alpha, a GDB server, which brings: Challenge #2 - How do I select the hardware?
  • 109. Embedded Software Made Easy 37 Or you can use instead Alpha, a GDB server, which brings: • the ability to run standard C (malloc, fprintf, etc.) programs bare metal with the support of GDB. Challenge #2 - How do I select the hardware?
  • 110. Embedded Software Made Easy 37 Or you can use instead Alpha, a GDB server, which brings: • the ability to run standard C (malloc, fprintf, etc.) programs bare metal with the support of GDB. • a bare metal execution environment ready- to-use. Challenge #2 - How do I select the hardware?
  • 111. Embedded Software Made Easy 37 Or you can use instead Alpha, a GDB server, which brings: • the ability to run standard C (malloc, fprintf, etc.) programs bare metal with the support of GDB. • a bare metal execution environment ready- to-use. Without any single JTAG probe. Challenge #2 - How do I select the hardware?
  • 112. Embedded Software Made Easy Challenge #3 - How do I choose the right software architecture? 38 Low-Level Software Firmware Bare-metal Level of Software Abstraction API System Call Runtime SystemLibrary Program Operating System OS Service By understanding the main roles in this diagram:
  • 113. Embedded Software Made Easy • Started by the hardware from a read-only memory (flash, etc.). • Given the constraints of its hardware environment, it is usually reserved for very special cases like booting hardware units (CPU, GPU, etc.). Challenge #3 - How do I choose the right software architecture? 39 Firmware
  • 114. Embedded Software Made Easy Challenge #3 - How do I choose the right software architecture? 40 Bare-Metal
  • 115. Embedded Software Made Easy • Started by a firmware. • No abstraction but the one performed by the firmware(s). • Lowest-level software, right next to the HSI. • Doesn’t use any OS but usually libraries provided in the CPU/ SoC/MCU SDK, from simple helper functions to full network stacks. Challenge #3 - How do I choose the right software architecture? 40 Bare-Metal
  • 116. Embedded Software Made Easy • Started by a firmware. • No abstraction but the one performed by the firmware(s). • Lowest-level software, right next to the HSI. • Doesn’t use any OS but usually libraries provided in the CPU/ SoC/MCU SDK, from simple helper functions to full network stacks. Used when: ✓ There is not enough memory for a complete OS. ✓ High-performance computing software. Challenge #3 - How do I choose the right software architecture? 40 Bare-Metal
  • 117. Embedded Software Made Easy Challenge #3 - How do I choose the right software architecture? 41 Operating System
  • 118. Embedded Software Made Easy • Started by an OS-loader. The two sides of an operating system: 1. Manages the hardware. 2. Provides a software abstraction of it with its own standard or specific interface. Challenge #3 - How do I choose the right software architecture? 41 Operating System
  • 119. Embedded Software Made Easy Challenge #3 - How do I choose the right software architecture? 42 Operating System
  • 120. Embedded Software Made Easy Like any other software, consider its features and use the one that best matches your needs. Challenge #3 - How do I choose the right software architecture? 42 Operating System Real-Time Support Safety Security Standard API Standard API Driver APIs Tooling
  • 121. Embedded Software Made Easy • Started by the OS. • Benefits from the abstraction of its language library, runtime, shared libraries, etc. Challenge #3 - How do I choose the right software architecture? 43 Program
  • 122. Embedded Software Made Easy Use any language you like, the one you feel confident with to implement your features… Challenge #3 - How do I choose the right software architecture? 44 Program
  • 123. Embedded Software Made Easy Use any language you like, the one you feel confident with to implement your features… Challenge #3 - How do I choose the right software architecture? 44 Program C++ GoPython C NodeJS Java
  • 124. Embedded Software Made Easy Use any language you like, the one you feel confident with to implement your features… Challenge #3 - How do I choose the right software architecture? 44 Program C++ GoPython C NodeJS Java Correctly managing errors is a feature… …that some languages provide built-in!
  • 125. Embedded Software Made Easy Chief Hat Program Our connected chief hat requires enough high-level features, such as a network stack or a power event handler, that are good candidates to start at least prototyping using Linux on a simple ARM SoC include a network controller (e.g., wifi). The main advantage of using Linux being its amazing development tooling… Challenge #3 - How do I choose the right software architecture? 45 Linux Power Button Speaker Microphone ARM Text-to-Speech Speech Recognition Recipe Search Recipe Reading Network Interface Controller Network StackARM Kernel Drivers
  • 126. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming?
  • 127. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? Hardware
  • 128. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation
  • 129. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link
  • 130. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target »
  • 131. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target » Called the « remote » link
  • 132. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target »Called the « host » Called the « remote » link
  • 133. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target »Called the « host » Called the « remote » link Cross-Toolchain
  • 134. Embedded Software Made Easy 46 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target »Called the « host » Called the « remote » link Cross-Toolchain Tools to be executed on your workstation to manipulate « target » software.
  • 135. Embedded Software Made Easy 47 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target »Called the « host » Called the « remote » link Cross-Compiler Tools to be executed on your workstation to manipulate « target » software.
  • 136. Embedded Software Made Easy 47 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Any kind of link Called the « target »Called the « host » Called the « remote » link Tools to be executed on your workstation to manipulate « target » software. Cross-Compiled Program
  • 137. Embedded Software Made Easy 48 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Cross-Compiled Program Any kind of link
  • 138. Embedded Software Made Easy 48 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Cross-Compiled Program Any kind of link
  • 139. Embedded Software Made Easy 48 Challenge #4 - How do I do embedded programming? HardwareYour Workstation Cross-Compiled Program Any kind of link Not working? Do it again...
  • 140. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 49 It’s still such a « hard » world…
  • 141. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 50 In such « hard » world… Can we make it easier for Bob, its teammates, its boss?
  • 142. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Firstly… OS
  • 143. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Cross-GDB GDB is the recommended tool. It allows to embed, debug and test the program, in one single amazing tool. Firstly… OS
  • 144. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Cross-GDB GDB is the recommended tool. It allows to embed, debug and test the program, in one single amazing tool. Debug Informations of the Cross- Compiled Program Firstly… OS
  • 145. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Cross-GDB GDB is the recommended tool. It allows to embed, debug and test the program, in one single amazing tool. Alpha Debug Informations of the Cross- Compiled Program Firstly… OS
  • 146. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Cross-GDB GDB is the recommended tool. It allows to embed, debug and test the program, in one single amazing tool. Alpha Debug Informations of the Cross- Compiled Program Firstly… OS GDB Debug Protocol
  • 147. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Cross-GDB GDB is the recommended tool. It allows to embed, debug and test the program, in one single amazing tool. Alpha Debug Informations of the Cross- Compiled Program Firstly… OS The program is dynamically debugged, so no more static logs/ prints everywhere in the code GDB Debug Protocol
  • 148. Embedded Software Made Easy Challenge #5 - How do I make embedded development simple? 51 HardwareYour Workstation Cross-Compiled Program Cross-GDB GDB is the recommended tool. It allows to embed, debug and test the program, in one single amazing tool. Alpha Debug Informations of the Cross- Compiled Program Firstly… OS The program is dynamically debugged, so no more static logs/ prints everywhere in the code But also the entire system, including its OS, drivers, and other processes. GDB Debug Protocol
  • 151. Embedded Software Made Easy And finally, how would you find mistakes before they become bugs? Agile development? Test-Driven Development? Continuous Integration? Dedicate your time and energy to your product using our second tool, Lab, which automates the setup of a target and its interfaces. Useful even on a day-to-day basis for your tedious manual setups of the targets and to be able later on to run automatic tests from a continuous integration server. Challenge #5 - How do I make embedded development simple? 53
  • 154. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? Hardware Program in Read- Only Memory
  • 155. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? HardwareProduction Test Bench Program in Read- Only Memory Any kind of link
  • 156. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? HardwareProduction Test Bench Program in Read- Only Memory Any kind of link In the chief hat case, the network controller could be used.
  • 157. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? HardwareProduction Test Bench Program in Read- Only Memory Any kind of link Alpha In the chief hat case, the network controller could be used.
  • 158. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? HardwareProduction Test Bench Program in Read- Only Memory Any kind of link Alpha In the chief hat case, the network controller could be used.
  • 159. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? HardwareProduction Test Bench Program in Read- Only Memory Any kind of link Cross-GDB Alpha In the chief hat case, the network controller could be used.
  • 160. Embedded Software Made Easy 55 Challenge #6 - How do I go in production? HardwareProduction Test Bench Program in Read- Only Memory Any kind of link Debug Informations of Program in Read- Only Memory Cross-GDB Alpha In the chief hat case, the network controller could be used.
  • 161. Embedded Software Made Easy 56 Hardware test benches are expensive and are a whole project of their own. We recommend also using Lab to make it as much software as possible: • Connect your hardware to your test instruments. • Connect your instruments to Lab and you are down with hardware, you can continue fully software… Challenge #6 - How do I go in production?
  • 162. Simplicity is prerequisite of reliability Edsger W. Dijkstra Computer Science Pioneer
  • 163. linkedin.com/in/guerrajulio Embedded Software Made Easy Have Fun & Good Luck! github.com/farjump/raspberry-pi hello@farjump.io