End-to-End Firmware and Driver Development: UART,GPIO,TIMER, etc. From Datasheet to Embedded C and C++