Playing the platform game
Reaping the gains of modern hardware and software platforms
Playing the vintage platform games from the 80’s can be a very rewarding experience, but at the same time very frustrating - Having to start over from scratch every time you fail, while at the same time battling more and more complexity for each new level you manage to reach.
It’s a bit unnerving and déjà-vu all over again that this also describes quite a lot of contemporary software development projects. But contrary to the gaming experience, having a reliable, high quality platform to build upon can reduce frustration while boosting the rewards.
1. Starting over
If we simplify things a little bit, new product projects usually fall into one of two categories: reusing hardware and/or software from earlier projects, or starting over more or less from scratch. Starting from scratch can be easy if requirements are modest, but difficulty and complexity tend to rise with the length of the requirements lists. And it’s not typically a linear growth in complexity, but rather something like quadratic in the number of requirements. This is of course a generalisation, but it typically holds up quite well if you look at blocks of functionality. Let’s say you have a product that currently has no communication to the outside world, but where market demands now push for both local data logging and a means to communicate with the rest of the world without wires.
So now you need to find both a good file system and an easy-to-use communication stack that suit your hardware as well as each other and are easy to integrate into your existing code base. Not to mention adapting existing hardware to add wireless capability and local data storage. Integration of new hardware and software components will add dependencies not only to your existing components, but also to each other in subtle ways which drives complexity and increases maintenance headaches.
2. Standing on the shoulders…
On the other hand, creating and maintaining a fully flexible hardware and software platform in-house to deal with the above issues is very expensive and is not really a viable option unless you have vast resources and the possibility to spread the cost over many projects. So running with an existing platform looks like an attractive option, if you can find one that delivers on its promises that is. In an ideal world all you have to do to use a specific platform is to get hold of the platform, add your own code and finally build and run the code on the supported hardware. In practice you tend to stumble on a number of hurdles like: How do I even build it? Why does it not run on the 'supported' hardware? Where is the documentation and why is it so brief? And, maybe most important, how do I get fast and accurate technical support when things go wrong and I’m up against a tight deadline?
3. …of Giants
What if a market actor with sufficient muscle and stamina decides to provide a fully integrated platform that just works, even right out of the box? What would such an offer ideally consist of?
Here’s a partial list:
- Support for a diverse range of MCUs and peripherals, so as not to be bound to a very specific device that might or might not suit your requirements in terms of available peripherals, packaging, on-board memory etc.
- Platform software that just works out-of-the-box on the full device range, after a set of simple configuration choices for needed platform services.
- Security addressed from the bottom up.
- High-level abstractions like tasks and task scheduling, middleware like communication stacks and file system. Configurable, of course…
- A well-defined and fully documented application programming interface, so low-level implementation details and dependencies do not leak through to application code. Your code can focus on product functionality.
- A choice of development tools to balance different needs in code performance, language standards adherence, support services, preferred IDE etc.
- Readymade hardware in the form of Starter Kits, Product Example kits and application specific kits - All with comprehensive documentation so you can start your design journey on any level.
- The whole platform, including all the supported hardware, is tested and qualified and the vendor supports you all the way.
This may sound too good to be true, but Renesas has recently launched the Renesas Synergy Platform which addresses essentially all of the above bullet points. You can kick start development, while remaining sure of a long term commitment from the vendor. The platform includes everything from a wide spectrum of 32-bit MCUs, a fully integrated battle hardened RTOS from Express Logic to diverse middleware components. Different readymade hardware kits and an intuitive application programming interface can get you going in no time at all with concept exploration for new products and designs. On the software development tools side you have a choice of going with Renesas’ own tools or powerful tools from IAR Systems that maximise the performance of your code.
So taking a look at this platform has the potential to pay off in reduced development time and hassle, as well as faster time-to-market.
By Anders Holmberg, Product Manager, IAR Systems AB, & Steve Norman, Manager Core Marketing, Renesas Electronics Europe GmbH.