This tutorial focuses on the development of systems software for embedded applications. We begin with a discussion of the software structure for embedded systems-from processor specific instructions, operating system, middleware and application layers-and then delve into issues of real-time embedded applications. As a way to motivate some of the issues underlying software design, we will illustrate how embedded applications are characterized by a number of cross cutting issues: control, sequencing, and signal processing and resource management. This will set the stage for identifying the required special real-time services/capabilities (in contrast with non real-time). The rest of the tutorial will focus on two specific topics: language issues and resource management issues.