This page is available in: en

What’s the difference between ITRON and T-Engine?

Written by: Mohit Sindhwani, Viometrix

This question came up recently on the TE@Onghu Developer Forum/ BBS and it seemed that this hasn’t really been adequately answered in any place. I had posted an answer to the forum and thought that it would be good to copy the ideas here also so that it serves as a reference for people searching exactly that question.

In this article, I’m expanding the question slightly and will try to explain the difference between T-Engine, ITRON and T-Kernel.

Software versus Platform

The first thing that one must realize is that both ITRON and T-Engine provide a set of specifications for real-time and embedded systems. The specifications are agreed on by a set of members and are released to members and the public. So, in its simplest sense, both come with open specifications.

However, there is a big difference in what they specify. In the case of ITRON, the specifications are for a hard real-time operating system (RTOS). On the other hand, the T-Engine specifications cover a much larger set of items – in simple terms, it is said that the T-Engine is an open platform for the development and execution of real-time and embedded systems. While it seems like a simple enough statement, looking at each of the words in that sentence gives a much better understanding of what it means. I’m not going to take the words in sequence but look at them in a different order.

  • Platform: It’s important to note that the T-Engine is a platform. In this sense, the specifications for the T-Engine cover not only the software aspects of the system (such as the operating system, boot monitor support and device driver profiles), but they also go further and cover other items such as the hardware platform, the vendor code system, binary formats, development environment and so on. In that sense, it is a complete set that specifies a platform that can then be used for a variety of purposes. Naturally, this is a big difference from ITRON that specifies just the Operating System kernel (since the TRON in ITRON stands for The Realtime Operating Nucleus). However, if you really must compare, you should compare ITRON with the T-Kernel that is the standard RTOS in the T-Engine platform.
  • Open: Well, the T-Engine is open in the sense that it is openly specified upon consensus between members who participate in various standardization (or specification?) committees. The specifications are then made open to the public and can be used by the general public in any way they see fit as long as due credit is attributed. The ITRON specifications are also open and can be obtained by the public.
  • Open = Open Source? There is a common tendency today to consider open to be analogous in meaning to the term ‘open source’. In terms of open source credentials, the T-Kernel is, in fact, available in source form. The source code has been prepared and released by the T-Engine Forum and it centrally manages the release of the code. The source code can be used in any commercial or non-commercial project on a number of processors without any changes being required and without charge. Although developers are free to make any modifications to the RTOS as they feel are needed, there are certain restrictions relating to the disclosure of the modified source code. One must read the license, of course. On the other hand, ITRON was very much, just a specification. There is an open-source implementation of ITRON called TOPPERS/JSP but most ITRON implementations are commercial implementations that are available from a number of vendors, including semiconductor companies.
  • Realtime and Embedded Systems: The T-Engine platform squarely targets the area of realtime and embedded systems. Therefore, all the specifications are designed with the policy of reducing unnecessary overheads and minimizing or removing items that may affect the hard real-time nature of the system. In this sense, ITRON is the same – it is also a hard RTOS targeted at embedded systems.
  • Development and Execution: Finally, the platform is targeted at being a development platform first – this means that it is specifically created in a manner to allow a large amount of flexibility so that it behaves like a super-development platform (it has most things you need and more!). This is clearly shown in the amount of expansion support it has – PCMCIA, USB host, serial and bus expansion. Further, you can purchase a number of expansion boards for the bus expansion connector – most notably, you can get a bare board for any custom chips you may need to integrate or an FPGA board for prototyping digital modules in hardware (either before creating a special board, or before you create your system on a chip). That said, the T-Engine is not just a ‘development’ platform – it’s also a platform for ‘execution’. If you are going to ship only small quantities of your system to your customers, you could ship the T-Engine board itself. The T-Engine has been designed to look good and smart in a form factor similar to a slightly large PDA and not like a sprawled out development platform with a lots of wires running across it and too big to pass off as a product.

In short, that concludes a first look at the T-Engine itself. So, it’s clear that the T-Engine and ITRON are not the best entities to compare. If we wish to make a technical comparison, we need to compare ITRON against T-Kernel.

What’s the difference between ITRON and T-Kernel?

Both ITRON and T-Kernel are real-time operating systems. In many sense, T-Kernel is the evolution of ITRON and should be seen as such. Therefore, there are a number of technical enhancements in the T-Kernel. However, there are a few important differences between ITRON and T-Kernel. The main differences between T-Kernel and ITRON are as follows:

  1. Specification versus Source: In terms of deliverables from the T-Engine Forum, ITRON is only a specification. People who use the specification will build or buy an RTOS that is compatible with the specification. In the case of T-Kernel, the T-Engine Forum provides an implementation of the kernel in source form. This can be used under the conditions of the T-License.
  2. As mentioned, T-Kernel (the RTOS in the T-Engine) is an evolution of ITRON. However, it has a richer API that supports its goal of being a platform for middleware distribution.
  3. T-Kernel has a clear well-specified driver and subsystem guidelines to promote middleware distribution. ITRON focuses more on performance.
  4. T-Kernel has extensions that cover the use of virtual memory. ITRON does not.
  5. The single source of T-Kernel is written mostly in C but most ITRON implementations used to be written in C with a substantial amount of it also being written in assembly to support high performance on small-scale CPUs.
  6. The T-Kernel API is similar to the ITRON API although it includes more functions. Also, one big advantage of the T-Kernel API is that the API is very similar for kernel versions ranging from small-scaled CPUs (like 8-bit or 16-bit microcontrollers) all the way to multi-CPU implementations. ITRON was never designed with such wide scalability in mind.

This list summarizes the main differences between ITRON and T-Kernel. However, there is one more contender that you should consider when looking at TRON Project outputs – this one is called the μT-Kernel. The μT-Kernel is a version of the T-Kernel that is specifically targeted at small-scale embedded systems. The picture below shows the evolution of the different kernels in the T-Engine space. As can be seen, there is a clear intention to move from the ITRON family to the T-Kernel family. The T-Kernel family essentially shares the same API across all the processor types – this allows programs written for the smallest CPUs to be run largely unmodified even on multi-processor CPUs.

Picture from:

So, is ITRON dead?

I think it’s wrong to say that ITRON is dead. There is still a lot of work that is ongoing with ITRON and many companies have large numbers of products, applications and middleware that currently run on ITRON – and there’s no immediate reason to change. To get some idea of the products that are running on ITRON, take a look at the Products Catalogue [PDF, 18MB] issued by the TRON Association – it gives a long list of products based on T-Engine, T-Kernel and ITRON. (In reality, the list is incomplete because the TRON Association did not require users of ITRON to specify that they are using the ITRON specification – the list is therefore based on voluntary disclosures).

Further Reading

Check out the following to understand this better:

I hope that this article helps clear up some of the concepts.