I customize (or configure) dozens of embedded computers each week for customers doing everything from test and measurement to electronic billboards.  Over the past 10 years, the sales team has developed a consultative “needs analysis” methodology.  Our system centers around 7 areas:

1. What are your PERFORMANCE needs?

Do you have a current platform to use as a point of reference? Does the software you are using have a minimum hardware spec? If not, how graphically intensive is your application? These questions inform CPU, GPU, and single vs. dual core choices. Significantly, according to most senior hardware engineers, overspecing performance requirements is the most common hardware configuration mistake.

2. What ENVIRONMENT will your unit operate in?

Will the system be in a dusty environment? Will it be subject to shock or vibration? Can you describe the ambient temperature? Is there a space constraint? Mounting requirements? What power is available eg. 110, 220, AC, DC, etc? These environmental considerations drive case, motherboard, power supply, and storage choices. The more demanding the environment, the more likely you will need a fanless, solid state, wide-temperature system.

3. Are there I/O CONNECTIONS you need?

What are your I/O Considerations? If doing video, what is the output (DVI-D, DVI-I, VGA, HDMI, LVDS)? Are there special video considerations (dual independent, clone, need multiple output options)? What are your USB needs (2.0, 3.0)? What are your COM needs (RS232, RS422, RS485)? How many LAN ports and what speed do you require(10/100, 10/100/1000)? Audio requirements? What other I/O do you want (eSATA, display port, firewire, S/PDIF, S-Video, TV-out/RCA, TPM, watchdog timer)? Don’t immediately look to the backpanel I/O. Smart system configurations can meet I/O needs with onboard header pins and daughtercards.

4. What OPERATING SYSTEM are you running?

What OS are you running? Unfortunately, some hardware simply doesn’t play well with some software. A smart configuration takes into account driver support for the OS you have built your application on.

5. STORAGE & MEMORY requirements?

Based on the environmental considerations above, is solid state or hard disk storage is more appropriate?
How much storage capacity do you need? What are your storage performance requirements (5400 RPM, 7200
RPM, transfer speeds)? Do you have any special storage considerations (RAID, multiple drives, boot devices
vs mass storage)? What are your RAM capacity requirements?

6. Do you need EXPANSION capability?

Do you have an expansion card? Why are you using it? (Perhaps we can find a way to omit the need!) What is the power draw? (If it’s too much, we may not be able to cool it or power it.) Is it a PCI, PCIe, or mini PCIe card?

7. BUSINESS/LIFECYCLE requirements?

At scale, what price per unit do you need to hit? What are your life cycle needs for this platform? These are typically < 3 years, 3-7 years, 7+ years. Lifecycle needs will determine whether you need particular motherboards and whether you need to look at case revision control. Is this system replacing an existing unit already in the field? If not, when do you need to launch? What testing/certification do you need? This drives case material considerations, among other component choices. What is the cost of downtime or remote servicing? This last question will drive reliability needs.

And remember, by using Commercial-Off-The-Shelf (COTS) hardware, you can get a custom configuration without the cost and lead times associated with truly custom systems.  In other words, “Custom-Off-The-Shelf” is not a contradiction in terms.