Traditional development systems
Microprocessor manufacturers have always provided development systems for their products - but, in the past, these came with a high price tag and were usually only available to large customers. Mainly they were designed to serve as teaching tools and support software development processes. They were too bulky and expensive to be used in actual products, so companies needed teams of experienced engineers to create the hardware and software needed for new product development projects.
The software development tools were costly too, using proprietary compilers and debugging hardware. Procedures included in-circuit emulation, where the processor in the target hardware could be replaced with a ribbon cable from the development system. This allowed the internal state of the microprocessor and external signals to be monitored, and breakpoints to be triggered, while the program was running - a powerful tool, but certainly not a cheap one.
Origins of democratisation
The greater accessibility of technology has roots that go back to the 1990s, when the open source movement started, and increasing levels of integration in semiconductor devices led to low-cost SoCs. On the software side, the free and open source software movement started a little further back - in the late 1980s (though the name ‘open source’ was not adopted until 1998). The GNU tools and Linux came out of the open source movement - now forming one of the dominant desktop and embedded operating systems. In part, this is because the open source model can quickly respond to new hardware and changing requirements. It can also harness the power of the crowd to rapidly find and fix bugs and identify any security problems. On the hardware side, the increasing number of components that could be squeezed onto the average chip led to the move away from costly ASICs, which incorporated some of the main functions of a system, to cheaper off-the shelf SoCs that required almost no external components.
The ability to economically produce SoCs for specific applications was enabled by the rise of semiconductor foundries, which gave almost any company access to advanced semiconductor manufacturing technology. It was no longer necessary for companies to make the heavy investments involved themselves, the foundries could do that for them.
As well as offloading the fabrication effort, there was the increasing availability of components as silicon IP - which included processor cores, memories, standard interfaces and application accelerators. A modular design approach based on re-use of these well-tested components has enabled the rapid turnaround of complex devices since then, with the cost savings derived being passed on to customers.
A new generation of development systems
A microcontroller product range will typically include multiple variants with different processor cores, clock speeds, memory size, interfaces, pinouts, etc., allowing customers to choose the most cost-effective solution for their needs. On-chip support for debugging is often supported. This gives visibility of the internal state of the processor and can provide, at minimal extra cost, many traditional ICE system features.
The price of microcontrollers has fallen dramatically, as they continue to benefit from the economies of scale that are central to semiconductor manufacturing. This has enabled the creation of low-cost development boards. Often these contain the microcontroller and a few external components for communication interfaces like USB, Ethernet, Bluetooth, etc., plus environmental sensors. Software libraries and middleware are also available that make these boards complete reference platforms for a variety of applications. As well as being used for development and prototyping, these boards are often small and cheap enough that they can be employed in small volume production.
One of the first of these single-board computers was the BeagleBone (circa 2011), which quickly became popular with hobbyists because of its small size, ease of interfacing and sub $100 price tag. A wide range of add-on ‘capes’ were subsequently made available to extend the functionality. Another open source microcontroller board, Arduino, has seen huge market traction thanks to its low-cost and simple operation. A wide range of compatible boards, including the ARM based Arduino Due, as well add-on ‘shields’ have been produced.
Figure 1: The BeagleBone Black.
Figure 2: Arduino’s Due Board.
Software development tools are available from commercial vendors, hardware vendors (to support their products) and via open source. Commercial tools are generally expensive, however nearly all the capabilities of commercial tools are now available in free or open source products. Programming can be done on a host PC/laptop (typically using C) and code downloaded onto the development board via a standard interface (such as USB). This will also give access to microcontroller debugging features. Writing and debugging software can be made easier using a good IDE. Eclipse is a popular open source IDE. It has a modular structure with plug-ins to support programming in Java, C, C++ and several other languages.
There are various free programmer’s editors are available. Many include features usually found in IDEs - for example, the ability to compile/debug code from within the editor. Arduino has its own IDE, which provides a simplified C programming model. As a result, individuals now have access to the same sort of tools and facilities that professional embedded developers use, without needing a major company’s resources.
Because boards like BeagleBone and Raspberry Pi run Linux, it is also possible to program on them directly, rather than downloading code from a host computer. This works particularly well with interactive, interpreted languages such as Python. Python is consistently cited amongst the most popular programming languages. Open source and free to use, it has a comprehensive set of libraries and third-party modules, giving access to a wide range of high-level functionality. Its straightforward syntax makes it quick to learn. Being interpreted does means that performance will not be as good as compiled C/C++ programs. However, modern processors are sufficiently fast that this is not a problem for most applications.
Many of the new users of these development systems have little formal training in hardware or programming and so go online to get support and share their projects. There are many resources for developers to access here. Nearly all board/microcontroller manufacturers host forums, where users can ask and answer questions. The companies will also engage with these forums to provide support and get product feedback.
As with a large proportion of other software, development tools have moved to the cloud. These make it convenient to try out, or start learning new languages without having to set up development tools on your computer. Cloud-based tools also work particularly well for online collaboration and code sharing.
The rise of low-cost hardware, free development tools and easy-to-learn programming languages has led to an explosion in the number of DIY electronics projects being embarked upon. Availability of open source hardware/software, plus online resources, is empowered ever greater innovation.