This dissertation presents several design techniques for resource-constrained, dependable embedded real-time systems, which can be found everywhere from cellular phones to automotive electronic systems to medical devices. Specifically, three important challenges in embedded real-time system design are identified and addressed: temporal overloads, energy concerns, and temperature problem. Due to cost constraints, as well as our inability to foresee worst-case operating scenarios, many systems are designed based on average-case scenarios and must provide graceful performance degradation during occasional system overloads. In this dissertation, we focus on two types of overloads: processor overloads and network overloads. Processor overload occurs because of user's inputs or external conditions. We present robust algorithms that allow the system to quickly handle different operating scenarios without requiring advanced knowledge of the situations based on optimization theory. As a result, fewer resources are needed to deliver expected performance. As for network overloads, which can often occur especially now that most electronic devices have wireless capability, we discuss an energy-aware integrated framework that allows for the processor and network card to work together to transmit the most important information first. This framework is robust against rapid changes in network conditions, guarantees the transmission of the most important set of information, and allows the system to save energy. Finally, as device sizes continue to shrink, physical constraints such as system temperature have become a main concern. High temperature can severely reduce both performance and system lifetime. We first present an optimal voltage selection policy to maximize computation without exceeding the temperature threshold. We then present a method to minimize the peak temperature of a hard real-time system running on multi-core architectures that help to avoid deadline misses at run time.