EMBEDDED SYSTEMS
INTRODUCTION
TO EMBEDDED SYSTEMS
1.1 DEFINITION
Embedded system
is in almost every electronic device that are designed today. There is software
hidden away inside our watches, microwaves, VCRs, cellular Telephones, and
pagers; the military uses embedded software to guide smart Missiles and detect
enemy aircraft; communications satellites, space probes, and Modern medicine
would be nearly impossible without it. Of course, someone has to write all that
software, and there are thousands of computer scientists, embedded Engineers
and other professionals who actually do. Microprocessors and Microcontrollers
are widely used in such embedded system products. Embedded systems are
extremely important branch of modern digital Technology. Each embedded system
is unique and highly customized to the application at hand. In General,
Embedded system can be defined as a system that has software embedded into
hardware. As a result, embedded systems programming is a widely varying field
that can take years to master. The main basics that includes in embedded
programming are either Assembly programming or it may be high-level Languages
such as C, C++ or JAVA. Basically embedded systems are the part of a large
system but it need not be a computer.
An embedded system is a
special-purpose computer controlled electro-mechanical system in which the
computer is completely encapsulated by the device it controls. An embedded
system has specific requirements and performs pre-defined tasks, unlike a
general-purpose personal computer. An embedded system is a computer controlled system.
The core of any embedded system is a microprocessor/microcontroller, programmed
to perform a few tasks (often just one
Task) . This is
to be compared to other computer systems with general purpose hardware and
externally loaded software. Embedded systems are often designed for mass
production.
1.2 Features of
Embedded Systems
There are
certain key features of embedded systems that differentiate them from other
systems in the world. They have been discussed below:
1.
Software: The software used by embedded systems
is called firmware and is stored in Read Only Memory or ROM or a Flash memory
chip. Such software is efficient enough to work with the limited amount of
hardware resources available. Typically, such software does not use a keyboard
or if it does, it is small. There is very little RAM provided to such software.
2.
User interfaces: There are various types of user
interfaces used in embedded systems. Some systems do not have any user
interface at all. Devices such as PDAs provide interactive and complete user
interfaces. Other devices, such as budget mobile phones have small screens that
display only two colors and provide very limited (but enough) functionality.
Some other systems have character-only screens such as that in digital railway
timetables at stations.
3.
CPU Platform: Embedded
systems use various CPU platforms or architectures that include ARM, X86, PowerPC,
and PIC etc. embedded systems tend to use specifically purchased CPUs that are
added to the embedded system which itself is put on a chip, that is, an
integrated circuit (IC) specially designed for it.
4.
Tools: Embedded system designers use
software ranging from compilers and assemblers to debuggers and emulators to
develop software for embedded systems. These are usually scaled-down versions
of their full software versions.
5.
Start-up: Embedded systems the world over begin
with what is called the start-up process. At this point, a self-test is
conducted by the system where the hardware, peripherals, power supply etc. are
tested for being in good condition. These tests are usually very short
(usually, no more than 10 seconds) and determine the health of the system
overall.
1.3 Characteristics
of Embedded system
Application
specific- System designed for a given application is known a prior before the
system
Design begins
and system flexibility is important for upgrades, design reuse which are
usually achieved through reprogramming. Digital signal processing in ES Signals
are represented as digitally as sequence samples. DSP processing occurs in
system like averaging, filtering, device controls, encoding, decoding etc. Reactivity
in Embedded System- Having increasingly higher performance with constraints
which are important part of system functionality in building embedded computing
system. Real-time application of embedded system- A real time system consists
of tasks under deadline constraints. It consist of two types- Hard real-time
and Soft real-time. Hard Real time systems- In these systems the task must
complete by specified Deadlines e.g. - flight control. Soft Real time systems-
in these system task executions may go beyond specific deadlines e.g. –
connection establishment, updates etc. Power, cost & reliability are often
important attributes that influence design of embedded systems.
1.4 Developing
Embedded System
Developing
software and hardware for microcontroller based embedded systems involves the
use of a range of tools that can include editors, assemblers, compilers,
debuggers, simulators, emulators and Flash/OTP programmers. To the newcomer to
microcontroller development it is often not clear how all of these different
components play together in the development cycle and what differences there
are for example between Trainer kits, emulators and simulator. Figure shows a
typical microcontroller software development cycle with some of the software
and hardware components involved. The basic operations that are involved in
above microcontroller development cycle are:
1. Writing
Microcontroller Code.
2. Translating
the Code.
3. Debugging the
code.
1. Writing
microcontroller code: Software Code for a microcontroller is written in a
programming language of choice (often Assembler or C). This source code is
written with a standard ASCII text editor and saved as an ASCII text file.
Programming in assembler involves learning a microcontroller's specific
instruction set (assembler mnemonics), but results in the most compact and
fastest code. A higher level language like C is for the most part independent
of a microcontroller's specific architecture, but still requires some
controller specific extensions of the standard language to be able to control all
of a chip's peripherals and functionality. The penalty for more portable code and
faster program development is a larger code size (20%...40% compared to assembler).
2. Translating
the code: Next the source code needs to be translated into instructions the
microcontroller can actually execute. A microcontroller’s instruction set is
represented by "op codes". Op codes are a unique sequence of bits
("0" and "1") that are decoded by the controller's
instruction decode logic and then executed. Instead of writing opcodes in bits,
they are commonly represented as hexadecimal numbers, whereby one hex number
represents 4 bits within a byte, so it takes two hex numbers to represent 8
bits or 1 byte. For that reason a microcontroller's firmware in machine
readable form is also called Hex-Code and the file that stores that code Hex-File.
Assemblers, Compilers, Linkers and Librarians Assemblers or (C-) Compilers
translate the human readable source code into "hex code" that
represents the machine instructions (op codes). To support modular code and
reusable libraries of code, most assemblers and compilers today come with Linkers
and Librarians. Linkers, link code modules saved in different files together
into a single final program. At the same time they take care of a chip's memory
allocation by assigning each instruction to a microcontroller memory addresses
in such a way that different modules do not overlap. Librarians help you to
manage, organize and revision control a library of reusable code modules. Once
the ASCII source code text file has been assembled (with an Assembler) or compiled
(with a Compiler) and the files have been linked (with the Linker), the output
results in a number of files that can be used for debugging the software and
programming the actual microcontroller's memory.
3. Debugging
the Code: A debugger is a piece of software running on the PC, which has to
be tightly integrated with the emulator that you use to validate your code. For
that reason all emulator manufacturers ship their own debugger software with
their tools, but also compiler manufacturers frequently include debuggers,
which work with certain emulators, into their development suites. A Debugger
allows you to download your code to the emulator's memory and then control all
of the functions of the emulator from a PC. Common debugging features
Include the
capability to examine and modify the microcontroller's on-chip registers, data-
and program-memory; pausing or stopping program executing at defined program
locations by setting breakpoints; single-stepping (execute one instruction at a
time) through the code; and looking at a history of executed code (trace). So
far we've talked about several different pieces of software: Text Editor, Assembler
or Compiler, Linkers, Librarians and Debugger. You can easily imagine that it
can become quite a time-consuming challenge to alternate back and forth between
all of these programs during the debugging process (discover a bug, edit the
source code, compile it again, link it again, download the modified code to the
emulator, etc.). This is where an integrated development environment (IDE) comes
in. An Integrated Development Environment puts all of the previously discussed software
components under one common unified user interface, so that it becomes possible
to make a code change and get the modified code loaded into the emulator with a
few mouse clicks, instead of dozens. A good IDE allows you for example to click
on a syntax error message produced by the compiler and have the source code with
the highlighted offending instruction pop up for editing in the text editor. One
click of a button and the modified code gets retranslated, linked and downloaded
to the emulator. An IDE allows you to store the configuration settings for a
project - like compiler switches, or what flavor of chip to emulate - so you can
easily recreate a project later on. Some IDEs are flexible enough to allow you to
incorporate different choices of third party tools (like compilers and debuggers),
others only work with a manufacturer's own tool chain.
Debugging Tools: When it comes
to debugging your code and testing your application there are several different
tools you can utilize that differ greatly in terms of development time spend
and debugging features available. In this section we take a look at simulators.
Simulators try to model the behavior of the complete microcontroller in
software. Some simulators go even a step further and include the whole system
(simulation of peripherals outside of the microcontroller). No matter how fast
you’re PC, there is no simulator on the market that can actually simulate a
microcontroller's behavior in real-time. Simulating external events can become
a time-consuming exercise, as you have to manually create "stimulus"
files that tell the simulator what external waveforms to expect on which
microcontroller pin. A simulator can also not talk to your target system, so
functions that rely on external components are difficult to verify. For that
reason simulators are best suited to test algorithms that run completely within
the microcontroller (like a math routine for example). They are the perfect
tool to complement expensive emulators for large development teams, where
buying an emulator for each developer is financially not feasible. For our case
we have used a simulator called “TOPVIEW”. Figure shows you the procedure that
is involved in loading a program into the Targeted hardware system that is
designed on basis of embedded technology.
1.5 ADVANTAGES &
DISADVANTAGES
Advantages:
1. One of the
advantages of an embedded system is to decrease power consumption and space.
2. All embedded systems
that are based on microcontroller have low power consumption in addition to
some form of I/O, COM port and ROM all on a single chip.
Disadvantages:
1. Higher
Hardware/Software development overhead.
2. Design,
compilers, debuggers may result in delayed time to market.
1.6 APPLICATIONS
1.
Consumer
electronics- e.g., cameras, camcorders etc.
2.
Consumer
products, e.g., washers, microwave ovens.
3.
Automobiles
(anti-lock braking, engine control).
4.
Industrial
process controllers & avionics/defense applications
5.
Computer/Communication
products, e.g., printers, FAX machines.
6.
Emerging
multimedia applications & consumer electronics e.g., cellular phones,
personal digital assistants, videoconferencing servers, interactive game boxes,
TV set-top boxes.
Comments