In the last chapter, we looked at the processor piece of the “smart platform” that provides the hardware brains for intelligent products. In this chapter, we’ll look at the software piece of the platform: the operating system.
Before we dive in, let’s get a short but inevitable dialog of the way:
Many people developing intelligent devices: “I know! Let’s run Linux!”
Me: “Not so fast!”
Selecting (or deciding to not select) an operating system (OS) is a fundamental decision that we make early in the development cycle, which will have a profound effect on development effort and often on product cost. Sometimes the selection is straightforward. If we’re building a smart phone or similar device, it would be folly to not use an existing operating system. Otherwise, we’d need to do an enormous amount of software development from scratch. Android is a very easy operating system to select for such an application.
On the other hand, suppose we’re building a fancy home thermostat. Which OS to use, or whether to use one at all, is a question with a less obvious answer.
An OS gives us pre-built functionality in exchange for the potential for increased complexity, greater resource usage, greater expense, and loss of control. At what point does this become a good deal? Each product is different, and each requires a trade-off analysis.
Some of the functionality that tends to favor using an OS includes:
Sophisticated user interfaces such as ...