An End-To-End Methodology for Building Embedded Systems

Embedded systems have been and will be deployed on a wide scale.Their applications range from bread toasters with 4-bit microcontrollers to large distributed systems on a large factory floor or a battleship.These systems also operate under a wide spectrum of constraints: size constraints, power consumption needs, processing power and communication bandwidth.Multiple domains of expertise in control systems, signal processing, communications, human-computing interfaces, fault-tolerance, testing and systems integration also come into play necessitating several system models, perspectives and sets of terms. As a result, solutions and techniques for building embedded systems have tended to be very specialized, piece-meal and fragmented in nature. Thanks to Moore's Law and advances in software engineering, products and standards, future embedded systems can now be based on common frameworks and approaches.The IMAGES (Integrated Modeling for Analysis and Generation of Embedded Software) project at Carnegie Mellon University is developing an integrated framework and toolset that can capture, model and analyze all steps of an end-to-end methodology to design embedded systems ranging from cost-constrained automotive control systems to large-scale avionics applications.The integrated toolset will interface with both commercial tools such as Rational Rose, TimeWiz from TimeSys Corporation, Matlab from MathWorks as well as research prototypes developed at Carnegie Mellon University.The framework enables multiple capabilities that have been done in compartmentalized ways, if at all, in a single coherent inter-operable manner.These capabilities include analyses (timing analysis, fault management analysis, Quality of Service analysis), modeling (hybrid systems modeling, resource consumption, event dependencies, software architecture capture), software reusability (using customizable component libraries), run-time services (RTOS and middleware abstractions, code-generation, target-specific optimizations), and verification (model checking, test-vector generation).The integration of the various system models is enabled by the use of a consistent and well-understood run-time scheduling framework based on event-driven priority-based preemptive scheduling and resource reservations. System modeling, analysis and run-time data can be stored in a common data repository, which allows the interoperability of multiple tools operating on different models of the system.Mo del checking can be used to obtain the worst-case execution times of code segments, as well as to verify logical properties of the embedded application.Both design-time and run-time attributes of software components can be manipulated rendering embedded software components both customizable and reusable. Real-time UML and UML models can also be used to perform traditional modeling of the software components.Hybrid systems techniques are used to verify both the continuous and discrete dynamics of the physical plant being controlled.Application-sp ecific code generation can be automatically interfaced to work with communications glue code in a location-independent fashion by the use of run-time abstractions.The target environment can be rich, with real-time operating systems ranging from real-time versions of Linux to OSEK, and middleware ranging from none to Real-Time Java to Real-Time CORBA.