/soletta-small-oses-samples

Soletta samples for Small OSes

Primary LanguageCApache License 2.0Apache-2.0

Soletta samples for Small OSes

Build instructions:

Inside a sample directory:
 make -C ../BUILD <os> BOARD=board_name [other targets]

Example:
 make -C ../BUILD zephyr BOARD=quark_se_devboard flash
 make -C ../BUILD riot BOARD=samr21-xpro debug

Supported OSes for the time being:
 - riot
 - zephyr

Building for RIOT requires the variable RIOTBASE set to the path where
the RIOT sources can be found, and copying the `libsoletta` directory under
RIOT to the pkg/ subdirectory in RIOT itself.

Building for Zephyr requires:
 - ZEPHYR_BASE pointing to the Zephyr sources
 - SOLETTA_BASE_DIR pointing to the Soletta sources
 - ZEPHYR_GCC_VARIANT set to the toolchain variant to use (usually, "zephyr")
 - ZEPHYR_SDK_INSTALL_DIR set to the path where Zephyr's SDK is installed

Each application contains its sources inside a src/ sub-directory, a
Makefile.application that configures the application, and optional
'config.$OS' directories where other per-application configuration files can
be found. What these files are may depend on the target OS, such as Zephyr
having a prj.conf file to configure the OS itself.
Other configuration files can be:
 - sol.conf: Override Soletta Kconfig variables
 - sol-flow.json: For FBP based applications, configures Flow parameters

All these configuration files may be include the board name targetted too, for
example:
 - sol_quark_se_devboard.conf
 - sol-flow_samr21-xpro.json
 - prj_qemux86.conf

TODO:
 - Make this README prettier/more instructive.
 - Less Makefiles, more scripts.
 - Handle dependencies better, so we don't rebuild things we don't need.
 - Add support for applications with custom node types.
 - Make plain C applications "configurable", as FBP ones are.
 - Try to detect which RIOT modules are needed based on Soletta's
   configuration, or at least make it per-application too.