EMBEDDED SYSTEM DESIGN
Design Constraints
Designer of an Embedded System faces two conflicting requirements 1 ; High Performance and Low Cost 2 .
Performance of a system refers to its Direct features. There could be Direct or Indirect features in a product (both add to product cost). Let us consider example of a Digital Still Camera. Its direct features include Zoom (how many X), Picture Quality (How many mega pixels), Optics (which lenses in particular), Storage (How much memory), Speed (How many clicks per second), and Battery life. The indirect features include free accessories and spares, image compression and image processing softwares, warranty and after-sales support. In this section we will only discuss the direct features of a product because these features are directly under control of system designer. A careful selection and design of these features, can greatly improve the final system cost.
High Reliability and High Quality are two other factors which could be decisive during the Design Process. Some (Mission critical and Life critical) systems require very high reliability (e.g. Space Shuttles, Heart Pace-maker, ABS in a Car). Though cost could still be a constraint for such systems, but it is very much relaxed. Any failure of such product could be fatal and hence the design process requires special emphasis on reliability. In some products, quality is a major criteria (apart from low cost).
Safety Norms (e.g. low emi-emc radiations for medical equipments), and Low Power Design (for battery powered handheld devices) could also act as design constraints for such systems.
Design Flexibility
Flexibility is an important design goal in most embedded systems. Under fast growing technological environment, many features of a product get outdated very fast. New features keep emerging and they soon become desirable in a product. A flexible system can adapt to these changes with very less effort (with minimum re-design) and in least time. Product flexibility is a desired characteristics in order to stay competitive (it helps to mantain low cost and low delivery times for product upgrade, because minimum redesign is needed).
Component selection
The most challenging task for a system designer is that of component selection. Designers need a variety of components (Processors, Memories, Active and Passive electrical components, Software Development Tools, and a few ready to use Software Modules) to build their systems. Overwhelming choices available in the market, make it very puzzling for the designer to choose a particular component. Designers can measure the suitability of a given component on following criteria:
* Feature Identification: Identify the “must features” and “optional features” of your system (to be designed). Any component which you choose should be able to meet the “must features” of your system. Any component which can meet the “optional features” with no additional cost (or minimum cost) should be given priority.
* Component Life Time: How long does the vendor of a chosen plan to continue the sale of this component? If vendor stops the production of this component, when you are still manufacturing your product, then you will have to probably replace this component. Finding a similar component in future may not be easy. The replacement could even involve a re-design which will add to a major cost. Make sure that the assured life time of the component matches with your product plans.
* Component Road-map: Does the vendor of a chosen component has some road-map (planned feature addition in the product over next few years) for this component? This is particularly important while choosing a processor or development tools or software modules. You will need additionally features for the next generation of your product. If the individual components in your product do not have any upgrade options, then probably you will have to scrap this product and go for a new design.
* Support: How good technical support does the vendor of a chosen component provide? A quality (and timely) support from the component vendor may be desired during the system development phase. Lack of support can greatly impact the development schedules.
Layered Architecture
Embedded Systems contain software modules which are closely knit with the hardware. It is desired that the software modules are partitioned in to multiple layers. Each layer should be only dependent on the layers immediately above and below the given layer. It should be agnostic to the changes made to any other layer in the system.
For example consider a software module which receives video data in X format, converts it to Y format, and displays it on a LCD panel. In absence of a layered architecture, any single change made to the specification (data format X or Y, or LCD panel) will require a change to the complete software module. Changing a big software module is prone to errors and is difficult to debug. However the given software module can be partitioned in to following modules/layers:
* Video Format converter (converts data from format X to format Y)
* Low level LCD driver
* Main Application
* APIs (Application Programmer Interfaces) for the LCD driver and Video Format Converter
this kind of software partitioning creates independent layers. In case the underlying LCD device (and hence specification) changes, change will be needed only to the Low Level Driver (and to no other layer). If the Video Formats (X or Y) changes, you will need to change only the Video Format Converter.
Layered Architectures adds flexibility to the system and also improves code re-usability.
Operating Systems
Most embedded Systems either run without a distinct operating system or employ a very thin operating system. It is mainly because of two reason:
* Most embedded systems run small and simple application which are very easy to manage by user (hence no OS is needed).
* In most designs, the hardware underneath the embedded systems is utilized to optimum level and there is very less (or no) additional bandwidth (of Hardware resources) available. Though, an OS can help in managing the system in easier way, but OS requires a good processor bandwidth for its own functioning (which is rarely available). Hence most embedded systems to run a stripped-down version of OS.
There is a great option of OS ports on embedded processors for designers who want to use OS in their systems. These ports are available with different flavors of features and cost. Some popular OS are:
Linux, uCLinux, Vxworks, pSos, WinCE, Symbian
Notes
- Low Time to Market is another constraints for Most Systems. However this factor is mostly affected by the development methodologies. We will discuss this in detail in one of the next sections (related to system development). In this section we will focus more on other constraints.
- Though Low Cost is a design constraint in most Embedded System, but it is not a contraint for all the embedded systems. Some systems are contrained by the technological breakthroughs rather than cost. Such projects have a privillege to burn out any amount of money, with only goal being a technological breakthrough. Space Shuttles and Satellites are example of such system.
User Comments
No Posts found !Login to Post a Comment.