Mistake on this page? Email us

Application development flow

Preparing your device

Tip: for a list of supported devices, see our hardware requirements.

MBL applications are not compiled together with the MBL codebase or with any Pelion Device Management credentials (unlike Mbed OS, where the codebase, credentials and application form a single binary). This method allows you to deploy and manage multiple applications on a single device, but it requires some preparation work: To install applications on the device, you first need to install MBL and provision Device Management credentials on that device.

Build examples

MBL applications run as containers from images prepared with Docker. A container has:

  • Your application's executable files and scripts.
  • A config.json file that lists the device resources, such as hardware or persistent memory, the application container can access. It also carries instructions for the device on how to run the application.

More information about containers and packages is available in our Reference section.

There are many ways to create applications that can be packaged in the IPK format so that the MBL application framework can install and run them. For our example applications, we use a Docker cross-compiling tool, dockcross, which has a standard image with everything we need to compile C and C++ applications for Linux on ARMv7. We add our own layer on top of the standard dockross image, and that layer includes the tools to create an IPK package (opkg-utils). The resulting cross-compilation docker image, referred to here as mbl-dockcross, takes a standard MakeFile and builds according to its instructions:

  1. Builds the application using mbl-dockcross to cross-compile.
  2. Creates an OCI bundle, the container, which combines our built application and our configuration file.
  3. Creates an IPK file. This is the file format the MBL's package manager - which installs applications - can handle.

We then put our IPK into a TAR, to match the requirements of the Device Management Update service.

The Hello World C application is entirely self contained. It has just one file to build - hello_world.c - and a config.json defining how to run the application on the device. The config.json doesn't give the application any special access to the device's software or hardware resources; the application doesn't even use the device's C runtime library, as it is statically compiled. It uses a MakeFile and mbl-dockcross to cross-compile.

More information about containers is available in the application FAQ.

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.