Embedded Systems: ARM Programming and Optimization