tree: 9bf75a0db9f731eb2a9aaa3836b0cd1aafecf7b0 [path history] [tgz]
  1. include/
  2. src/
  3. pkg.yml
  4. README.md
versions/v1_4_0/mynewt-core/boot/split/README.md

Overview

libs/split is a library required to build split applications. When building a split application you must include libs/split in your loader and your application

Split Image

Split applications allow the user to build the application content separate from the library content by splitting an application into two pieces:

  • A “loader” which contains a separate application that can perform upgrades and manage split images
  • A “split app” which contains the main application content and references the libraries in the loader by static linkage

See split image architecture for the details of split image design.

Contents

libs/split contains the following components

  • The split app configuration which tells the system whether to run the “loader” or the “app”
  • The newrmgr commands to access split functionality
  • The functions used by the loader to check and run a split application

Examples

Split App

Your split application and loader must initialize the library by calling

#include "split/split.h"
void split_app_init(void);

This registers the configuration and commands for split applications.

Loader

Your loader can call

int split_app_go(void **entry, int toBoot);

to check whether the split application can be run. A example is shown below

#include "split/split.h"
#include "bootutil/bootutil.h"
    {
        void *entry;
        rc = split_app_go(&entry, true);
        if(rc == 0) {
            system_start(entry);
        }
    }