mbed OS 2 and mbed OS 5
This is the handbook for mbed OS 2. If you’re working with mbed OS 5, please see the new handbook and API References. For the latest information about the Online Compiler, please see Development tool options.
Instant access to your lightweight C/C++ microcontroller development environment
The mbed Compiler provides a lightweight online C/C++ IDE that is pre-configured to let you quickly write programs, compile and download them to run on your mbed Microcontroller. In fact, you don't have to install or set up anything to get running with mbed. Because it is a web app, you can log in from anywhere and carry on where you left off, and you are free to work on Windows, Mac, iOS, Android, Linux, or all of them.
It is online and lightweight, but it is also powerful.
The compiler uses the professional ARMCC compiler engine, so it produces efficient code that can be used free-of-charge, even in commercial applications. The IDE includes workspace version control, code formatting and auto-generation of documentation for published libraries. The mbed tools are focused on prototyping and are designed for fast experimentation, and complement other professional production-level tools; you can even export directly to other toolchains if you choose, as you progress to productise your design.
Online Compiler IDE¶
Every mbed user account gets their own private Compiler workspace which contains their programs. This is private to you, and available wherever you login to mbed.
The IDE includes a full code editor including syntax highlighting, standard editor keyboard shortcuts, undo/redo, cut/copy/paste, tabs, block/line comment, and even a code auto-formater. This is where you work on your personal workspace, with multiple files, folders, programs, including a drag and drop folder interface:
The editor also includes features like find and searching across multiple files and filetypes; for example, searching across your whole program. When you search, the results will appear as a list in the compiler output window where you can jump to any of them with a click:
Integrated Version Control¶
You can use the built-in version control features to let you version, branch and merge code, with a nice representation of the state of your project history:
The approach should be familiar to those of you with experience of distributed version control models (as used by mercurial/git); each program has its own local repository, so you can commit and perform actions on it within your own workspace (such as updating, branching and showing changes).
The main things you can do include:
- Commit a version of your project, and view the revision history
- View changes a version made, and compare changes between versions
- Update or revert to a different version
- Branch and merge
- See also Version Control
Importing Libraries or Example Programs¶
The Import Wizard allows you to import programs and libraries published by mbed users. This is useful for importing code that has been packaged as a reusable library component (e.g. a class for a peripheral), so you can quickly pull in the building blocks for your project.
- See also Importing code
To perform the actual compilation the mbed Compiler uses the industry standard ARM RVDS 4.1 compiler engine, in the default configuration, to give excellent code size and performance. There are no limitations on code size (apart from the limits of the device itself!), and the generated code can be used freely for commercial and non-commercial use.
When you compile a program, you'll get a display of the memory usage. This shows the size of program code and any constant (const) variables that will end up in FLASH, and size of data variables that end up in main RAM.
Note, this doesn't include the runtime allocated variables (i.e. the heap and stack), which live in any remaining RAM.
- See also the mbed Memory Model
Export to Offline Toolchains¶
The mbed C/C++ SDK used with the mbed Online Compiler is also compatible with a number of other popular ARM microcontroller toolchains, so we've also built in the ability to export directly to these toolchains! For example, if you'd like to migrate to a different toolchain as your project develops past prototype, you can choose to export an mbed project by right-clicking on it:
- All the core features you expect from a code editor including syntax highlighting, standard editor keyboard shortcuts, copy/paste, etc
- Personal workspace with multiple files, folders, programs, including drag and drop folder interface
- Code auto-formatter, print-friendly code preview
- Pre-configured compile engine that "just works", delivering .bin binary file to save to mbed microcontroller
- Switch between different mbed targets with a drop-down selector
- Output of compile-time messages, including click to go to error and error message wiki
- Build information including graphical display of code size and RAM usage
Built-in Version Control and Collaboration tools
- Built-in version control (DVCS)
- Publish, fork, push and pull code in collaboration-enabled environment
- View graphs, diffs, change sets
Importing and Exporting
- Import programs from online catalogue of published programs
- Publish your code directly from the mbed Compiler to the mbed Developer Website
- Import from and export to local source files and zip archives
- Export directly to other popular ARM toolchains