Adding mbed OS on a new ARM target Cortex M0 Cortex M4


We have used mbed classic on a Cortex M4 target on our own FPGA board (Kintex 7)
We now wish to port mbed OS 15.11 on the same board having Cortex M4 processor.
We are following queries w.r.t this development:

  1. Is it possible add new Processor/platform/target to MBED OS framework.
  2. If not what is the alternative approach to it.
  3. Is there a readme / doc to do the above.

Thanks & BR,
Sagar Kadam

Hi Sagar,

It’s absolutely possible to port mbed OS to your own board. We don’t currently have a public porting guide, although you can find a basic outline in the readme for

In summary the process involves:

  • creating a new yotta target for your platform (probably deriving from the existing mbed-gcc or mbed-armcc targets)
  • creating new modules to port the mbed-hal layer to your platform, initially with all drivers disabled, and then using yotta link and link-target to test and build locally as you port individual drivers.
    (we’d recommend hosting the source for these on GitHub, and making sure they have helpful readme files so that other people can contribute improvements back)
  • finally using yotta publish to make your port available to everyone.

If you’re unfamiliar with yotta, it might be useful to start with the mbed OS tutorial to familiarise yourself before starting a port. I’d also recommend porting the latest version of mbed OS, rather than the 15.11 release, as mbed OS development is moving quickly.

Note that currently the officially supported mbed OS ports are limited to those by ARM and our Partners, if your company is interested in becoming an mbed Partner then you can find more details on this page:

Hope that’s all helpful!

This is really useful James. Thanks for your pointers.
We will follow this process and update the thread.

Thanks & BR,
Sagar Kadam

Hello James,

With your pointers mentioned, we are started the porting activity.
We would like to clarify few more doubts, regarding minar-scheduler requirements.
We are adding our new target into cmsis-core , mbed-hal modules for our target.
While compiling blinky application we see dependency on DEVICE_LOWPOWERTIMER ,DEVICE_SLEEP.
The log says DEVICE_LOWPOWERTIMER ,DEVICE_SLEEP should be enabled.
To complete the compilation processes we have added place holders for these drivers.

Can you please let us know minimum drivers needed to complete the basic porting activity in order to get
the OS up and scheduler running.

Thanks & BR,
Shishir Tiwari.


minar-platform-mbed (the platform dependent module) requires lp ticker , sleep. This should get you scheduler running. To verify that it works, there’s blinky test in minar - This one introduces GPIO to the picture. Thus those 3 to have basic app working.

There are some small things hidden, which might be required for your platform, like mbed_hal_init() function.

We will provide porting guides for mbed OS modules, this should be stated there what are requirements for minar, and how to port lp ticker , sleep, etc…

Is there any guide available for mbed cli now that yotta has been outdated?