# T-Kernel

T-Kernel is an open source real-time operating system (RTOS) designed for 32-bit microcontrollers. It is standardized by T-Engine Forum, which distributed it under T-License agreement. There is also a corresponding Micro T-Kernel (μT-Kernel) implementation designed for embedded systems with 16-bit or 8-bit microcontrollers.
Today, it is distributed by TRON Forum, a successor of T-Engine Forum under T-License 2.2.

## TRON real-time operating system family history

In 1984, Dr. Ken Sakamura, then a research assistant at the University of Tokyo, started The Real-time Operating system Nucleus (TRON Project) at the University of Tokyo, with a goal of designing an open real-time operating system (RTOS) kernel. The TRON framework tries to define a complete architecture for the different computing architecture layers to address the needs of different applications. Industrial TRON (ITRON) specification OS has been the most popular TRON architecture for OS kernel layer. ITRON specification promotion was done by the various companies which sold the commercial implementations.
A different RTOS developed in TRON Project was called BTRON. BTRON stands for Business TRON and was meant for desktop PC with windowing environment. In 1989, Matsushita Electric Industrial Co., Ltd., now known as Panasonic Corporation, introduced a TRON PC that used this BTRON OS. This personal computer had an Intel 80286 chip of 8 MHz and only 2 MB of memory, but it could display moving video. Also, it had a dual-booting system that could run both the BTRON OS and DOS. Although the Japanese government once announced it would use the TRON PC in Japanese schools, the plan was dropped, partly due to economic issues with the United States.
However, ITRON specification OS has been used in many devices, household appliances, automobile electronics, robots, satellites, and factory automation systems in Japan, China, and elsewhere. Embedded system developers claim that ITRON specification OS is the number one OS for embedded chips in both Japan and the United States.
T-Kernel was developed as a successor to the ITRON specification RTOS. T-Kernel is the name of the specification and at the same time a single implementation based on the authorized source code available from TRON Forum (formerly T-Engine Forum) for free under T-License 2.2. T-Kernel was developed for T-Engine hardware platform. T-Engine was arguably the most advanced ubiquitous computing platform in the world when it was released.
Now some users have begun transitioning from ITRON specification OS to μT-Kernel.
The Japanese domestic rocket Epsilon, which was launched in September 2013, and the observatory satellite HISAKI, which was put into the earth orbit, used μITRON and T-Kernel respectively. T-Kernel 2.0 was used for the control system of Hayabusa2 launched by H-IIA rocket on December 3, 2014.
On December 11, 2017, it was announced that a copyright transfer agreement for μT-Kernel 2.0 specification had been signed with Institute of Electrical and Electronics Engineers (IEEE).
On September 11, 2018, "IEEE 2050-2018," standard based on "μT-Kernel 2.0" was officially approved as an IEEE standard.
In May 2023, the IEEE recognized the RTOS, proposed, created, and released by TRON Project, as an IEEE Milestone, titled "TRON Real-time Operating System Family, 1984." The certified Milestone plaque is installed on the campus of the University of Tokyo, where Ken Sakamura started TRON Project in 1984.

## Early T-Kernel history

T-Kernel was released as an embedded RTOS for T-Engine. With subsequent version upgrades, it now supports target hardware other than T-Engine.
T-Kernel 2.0 also supports a processor emulator called QEMU. The T-Kernel 2.0 Software Package distributed by TRON Forum includes QEMU (emulator for tef_em1d) configured to emulate T-Engine reference board, so it is possible to develop T-Kernel 2.0 applications on a PC alone.
Similar to the conventional ITRON specification OS, T-Kernel allows kernel-based programming using static memory allocation. However, in order to achieve the original purpose of T-Engine, which is "distribution of middleware", it is desirable to be able to use T-Kernel/Standard Extension, which allows dynamic memory allocation and process-based programming.

## Overview

To make it easy to distribute middleware, T-Kernel has separate specification for subsystem and device driver which will be suitable for different types of middleware APIs. An RTOS appropriate for individual application can be created by combining the middleware called T-Kernel Extension with T-Kernel. T-Monitor initializes computer hardware and handles the interrupt set up at the start. T-Monitor lessens hardware-dependency of T-Kernel, and improves the application portability.

