Category Archives: Embeeded system

About Embedded System

Embedded system are increasingly becoming a key technological component of all kinds of complex technical system. They serve as an heart of most high-tech products and applications and represent one of the fastest growing global markets. New products and services based on embedded systems technology are emerging day by day, making state-of-the-art design and engineering competences for new products and applications a key competitive discriminator.

What is Embedded System?

The first question that needs to be asked is “What is exactly an embedded computer?” Well,there is no exact definition for embedded system but an embedded system is a system which has a software embedded into an hardware, designed for specific application (or) to perform a specific function.

Why Embedded system?

We need embedded system because they are usually more reliable than non-embedded system. We don’t use general purpose computer in all cases.So we have to design a special computer which is called embedded system.Embedded system reduce the cost and size. Also, it is increasing the reliability and performance.

Why to study embedded system?

Embedded system are playing important roles in our lives every day, even though they might not necessarily be visible to us. Take for example,we use every day control on television through remote, the timer in a microwave oven, a cellphone, an MP3 player or any other device with some amount of intelligence built-in. In fact, recent poll data shows that the embedded computer systems currently outnumber humans in USA. Embedded system is a rapidly growing industry in which  growth opportunities are numerous.

How to become an embedded engineer?

It is not a big deal to become an embedded engineer, if you have a passion on  this,you will become an  embedded engineer.

The prerequisites for any embedded engineer are to understand what is meant by computer architecture and operating systems.

1. C Programming :

The fundamental language of the hardware that is still portable (too some degree). Don’t just learn it, but become an expert of all its features like volatile and why it is important for writing device drivers.

The c programming language by kernighan and ritchie is the best book to learn c language.

2. Real-Time Operating System :

An operating system is a piece of software that manages Hardware and Software in the system. The real-time adds the sense of correct timing as well as correct functionality. The goal is to learn how to do multitasking programming over RTOS. Multitasking programming is a very common programming method used heavily in embedded systems.

3. Hardware architecture (ARM/CORTEX/ANDROID)

ARM is the dominant processor in the embedded industry. Its market share is around 75%. I highly recommend the ARM CortexM3 core. Many of the SoC manufacturers have adopted it. A good reference for the Cortex M3 core is “The Definitive Guide to the ARM Cortex M3”. After wards, going to the SoC is recommended. Famous SoC’s are NXP LPC, ST STm32, and TI Luminary Sterallis. For those who can’t purchase a development board, they can use QEMU to experience how to develop on Cortex M3 core and how to write different drivers for different peripherals. Again a quick introduction can be found in about the ARM Cortex M3 and the ST STm32 Soc.

Some tips to practice:

In the learning stage, feel free to re-invent the wheel on device drivers or other pieces of code. Don’t just plop someone else’s driver code down in there. There’s value in re-inventing the wheel when you’re learning.

Challenge yourself to re-write your code more efficiently in terms of speed and memory usage.

Becoming familiar with different styles of embedded systems software architectures. Start with basic interrupt driven/background loop processing, then move up to background schedulers, then real-time operating systems.

Get a good source control! I prefer Mercurial myself.

Learn new techniques and experiment with them in your designs. Assume nothing when debugging. Verify it!

Learn how to program defensively to catch errors and verify assumptions (like using assert).

Build a debugging information into your code where you can such as outputting memory consumption or profiling code with timers or using spare pins on the uC to toggle and measure interrupt latency on a O-scope.

Here are some books:

The Pragmatic Programmer by Andrew Hunt and David Thomas – more or less required reading for any practical software development .

Practical Arduino .

Programming Embedded Systems by Michael Barr .

Embedded Systems Building Blocks by Jean Labrosse .

MicroC OS II Real Time Kernel by Jean Labrosse, great intro into RTOS’s in general in there along with his OS.

Embedded Software Primer by David Simon – good intro to embedded software

Here are some websites:

Embedded Gurus .

Ganssle Group Jack Ganssle has some wonderful historical stories to tell. Read the articles. He gets a little preachy about some things though. Good info for latest techniques and tips from Ganssle, Barr, and other industry experts.

Follow Innovation Begins Here on Twitter, innovationBeginsHere, Facebook , Google+ & Linkdin.

                      Copyright © 2015[InnovationBeginsHere].All Rights Reserved.


Software Module


Application Layer:

The application layer is a layer in the Open Systems Interconnection (OSI) seven-layer model and in the TCP/IP protocol suite. It consists of protocols that focus on process-to-process communication across an IP network and provides a firm communication interface and end-user services.

The application layer is the seventh layer of the OSI model and the only one that directly interacts with the end user.

The application layer provides many services, including:

  • Simple Mail Transfer Protocol
  • File transfer
  • Web surfing
  • Web chat
  • Email clients
  • Network data sharing
  • Virtual terminals
  • Various file and data operations

The application layer provides full end-user access to a variety of shared network services for efficient OSI model data flow. This layer has many responsibilities, including error handling and recovery, data flow over a network and full network flow. It is also used to develop network-based applications.

More than 15 protocols are used in the application layer, including File Transfer Protocol, Telnet, Trivial File Transfer Protocol and Simple Network Management Protocol.

System software layer:

Middleware layer:

Middleware has two separate but related meanings. One is software that enables two separate programs to interact with each other. Another is a software layer inside a single application that allows different aspects of the program to work together.

The most common type of middleware is software that enables two separate programs to communicate and share data. An example is software on a Web server that enables the HTTP server to interact with scripting engines like PHP or ASP when processing webpage data. Middleware also enables the Web server to access data from a database when loading content for a webpage. In each of these instances, the middleware runs quietly in the background, but serves as an important “glue” between the server applications.

Middleware also helps different applications communicate over a computer network. It enables different protocols to work together by translating the information that is passed from one system to another. This type of middleware may be installed as a “Services-Oriented Architecture” (SOA) component on each system on the network. When data is sent between these systems, it is first processed by the middleware component, then output in a standard format that each system can understand.


Firmware is a software program or set of instructions programmed on a hardware device. It provides the necessary instructions for how the device communicates with the other computer hardware. But how can software be programmed onto hardware? Good question. Firmware is typically stored in the flash ROM of a hardware device. While ROM is “read-only memory,” flash ROM can be erased and rewritten because it is actually a type of flash memory.

Firmware can be thought of as “semi-permanent” since it remains the same unless it is updated by a firmware updater. You may need to update the firmware of certain devices, such as hard drives and video cards in order for them to work with a new operating system. CD and DVD drive manufacturers often make firmware updates available that allow the drives to read faster media. Sometimes manufacturers release firmware updates that simply make their devices work more efficiently.

You can usually find firmware updates by going to the “Support” or “Downloads” area of a manufacturer’s website. Keeping your firmware up-to-date is often not necessary, but it is still a good idea. Just make sure that once you start a firmware updater, you let the update finish, because most devices will not function if their firmware is not recognized.

Follow Innovation Begins Here on Twitter, innovationBeginsHere, Facebook , Google+ & Linkdin.