Embedded Systems Design: An Introduction to Processes, Tools, and Techniques

Designing the hardware for an embedded system is more than just selecting the right processor and gluing it to a few peripherals. Deciding how to partition the design into the functionality that is represented by the hardware and the software is a key part of creating an embedded system. This decision is not just an academic exercise nor is it self-evident. You don t just pick a processor, design the hardware, and then throw it over the wall to the software team. (Actually, many R&D labs still select a processor, design the hardware, and throw it over the wall, but the purpose of this chapter is to show you a better way.) The partitioning choice has significant impact on project cost, development time, and risk.
This chapter will explore the following:
The hardware/software duality that makes the partitioning decision possible
How the separation of hardware and software design imposes development costs
How silicon compilation is making the partitioning decision more flexible but more risk-laden
How future trends might radically alter your view of the partitioning decision
Partitioning is possible and necessary because of the duality between hardware and software. For example, prior to the introduction of the 80486 by Intel, the hottest processor around was the 80386.
The 386 is an integer-only processor. To speed up your spreadsheet calculations, you purchased an 80387 numeric FPU processor. Systems without the FPU would detect that floating-point calculations were required and then simulate the presence of the FPU by branching to...