Tuesday, May 7, 2013


            The world is being captured by the small devices. These small devices are capturing our life at a very rapid rate. You will find your day-to-day devices getting smaller and smaller, yet are capable of outperforming their ancestors in terms of performance, efficiency.
Embedded realtime programming was once looked upon as a niche skill that many programmers can keep themselves away from, but not now anymore. The focus now is on very intelligent devices. Let us consider the good old washing machine. The main purpose of a washing machine is to wash clothes. But the modern world has extended it to include special features and give more control thereby optimizing actual process of washing clothes. Present day washing machines come complete with sensors, which maintain optimum water temperature, cloth dependant spin speed, number of spins, etc. They take care of filling water, heating it to a particular temperature, mixing the optimum amount of  detergent, soaking the clothes in water for just the right time, the soft tumble for extracting dirt, aggressive tumble for removing stains, and finally the spin-dry. More necessarily, this happens with the minimum amount of user intervention. The user just has to select type of clothes being put inside the machine. (and obviously how dirty they are! ) All this is not magic. This is because somebody hit upon a brilliant idea that we can use a small microprocessor to automate a lot of the dreary process of washing.

What Is An Embedded System?
A rough definition of an embedded system can be: “A microprocessor based system that does not look like a computer”. Technically speaking, “An embedded system is a special-purpose computer system, which is completely encapsulated by the device it controls”. It is a small computer system that is generally hidden inside the equipment (machine, electrical appliance, electronic gadget) to increase the intelligence of the equipment for better or more efficient functionality. Embedded system involves both the software and hardware co-development. Embedded systems are often easier to understand in terms of smart devices, Intelligent or automated devices.                
An embedded system has specific requirements and performs pre-defined tasks, unlike a general-purpose personal computer. It can satisfy the strict requirement of functionality, reliability, cost, volume, and power consumption of the particular application. Embedded systems are electronic devices, which are integrated into a technical environment. They are intended to execute internal functions as a response to certain input values and process technical information data. These functions are usually executed by a micro-controller (Eg.: 8051), which communicates with the environment by sensors and actuators. Optionally, there is one interface for the user and another one for the network. An user of an embedded system is not able to change the functionality of system through modifying or replacing the software. He is just able to make choice regarding functionality. Figure shows a typical embedded system.



Let us consider the previous example of washing machine. The sensors detect that the quantity of water inside the machine is at a certain level and indicate this to the processor. The processor computes the required quantity of water that is necessary for the number of clothes and based on user settings. It then generates a control signal to stop the flow of water inside the machine and switch on the heater. The temperature detector keeps on giving indications about the current temperature inside the washing compartment. At the optimum temperature for the kind of clothes to be washed, the processor generates a control signal to stop the heater. Then it gives a signal to start the soft tumble action to soak the clothes properly in water and mix the detergent. The processor will keep a watch on the amount of time the soft tumble action is going on. At the optimum time, it will stop the soft tumbler and start the aggressive tumble action to fight the stains. As illustrated, the seemingly simple task of washing clothes is a big exercise for the processor!!
With rapid development of IC design and manufacture, CPUs became cheap. Lots of consumer electronics have embedded CPU and thus became embedded systems. As embedded systems started progressing, they started becoming more and more complex and intelligent. But what exactly do we mean by intelligence? Intelligence is one of the terms that can’t be directly defined.


History of Embedded Systems

The first recognizably modern embedded system was the Apollo Guidance Computer, developed by Charles Stark Draper at the MIT Instrumentation Laboratory. Each flight to the moon had two. They ran the inertial guidance systems of both the command module and LEM. At the project's inception, the Apollo guidance computer was considered the riskiest item in the Apollo project. The use of the then new monolithic integrated circuits, to reduce the size and weight, increased this risk.
The first mass-produced embedded system was the guidance computer for the Minuteman missile in 1961. It was the Autonetics D-17 guidance computer, built using discrete transistor logic and a hard disk for main memory. When the Minuteman II went into production in 1966, the D-17 was replaced with a new computer that used integrated circuits, and was the first volume user of them. Without this program, integrated circuits might never have reached a usable price-point.
The crucial design features of the Minuteman computer were that its guidance algorithm could be reprogrammed later in the program, to make the missile more accurate, and the computer could also test the missile, saving cable and connector weight.

Examples of Embedded Systems
·         automatic teller machines (ATMs)
·         cellular telephones and telephone switches
·         computer network equipment, including routers, timeservers and firewalls
·         computer printers , copiers
·         disk drives (floppy disk drives and hard disk drives)
·         engine controllers and antilock brake controllers for automobiles
·         home automation products, like thermostats, air conditioners, sprinklers, and security monitoring systems
·         household appliances, including microwave ovens, washing machines, television sets, DVD players/recorders
·         inertial guidance systems, flight control hardware/software and other integrated systems in aircraft and missiles
·         medical equipment
·         measurement equipment such as digital storage oscilloscopes, logic analyzers, and spectrum analyzers
·         multifunction wristwatches , handheld calculators
·         Multifunctional printers (MFPs)
·         personal digital assistants (PDAs), that is, small handheld computers with PIMs and other applications
·         mobile phones with additional capabilities, for example, mobile digital assistants with cellphone and PDA and Java (MIDP)
·         programmable logic controllers (PLCs) for industrial automation and monitoring
·         stationary videogame consoles and handheld game consoles , wearable computer

Characteristics of Embedded Systems

Embedded systems are usually designed to perform selected functions at a low cost. The system may need to be very fast for some functions, but most of its other functions will probably not need speed. We can thus define a smart device by the following attributes.
·         Computational power : The small amount of computing power required by these devices is provided by simple 8-bit controller or by high end 64-bit microprocessor.

                              PROCESSING  POWER
·         Memory: These devices possess some amount of memory that can be used by the processor and also some to remember the user data and preferences.
·         Realtime:  These devices have to respond to the user’s input in a specified period of time.
·         Communication: The device must be able to receive inputs given by another devices in the environment, process it and provide some tangible output to other devices or users.
·         Dynamic decisions: The system should be able to change its next course of activity based on the change of input from sensors or surrroundings.

Challenges for Embedded Systems

Each of the attributes mentioned above is undergoing a major series of transformations. Processors are getting more and more powerful. Memory is getting cheaper and better.  Hence programming for  embedded systems offers unique challenges, not found in PC/ Workstation based applications. Some of these are listed below:

·         Limited OS support: Operating system in embedded systems is a part of the application code and closely co-ordinates with OS to support  a majority of the features that a desktop OS may provide.
·         Limited secondary memory: Many embedded systems do not boot from a hard disk. (A cell phone with hard-disk ? ☺)They depend on nonvolatile memories like FLASH/ROM instead of hard disks and floppy disks. Hence the code size must be small.
·         Limited RAM:  We do not have virtual memories or swapping concepts in embedded systems. And as these programs tend to run forever, care should be taken to avoid memory leaks.
·         Limited processing power: We cannot afford to have a Pentium4 2.4 Ghz  processor  to power a microwave oven because of obvious cost considerations. Instead, we have to work with microprocessors that clock 10-100 Mhz or even with micro-controllers with less powerful configurations.
·         Interaction with the hardware: This the caveat which singularly differentiates a normal application programming from embedded programming. RTOSes in embedded systems normally do not provide a high level of abstraction over hardware.
·         Absence of standard I/O devices: Many of the embedded systems do not have standard input or output devices like the mouse or keyboard which a normal PC has.  So there is no direct way of knowing what is happening within the system. This limits the debugging possible on the embedded system.

No comments:

Post a Comment