A critical distinguishing characteristic of architectures for families of embedded systems is their relative need for error-detection and -management. This need can range from extreme, as occurs with nearly all life-rated systems, to nominal, such as might occur with simple, inexpensive toys. Increasing a system’s capability for error detection and management invariably results in increased complexity and an increased load on system resources. Consequently, even systems with extremely high error management capability sometimes demonstrate anomalous behavior. When this occurs, it is typically necessary to rapidly and effectively identify the source of the anomaly. Therefore, a key consideration when developing an architecture for a family of embedded systems is determining the scope and nature of the diagnostic requirements that will be placed on the architecture.
This paper discusses the value of diagnostic architectures, the construction of diagnostic architectures, and techniques for determining where diagnostic elements should be placed within an architecture. The paper also examines several specific diagnostic techniques and discusses tradeoffs between detail, data persistence, system performance, and system resources.