Skip to content

Build System

Mira comes with a build system based on GNU Makefiles to build, link and flash the example applications. It assumes the needed programs are in the program search path (PATH).

Example

A minimal Makefile using Mira's build system is:

PROJECT_NAME = our_app

TARGET ?= nrf52832ble-os
LIBDIR ?= $(CURDIR)/../../..

SOURCE_FILES = \
        main.c

include $(LIBDIR)/Makefile.include

Variables

The following variables can be set in makefiles (or on the command line to make):

  • CFLAGS - arguments passed to the compiler.
  • LDSCRIPT - the name of the linker script used (default depends on TARGET).
  • LDSCRIPT_DIR - where $(LDSCRIPT) is (default depends on TARGET).
  • LIBDIR - dir where the mira archive is.
  • LIBNAME - default libmira.a, usually never changed.
  • PROJECT_NAME - the name of the project. It becomes part of the generated output files.
  • SOURCE_FILES - the source files, subdirectories also works.
  • TARGET - a pair of MCU and library type, available targets can be seen in the $(LIBDIR)/platforms dir.
  • V - set to 1 to turn on verbose output from make.

Extra variables for nRF52 targets

  • APPROTECT_DISABLED - set to yes to disable setting app protect.
  • ISR_VECTOR_FILE - for nrf52-targets, set when a custom isr_vector.c file is used.
  • LFCLK_SOURCE - valid values are CRYSTAL, EXTERNAL_BYPASS_ENABLED and EXTERNAL_BYPASS_DISABLED. Used to control LFCLK source.

Extra variables for mkw41z targets

  • STARTUP_FILE - points out the startup_MKW41Z4.S file, if not provided uses a default one.

make targets

all (the default target) and target

Builds a hex and elf file for the application. The names will be $(PROJECT_NAME)-$(TARGET).elf/hex.

To build for a different target, either update the TARGET line in the Makefile or write TARGET=mkw41z-os, TARGET=nrf52840ble-os etc after make.

miradocs

Opens Mira's documentation in the browser. Please note that the search function doesn't work when viewing the documentation directly from the file system. The documentation must be served from a webserver for the search function to work. That can be done with: cd $LIBDIR/docs/html; python3 -m http.server.

Python's web server will show the URL to access the documentation.

flashall

Builds (if needed) and tries to flash all connected boards.

flash.serial

Use this target to flash a single board. Available serial numbers can be shown with:

$ nrfjprog --ids
987654321
123456789
000112233

To flash the board with ID 123456789 run: make flash.123456789.

flashbut.serial

This target flashes all connected boards, except the one with the provided serial number.

clean

The clean target removes the files that are created for the current $(TARGET).

C definitions/macros

  • MIRA_STACK_CONFIG_OS - for *-os targets

Extra definitions For mkw41z

  • MIRA_PLATFORM_MKW41Z

Extra definitions for nrf52832

  • MIRA_PLATFORM_NRF52832BLE
  • NRF52832_XXAA

Extra definitions for nrf52840

  • MIRA_PLATFORM_NRF52840BLE
  • NRF52840_XXAA
  • MIRA_MULTICHAN_AVAILABLE
Back to top