What is embedded system?
When you think of a computer, you normally think about a PC. But around us,
there are so many invisible computers, embedded inside some other systems.
For example, your mobile has got one computer inside. Your DVD player
or Dish-TV box has got one computer inside. Almost all computer peripheral
devices like printers, scanners and modems have got computers inside them.
Similarly most of the consumer electronic devices like digital cameras,
MP3 players have got computers in side them.
All these computers are called embedded computers because they got
embedded inside some other systems.
One important point to note here is that, computer does not always
mean a system that includes monitor, keyboard, mouse and CPU box.
Computer is the one that contains CPU(micrprocessor),Memory and
Input/Output. All these three things could present inside a very
small single chip. Best example is your USB pen drive (or flash
disk). However small it may be, it got embedded computer inside,
and when you power on it runs the software present in the memory,
just like a PC.
Embedded programmers are responsible for developing such software
that runs on embedded computers.
How embedded computers are different from Standard computers such as PCs?
Embedded computers always runs a single program present in its memory.
Where as PCs hold tens or hundreds of programs(applications) on its hard disk.
Whenever you start a program, it will get loaded into memory and get
executed. So PCs are designed to run multiple applications as and when you need.
You may use PC to develop C or Java programs, to write a document, to browse
internet, to play a game, to play music or to play a movie and so on.
You also can get a new application from your friend or download from Internet
and able to run it on PC.
Where as a digital camera runs always a single application, which will allow
you to take photographs, view photographs and transfer them to PC. You never
be able to load a new program into digital camera and use it for some
other purpose. Basically embedded devices will not have such option of
loading new programs.
Another difference with embedded systems is the kind of hardware used.
The hardware used in embedded system is fine tuned to run just that single
application. Because we know that the embedded computer is going to run
a single application, we just use enough hardware to run that application.
For example if small microcontroller (small chip with CPU,memory and IO
built into it) is enough, we just use that. In some embedded computers
32 bit CPUs are used with 16 to 64 Mega bytes of memory. Large embedded
computers may have multiple 32 bit CPUs connected over some bus.
How to develop software for embedded system (i.e. embedded computer)
Embedded computer typically will be a small board having CPU, Memory and
IO interfaces. That embedded computer can not be used to develop software.
It can be used only to run and test the software, which is developed on
a separate system.
So to develop software for embedded board, we need a separate computer
such a PC running Linux or PC running windows. This computer on which we
develop software for embedded system is called a 'Host' computer. The
embedded computer itself is called a 'Target' computer.
So embedded development environment is always refered as 'Host - Target'
environment. Host is used to develop the software, and target is for
executing and testing the software.
Another important feature of embedded development environment is the
usage of cross compilers or cross development tools. As in most of the cases
the CPU present in the embedded computer will be different from the CPU
of host computer. Typically the host computer contains Pentium CPU, where
as embedded computer may be having ARM/MIPS/DSP/Microcontroller as CPU.
So we need compilers which will run on Pentium computers but produce the
executable code for the CPU present on the embedded computer.
Such compilers are called cross compilers. For each type of CPU, a separate
cross compiler is required. Once you have these cross development tools,
you can write a program on the host computer, compile it using the cross
compiler, link it with libraries and build the executable. Now you got
the executable file, but remember that, this executable will not run on
you PC. It runs only on the target board. So how to run this program on the
target board. This is our next topic.
How to run the software developed on host, on an embedded computer?
This is important and interesting aspect of embedded development.
There exist various ways of loading the software to target board, running,
testing and debugging it. Two most common methods are:
- Using JTAG Emulator
- Using Bootloader or Debug Monitor software
Most of the embedded computer boards have got JTAG interface (connector).
You may have to buy a JTAG emulator kit to use the JTAG interface. This
kit allows you to connect the embedded board to your host's (i.e. PC)
serial/parallel/LAN port. This kit also comes with JTAG software that
runs on host. Using this JTAG software you can download the executable
file, you have built above, on to the target board, run and debug it
on the target board.
Another method is to use Bootloader. All most all the 32 bit CPU based
embedded computers will have bootloader software present in the ROM or
flash memory of those boards. When you power-on the embedded board, this
bootloader program will run. This bootloader program allows you to
download the executable file on to target
board and run it. This is a low cost and simple alternative to using
JTAG kits. If you have used any time 8085 or 8086 microprocessor kits,
these kits also have got bootloader in the ROM. You may be calling that
as monitor or Debug monitor program instead of bootloader.
DEPIK's Bootloader
DEPIK is selling a bootloader software, which runs on a PC motherboard
and makes PC motherboard as powerful embedded board. Now you can develop
embedded programs for your motherboard and can download those embedded
programs to motherboard using this bootloader.
This software is very very useful for Engineering colleges to practice
embedded programming without buying any new embedded boards. For
more information click 'Products' menu.
Embedded Systems with and without Operating System
We can classify the embedded systems based on whether an operating
system is used inside or not. Most of the embedded systems that are using
32 bit CPUs, will use operating systems like RTOS or Embedded Linux.
Simple embedded systems based on microcontrollers will not use any OS.
All the complex and large embedded systems use OS. The OS provides
multi-tasking, Inter task communication and synchronization, Memory
management, I/O system, File system and Networking services. By using
these service of OS, one can develop complex embedded systems.
DEPIK's RTOS - dpKernel
DEPIK has developed an RTOS named 'dpKernel'. The dpKernel runs on PC
motherboards as well as ARM boards. DEPIK has sold this RTOS to
various engineering colleges. DEPIK's bootloader and this RTOS is the
perfect combination to develop complex and large applications on the
PC motherboards. This is a low cost solution to develop high-end
embedded software.
|