Open-Source Guide for Embedded Systems Developers (EE Tip #114)

What comes to mind when you hear the term “open source”? Hopefully, it means more to you than just a software application running on a PC.

As an embedded systems developer, you should familiarize yourself with the wide range of open-source programs, programming tools, and hardware platforms currently available. In addition to saving yourself the costs of pricey user licenses, you’ll find that open-source community forums helpful, informative, and engaging.

Open-source software offers a number of advantages. The product is independent of a particular manufacturer and there aren’t license costs. Plus, the product is usually high quality because it is often supported by a large active community of users. When a program’s source code is available, you have the chance to fix errors, change its behavior, and even add new features.

The aforementioned advantages should be good enough reasons for any designer of microcontroller applications to work with open-source software. PC tools such as editors, documentation programs, toolchains (for the vast majority of microcontrollers), operating systems, and libraries are widely available with open-source code.

On the hardware side, open-source microcontroller boards are gaining popularity among serious engineers. The circuits, PCBs, and CAD files are available so you can modify them, improve them, and add more features to meet the demands of your applications. It’s an added benefit that open-source hardware is always supported by software code and libraries that enable you to get up and running fairly quickly.

Since we couldn’t include in the space provided all the open-source resources currently available, we simply list several open-source projects that Elektor and Circuit Cellar engineers and editors recommend.

Below we provide the following lists: hardware; libraries and run-time tools; PC tools, and GNU toolchains. By no means are the lists complete. Still, they’re helpful starting points.

Download your Arduino Uno poster

Click image to download a free Arduino Uno poster

Arduino—This popular platform offers a range of simple microcontroller and development boards that you can purchase from several suppliers. The Arduino website has an active forum and the wide range of software examples will ensure that you are up and running in minimum time.

Openmoko—It’s a complete software stack for a smart. The Neo FreeRunner mobile phone is the target hardware platform. Development and debug boards are also available.

GNU Radio & Universal Software Radio Peripheral—The GNU Radio project is a software toolkit to produce a software-defined radio. The open-source hardware for this project is the Universal Software Radio Peripheral (USRPBoard), which is based on an FPGA.

KiCAD—One of the best-known suites of CAD programs for hardware production, KiCAD includes tools for generating circuit diagrams and PCBs. You can view 3-D representations of the finished board.

Fab Lab—This interesting project offers 3-D laser cutters, 3-D printers, and other machines for use by the general public. It’s a handy resource for making robot parts and art objects.

uIP/lwIP—Two outstanding network stacks, the first is for 8-bit microcontrollers. lwIP is a development of the first and more suited to medium sized controllers. The uIP licence is not so strict allowing the stack to be used in commercial products.

LUFA (formally MyUSB)—A large library of applications for interfacing (both Host and Device) USB enabled AVR controllers. The demonstration applications allow an AVR controller for example to emulate a keyboard and many other devices (mass storage device, audio I/O etc.)OpenSource2

Crypto-avr-lib—It’s a library of optimized cryptographic routines for the Atmel ATmega controller. Issued under the GPL Version 3 licence. Contact the author for other types of licence.

FreeRTOS—FreeRTOS is a lightweight Real Time kernel which can run on many controller families. It can be used in commercial applications and allows the use of closed-source software.

U-Boot—Universal bootloader with a large range of routines for memory, UART interface, SD card, network and USB etc. Conceived originally as a bootloader but now through comprehensive hardware support can be used as the basis of a C code module.

Embedded Filesystems Library—A useful (FAT) file format, when you are short of memory. The GPL licence includes a clause allowing static linking to the library without public disclosure of your code.

.NET Micro Framework—Now open source this very compact, trimmed down .NET Framework running on diverse ARM platforms. Programmable using the object orientated C variant C#; lots of resources including support for I2C, Ethernet and many more. Helps reduce development time.

Eclipse—This is a good development environment. It has a modular structure which makes it very easy to configure. There are around 1,000 plug-in modules (both open source and commercial) for a range of program languages and target systems.

Kdevelop—Kdevelop is an integrated development environment which should satisfy most power-user needs. Runs in MS Windows, Mac OsX, Linux, Solaris and FreeBSD. Plug-in expandable.

Programmer’s Notepad—A lightweight but efficient editor for writing source code. Allows fast, simple and comfortable program production. Can be expanded with plug-ins.

Doxygen—An intelligent tool which can automatically generate code documentation (C, C++, Java etc.). The programmer provides tags in the source file; Doxygen generates the comprehensive documentation in PDF or HTML format. It can also extract the code structure from undocumented source files.

WinMerge—A good tool for code comparison and code synchronization. The program can also compare the contents of folders/files and display the results in a visual text format that makes it easy to understand.

Tera Term—A terminal program to access COM ports, supports Telnet communication Protocol. A debugging tool to eavesdrop on serial communications.

Note: Toolchains for GNU projects are available most processor architectures AVR, Coldfire, ARM, MIPS, PowerPC and Intel x86. The GNU-toolchain includes not only compilers for C, C++ and in most cases also Java (GCC = GNU Compiler Collection), but also Linkers, Assemblers and Debuggers together with C libraries (libc = C library). The tools are used from within other-open source projects, like WinAVR, which provides a familiar user interface to speed up program development.

Registration Open for Sensors Expo & Conference

Thousands of engineers, scientists, and industry professionals are expected to gather for the 28th Annual Sensors Expo & Conference to assess and discuss the development and deployment of sensors and sensors systems.

The Expo & Conference will take place at The Donald E. Stephens Convention Center in Rosemont, IL, from June 25-June 26, 2014, with pre-conference symposia on June 24. Registration is now open at

This event, exclusively focused on sensor technology, will offer more than 65 technical sessions on the latest solutions to current sensing challenges while exploring the most recent sensing technologies. In addition to two full days of education sessions, attendees can participate in three full-day pre-conference symposia, taking place Tuesday, June 24.  The topics include “Designing MEMS In: How to Engage the Supply Chain,” chaired by Karen Lightman, executive director, MEMS Industry Group; “Energy Harvesting for Powering Wireless Sensors,” chaired by Randy Frank, president, Randy Frank & Associates, Ltd.; and “Making the Internet of Things a Reality: A Toolkit for Designing ‘Smart,’ ” chaired by Will Tu, ARM.

“Our team has been working diligently with our advisory board and partners to develop a stellar program offering nine tracks including Chemical & Gas Sensing, Energy Harvesting for Sensor Applications, Internet of Things, M2M, MEMS, Novel Approaches to Measurement and Detection, Power Management for Sensing Applications, Sensors @ Work, and Wireless, in addition to an expanded trade show floor offering hundreds of top vendors in the industry,” said Wendy Loew, group show director.

Conference program topics include smart power grid monitoring, the future of mobile intelligence with sensor fusion, sensors conditioning, challenges of high temperature sensing, and what you need to know to make your product a success. The Expo Hall provides access to suppliers along with information and education on their sensing products and solutions.

In the Expo Hall, attendees will see the latest sensing technologies and solutions, identify new ways to improve products and expand their functionalities using sensors, and learn about “hot” and cutting-edge technology areas. The Expo Hall will feature exhibitors including Analog Devices, Anaren, GridConnect, Microchip Technology, Mouser Electronics, Parker-Hannifin Corporation, Rowebots, STMicroelectronics, and Wyless.

Metcal Launches New MX-500

MetcalThe latest version of Metcal’s MX-500 soldering and rework system features ground fault interrupt and universal power supply in a new housing. The system is compatible with existing MX-500 products, including MX upgrade kits, tip-cartridges, and accessories.

Built on Metcal’s SmartHeat technology, the new MX-500 retains switchable dual port, 40-W operation. The system provides responsive and highly controlled heating and delivers the exact energy needed to ensure a precise and reliable solder connection.

Contact Metcal for pricing.


Client Profile: Lauterbach, Inc

1111 Main Street #115
Vancouver, WA 98660


LauterbachFeatured Product: The TRACE32-ICD in-circuit debugger supports a range of on-chip debug interfaces. The debugger’s hardware is universal and enables you to connect to different target processors by simply changing the debug cable. The PowerDebug USB 3.0 can be upgraded with the PowerProbe or the PowerIntergrator to a logic analyzer.

Product Features: The TRACE 32-ICD JTAG debugger has a 5,000-KBps download rate. It features easy high-level Assembler debugging and an interface to all industry-standard compilers. The debugger enables fast download of code to target, OS awareness debugging, and flash programming. It displays internal and external peripherals at a logical level and includes support for hardware breakpoints and trigger (if supported by chip), multicore debugging (SMP and AMP), C and C++, and all common NOR and NAND flash devices.

For more information, visit

PCB Design Guidelines (EE Tips #113)

Designing a matching printed circuit board (PCB) can be a challenge for many electronics enthusiasts. To help ease the process, Circuit Cellar and Elektor editors compiled a list of tips for laying out components, routing, and more.PCB1

  • When compactness is not a major consideration and the boards will be assembled by hand, through-hole components are the better choice. In this case you can use the pins of these components as “vias.”
  • On the other hand, surface-mount components can save a whole load of drilling on self-made PCBs. They make it simpler to achieve objectives such as minimum length for traces , minimal area inside trace loops, etc.
  • The orientation of components should consider not only simplicity of assembly but also the need to test the circuitry afterward. This is the time to remember the need for test points!
  • The place for switches, press buttons, plug-in connectors, LEDs and other user-interface components is outside the enclosure. Anything requiring subsequent access should be on the front panel of the case.
  • Components that require assembling with the right polarity should all have the same orientation.
  • Manual routing is preferable to using the autorouter. The latter has its uses nevertheless for discovering bottlenecks and other critical points.
  • When routing, never even think about giving up! Many PCBs appear “unroutable” at the outset, yet after a while it turns out you have plenty of space to spare.
  • If you’re not satisfied with your efforts, it’s better to go back a step or two rather than just muddle onwards.
  • Complete the routing for each of the functional groups of the circuit first. Link the groups together only after you have finished this stage.
  • Short traces are better than long ones. High impedance connections are more sensitive to interference and for this reason require to be kept as short as possible.
  • Where traces form a loop, their surface area should be kept to an absolute minimum.
  • Decoupling capacitors must be located as close as possible to the switching element that needs to be decoupled.
  • Traces carrying signals should be routed early on (first the short ones, then the long ones). Except, that is, when the power supply traces are particularly critical.
  • Bus lines should be routed alongside one another.
  • Separate analog circuitry from digital whenever possible.PCB2
  • On multilayer boards arrange traces carrying signals so that one of the layers hosts the vertical traces and another one accommodates the horizontal ones.
  • If possible, reserve one layer or side exclusively for a continuous ground plane. Only in exceptional situations, e.g. with high speed op-amps, is this undesirable.
  • Keep traces carrying heavy currents well away from sensitive pickups, sensors and so on.
  • Beginners should take special care with mains and high voltages!
  • Ground and earth traces require exactly the same consideration as the power supply traces. Electromagnetic interference can be minimized by keeping the power and ground traces parallel (or better still arranged over each other on either side of a double-sided board).
  • Bends should be no more than 45°. Sharp angles between the traces and the pads are also to be avoided.
  • Observe PCB manufacturers’ requirements without exception in order to avoid unpleasant surprises later.
  • If you are using software for checking conformity to specifications, carry out these checks regularly at each design phase.
  • A border of 0.12″ (approximately 3 mm) around the edge of the PCB should be kept entirely clear of components.
  • If components are to be inserted by machine you must provide at least three location marks.
  • Don’t forget the holes for fixing screws or pillars!
  • Don’t skimp on text markings on the PCB: indicate polarity, voltages, on-board functions, part designation, design date, version number…
  • Check not just twice but three times that all components will actually fit the PCB!
  • Leave time at the end of the process for tidying up and optimizing.

Good luck!