Figure 29.3 The line between software and firmware is a bit fuzzier than the line between code and hardware One of your jobs as an embedded software developer is to firm up that line. The name of the boundary between the software and the firmware is the hardware abstraction layer (HAL)