Embedded Systems Design — Part 1
Thought of writing about The design of an Embedded Systems long back. However, it got delayed due to several reasons; perhaps due to my own reluctant towards writing a Technical stuff and the fact that is it really required? as there are a lot of articles and books are already available on the internet.
By the way, let me introduce myself first before describing about Embedded Systems. I am Ajith K.( My Full Name is: Ajith Karatt Thodi normally shortened as Ajith Karatt , or just Ajith for making it shorter or sounds better ;)). I have got 20+years of experience in Software (Information Technologies) field who worked with many companies like Delphi Automotive Systems, Siemens VDO Automotive, Intel, Tektronix, Philips, TCS, C-DAC, Wipro to name a few. My main areas of expertise is into Embedded System Design and Development. I have written most of my programs in C (75%) and C++(15%) and the remaining in C#(10%). In this article I shall cover some of my experience while designing various embedded systems that varies from Consumer Electronics to Automotive Embedded Systems.
The embedding of microprocessors into equipment and consumer appliances started before the appearance of the PC and consumes the majority of microprocessors that are made today. In this way, embedded microprocessors are more deeply ingrained into everyday life than any other electronic circuit that is made. A large car may have over 50+ microprocessors controlling functions such as the engine through engine management systems, brakes with electronic anti-lock brakes, transmission with traction control and electronically controlled gearboxes, safety with airbag systems, electric windows, air-conditioning, telematics and so on.
Many Washing machines, ATMs, Smart TVs, Toys contain microprocessors and there are even kitchen appliances such as bread machines that use microprocessor-based control systems. The word control is very apt for embedded systems because in virtually every embedded system application, the goal is to control an aspect of a physical system such as temperature, motion, and so on using a variety of inputs. With the recent advent of the digital age replacing many of the analogue technologies in the consumer world, the dominance of the embedded system is ever greater. Each digital consumer device such as Smart Phone, a Digital Camera, DVD or MP3 player all depend on an embedded system to realize the system. As a result, the skills behind embedded systems design are as diverse as the systems that have been built although they share a common heritage.
Inside the embedded system
Processor : The main criteria for the processor is: can it provide the processing power needed to perform the tasks within the system? This seems obvious but it frequently occurs that the tasks are either underestimated in terms of their size and/or complexity or that creeping elegance expands the specification to beyond the processor’s capability. While processor performance is essential and forms the first gating criterion, there are others such as cost — this should be system cost and not just the cost of the processor in isolation, power consumption, software tools and component availability and so on.
Memory : Memory is an important part of any embedded system design and is heavily influenced by the software design, and in turn may dictate how the software is designed, written and developed. As a way of introduction, memory essentially performs two functions within an embedded system:
It provides storage for the software that it will run. At a minimum, this will take the form of some non-volatile memory that retains its contents when power is removed. This can be on-chip read only memory (ROM) or external EPROM. The software that it contains might be the complete program or an initialization routine that obtains the full software from another source within or outside of the system. This initialization routine is often referred to as a bootstrap program or routine. PC boards that have embedded processors will often start up using software stored in an onboard EPROM and then wait for the full software to be downloaded from the PC across the PC expansion bus.
It provides storage for data such as program variables and intermediate results, status information and any other data that might be created throughout the operation. Software needs some memory to store variables and to manage software structures such as stacks. The amount of memory that is needed for variables is frequently less than that needed for the actual program. With RAM being more expensive than ROM and non-volatile, many embedded systems and in particular, microcontrollers, have small amounts of RAM compared to the ROM that is available for the program. As a result, the software that is written for such systems often has to be written to minimize RAM usage so that it will fit within the memory resources placed upon the design. This will often mean the use of compilers that produce ROMable code that does not rely on being resident in RAM to execute.
Peripherals : An embedded system has to communicate with the outside world and this is done by peripherals. Input peripherals are usually associated with sensors that measure the external environment and thus effectively control the output operations that the embedded system performs. In this way, an embedded system can be modelled on a three-stage pipeline where data and information input into the first stage of the pipeline, the second stage processes it before the third stage outputs data. The main types of peripherals that are used include:
Binary outputs : These are simple external pins whose logic state can be controlled by the processor to either be a logic zero (off) or a logic one (on). They can be used individually or grouped together to create parallel ports where a group of bits can be input or output simultaneously.
Serial outputs : These are interfaces that send or receive data using one or two pins in a serial mode. They are less complex to connect but are more complicated to program. A parallel port looks very similar to a memory location and is easier to visualize and thus use. A serial port has to have data loaded into a register and then a start command issued. The data may also be augmented with additional information as required by the protocol.
Analogue values : While processors operate in the digital domain, the natural world does not and tends to orientate to analogue values. As a result, interfaces between the system and the external environment need to be converted from analogue to digital and vice versa.
Displays : Displays are becoming important and can vary from simple LEDs and seven segment displays to small alpha-numeric LCD panels.
Time derived outputs : Timers and counters are probably the most commonly used functions within an embedded system.
Software :The software components within an embedded system often encompasses the technology that adds value to the system and defines what it does and how well it does it. The software can consist of several different components: Initialisation and configuration, Operating system or run-time environment, The applications software itself , Error handling, Debug and maintenance support.
Algorithms : Algorithms are the key constituents of the software that makes an embedded system behave in the way that it does. They can range from mathematical processing through to models of the external environment which are used to interpret information from external sensors and thus generate control signals.
This is just few basics and I shall cover more details in the coming sections. I thank all the authors of the Embedded Systems books for reference without which I might not be able to publish this.
So Stay tuned…