Chapter 2. Examples and Building Blocks
To guide the rest of the discussion, I’ll start by presenting a basic framework for the IoT: a population of (physically) small computing devices, tied to the physical world with sensors and actuators, possibly communicating with one another and with backend systems.
To make the book self-contained for the reader without a detailed computer science background, this section discusses the basics of computer systems (central processing unit, memory, software structure) and how “embedded systems” differ from regular ones.
Generally speaking, computing devices consist of a central processing unit (CPU), memory, and some kind of input/output (I/O). The memory typically includes some kind of nonvolatile storage (so there’s a program to run when the machine first powers up) and some kind of slower but more efficient backing store for longer-term storage. In a simpler universe, the CPU would fetch an instruction from memory, figure out what the instruction means, carry it out, and then go on to the next one. “Carrying out” the instruction would involve reading or writing to memory or an I/O device or an internal CPU register, and/or doing some mathematical operation. However, the universe is not that simple anymore. The field traded simplicity for speed (as I have to cover in the “dirty tricks” section of my architecture course): pieces of many instructions may be carried out at the same time and may be executed ...