Fundamentals of embedded programming