This is a re-post of Ko Aung Kyaw Soe's article in embedded.com website. Original article can be found here
...............................................................
Set up an embedded systems training lab for under $1,000
By Aung Kyaw Soe, Embedded Systems Design Engineer , Embedded.com
Jun 27 2007 (0:15 AM)
Nowadays, we are surrounded by embedded systems; products containing digital computers and software running on those embedded computing devices. Example embedded 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 and software. Embedded software can be sub-categorized into application firmware (domain specific knowledge involved), middleware and system software (Real Time OS or Embedded OS Kernel, Device Drivers) and digital signal processing tracks.
Embedded hardware folks can be grouped into prototype circuit design electrical engineers and custom chip designers (RTL for FPGA IC for moderate volumes). An embedded engineer should have EE and/or CS background although any graduate in science and technology can learn the tools and skills of the trade.
The embedded system software must be designed on a platform different from the platform on which the system is intended to be deployed. Cross platform development means that, for example, the development of embedded software for Fujitsu F2MC 16 bits micro-controller can be done on a system running Linux Operating system on a 64 bit Wintel desktop PC.
Similarly, the development of some firmware code for Embedded Linux could be done on a Microsoft Windows System. That implies cross platform development tools (such as cross compilers) and emulation/demonstration boards are needed and those used to be expensive.
Taking the traditional approach it could cost more than $50,000 for a fully equipped embedded system labs.
Another way
With new products and free software nowadays make it possible to build an embedded system laboratory for less than $1000. The lab could be for both academic and continuing professional education purposes. What follows is a collection of resources, some free, some online, and all inexpensive.
Required Skills for an Embedded Software Engineer: A Sample Syllabus
The resources described here will, I feel, go a long way toward qualifying a student embedded software engineer with a basic skill set that includes the following subjects:
1) Set Theory, Boolean Algebra and Demorgan's Law
2) Discrete Mathematics (for DSP folks)
3) Basic Electrical and Electronics Engineering
4) Electrical circuits, schematic, assembling and soldering of an electronic circuit
5) Fundamentals of Control Engineering and Linear Systems
6) C Programming and Data Structures, ANSI C and MISRA C
7) Computer Operating Systems:Linux, eCos, uC/OS II, etc..
8) Real Time Systems Concepts
9) Digital Logic and Circuits and I/O interfacing
10) Object Oriented Concepts and its application in software design
11) Object Oriented Programming Language (preferably C++)
12) Concepts of Software Engineering and Product Life Cycle Models
There are advanced topics which embedded system design engineer should know too. Following are the examples of advanced topics the student should master with the help of the resoources listed here:
1) Hardware Software Co-Design
2) Object Oriented Design Patterns and Reusable Frameworks for Embedded Software
3) GUI Design
4) Software Architecture
5) Model Driven Architecture and Code generation
6) Embedded Communication Technologies
However, since the scope of this article is on how to set up an embedded laboratory, the rest of this discussion will be focused on building lab resources to cover most needs of an embedded system course. This proposed sub-$1000 laboratory will be able to provide hands-on resources laboratory for training in all aspects of embedded engineering.
Shopping List
To set up a hands on laboratory with less than $1000, an assumption is made that there are two desktop PC workstations with either the Linux and/or Microsoft Windows operating systems with USB and UART serial ports. The under $1000 shopping list in Table 1 below includes the following tools and building blocks for designing and implementing embedded software and hardware.
Table 1. Price Lists of items to be purchased
Now we have acquired adequate educational kit to train future embedded software engineers how to design embedded software on 8 bits micro-controllers, 32 bits micro-processors with memory cache, 32 bits Digital signal processors and automatic code generation using Matlab Simulink.
Engineers can experiment RTOS environment on 8 bits and 32 bits microprocessors by using freeRTOS, uCOS II and Embedded Linux on those demonstration boards and SBC (Single Board Computers)[4]
Moreover, freely download-able 8085/8086 Simulators[26] can be installed to refresh PC assembly language accompanying computer architecture courses.
Similarly, some basic electronic courses can be run with AIM-spice simulator [12], freely available from University of Berkeley. The free Micro-controller simulators such as MicroDev can be useful for student learners also.[22].
The hands on laboratory projects could be created as derivative work based on the sample projects provided by the product vendors. The certificate level courses in Embedded systems design can be a good starting place to design courses.[45]
Figure 1. 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 up is relatively strait forward.
First, used one of the available desktops, Windows can be configured to serve as the workstation by installing the microcontollers and DSP available with the starter kits, development boards and evaluation kits show in Table 1, earlier.
Thus populated, it can support DSP simulators and IDES such as Code Composer Studio for Texas Instruments MSP430 Micro-Controllers and Digital Signal Processors; Freescale's Code Warrior Studio for the HC08 Micro-controllers and the Keil 8051 IDE for 8051 based micro-controllers.
The need for a digital oscilloscope can be solved by PC based oscilloscopes from a lot of vendors. And for low frequency applications (<20000) you can turn your PC sound card into a handy and inexpensive oscilloscope with freely available software from off the Web and a simple USB connection.
There are a lot of vendors that provide such a USB connected PC based digital oscilloscope capability, such as, for example, the USB BITSCOPE 310, which is suitable for most of the embedded applications except video.
On the second workstation, to set up the development environment for Embedded Linux you will need to install cross compilation tools (from native x86 processor on which PC is running) as well as an ARM based Linux SBU (single board computer) board.
To facilitate SoC (System on a chip) design environment on FPGA boards there are a number of free VHDL tools, such as Signs [5], which can be installed.
Texts
Following is a list of the texts I found it useful for embedded software engineers, some of which are available in electronic form, as well as a number of electronic books which can be downloaded for learning purposes. For some book reviews of these and other useful books go to the Embedded SIG, the Association of Computing Machineries (ACM), as well as the Jack Ganssle's book review for embedded engineering texts.[27]
(1) Programming Embedded Systems in C and C++ , by Michael Barr, O'Reilly
(2) Building Embedded Linux Systems, by Karim Yaghmour, O'Reilly
(3) The Scientist and Engineer's Guide to Digital Signal Processing, by Steven W. Smith
(4) C++ GUI Programming with Qt 3 by Jasmin Blanchette, Mark Summerfield; Prentice Hall.
(5) Numerical Recipes in C and C++: The Art of Scientific Computing, William H. Press, Saul A. Teukolsky, William T. Vetterling, and Brian P. Flannery. Cambridge University Press
On line references and resources
Following are the URLs of papers, articles, information and software and other resources I have found useful: Get from the original post
[1] "How to become an Embedded Geek" by Jack Ganssle
[2] Setting up an Embedded System Lab at home http://ti.tuwien.ac.at/ecs/research/projects/scdl/download/rr-55-2006.pdf
[3] Texas Instruments MSP430 microprocessor based demonstration boards for less than $20
[4] Free Real Time Operating System for micro-controllers; there is RTOS port for MSP430.
[5] Signs " Free VHDL Hardware Development IDE for simulation, compilation, synthesis.
[6] A free VHDL simulation tool
[7] FPGA e-Lab, a Technique to Remote Access a Laboratory to Design and Test by Reza Hashemian, Jason Riddley
[8] Inexpensive student-assembled FPGA / micro-controller board
[9] PIC24 Microcontroller and dsPIC33 Digital Signal Controller Development Board
[10] Cyclone II FPGA Starter Development Kit
[11] Explorer 16 for PIC24 Microcontroller and dsPIC33 Digital Signal Controller (DSC) families
[12] Free Mixed Signal Emulator AIM-spice
[13] Scoping out palm-sized USB oscilloscope
[14] http://technews.acm.org/articles/2004-6/0802m.html
[15] http://fie.engrng.pitt.edu/fie2002/papers/1349.pdf
[16] http://www.arl.wustl.edu/%7Etodd/sproull_fpl_05.pdf
[17] http://www.cems.uwe.ac.uk/%7Engunton/vhdl/vhd.html
[18] http://www.eetimes.com/news/design/resources/opensourcelinks.html
[19] http://www.best-microcontroller-projects.com
[20] Free Embedded C programming course
[21] Linux Source Code for different platforms Cross Reference
[22] MicroDev, an IDE for logic devices such as micro-controllers and microprocessors
[23] Introduction to Misra C on Embedded.com
[24] New C standard eBook
[25] CSDP (Certified Software Development Professional), IEEE for Generic Software Engineers
[26] 8086 Simulator as teaching aid to 8086 Assembly Language and Computer Architecture
[27] Book Reviews of Embedded Texts by Jack Ganssle
[28] What is an Embedded System by Rational IBM
[29] MATLAB Student Version
[30] Eagle Layout Editor Freeware (up to double layer PCB)
[31] PC based Oscilloscope from Bitscope
[32] PC based Oscilloscope from TiePie
[33] Free Code Warrior IDE (C compiler) for code on the Freescale HC08 less than 2KB
[34] Getting Started and Evaluating Microsoft Embedded OSes
[35] Keil IDE and C51 C compiler Evaluation Software for less than 2KB code
[36] EdSim51 - Free 8051 Simulator
[37] Embedded MCU from Fujitsu Microcontroller
[38] University of Colorado Embedded Systems Research
[39] C/C++ Programmer's Guide to Embedded Systems
[40] http://www.opersys.com/ulxembsys-course.html
[41] Essential C, Computer Science Library, Stanford University
[42] Embedded C++ or C++ for Embedded Systems
[43] Embedded Software Engineering: The State of the Practice, by Bas Graaf, Marco Lormans, Hans Toetenel, Delft University of Technology
[44] University of California Irvine Extension Certificate in Embedded Software Engineering
[45] Association of Computing Machines Embedded SIG
[46] Doxygen for documentation http://www.doxygen.org
[47] Graphviz tool to accompany Doxygen http://www.graphviz.org
[48] Cygwin to make Unix development on Microsoft Windows http://www.cygwin.org
[49] MinGw to make make utility work on Microsoft Windows
Aung Kyaw Soe is an Embedded Software Design Engineer with a Master of Embedded Systems Design from Technical University of Eindhoven, the Netherlands and a graduate of the National University of Singapore, Singapore. He can be reached at aung.aungkyawsoe@gmail.com.