Embedded systems are ubiquitous. We use them every moment of the day, often without knowing or caring what makes our device or appliance operate.
As consumers, we find them in our smartphone, our washing machine, our fitness band, and there are hundreds of them in our car. From a user perspective, those that we get emotionally attached to we want to work reliably – and, if they are battery powered, to last on a single charge for days. They are also omnipresent in industrial automation systems and widely used across transportation as well as in healthcare and medical applications.
For the embedded developers and electronics engineering teams tasked with developing these systems, there are many different approaches they can take, each with their own merits, depending on the end-system requirements, available budget, and time-to-market deadlines.
Embedded System Development from Scratch
Developing an embedded system from scratch is probably the de facto approach for most developers, although attitudes are changing and we will investigate these further in this article.
Figure 1. Embedded system development process. (Source: Arnold S. Berger – Embedded Systems Design)
The initial stages of this development approach focus heavily on defining and documenting the project concept and specification, and the initial overview of the hardware and software design. Figure 1 highlights the critical stages of developing an embedded system. Together these documents will shape the more detailed aspects of the hardware and software design.
Design considerations include: Will the product need a display? Does it need secure short-range wireless connectivity? Do any product functions require the hardware to have a deterministic pre-emptive behavior? The answers to each of these example questions will significantly influence the overall design in terms of physical product size, power consumption, required computation resources and peripheral connectivity functions. These attributes will also dictate the cost, detailed in a bill of materials (BOM) that covers every component including the case, the printed circuit board, and any supplied cables and power adapters.
Figure 2 illustrates an example embedded system functional design.
Figure 2. Block diagram of a battery-powered wall mounted heating controller.
Once the design specification has been signed off, work can commence on the prototype development, a process that involves hardware and software design taking place in parallel. A project schedule will highlight key milestones and testing stages. While starting an embedded development from scratch gives the design team immense flexibility in how the product is architected, it also means that every aspect of the embedded hardware design needs to be carefully integrated with the operating software.
Low-level drivers and board support packages are just some of the many things that will need to be created from scratch before a working prototype is available to test. If the product requires wireless connectivity and the team have opted for a discrete approach rather than using a pre-certified wireless module, additional time and budget need to be sought to accommodate the legally required and rigorous wireless type approval process.
Each embedded system design is different, so estimating the development time and budget will depend on the system features and complexity. A development budget of between $50,000 and $100,000 and a six- to twelve-month timescale would probably be realistic for a mid-spec design, with getting a working hardware prototype taking the first three to four months of that duration. With testing and further design reviews, it could be two years before the design is ready for volume production. Non-recoverable expenses (NRE) will account for a significant part of the overall project cost. It is envisaged that the BOM cost of the final embedded hardware might be in the order of $15 to $35 per board.
Many product manufacturers offer a family of products with different features, with some being iterations of earlier products. For them, developing a standard platform that can be used across their whole product portfolio is a viable alternative to embarking on a new design from scratch for every new product. Selecting a specific microcontroller or microprocessor family of products that are pin- and software-compatible over a range of processor speeds, memory, and peripheral options provides the most flexibility.
The engineering team will need to factor in maintaining the design over the long term, and ultimately consider re-engineering the platform’s architecture to accommodate new processor technologies, changes in the user interface approach and new networking protocol stacks.
Fast-Tracking a Design with a Single-Board Computer
An alternative approach to starting from scratch and taking many of the benefits of using a platform approach is fast gaining momentum. The concept of using a single-board computer (SBC) is not new; in fact, SBCs have been used for decades in a variety of industrial automation equipment as well as in cashpoints/ATMs and a host of other kiosk-type appliances. The attraction lies in the fact that the engineering team can immediately get to work on developing the product started with a trusted platform, saving significant development time and NRE costs.
Over the years many board formats have been developed, many with their roots in PC motherboard form-factors, with the most popular being pico-ITX, PC/104, and EPIC (Embedded Platform for Industrial Computing). An example board, costing about $188, is the Eurotech CPU-301 – see Figure 3 – which hosts a Freescale i.MX6 CPU and 4GB of RAM. While the base specification of this board makes it appear identical to a PC, look a bit closer, and you will note that many such boards feature a broader range of networking protocols such as CAN and serial interfaces such as RS232/485/422.
Figure 3. Eurotech CPU-301-16-01 single-board computer. (Source: Eurotech)
Also, some of them accommodate an extended operating temperature range of up to +85°C, and some are conformal coated for use in high humidity and other challenging environmental conditions.
For developers used to working with resource-rich environments and using enterprise-level software development environments, these SBCs continue to be an ideal platform on which to base a product design. These ‘industrial SBCs’ are also more likely to have some key features not found on their smaller embedded SBC counterparts, and we’ll discuss these next.
Redundant processors and software partitioning are must-haves for safety-critical applications, and any application responsible for real-time control requires a highly deterministic operating system. Also, support for legacy networking protocols and I/O traditionally provided by programmable logic controllers (PLCs) tends to be more tried and tested with the industrial SBCs. Such features also contribute to them having, compared to new alternatives, a much higher price tag.
Microprocessor and microcontroller technologies have significantly advanced over the past twenty years, and designers now have a plethora of ready-to-go embedded boards to choose from. Firstly, compared to their industrial counterparts, they are more compact and consume a lot less power at a fraction of the cost.
An example is the $65 BeagleBone Black, a compact 3.5-inch form-factor board that has a TI Sitara ARM Cortex-A8 microprocessor and 4GB DDR3 Flash memory, and features a host of GPIO and serial peripherals. The board is shipped with an open-source Linux distribution, which provides a high level of control over the hardware domain. Another even smaller Linux-powered board is the Arduino Yún, which also includes 802.11 2.4GHz wireless connectivity.
Figure 4. BeagleBone Black single-board computer. (Source: BeagleBone)
So why are such boards a viable alternative to embarking on a ground-up design approach? It is estimated that over 500,000 BeagleBone Black boards have now been shipped, and therefore there is a lot of community support available. The whole design package of layout and BOM files are open source and available for download, which gives engineering management a lot of confidence when looking at potential manufacturing risks and establishing second sourcing partners.
Imagine the time you can save by using one of these boards as the basis of your next product design, not to mention the savings in NRE costs. Everything is well documented, with a host of programming language options such as Python, C/C++, Node-RED and Java to choose from.
Using this approach, developers can focus their time and energy on meeting the design requirements in the shortest period and getting the product to market as quickly as possible. Also, without having to become embroiled in learning and tooling up to design the hardware from scratch, the development process becomes more efficient, focusing on the product features and differentiation to make it even more attractive to the target audience. Hardware integration around the board becomes the priority, so displays, peripheral devices, and controls can be added quickly and easily.
Industry Articles are a form of content that allows industry partners to share useful news, messages, and technology with All About Circuits readers in a way editorial content is not well suited to. All Industry Articles are subject to strict editorial guidelines with the intention of offering readers useful news, technical expertise, or stories. The viewpoints and opinions expressed in Industry Articles are those of the partner and not necessarily those of All About Circuits or its writers.