Technology companies are in a hurry. In many development environments, product is needed ASAP or yesterday and engineers are scrambling to deliver as quickly as humanly possible. In order to help their clients meet these grueling demands and schedules, microcontroller suppliers and even niche product companies have started to pave the path by providing developers with building blocks to get up and running more quickly. The problem with this approach is that in many cases these building blocks are being pitched as platforms and developers are buying into a pitch believing that they are getting more when they are getting less. So, what exactly is a platform?
A platform is a complete package that a developer can build upon to add their unique value so that they can achieve their end desired result. In a perfect world, a platform is something a developer can leverage that has everything – hardware, software, communications, production support, etc., — that they need to just add that smallest bit of extra hardware or code to make their product amazing, unique, cost effective, scalable, manufacturable, sustainable, and evolvable.
Using a display module as an example, we would expect a display module platform to include all the hardware and software necessary to boot and execute an HMI. A developer would only need to customize the highest-level software to get the look and feel they want and interact with their surrounding environment. The platform would also include that customization software, SHIPTide being the equivalent in this example.
To phrase it another way, imagine a platform as a completely constructed home that only requires the finishing touches and decorations to meet its owner’s needs. Unfortunately, embedded engineers are often pitched so-called platforms, implying fully built, integrated and tested hardware, software and app-ready infrastructure, but instead they get disjointed basic building blocks that in some cases haven’t even been production tested. It’s the equivalent to buying a home and arriving with the moving truck only to discover a construction site with 2×4’s and drywall stacked neatly and ready for you to build the house yourself. The tools (and even the blueprints of the finished house!) of course you need to provide yourself and suddenly your stuck asking yourself what you’ve just gotten yourself into.
There are several key features that a developer should be looking for in order to successfully identify a platform. These include:
- Fully packaged and tested hardware ready to go out-of-the-box
- Tested and integrated software drivers and stacks
- A cohesive toolchain designed to put the finishing touches on the application
The above list are just the tangible engineering related topics that should be considered. When thinking about a platform from a much broader and strategic standpoint, teams should also be considering characteristics beyond the hardware and software capabilities such as whether the platform is:
When trying to identify a platform, a developer should be asking themselves, “If the platform provider went any further, would they be selling product to my clients?” If the answer is yes, then you’ve successfully found a true platform and not just software building blocks. If the platform you’re looking at doesn’t have these features, cover your ears and eyes to avoid the Siren’s call.
A Serious Tip for the Thoughtful Engineer
Have you been bitten by a vendor pitch that they have provided you everything you need only discover that you have the building blocks? If so, don’t worry, we’ve all been there. The trick is to learn our lesson and put the right plan in place to recover. You can do this by using the platform features we’ve discussed today to test your vendors and by using Serious Integrated Modules (SIMs) as an example of a real developer platform.