Will the real mbed please stand up?

20 Apr 2016

As a newcomer to the mbed world, I'm somewhat confused about the different versions of mbed and its websites, tools and repositories.

- Which of the following are the same things and which are actively developed: mbed, mbed OS, mbed Classic?

- What is the relationship between developer.mbed.org (where mbed v3.0 is being planned a year ago) and mbed.com (beta site) where 2016 is the future and mbed OS 16.03 is announced?

- What is the relationship between hg repositories on developer.mbed.org (user mbed_official) and github repositories (users mbedmicro, ARMmbed)

- online IDE compiler versus offline (e.g. ARM embedded + make) versus yotta.

Any enlightenment welcome!

20 Apr 2016

From my understanding (and subject to corrections by others)

mbed / mbed classic (developer.mbed.org) is the original mbed site.

It gives a core cross platform library (the mbed library) for all of the platforms listed on the platforms tab. The library is still being developed and maintained but purely for bug fixes and adding new platforms rather than in order to add new features. Not all platforms support all of the features in the library, it depends on the device capabilities and in some cases whether the silicon vendor has implemented that feature.

There are then a large number of additional libraries, some supplied by mbed but most user written that give additional features e.g. the SD card file system. There is also a light weight RTOS library.

The github repositories are the development versions of the official libraries. Every day or so mbed-dev (the development version of the library) is synced to the current github code.

mbed OS and mbed.com are the main focus of new development aimed at providing an OS suitable for IoT type devices. If you want to make an internet connected thing then it's worth looking at. I believe this is built on top of the classic mbed library.

If all you want is an embedded device that isn't going to connect to the internet then the basic mbed is all you need.

The online IDE is handy since it provides a very simple way to built projects and has built in version control and the ability to share and publish code and libraries however it lacks some of the flexibility and debug capabilities you would get from an offline IDE. It's a capabilities Vs convenience trade off.

20 Apr 2016

FYI, we have docs on offline development and debugging with mbed, still allows you to use the library ecosystem and commit code back to the online IDE.

20 Apr 2016

Thanks for your responses - things are getting a little clearer.

Would it be accurate to say that mbed OS is a layer on top of, or possibly a fork of, the mbed classic libraries? I submitted an issue and pull request (https://github.com/mbedmicro/mbed/pull/1675) for what I now understand to be mbed Classic; I now see that what I guess might be the equivalent file in mbed OS has an outstanding pull request for the same issue (https://github.com/ARMmbed/mbed-hal-frdm-k64f/pull/11) from 6 months ago. Are these codebases being managed independently?

There also does not seem to be much available in the registry of yotta modules. E.g. no results for searches for usb, dac, rpc, rs232, rs485, sdcard, or rtc, whereas the mbed classic import wizard lists multiple pages of results for each of these.

28 Apr 2016

Yeah, it's quite confusing isn't it?

It appears to me that the original site mbed classic was designed by developers for developers. Since being taken over by ARM, management have said "we want to get into IoT" and marketing have taken over. If you look at mbed.com Getting started guide, there is a whole load of useless verbiage and one line "write, debug and test your code". Seriously?? Obviously written by and for non-developers.

Probably there is a lot of confusion at ARM about what direction to take this "thing" they have, which is reflected in the public presentation.

Certainly, as a professional developer I wouldn't be basing any projects on mbed. It's fine for toying around with dev boards though.

18 Mar 2017

I realize this thread is old, but I came across it while looking for the same answer. mbed OS 5 (https://developer.mbed.org/blog/entry/Introducing-mbed-OS-5/) supports both classic and mbed OS. The tail end of my experience with using mbed OS 5 as a main loop app w/o the OS can be found at https://williewalker.wordpress.com/2017/03/17/mbed-file-size-conclusion/.

14 Jul 2017

Hi,

Is the migration from OS 2 to OS 5 seamless? I have a valid code along with some old version of mbed 2 library. Can I update the library to OS 5 and expect it to work? Or is it a totally different library and some rebuild is needed? I'm using GCC4MBED for building projects.

17 Jul 2017

Jakub, I would suggest trying to remove the mbed 2 library and adding the mbed-os library. After that, you can attempt to compile and see what breaks. It may only be necessary to make small changes for your code to work with mbed OS. As to compiling with GCC4MBED (a third party tool), mbed offers two officially supported ways to compile your code offline with the GCC:

1) You can use the export function that is integrated into the online compiler - https://docs.mbed.com/docs/mbed-os-handbook/en/latest/dev_tools/third_party/. In this case, you might export to a GNU ARM Embedded makefile.

2) You can use our command line tool, mbed CLI, to compile your code, manage dependencies, and use the export functionality of (1) offline.

Additionally, you can use pyOCD to debug your code with a GDB client.