Design Policy of μT-Kernel 3.0

μT-Kernel 3.0 specification defines an embedded real-time OS with small resource footprint meant for controlling IoT edge devices. μT-Kernel improves development efficiency and interoperability of the software by standardizing basic OS functions and API specification. It is designed to deliver high performance even on a lower-end single-chip microcontroller unit (MCU), including 16-bit MCU, MCUs without a memory management unit (MMU), and small-scale embedded systems with a small amount ROM/RAM. Furthermore, μT-Kernel has functions such as device driver control and power saving, so it can build low-power systems in which various types of devices and communication methods are embedded for building an IoT network.

The %utk 3.0 specification defines a standard for an RTOS, and it can be implemented on many types of CPUs irrespective of CPU architectures. At the same time, the designers are aware that it makes sense to adapt the OS implementation or limit the OS functions in the case of very resource-poor systems in order to cope with a particular choice of CPU and hardware configuration as in the case of tiny IoT edge nodes. To cope with such situations, a concept and description of "service profile" has been introduced in %utk to leave room for the flexible implementation of the OS, at the same time retaining the compatibility of software and portability. Service profile makes it possible to formally describe the omission and/or difference of functions available in a particular implementation of the OS. This makes it easy for middleware and applications that run under the OS to learn and cope with the implementation-dependent differences.

The %utk 3.0 specification includes common definitions such as data types, the state transition of tasks, which are the basic units of parallel execution inside programs, non-task behavior such as that of interrupt handler, and API specifications provided by the OS. File system management, network communication, process management, etc., are not included in the %utk 3.0 specification. However, by adding appropriate middleware packages, we can build relatively large systems using %utk 3.0. That is, %utk 3.0 can be used as a microkernel for a large system that has functions such as file system management, network communication, and process management. It can be extended to support multi-core processors as well.