Home



    Training
        Getting Started
        System Prog
       
Training Consultancy People
Self learning Contact Us

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.

401, Sai Sushma Homes, 23/A, S.R. Nagar Main Road, Hyderabad-500038, India.
Ph: +91-40-23812090