Embedded System Design: A Unified Hardware/Software Introduction