Embedded talk

Title page

Hello, everyone! I’m Sacha Chua, and I’m here to talk about embedded
system design from the developer’s point of view.
What _is_ embedded computing, anyway? It helps to define it in
contrast to personal computers, which we’re all familiar with.

PC/embedded system comparison

General use

Personal computers are intended for general use. They can run a wide
range of applications – games, business apps, that sort of thing.

Specific function

Embedded systems, on the other hand, are typically designed for a
single purpose. Think of a calculator, for example, or the logic in
vending machines. (Of course, some embedded systems are becoming more
general now, like personal digital assistants a).

OS, apps

Personal computers

System

Keyboard/mouse/monitor

On PCs, you can usually assume that someone

Different input/output

Easy to dev or change programs

Infrequently updated

Challenges

User needs / expectations

Although crashes and data loss seem to be part of our everyday
computing experience, people expect embedded systems to be reliable.
Imagine an embedded system that crashes! What if your phone crashed
and had to be rebooted all the time? People expect features,
reliability, and all for a low price.

Tight space and memory constraints

Development tools

Development process

One of the things about embedded development is that the process is a
little bit longer. It’s not the usual edit, compile, run cycle. It’s
edit, compile, burn to flash, run.

Architectural quirks

And of course if you go into embedded development, you’ll probably
have to deal with different architectures. For example, you’ll learn
about the quirks of conditional ARM.

Why go into embedded dev’t?

It’s fun!

It’s challenging!

It’s useful!

How to get started

Courses on computer interfacing / hardware / digital logic

Experiments

Internship / work / open source

What you need: software, hardware, patience