Nowadays, we are surrounded by embedded systems; products containingdigital computers and software running on those embedded computingdevices. Exampleembedded systems are mobile telephones, DVD players, car radios,automotive control electronics, airplanes, and medical systems.
Generally speaking, an embedded system is made up of hardware andsoftware. Embedded software can be sub-categorized into applicationfirmware (domain specific knowledge involved), middleware and systemsoftware (Real Time OS or Embedded OS Kernel, Device Drivers) anddigital signal processing tracks.
Embedded hardware folks can be grouped into prototypecircuit design electrical engineers and custom chip designers (RTL forFPGA IC for moderate volumes). An embedded engineer should have EE and/or CSbackground although any graduate in science and technology can learnthe tools and skills of the trade.
The embedded system software must be designed on a platformdifferent from the platform on which the system is intended to bedeployed. Cross platform development means that, for example, thedevelopment of embedded software for Fujitsu F2MC 16 bitsmicro-controller can be done on a system running Linux Operating systemon a 64 bit Wintel desktop PC.
Similarly, the development of some firmware code for Embedded Linuxcould be done on a Microsoft Windows System. That implies crossplatform development tools (such as cross compilers) andemulation/demonstration boards are needed and those used to beexpensive.
Taking the traditional approach it could cost more than $50,000 fora fully equipped embedded system labs.
With new products and free software nowadays make it possible to buildan embedded system laboratory for less than $1000. The lab could be forboth academic and continuing professional education purposes. Whatfollows is a collection of resources, some free, some online, and allinexpensive.
Required Skills for an EmbeddedSoftware Engineer: A Sample Syllabus
The resources described here will, I feel, go a long way towardqualifying a student embedded software engineer with a basic skill setthat includes the following subjects:
1) Set Theory, BooleanAlgebra and Demorgan's Law
2) Discrete Mathematics (forDSP folks)
3) Basic Electrical andElectronics Engineering
4) Electrical circuits,schematic, assembling and soldering of an electronic circuit
5) Fundamentals of ControlEngineering and Linear Systems
6) C Programming and DataStructures, ANSI C and MISRA C
7) Computer OperatingSystems:Linux, eCos, uC/OS II, etc..
8) Real Time Systems Concepts
9) Digital Logic and Circuitsand I/O interfacing
10) Object Oriented Conceptsand its application in software design
11) Object Oriented ProgrammingLanguage (preferably C++)
12) Concepts of SoftwareEngineering and Product Life Cycle Models
There are advanced topics which embedded system design engineershould know too. Following are the examples of advanced topics thestudent should master with the help of the resoources listed here:
1) Hardware SoftwareCo-Design
2) Object Oriented DesignPatterns and Reusable Frameworks for Embedded Software
3) GUI Design
4) Software Architecture
5) Model Driven Architectureand Code generation
6) Embedded CommunicationTechnologies
However, since the scope of this article is on how to set up anembedded laboratory, the rest of this discussion will be focused onbuilding lab resources to cover most needs of an embedded systemcourse. This proposed sub-$1000 laboratory will be able to providehands-on resources laboratory for training in all aspects of embeddedengineering.
To set up a hands on laboratory with less than $1000, an assumption ismade that there are two desktop PC workstations with either the Linuxand/or Microsoft Windows operating systems with USB and UART serialports. The under $1000 shopping list in Table 1 below includes the followingtools and building blocks for designing and implementing embeddedsoftware and hardware.
|Table1. Price Lists of items to be purchased|
Now we have acquired adequate educational kit to train futureembedded software engineers how to design embedded software on 8 bitsmicro-controllers, 32 bits micro-processors with memory cache, 32 bitsDigital signal processors and automatic code generation using MatlabSimulink.
Engineers can experiment RTOS environment on 8 bits and 32 bitsmicroprocessors by using freeRTOS, uCOS II and Embedded Linux on thosedemonstration boards and SBC (Single Board Computers)
Moreover, freely download-able 8085/8086 Simulators can be installed to refresh PCassembly language accompanying computer architecture courses.
Similarly, some basic electronic courses can be run with AIM-spicesimulator  , freelyavailable from University of Berkeley. The free Micro-controllersimulators such as MicroDev can be useful for student learners also. .
The hands on laboratory projects could be created as derivative workbased on the sample projects provided by the product vendors. Thecertificate level courses in Embedded systems design can be a goodstarting place to design courses.
|Figure1. A sample setup for an embedded system laboratory|
Sample Laboratory Set Up
Using the embedded system development gear in Figure 1, above , a sample lab set upis relatively strait forward.
First, used one of the available desktops, Windows can be configuredto serve as the workstation by installing the microcontollers and DSPavailable with the starter kits, development boards and evaluation kitsshow in Table 1, earlier .
Thus populated, it can support DSP simulators and IDES such as CodeComposer Studio for Texas Instruments MSP430 Micro-Controllers andDigital Signal Processors; Freescale's Code Warrior Studio for the HC08Micro-controllers and the Keil 8051 IDE for 8051 basedmicro-controllers.
The need for a digital oscilloscope can be solved by PC basedoscilloscopes from a lot of vendors. And for low frequency applications(<20000) you can turn your PC sound card into a handy andinexpensive oscilloscope with freely available software from off theWeb and a simple USB connection.
There are a lot of vendors that provide such a USB connected PCbased digital oscilloscope capability, such as, for example, the USBBITSCOPE 310, which is suitable for most of the embedded applicationsexcept video.
On the second workstation, to set up the development environment forEmbedded Linux you will need to install cross compilation tools (fromnative x86 processor on which PC is running) as well as an ARM basedLinux SBU (single board computer) board.
To facilitate SoC (System on a chip) design environment on FPGAboards there are a number of free VHDL tools, such as Signs  , which can be installed.
Following is a list of the texts I found it useful for embeddedsoftware engineers, some of which are available in electronic form, aswell as a number of electronic books which can be downloaded forlearning purposes. For some book reviews of these and other usefulbooks go to the Embedded SIG, the Association of Computing Machineries(ACM), as well as the Jack Ganssle's book review for embeddedengineering texts.
(1) Programming EmbeddedSystems in C and C++ , by Michael Barr, O'Reilly
(2) Building EmbeddedLinuxSystems, by Karim Yaghmour, O'Reilly
(3) The Scientist andEngineer's Guideto Digital Signal Processing, by Steven W. Smith
(4) C++GUI Programming with Qt3 by Jasmin Blanchette, Mark Summerfield; Prentice Hall.
(5) Numerical Recipes in C andC++: TheArt of Scientific Computing, William H. Press, Saul A. Teukolsky,William T. Vetterling, and Brian P. Flannery. Cambridge UniversityPress
On line references and resources
Following are the URLs of papers, articles, information and softwareand other resources I have found useful:
 “How to become an Embedded Geek“by Jack Ganssle
 Settingup an Embedded System Lab at homehttp://ti.tuwien.ac.at/ecs/research/projects/scdl/download/rr-55-2006.pdf
 TexasInstruments MSP430 microprocessor based demonstration boards forless than $20
 Free Real Time Operating System formicro-controllers; there is RTOS port for MSP430.
 Signs ” FreeVHDL Hardware Development IDE for simulation, compilation,synthesis.
 A free VHDL simulation tool
 FPGA e-Lab, a Technique toRemote Access a Laboratory to Design and Test byReza Hashemian, Jason Riddley
 Inexpensive student-assembledFPGA / micro-controller board
 PIC24 Microcontroller anddsPIC33 Digital Signal ControllerDevelopmentBoard
 Cyclone II FPGAStarter Development Kit
 Explorer16 for PIC24 Microcontroller and dsPIC33 Digital Signal Controller(DSC) families
 Free Mixed Signal Emulator AIM-spice
 Scopingout palm-sized USB oscilloscope
 Free Embedded C programmingcourse
 Linux Source Code for differentplatforms Cross Reference
 MicroDev, an IDE forlogic devices such as micro-controllers and microprocessors
 Introductionto Misra C on Embedded.com
 New C standardeBook
 CSDP(Certified Software Development Professional), IEEE for GenericSoftware Engineers
 8086 Simulatoras teaching aid to 8086 Assembly Language and Computer Architecture
 Book Reviews ofEmbedded Texts by Jack Ganssle
 Whatis an Embedded System by Rational IBM
 MATLAB StudentVersion
 Eagle Layout Editor Freeware (upto double layer PCB)
 PC based Oscilloscope from Bitscope
 PC based Oscilloscope fromTiePie
 Free Code Warrior IDE (C compiler) forcode on the Freescale HC08 less than 2KB
 GettingStarted and Evaluating Microsoft Embedded OSes
 Keil IDE and C51 C compilerEvaluation Software for less than 2KB code
 EdSim51 – Free 8051 Simulator
 EmbeddedMCU from Fujitsu Microcontroller
 University of Colorado Embedded Systems Research
 C/C++Programmer's Guide to Embedded Systems
 Essential C,Computer Science Library, Stanford University
 Embedded C++ or C++for Embedded Systems
 EmbeddedSoftware Engineering: The State of the Practice, by Bas Graaf,Marco Lormans, Hans Toetenel, Delft University of Technology
 University of CaliforniaIrvine ExtensionCertificate in Embedded Software Engineering
 Association of ComputingMachines Embedded SIG
 Doxygen for documentationhttp://www.doxygen.org
 Graphviz tool to accompany Doxygenhttp://www.graphviz.org
 Cygwin to make Unix development onMicrosoft Windows http://www.cygwin.org
 MinGw to make make utility work onMicrosoft Windows
Aung Kyaw Soe isan Embedded Software Design Engineer with a Master of Embedded SystemsDesign from Technical University of Eindhoven, the Netherlands and agraduate of the National University of Singapore, Singapore. He can bereached at firstname.lastname@example.org.