Having an IoT idea but no clue on how to make it real? Discover the software side of it and the challenges you'll need to face to make it happen. Step by step, we will go through a concrete IoT example to answer questions like: What features should be software? How can you prototype? How do you choose the hardware? What Operating Systems can you use (or not)? What is embedded software?
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
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
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
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
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…?
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
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
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
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?
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?
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?
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?
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?)…
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…
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?
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
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?
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?
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?
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
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
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
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
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...
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?