0
\$\begingroup\$

I would like to know how much compatibility can I expect between ARM MCUs from different vendors.

For example, let's say I write a firmware using C language for a Cortex M0 using its CAN peripheral. Will I be able to port it to a Cortex M0 from a different vendor with no changes? (or at least minimal changes) Or peripherals are completely different between them?

And what about if I use an RTOS like FreeRTOS? Does FreeRTOS abstract from the hardware so I'm able to port my software easily?

Finally, are all ARM Cortex M0, M4, etc from all vendors supported by FreeRTOS? Or only specific models of specific vendors?

\$\endgroup\$
1
  • \$\begingroup\$ The previously answered question says nothing about using FreeRTOS, so I think that this one is only partially duplicated. \$\endgroup\$
    – naggety
    Commented Sep 29, 2016 at 6:43

1 Answer 1

2
\$\begingroup\$

FreeRTOS uses the RTOS CMSIS API by ARM to implement basic functions for thread, timer and queue management. If you do not use port specific FreeRTOS functions you will be able to run it on a different Cortex-M MCU since the required hardware is common to all Cortex-M cores.

Peripherals are mostly different between vendors and you will have to adapt the software in most cases, but you can make your live easy by using a separate abstraction layer by defining your own functions that you use and providing a mapping between your functions and the vendors HAL. However if you use for example the Cube HAL you will be able to port your software from a ST Cortex-M0 to a ST Cortex-M3. Other vendors have their own solutions.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.