Then, carefully consider the following factors:
1) Make a list of "must haves"
This list should be complete enough to tell you if any particular processor can be used and (when possible) general enough to allow many processors to be used.. Try to differentiate "must" haves from "nice to" or "prefer to" haves...but it's good to track those as well...
Think in terms of basic functionality: will be "safety critical" or has to perform "real-time" vs. nice to run "RTOS x" or prefer to have "operating temperature range X to Y". If there are product marketing folks involved at this point, make sure they are happy with the user oriented aspects (temp range, LCD/SDRAM support, A/Ds D/As etc.) before proceeding too far.
A well written and (100%) complete"specification" can be helpful here. Bear in mind that moving items from "must" haves to "prefer to" haves can yield more potential solutions. Naturally, the reverse is also true. If there are a staggering number of possible choices, moving some "nice to haves" to "must haves" can make selection much easier.
2) Look at the tools
Don't be afraid to include "must have" or known/unknown factors such as: must (or prefer to) complete the job in 2 weeks and the only available engineer knows development tool set or platform X really well. But, if there are already "bundled" application kits that do almost exactly what you want, don't try and reinvent the wheel either...new tools can make the same old job easier!
3) Consider the cost
Consider the cost of the project and of prospective processors with respect to it. This can be difficult to estimate. Don't try and come up with only a "bottom line" number of dollars/euros/etc. Consider available design support, application examples, and subsequent development time here...as well as Bill of Materials cost. Also remember to account for the cost of external "parts" needed (Chassis space/footprint, crystals/oscillators, decoupling/filtering, EMI/EMC, programming connectors, etc.)...It is sometimes useful to think of this as the "solution cost."
4) Look at the intended life span of the product
You may want to do this before (or after, or included in) steps 2 or 3 above...or not at all. For a one-off or "prototype" type product, this is probably not a big factor. But it doesn't hurt to remember, if a processor already has significant code libraries, development boards, and application notes, that can indicate it's been out for a while.
If it turns out a long product production lifespan is important to you, be careful here! Newer, faster processors with more features, and in smaller die/package sizes are constantly coming out... If the processor you pick goes "end of life" your product may too as a result! Or you might have to "migrate" your code. It can be almost as much (or even more!) work to redesign an existing product with a new "brain" as it was to design the product in the first place.
5) Be careful changing parts in manufacturing...
Plenty of surprises possible here. Perhaps someone can add some examples of where doing this makes sense???
6) Useful Resources
- 2009 EDN Microprocessor Directory
- Choosing between DSPs, FPGAs, μPs and ASICs to implement digital signal processing
This document originated from a discussion here: