Developing software within a constrained hardware subsystem such as a microcontroller requires a different level of understanding. Memory restrictions, instructions per second, lack of multi-tasking support can all place demands on software developers.
More modern systems now exist that are far more capable, however these can have an increased unit-cost so it still may be preferable to choose a "lowest common denominator" micro controller.
We have experience developing software for a number of hardware platforms and are actively developing our portfolio in this area. If you have an embedded system project that you would like to discuss, we would be delighted to hear from you.