zws.com logo
cover

Interested in developing high-performance embedded systems on a shoestring budget? Click the image above to buy my new book from Amazon!


links:
publications home

Embedded System Design on a Shoestring

In 1999, I began to work intensively on a range of products based around several different 32-bit cores; initially PA-RISC, and later both ARM and x86. Since I work for a small company, tool and prototype cost has always been a very important factor for me, so obviously GNU tools were my first choice. (In the case of the PA-RISC controller, gcc was also the only compiler supported by the chip vendor). Previously, I had used gcc, binutils and gdb only in the relatively sheltered environment of developing Linux applications. I quickly discovered that building and using cross-compilers to create embedded applications is a good deal more complex!

The first few months of working with GNU tools in this way - the GNU linker, in particular - were very frustrating. I found myself wishing for a single reference that would just show me how to build a working toolchain, and exactly what support files I would need to write in order to be able to compile a simple "Hello, World!" program (in C) for the target platform. I also had a lot of difficulty building the toolchain, because although there are numerous scripts and HOWTOs on the Internet, apparently none of them are archived alongside the tool versions with which they were tested. I had no luck at all getting these one-step "point and click" solutions to work, so I had to wrestle with the build process the hard way.

Embedded System Design on a Shoestring is the book I wanted when I was getting started, spiced with additional hints and tips based on my last four years of experience developing these complex 32-bit systems on a practically zero budget.

My book is intended - bluntly - for people with no money, who want to develop systems based around high-end (16/32-bit) microcontrollers. It includes a CD-ROM with illustrative example sourcecode and free tools. The most important idea presented in this work is how to get up and running quickly with free tools, and in particular an introduction to the structure and usage of the GNU cross-compiling toolchain.

Topics discussed in the book include:

  • Selecting operating systems, and a useful primer on how the various open-source licenses may affect your product.
  • How to choose components that can be prototyped affordably.
  • Techniques for designing and hand-assembling high-density PCBs containing large surface-mount devices.
  • Complete and fully tested instructions for configuring and building the GNU toolchain (the version included on the CD-ROM) under Linux and inside Windows (with Cygwin). It is astonishing how many inaccurate references there are on this topic on the Internet!
  • Instructions on how to write makefiles, linker scripts and startup code to get newlib-based applications (compiled with gcc/gas) built and running on your embedded system. The example code is for the Atmel AT91EB40 evaluation board (AT91R40807 microcontroller) but is easily adaptable to almost any ARM.
  • Best practices for writing easily-portable code and bootstrapping your way through a hacked-up prototype on to a real production circuit.
  • And more!

If you buy my book - and who wouldn't want to? - you'll want to bookmark this site. You should also email me with any questions and suggestions for further application notes, errata, and requests of that nature. I know a fair number of copies have already been sold; come on, people - let me know what additional material you need!

Additionally, if you would like to download the example sourcecode files from the book, you can do so at this link.

Stay tuned for my next book, which will be finished in mid-2004 (and probably on the shelves by Q4, 2004). It applies the principles mentioned in this first book to a very complex project: an autonomous, robotic submarine. The submarine is built around Atmel AVR microcontrollers and a Geode-based single-board computer (Advantech PCM-5820) running Linux. The book contains a wealth of ready-to-use modules; tach-feedback PWM motor controller, stepper controller, temperature sensors, and more - in addition to a complete soup-to-nuts description on how to assemble a tiny bootable Linux distribution for your embedded application (small enough to put on a CompactFlash card or ElTorito CD-ROM boot area) and useful information on developing graphical overmonitoring applications on Linux. Also sidebarred in the new book are applications to process control and overmonitoring.


zws.com and all original content herein is © Copyright 2003 by Lewin A.R.W. Edwards. "zws.com" is a trademark protected under U.S. and international law. Infringement or attempted dilution of the intellectual property rights held by Lewin A.R.W. Edwards will be prosecuted to the fullest possible extent.