What advantages does the mbed offer, and what are its limitations?

I’ve already in some detail, but here I’ll try to summarise.
The mbed is aimed at people who want a fast way to prototype micro-controller applications.
Getting started is as easy as the mbed ad claims; I had the sample blinking LED program running within a minute of opening the box. Another two minutes, and I’d modified the code, compiled and downloaded it, and was watching all four LEDS blink in sequence.
There’s more to life than blinking LEDs, and it took some while to explore the mbed’s capabilities. I quickly felt comfortable with the development environment, from which you can create, edit, install and publish your code, and import code published by others. The development process is as simple and smooth as it is with the Arduino. Since the compiler is web-based there is no software setup and you know you are always using the latest version of the development environment.
Like the Arduino development environment, the mbed has no debugger. I found myself making liberal use of printf statements which output via the USB link to the PC.
The web-based compiler is reached from the mbed wiki. There is a lot of content but the wiki is well-structured and easy to navigate. The wiki contains
- forums for queries, help, bug reports and suggestions for improvement,
- a handbook section which documents the mbed’s core libraries,
- a cookbook where users can publish additional code and
- notebooks where users can document work in progress and publish if they wish.
The libraries are generally of high quality and the documentation is excellent. The mbed team have set the bar high and contributors have tried to match their standard. Core libraries cover most of the mbed’s peripherals, including I2C, SPI, CAN, Ethernet and the mbed’s local filesystem. The LPC1768FBD100,551LPC1768FBD100,551 has a few additional capabilities: some of these (Quadrature encoding, I2S) have user libraries under development. User libraries also cover common peripheral devices like LCDs, Port Extenders and Sensors.
The mbed’s capabilities gave me a much richer environment that I am used to with the Arduino, and I found good use for the mbed’s greater memory, flash capacity and speed.
Of course the mbed has some limitations. Some potential users are anxious about the need to store their source code on the web. Others are concerned that the core libraries are not currently open source. Publishing a library is not yet as smooth as it should be, and I found no way of versioning my software.
There’s been a steady stream of requests to open up the libraries, and it seems that the delay is more to do with development priorities that with any objection in principle.
Once the libraries have been opened up it should be a simple matter for developers to switch to the open-source gcc-based ARM toolchain if they want. That in turn would open the door to debugger integration and to the use of a multi-tasking kernel like FreeRTOS.
These are exciting possibilities, but they are enhancements to an already outstanding product. I expect to use the mbed as my preferred prototyping platform for a long time to come.
