Embedded Systems Hardware for Software Engineers