ADVANCED INDUSTRIAL LEVEL TRAINING IN LINUX BASED EMBEDDED SYSTEMS

ADVANCED INDUSTRIAL LEVEL TRAINING IN LINUX BASED EMBEDDED SYSTEMS
ADMISSIONS OPEN

Search This Blog

Showing posts with label C PROGRAMMING. Show all posts
Showing posts with label C PROGRAMMING. Show all posts

Thursday, 4 July 2013

WHAT IS DIFFERENT ABOUT EMBEDDED PROGRAMMING ??


Embedded programs must work closely with the specialized components and custom circuitry that makes up the hardware.  Unlike programming on top of a full-function operating system, where the hardware details are removed as much as possible from the programmer’s notice and control, most embedded programming acts directly with and on the hardware.  This includes not only the hardware of the CPU, but also the hardware which makes up all the peripherals (both on-chip and off-chip) of the system.  Thus an embedded programmer must have a good knowledge of hardware, at least as it pertains to writing software that correctly interfaces with and manipulates that hardware.  This knowledge will often extend to specifying key components of the hardware (microcontroller, memory devices, I/O devices, etc), and in smaller organizations will often go as far as designing and laying out (as a printed circuit board) the hardware.  An embedded programmer will also need to have a good understanding of debugging equipment such as multimeters, oscilloscopes, logic analysers and the like.
Another difference from more general purpose computers is that most (but not all) embedded systems are quite limited as compared to the former.  The microcomputers used in embedded systems may have program memory sizes of a few thousand to a few hundred thousand bytes rather than the gigabytes in the desktop machine, and will typically have even less data (RAM) memory than program memory.  Further, the processors used will often be smaller 8 and 16 bit devices as opposed to the 32 bit and larger devices found in a desktop (although small 32-bit microcontrollers are now under a dollar in moderate quantities, which is amazingly amazing).

INTRODUCTION TO EMBEDDED SYSTEMS

 Embedded system is one that uses one or more microcomputers (that is, small to very, very small computers), running custom programs and connected to specialized hardware, to perform a dedicated set of functions.  This can be contrasted with a general-purpose computer such as the familiar desktop or notebook, which are not designed to run only one dedicated program with one specialized set of hardware.  It’s not a perfect definition, but it’s a start. 
Some examples of embedded systems are:
  1. Alarm / security system
  2. Automobile cruise control
  3. Heating / air conditioning thermostat
  4. Microwave oven
  5. Anti-skid braking controller
  6. Traffic light controller
  7. Vending machine
  8. Gas pump
  9. Handheld Sudoku game
  10. Irrigation system controller
  11. Singing wall fish (or this gift season’s equivalent)
  12. Mars Rover

For the most part I have listed example embedded applications on the less-complex end of the spectrum, since this is after all a beginning tutorial.  By the end of this tutorial you should have a good idea how most of these applications would be programmed, and in general terms what kinds of I/O, timing, interrupt and communications hardware and functionality they would require. 
There are a few things worth noticing about the above list.  While many embedded systems use fairly traditional user input-output devices (keypads, displays), many others do not.  Also, many embedded systems interact directly with human beings, but others do not (we’re still waiting to see if the Mars Rover interacts directly with Martians)