= Introduction = [http://www.mutekh.org/ MutekH] is a free and portable operating system for embedded platforms, ranging from micro-controller to multiprocessor systems. MutekH is very modular as it is [http://en.wikipedia.org/wiki/Exokernel exokernel] based; it is composed of the Hexo hardware abstraction layer and the Mutek base kernel. The exokernel comes with several operating system interface libraries and services libraries. It was designed to be easily extended with new libraries and platform support, and allows development of kernel land and user land applications. It is fully configurable to match every application needs and platform constraints. MutekH is currently used in several research projects, laboratories and universities and is actively developed. It was originally started at the [http://www-soc.lip6.fr/ SoC] department of the [http://www.lip6.fr/ LIP6] Laboratory ([http://www.upmc.fr/ UPMC] in Paris). A list of major contributors is available [wiki:Contributors here]. The MutekhManifesto page gives more details about project goals. = Software architecture = MutekH is composed of the following major components: * The Hexo hardware abstraction layer which deals with processor and hardware platform abstraction and is capable of processor heterogeneity. * The Mutek kernel which offer various usual kernel base features in a configurable manner. * Some operating system interface libraries for kernel land or user land applications. * Some kernel services libraries. * Device and file system drivers. [[Image(global_view.png,nolink)]] = Platform support = MutekH currently supports the following platforms: * [wiki:Arch/Soclib Soclib] multiprocessor platforms with Arm, Mips32 and !PowerPc processor support. * [wiki:Arch/IbmPc Pc platform] with x86 multiprocessor support, runs natively or on emulators like qemu. * [wiki:Arch/Simple Simple platforms] with single processor (i.e. micro-controller platforms) * [wiki:Arch/Emu Unix processes] emulation which enables kernel and application to execute natively, embedded in Linux or OsX process(es). = Getting started = Several documents are available to help you start using MutekH. You may also want to [https://www.mutekh.org/wws/subscribe/mutekh-users subscribe] to the mutekh-users list. * The [wiki:QuickStartUnix MutekH as Unix process quick start guide] is a step by step guide to run MutekH embedded in a GNU/Linux or !MacOs user process. * The [wiki:BuildingExamples] page briefly explains how to build example applications. * The [wiki:Arch/Soclib/Tutorial MutekH/SoCLib tutorial] is a step by step guide to write a simple MutekH application for a customizable Soclib multi-processor hardware simulator, intended for mixed software/hardware development. * The [wiki:QuickStartSoclib MutekH quick start guide for SoCLib] is a step by step quide to run MutekH over a complex SoCLib hardware simulator capable of processor heterogeneity, intended for kernel software developers. * [https://www.soclib.fr/ SoCLib] provides a virtual machine image containing some sample platforms and applications based on MutekH. More advanced topics are available: * [wiki:UsingMutekH/Sam7 Using MutekH on a AT91SAM7] Arm micro-controller based platform. = Modules overview = Several modules are available: * Base modules * Hexo HAL (hexo) * Mutek base kernel (mutek) * C library (libc) * Container library (gpct) * [wiki:Drivers Device drivers] for various peripherals * Operating system interface libraries * Native Posix threads support (libpthread) * A native implementation of [https://alchemy.futurs.inria.fr/capsule/ Capsule] parallel programming library. (libcapsule) * [https://www.soclib.fr/trac/dev/wiki/Tools/Muteks MutekS], a static OS for [https://www-asim.lip6.fr/trac/dsx DSX] SoC design tool (libsrl) * Unix library (development just started) (libunix) * Major services libraries: * TPC/IP stack networking library (libnetwork) * File system support library (libvfs) along with file system drivers (FAT 16/32, ISO9660, RamFS, NFS) * ELF binary file format handling library (libelf) * Flattened device tree library (libfdt) * Other useful libraries: * [http://www.lua.org/ Lua] scripting library (liblua) * [http://www.netlib.org/fdlibm/ Fdlibm] standard math library (libm) * [http://savannah.nongnu.org/projects/libtermui/ LibTermUI] Ansi terminal driver and getline library (libtermui) * A simple cryptographic library (libcrypto) = Applications = MutekH is used in various projects, some successfully ported and well known applications include: * H264 video decoder (multiprocessor) * MJPEG and Theora video decoder (multiprocessor) * [http://www.capsl.udel.edu/splash/ Splash] benchmarks. * [http://en.wikipedia.org/wiki/Doom_%28video_game%29 Doom] video game with network support * Various application using the [http://www.lua.org Lua] script engine = Documentation = Quickstart and tutorial documents: * See [#Gettingstarted Getting started] section for start guides. * [PortingYourApp Porting your application] * [wiki:UsingMutekH/Sam7 Using MutekH on a AT91SAM7] * [wiki:UsingMutekH/LuaMicroShell Using the lua_microshell example] Developers documentation: * [http://www.mutekh.org/www/mutekh_api/ MutekH API reference manual] * Writing [wiki:HeaderDoc header documentation] for the API reference manual. * Using the BuildSystem * [NewDriver Adding a driver], or [NewDriverClass adding a new driver class] * using [FlattenedDeviceTree Flattened device trees] to describe hardware. * Usage of IntegerTypes in MutekH = Getting the source = MutekH is being actively developed, no tarball releases are available yet. Latest source code can be downloaded from the svn source tree: {{{ svn co https://www.mutekh.org/svn/trunk/mutekh/ }}} = Contact = * A mailing list is available for questions, announcements... You may freely [https://www.mutekh.org/wws/subscribe/mutekh-users subscribe here]. = Developer resources = * [http://services.ssji.net/mutekh/ Buildbot status]