There’s tremendous value in being able to utilize the latest and greatest technology on the market. Of course, the leading edge is sharp and there are ways you can cut yourself if you aren’t careful. In general, though, having the flexibility to choose where you ride technology waves enables you to better balance the overall performance, cost, and power efficiency as you design systems.
I remember an industrial embedded system I was optimizing because we had tapped out the available processing capacity. I profiled execution and determined that the processor spent 90% of its time in one of its processing modules. This seemed like an excellent place to focus my optimization efforts. Before I could start, however, the hardware engineer changed out the processor and crystal on the board, doubling processing speed.
It would have taken me at least a month to optimize the code to get perhaps a 10% increase in efficiency yielding a 9% overall system speed-up. I would have also potentially introduced bugs into robust code that had already been proven to work. Instead, a simple change of processor provided 11x the improvement in system speed that I could have provided at a very low per board cost. Furthermore, I now had a month of time I could use to implement a new feature that would enable new applications, attract a different kind of customer, and generate more sales.
Designing with modules gives you similar flexibility and agility. For example, with Upverter, you can customize your own boards by dragging and dropping functionality into a design. Before you go to production, you can select from a series of processors to give you the level of capability, memory, and processing power your application needs.
As your application evolves and you continue to add new features, you’ll eventually outgrow the processor you originally selected. You do have the option to try to optimize your code. But why would you?
When you need more processing resources, you can easily swap out the module you’ve been using for a new one. This is especially useful when your application is using leading-edge technology. Often new technology changes the performance/cost ratio, opening up new markets. The flexibility of using modules allows you to leverage new technology as soon as it is available. This enables you to approach design in an Agile fashion so you can be the first to market and capture new market share before your competitors.
You can also go the other way on the technology curve. You might, for example, identify a market that doesn’t need all the bells and whistles. As you pare back functionality, you’ll need fewer processing resources. Swapping out for a lower cost module allows you to be more competitive without having to bear the cost of a major redesign.
Modules are an effective way to ride technology waves. You can optimize systems more quickly and robustly by changing hardware than through the time-consuming process of rewriting software.
Take a look at some Gumstix customer success stories or contact Gumstix today to learn more about their products, design tools, and services. Or try out Upverter, their customized module design tool, for yourself.