Menu

Tree [577a13] master /
 History

HTTPS access


File Date Author Commit
 apps 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 arduino 2017-03-25 m0slevin m0slevin [1985f8] Text cleanup
 bootloader 2017-03-25 m0slevin m0slevin [1985f8] Text cleanup
 build 2017-02-04 m0slevin m0slevin [340200] Minor tweaks to cmake for linux build
 docs 2016-12-30 m0slevin m0slevin [5fab6e] Updating + regenerating documentation
 drivers 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 examples 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 fonts 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 kernel 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 libs 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 scripts 2016-12-28 m0slevin m0slevin [f3c052] - Moving tools sources into embedded/util/sources.
 tests 2017-03-25 m0slevin m0slevin [9b7756] Text Stuff
 util 2016-12-28 m0slevin m0slevin [f3c052] - Moving tools sources into embedded/util/sources.
 .clang-format 2016-07-29 m0slevin m0slevin [260e2c] Adding clang-format style file
 CMakeLists.txt 2017-02-04 m0slevin m0slevin [488ad8] Preliminary cmake support
 base.mak 2016-12-28 m0slevin m0slevin [f3c052] - Moving tools sources into embedded/util/sources.
 build.mak 2016-12-30 Mark Slevinsky Mark Slevinsky [282311] Fixing build makefile to correctly generate sta...
 license.txt 2016-12-28 m0slevin m0slevin [f3c052] - Moving tools sources into embedded/util/sources.
 makefile 2016-12-28 m0slevin m0slevin [f3c052] - Moving tools sources into embedded/util/sources.
 mark3.cmake 2017-02-04 m0slevin m0slevin [b1a876] adding missing cmake
 readme.txt 2017-04-24 m0slevin m0slevin [577a13] updating readme

Read Me

The Mark3 Real-time Operating System

Introduction

Mark3 is a real-time development platform for AVR, MSP430, and ARM Cortex-M series microcontrollers written using C++.  It features a fully-featured RTOS kernel, device drivers, and middleware, as well as a suite of examples and unit tests.  

Due to being written in C++ for AVR using the GCC toolchain, it also integrates directly into Arduino, without additional modifications to the source.
Directory Layout

arduino		Scripts and staging directory for exporting Mark3 for Arduino
bootloader	Source and makefiles for the Mark3 Bootloader
build		Platform/variant/toolchain specific build configuration files 
docs        Full PDF and HTML documentaiton
drivers		Device driver libraries
examples    Application code examples
export		Source-code export folder, used by export scripts
fonts		Fonts converted from TTF to bitmapped, C++ library fonts 
kernel		Main RTOS kernel code
libs        Optional support libraries and middleware
scripts		Build and test script folder
stage		Directory where binaries/headers are published at build
tests		Unit testing framework
util        Utility programs

Building from source using the make-based build system:

To build from source, the Mark3 build system requires the following:

	A supported toolchain (i.e. gcc-avr, arm-none-eabi-gcc)
	make support

For example, on debian-based distributions, such as Ubuntu, the avr toolchain can be installed using:

	apt-get install avr-libc gcc-avr

On Windows, the toolchain is provided as part of AVRStudio.  Please see the “Build System” section of the docs for instructions on configuring the system on Windows.

Once a sane build environment has been created, the kernel, libraries, examples and tests can be built by running ./scripts/build.sh from the root directory.  By default, Mark3 builds for the atmega328p target, but the target can be selected by manually configuring environment variables, or by running the ./scripts/set_target.sh script as follows:

	. ./scripts/set_target.sh <architecture> <variant> <toolchain>

	Where: 
	 <architecture> is the target CPU architecture(i.e. avr, msp430, cm0, cm3, cm4f)
	 <variant>		is the part name (i.e. atmega328p, msp430f2274, generic)
	 <toolchain>	is the build toolchain (i.e. gcc)

For example, to build the kernel for a generic ARM Cortex-M0 using a pre-configured arm-none-eabi-gcc toolchain, one would run the following commands:

	. ./scripts/set_target.sh cm0 generic gcc
	./scripts/build.sh

Building from source using the CMake-based build-system:

To build via CMake, a user requires a suitable, supported toolchain (i.e. gcc-avr, arm-none-eabi-gcc),
 CMake 3.4.2 or higher, and a backend supported by CMake (i.e. Ninja build)

The build can be configured by creating an output folder:

    mkdir kbuild

And then initializing the build system withing that folder:

    export ROOT_DIR=$(pwd)
    cd kbuild
    cmake .. -DCMAKE_TOOLCHAIN_FILE=../mark3.cmake -Dmark3_arch=<cpu type> -Dmark3_variant=<variant> \ 
             -Dmark3_toolchain=<toolchain type> -Dmark3_root_dir=<full path to project directory> -GNinja        
    
The full build can be run by executing the backend build command:

    ninja 
    
To build just the kernel, build the following target

    ninja mark3

Note that not all targets will build in all kernel configurations.
    
Supported targets:

Currently, Mark3 supports the following parts:

	atmega328p
	atmega644
	atmega1284p
	atxmega256a3 (*experimental)
	atmega1280
	atmega2560
	msp430f2274
	ARM Cortex-M0 (generic)
	ARM Cortex-M3 (generic)
	ARM Cortex-M4 (generic, floating point)
	samd20 (cortex M0)

Additional Documentation

Please see the doxygen documentation in the ./docs folder for more information.   A lot of work has gone into documenting the project, and that's the best place to start if you have any questions.  The code examples are fairly comprehensive (as are the unit tests), so these should be referenced as necessary.  And of course, the source is very well-documented, so don't be afraid to browse through it.

Contact
Email Funkenstein Software for any additional queries or comments:
	info@mark3os.com

The official website for the project is located at:
	http://mark3os.com
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.