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