When beginning development of an embedded system, it is necessary to make a decision about whether to design a fully custom platform, or to utilize a pre-existing core system component of some kind. This core component could be anything from a bare main processor module right through to a complete and ready-to-use board. Unfortunately there is no definitive answer on which way to go, however as a simple rule of thumb if the final product is going to be manufactured in quantities of less than a few thousand, then it’s fairly likely that making use of an off the shelf component will be much more cost effective, assuming you can find one that fits your requirements. It is also worth keeping in mind what is sensible and realistic given your market; if you’re developing an industrial product in runs of tens of thousands, you probably don’t need to try and develop iPhone like mechanicals which would place restrictions on what hardware platform you could use.
When evaluating the available platforms there are several areas that need to be considered. Some of these are fairly obvious, but some are a bit more subtle and require more in-depth investigation.
- Basic hardware support: The board will need to support the fundamentals of your platform. This covers features such as WiFi, Bluetooth, CAN bus and so on. It is important to ensure that the platform will be fully capable of providing the features that cover your particular market. Where it is lacking the necessary hardware make sure that the expansion options available will be sufficient.
- Form Factor: For many installations, the form factor may be incidental. However for some markets it is important that the device fit within an existing enclosure or dimension. It is important to consider how this will be managed - if the plan involves taking several off-the-shelf modules and combining them, will the resultant dimensions still fit? Do you need custom cables manufactured to ensure that all of the accessible ports are in the correct location? Custom cable manufacture can be quite expensive in small runs, and can be a slightly hidden cost in the initial design phases. Physical robustness is a common failing of off-the-shelf units, so be sure that the enclosure is going to keep everything housed together properly. With modern 3D prototyping options, it is possible to get very high quality plastic mechanicals produced for relatively low cost, although the design may still be quite involved.
- Software support: This can be a difficult area to get a complete grasp on prior to starting on a project, but it is one of the most important. There is a significant difference between having a vendor driver that supports the bare minimum of functionality, and a thriving community with comprehensive examples and reference implementations. Before making a significant investment in a new hardware platform, we generally advise developing a minimal demonstration application for each important discrete technology that is needed for the final project. These examples don’t need to interoperate in any way, and can often be based on existing community examples, but developing them will ensure that the quirks of the platform are fully understood, and the chances of having a much more expensive issue towards the end of development are vastly reduced.
- Supply Chain: Is it possible to get reliable lead times, availability and general supply support? This is especially important if the supplier is also the manufacturer/designer. You may be at the whim of their ordering process, which is probably not in line with your market requirements. Plenty of people have designed a system only to find the core module has gone obsolete or cannot be obtained in suitable quantity, and now needs to be designed out.
- Power consumption: If the final project is to be battery backed, does the power usage of the board and peripherals fit within the power budget? Most of the standard off-the-shelf boards available are not designed for native battery support, so an additional charging circuit may also be necessary. This is another area where it is important to investigate the software provided - many drivers supplied by vendors may support the basic functionality, but may not correctly go in and out of low power/sleep mode. Fully supporting sleep mode can often be a difficult software task.
- Community Support: One of the best confirmations that you’ve chosen a solid platform is if others have done the same. Boards that have a thriving community of developers and third party support around them give a higher degree of certainty. This also opens up options around expansion modules to bring in the special features required for your design.
- Intended Target: Depending on the intended target of the device, it may have special features that are applicable to your market. For instance industrial devices often have superior temperature tolerances, or more rugged power supplies. If the board is designed as a platform evaluation board, it will often be more expensive in order to add flexibility, however if this is not being used in your device, then the added cost brings no benefit. These factors typically show up in other areas of system evaluation, but if you can find a device that is broadly designed towards your market segment, then you will tend to have more luck with general community and vendor engagement, since everyone has similar understandings.