This document provides an overview of embedded software and its key characteristics. It discusses that embedded software interacts with the physical world in devices like watches, phones and satellites. It must be reliable, cost-effective, use low power and memory efficiently. The document outlines features of embedded software like timeliness, concurrency, and reactivity. It also discusses real-time constraints, software quality metrics, and the development process including compiling, linking and memory allocation. C is described as well-suited for embedded systems due to its ability to directly access hardware. Memory management techniques like static allocation, automatic allocation and dynamic allocation from the heap are summarized.