## Structure of T-Kernel

T-Kernel consists of the following three components from the viewpoint of function.

### T-Kernel/OS (operating system)

This offers the basic functions as RTOS. (Functions corresponding to μITRON's functions are mainly handled by this component.)

### T-Kernel/SM (system manager)

This offers the functions including system memory management function and address space management function in order to manage middleware such as device drivers and subsystems. This component has been extended from μITRON in T-Kernel.

### T-Kernel/DS (debugger support)

This offers the functions for debuggers to be used in development tools.

## License of T-Kernel

The source code of T-Kernel was distributed free of charge by TRON Forum under its own license called T-License. As of September 2024, software such as T-Kernel and μT-Kernel has been released as open source based on T-License 2.2, and can be used free of charge, including for commercial use. With the original T-License, the source code could be freely modified, and it was free for both personal use and commercial use when incorporated into a product. However, under the "Single One Source" policy of T-Kernel, it was not possible to freely redistribute the source code under the original T-License. T-License 2.0 has been improved to allow the redistribution of original source code and the distribution of modified source code, giving users more freedom in terms of source code distribution.

## Development environment

eBinder from eSol Corporation is one commonly used integrated development environment (IDE) for software cross-development targeting T-Kernel.
The current release of T-Kernel 2.0 is distributed with a plug-in for Eclipse IDE. Also, a version of T-Kernel that runs on QEMU based emulator, and the QEMU based emulator itself, are available so that testing, training, and development can be done on a PC without a target hardware. It is supported by popular SSL/TLS libraries such as wolfSSL.

## Development of additional T-Kernel series

In line with the diversification of target hardware, T-Kernel with additional features has been developed such as MP T-Kernel, which supports multiprocessors and multicores, and μT-Kernel, which targets small-scale embedded systems, and the specifications and source code for each are also publicly available in BOTH Japanese and English.

### MP T-Kernel

There are two types of multiprocessors: Asymmetric Multiple Processor (AMP) and Symmetric Multiple Processor (SMP). T-Kernel for AMP is called AMP T-Kernel, and T-Kernel for SMP is called SMP T-Kernel. Both T-Kernels are collectively called MP T-Kernel.

### AMP T-Kernel

This MP T-Kernel supports asymmetric multiple processors (AMP).
AMP systems in general consist of multiple processors (each processor does not need to be the same type). Since a copy of AMP T-Kernel is assigned to each processor, there will be the same number of AMP T-Kernels as processors in the entire system.
Each AMP T-Kernel has functions to synchronize and communicate with other AMP T-Kernels in the system. These functions between processors in AMP T-Kernel have been expanded from the interprocess synchronization and communication functions of T-Kernel 1.00 so that they can be used between processors.
User programs are executed on one of the AMP T-Kernels, and by using the synchronization and communication functions of the AMP T-Kernel, it is possible to synchronize and communicate with user programs on other AMP T-Kernels.

### SMP T-Kernel

This MP T-Kernel supports symmetric multiple processors (SMP).
SMP systems in general consist of multiple processors of the same type. Each processor has the same basic functions, and the same program code can be executed, and the main memory can be shared by all processors.
All processors are managed by a single copy of SMP T-Kernel.
Programs managed and executed by T-Kernel are dynamically allocated to a processor. Task scheduling and object management are centrally managed by the single copy of SMP T-Kernel for the entire system.
User programs do not need to be aware of individual processors. Similar to a user program for T-Kernel on a single processor, a program runs on a single SMP T-Kernel.

### μT-Kernel

It is an RTOS for small-scale embedded systems.
μT-Kernel specification is designed to be easily optimized and adapted for small-scale embedded systems. On the other hand, in order to ensure compatibility with T-Kernel, the functions that are common to T-Kernel are defined using the same interface, and the data type definitions are also the same as those used in T-Kernel.
μT-Kernel source code is available as reference code on the TRON Forum website.
From μT-Kernel 3.0, the source code and specifications have also been made available on GitHub.