|Embedded computer system|
|Friday, 15 December 2006|
An embedded system architecture consists of hardware architecture and software architecture. The hardware architecture of an embedded system defines the interconnections of various hardware components. The software architecture defines the allocation of sequences of codes to specific general-purpose processors. The embedded system devices typically comprise a processor, such as a microprocessor, microcontroller, or digital signal processor (DSP), and storage elements, such as read only memory (ROM). The storage elements typically include software which the processor executes to perform functions of an application, such as those previously listed. The microcontroller typically includes a central processing unit (CPU) core for the processing functions, and a bus interface for communication with the various memory devices as well as external or other peripheral devices. For the storage of data and instructions, the microprocessor can include various types of memory. For example, the CPU for the microcontroller may include random access memory (RAM) as well as read-only memory (ROM). The microcontroller can also include flash memory which can be erased and reprogrammed in blocks instead of being programmed one byte at a time. The system further includes application logic to interface with the television, automobile engine, telephone, or other application to gather data from and/or control the application. Some embedded systems include an operating system, but many are so specialized that the entire logic can be implemented as a single program. For the transmitting and receiving of data between various devices and components, microprocessors and other devices may utilize various types of serial interfaces. One such type of interface typically used is the serial peripheral interface (SPI). The microprocessors also generally utilize one or more buffers for the temporary storage of data to permit the microprocessors to manipulate the data before transferring the data through the SPI to another device. Embedded systems perform application-specific functions using central processing units. They employ both general-purpose CPUs and application-specific integrated circuits (ASICs). ASICs can be based on standard cells, gate arrays, field-programmable gate arrays (FPGAs), or complex programmable logic devices (CPLDs). Embedded systems employing reconfigurable hardware such as FPGAs and CPLDs are referred as reconfigurable embedded systems. Reconfigurable systems can provide higher performance as well as flexibility to adapt with changing system needs at low cost. Dynamically reconfigurable embedded systems exploit reconfigurability of programmable devices at run-time to achieve further cost savings.
Embedded systems generally are developed around custom hardware, require high quality and reliability, and frequently deal with real-time issues. The applications running on these systems can be very large and complex. The embedded system architecture has generally been defined based on the experience of system architects, and, at times, it is either over-designed or fails to meet the requirements. The architecture definition of embedded systems has generally largely been dependent on the ingenuity of system architects. Many embedded systems employ heterogeneous distributed architectures on which a large number of tasks are run concurrently. Heterogeneous distributed architectures are commonly used to meet the performance needs for such systems. Such architectures consist of several general-purpose processors and application-specific integrated circuits (ASIC) of different types interconnected by various communication links. Each task to be performed on the system can be executed on a variety of software and hardware modules which have different dollar costs, reliability, area, delay, and power requirements. For example, a task can be performed on a general-purpose processor (software) or an ASIC (hardware). Similarly, a message can be communicated via a serial link, local area network (LAN), or a bus. Parameters such as area, delay, reliability, and power are usually estimated by simulation/synthesis or laboratory measurement from previous designs. An ASIC is a chip that is custom designed for a specific application rather than a general-purpose chip such as a microprocessor. The use of ASICs improves performance over general-purpose CPUs, because ASICs are "hardwired" to perform a specific task(s) and do not incur the overhead of fetching and interpreting stored instructions. An ASIC chip performs an electronic operation as fast as possible, providing, of course, that the circuit design is efficiently designed. To provide flexibility, the embedded core is typically designed with some amount of programmability. In a common implementation, the embedded core is a processor designed to execute a set of instructions (firmware or codes) stored in the memory. Embedded computer systems typically operate in real-time or multi-tasking environments for specific applications. Real-time or multi-tasking operating systems are available with the capability of performing in a general purpose computing environment. Non-real-time operating systems differ from real time operating systems e.g. in the fact that the response times for running different operations are longer than in real time operating systems and the response times can neither be predicted in non-real time operating systems. In multitasking non-real-time operating systems each executing process retards the running of other processes of the same or lower priority level, wherein also response times can lengthen. Many embedded systems are characterized by both aperiodic and periodic tasks. Examples of such systems are: flight control systems, telecom systems, command and control systems, process control systems, automobile control systems, space shuttle avionics systems, and defense control systems. Periodic tasks arrive at regular intervals. Aperiodic tasks have random arrival times. Periodic task graphs generally have hard real-time constraints, whereas aperiodic task graphs can have either hard or soft real-time constraints.
An embedded computer system (ECS) is usually programmed to perform a specific set of tasks within the system and operates in an environment generally transparent to the user. In other words, an embedded system normally executes software in which the user interface is implemented as a system interface. An embedded device typically includes an application software. The application software runs under the control of a real-time operating system (RTOS) and is typically partitioned into one or more threads. A thread is an independent unit of executable software that shares the control of the microprocessor with other defined threads within the embedded system. Embedded systems software comes in many shapes and forms which include a prototypical example being the embedded system software in a network router and/or switch and typically manages and controls the device in which the systems software has been embedded. One factor that impacts the performance of an embedded system is whether a given function of the system is implemented as hardware or software. Implementing a particular function in software provides flexibility because software is easily modifiable, whereas it is usually cost prohibitive to change hardware components. Implementing a function in hardware is generally faster than software. Hardware implementation may also reduce the demand on the processors executing the software and speed up software execution. Configurable parameters in an embedded system may be accessed and configured through setting their values from a management station. An embedded system may comprise a plurality of loosely-coupled modules each of which may be configurable and may perform a specific function. Each individual module in such an embedded system may be configured through a number of configuration parameters. Different modules may also be configured to work together through configuration parameters. Configurable parameters may have their counterparts corresponding to run-time variables used in individual modules. The values of run-time variables associated with the parameters are set according to the values of the corresponding configurable parameters. The run-time behavior of an individual module can be controlled by setting the values of their associated configurable parameters. The collection of such parameters across an embedded system forms a current configuration database that determines the overall behavior of the entire system. In many cases, improvements in the features of the device are desired. Such improvements may be implemented by upgrading the firmware and/or the contents of the database in the device, from time to time, with a new version. This upgrade requires downloading of the new version, and overwriting (programming) the memory cells which contain the preceding firmware and database version. Most of the embedded systems employ an initialization process, known as a "boot" operation, in which a basic software or specific instructions are loaded from a boot sector of a memory, until the system is brought into its normal operation mode
Embedded systems having a general purpose computing environment are finding increasing use and expanding features. A function typically performed by such embedded systems is to provide information to a user regarding how to use, configure and potentially trouble-shoot a device. Computing systems with constrained resources are becoming very common in environments in which communications with one or more other devices are required. Frequently, these systems are referred to as embedded systems. Embedded systems are typically limited in functionality, and have fewer resources than a typical personal computer, i.e., limited processing capability, memory size and speed of internal bus structures, for example. Embedded systems are widely used in industry and in office and consumer products. Actually, embedded systems include almost any device, which employs a microprocessor and/or a microcontroller and is not directed only to general-purpose computation. The demand for higher performance, microcontroller-based products for use in communication and processing applications continues to increase rapidly. Communications access devices are typically embedded systems. Whereas communication access devices have been designed to perform a limited role in terms of call processing and routing, with the ultimate destination for the calls being one or more host computers on the local area network, communications servers provide the network access functions of an integrated communications router in addition to a general purpose computing platform. An embedded system in a network switch may be responsible for communicating with a user regarding how the internal resources of the switch can be set-up for various network topologies. The embedded system may also be responsible for communicating with a user regarding how to diagnose problems encountered while using the product. Microcontroller-based product manufacturers are requiring the components and devices within these products to be continually improved to meet the design requirements of a myriad of emerging audio, video and imaging applications. In a communication network environment, the embedded systems typically have a single processor and a memory for the processing of network data as well as the specific functions that they perform. A print server in a local area network (LAN) is an example of an embedded system in a network.