You might question why, as I am supposed to be an embedded software specialist, I am considering the selection of an embedded CPU, which is clearly a hardware matter. It would be a fair question, except that, in embedded system design, the development of hardware and software are inextricably entwined, each having an influence on the other.
So, how is the selection of a CPU affected by software issues? ...
There are a great many embedded CPUs on the market today, so selecting the right one for a given project is a challenge. Here are some of the more obvious selection criteria:
- Computing power
- Power consumption
- On-chip facilities
- Price and availability
These are mostly hardware oriented, except for computing power; the amount of power needed will depend on the software being run.
There are some other criteria which may seem less obvious:
- Is the software team familiar with the CPU architecture?
- Do they have development tools for it (or are they readily available and good quality)?
- Are simulation models available?
- Is the chip supported by the chosen operating system? (And any other software IP.)
- Are there low power modes available? (critical if needed, but perhaps an overhead if not - only the software designers can say).
This brief review seems to suggest that there are more software-oriented factors in the selection of a CPU than hardware criteria. Although I would hesitate to suggest that the software guys should choose the device, I do think that a somewhat revised approach might make sense.
As software is the larger proportion of the overall development effort for most embedded systems, it is obvious that work on the code should start first in order to meet time to market. That is easy enough. However, the further the software development has advanced, the more well defined the needs for CPU specification will be. For example, it may turn out that a design might benefit from the CPU having power management functionality. However, this may not be apparent until a large amount of software design and analysis of use cases has taken place.
I am suggesting that the hardware design team hold off from the selection of the CPU until the last possible moment. That will give the software team a chance to assess how much computing power (and memory) they will need and also what power management capabilities (like low power modes, DVFS, etc.) will be needed to meet their design goals.
Times are changing and the approach to system design needs to change with them.