Reusing technology is in Technolution’s DNA. By developing smartly, it’s easy to use the result for some other purpose by making a number of adjustments. Modular development even takes this a step further, by using a development environment consisting of ready-made building blocks.
Article from Objective 23, 2015
There is no limit to creativity when it comes to product development, but money and time are real limitations. Clients want affordable solutions for their problems and don’t want to have to wait long. They want a solution that can be used in cars to give motorists advice that help to prevent traffic jams. Or a device in the meter closet that gives consumers insight into their energy consumption. Many requests involve systems that collect, process and send data. It’s possible to meet this demand by developing a fully tailor-made embedded processing platform. Standard off-the-shelf hardware is usually not suitable, because the one, specific interface is lacking. This means the developer has to solve the problem himself by using tailor-made solutions, with the corresponding development costs, often for production runs of no more than a few hundred.
Modular development concept
Is there no alternative way of doing this? Is it not possible to invent a development concept that keeps time and costs to a minimum, while offering flexibility to quickly and cost-effectively add the client’s one crucial customization requirement? The answer is: “Yes”; with a modular system that consists of ready-made building blocks, and has tailor-made features where necessary. This concept has been part of Technolution’s thinking since the company’s foundation: ensure that you can reuse the results of your work as a building block in other applications. This often makes people think of Lego: make a Lego-like structure, with a basic range of building blocks that you can use to quickly assemble a system. Blocks that always fit, so all you have to think about when you’re developing a new solution is the functionality. In this way, developing is reduced to its essence: integrating the right functions. Power supply, interfaces and data protocols become minor side issues, because the collection of building blocks has already been optimized and made suitable for these aspects.
Adding features to your own base using existing hardware
We’ve designed a set of basic elements for this modular development concept: a number of processor modules and I/O modules that we can literally build together into a complete system. As a base, we’ve developed a carrier board that is comparable to the motherboard of a PC. Just as in a PC, you can add extra functions to this carrier board using a processor module and one or more I/O modules. The I/O modules are our loose building blocks, and we’ve made a wide, ever-expanding range of them. For instance, communication modules such as BlueTooth, GPS, WiFi, NFC, GSM, 3G and 4G. And a touch screen for the controls, but speech and gesture recognition are also possible. We select the right module depending on the design request. If a client is eager to have GPS in his product, for example, then it makes a difference whether he wants to have 20-meter or 10-centimeter precision. For the former we would use a low-end module, but for the latter a more expensive high-end module. The carrier board is fitted with basic features such as power supply, data buses, expandable memory (microSD) and light, temperature and acceleration sensors. It also has a number of leds and capacitive buttons for elementary operation. We connect the processor module of our choice to one side of the carrier board; there are five slots for the I/O modules on the other side. Click connections link the building blocks to the carrier board electronically and mechanically, so there is no need to use a soldering iron. An elegant casing completes the product.
Hardware Design Language
Thanks to this simple hardware concept we are able to put together a customized design as the client watches. HDL, the Hardware Design Language which we developed ourselves (see Objective 22), is a great help. What we assemble on the table with building blocks can be easily connected with HDL as separate modules to form a new design. HDL is very well suited to the concept of modular development, because design changes are much easier and – therefore – quicker to implement with HDL than with traditional design programs. Now that designing the electronics takes less effort, we can focus our attention on the application software that will be running on the hardware.
Software increasingly determines the functionality of products and systems. This involves more effort, particularly on account of changes, which are occurring in ever more rapid succession. Not only in the development phase, but throughout the entire life cycle. The corresponding investments can be managed by building the software properly and in an orderly way. An added advantage is that this makes the software easy to maintain. Thus paying extra attention to designing software, and making the right choices, can save a lot of investment during the rest of the life cycle.
Embedded Linux and generic interfaces
Embedded systems usually run with an operating system. We use a mainstream Linux kernel and root-file system for this, both of which are properly maintained by the open source community. We use tools from the Yocto community to generate our embedded Linux distribution.
A Linux distribution offers a whole list of hardware which it supports ‘out of the box’. When we choose hardware, our first priority is to look at this list to see if there is anything that could be used for the application. That would mean we would not have to develop driver software and we can benefit from the open source community’s software bug fixes and feature enhancements. This ensures that our developers always work with the latest versions of software and drivers.
We always choose USB as generic interface. USB is self-configuring: as soon as it’s connected, it automatically loads the correct software modules and drivers. By selecting our basic modules carefully, development becomes a matter of ‘plug & play’. In this way, we don’t have to spend too much time on the software platform and can concentrate mainly on the development of the application parts of the software, so that the final product is produced more quickly and more cheaply.
Modular: more expensive or cheaper?
Setting up a modular system is an investment that yields long-term results. Once the system is up and running, the operating costs are lower than for the traditional development process. You can build, test and adapt designs much more quickly. And if you do have to develop a new module, you can just add it to the kit as another building block. Everyone benefits from this: both the developers and the clients.
A modular product has a higher cost price than a customized system. As the development costs are lower, however, the modular product will ultimately be cheaper and will be ready for delivery sooner. Of course the price depends on the numbers. If the volume is low, the price per product is often less important, certainly if the product is a specialized application. In these cases, the flexibility of the development process is much more important. As the numbers increase, the balance shifts. There is a tipping point somewhere, from which point on it’s cheaper to transform the modular product into a specific design. This happens in phases: at certain production runs it’s cheaper to incorporate the I/O modules into the carrier board. At even larger volumes, the processor itself also becomes part of the carrier board, thus creating a specific design. A modular design can be one of these intermediate steps in a trajectory towards mass production. While one team is designing the hardware, the software team can develop the software on a pilot product built with modules. Once production starts, they already have a design for the end product. In these cases the modular system is a development platform.
Off-the-shelf processor modules
The volume aspect is an important reason to use as many commercial off-the-shelf (COTS) components as possible. This means tapping into the economies of scale that components made by the millions have. The advantage of COTS processor module families is that processor power and memory can be scaled to suit the client’s wishes. Want something different? Simply put in a different processor module. That is more cost efficient than developing a new module for each application.
Disconnecting the problem from the technology
The modular development method enables us to offer integration and tailor-made solutions without the price tag that usually comes with customized products. And all of this in a compact development trajectory. The resulting product is stable and of industrial quality and, other than many commercial products, will still be available in ten years’ time. The Raspberry Pi, for instance, is brilliant to have at home, but its reliability and long-term availability are not always guaranteed.
We have made an accessible development platform in which the basics, such as hardware, drivers and system software, have already been selected. Technology is secondary to the client’s wishes. This enables us to concentrate on the essence, and that is to quickly and efficiently realize a working solution that meets the client’s needs.