ThreadX

ThreadXは、アメリカ合衆国カリフォルニア州サンディエゴのExpress Logic社によって開発・販売されている、高度に決定論的な組み込みリアルタイムオペレーティングシステム であり、主にC言語で書かれている。 Express Logic社は、2019年4月18日に非公開の買収金額でマイクロソフト社に買収された。

1. 概要
-----

ThreadXの作者はWilliam Lamieであり、Express Logic社の社長兼CEOを務めている。

ThreadXの名称は、スレッドが実行可能な要素であることと、コンテキストスイッチを意味する「X」の文字に由来している。ThreadXは、優先度付きのプリエンプティブなスケジューリングと、高速な割り込みレスポンス、メモリー管理、スレッド間通信、排他制御、イベント通知、スレッド同期の機能を提供する。 ThreadXに特徴的な主な機能としては、preemption-threshold、優先度継承、効率的なタイマー管理、ピコカーネル設計、event-chaining、高度なソフトウエアタイマー、コンパクトなサイズがある。ThreadXの最小サイズは、ARMのプロセッサー上で2KB程度である。

ThreadXはAMPとSMPの両方のマルチコア環境をサポートしている。モジュールを利用することで、MMUやMPUによるメモリー保護を活用して、アプリケーションスレッドを分離することも可能である。

ThreadXは、TUVとULからextensive safety certificateを与えられており、MISRA Cにも準拠している。

ThreadXは、Express Logic社のX-Ware IoTプラットフォームの基盤であり、X-Wave IoTプラットフォームは、組み込みファイルシステムサポート、組み込みUIサポート、組み込みTCP/IPとクラウド接続、USBサポートを含んでいる。ThreadXは、開発者から高い評価を得ており、非常に幅広く利用されているRTOSである。 市場調査会社であるVDC Research社によると、ThreadX RTOSは、 家電製品からネットワーク機器、SoCまで、2017年時点で62億台以上の機器で利用されている。

ThreadXは、ソースコードが提供され、ロイヤリティーフリーで利用できるマーケティングモデルで提供されている

2. サポートされたプラットフォーム
------------------

アナログ・デバイセズ
Blackfin
CM4xx
Precision Microcontrollers
SHARC
ULP Microcontrollers
ARMアーキテクチャ
ARM7
ARM9
ARM Cortex-A
ARM Cortex-R
ARM Cortex-M
ARM Cortex-A 64-bit
ARMv8M TrustZone
Cadence
Xtensa
CEVA
TeakLite-III
EnSilica
eSi-RISC
Infineon
XMC1000
XMC4000
Intel
Nios II
Cyclone
Arria 10
X86
Microchip
AVR32
PIC24
dsPIC33
PIC32
SAM C-V
SAM9
SAMA5
MIPSアーキテクチャ
MIPS32 4Kx
MIPS32 14Kx
MIPS32 24Kx
MIPS32 34Kx
MIPS32 74Kx
MIPS32 1004Kx
interAptiv
microAptiv
proAptiv
M-Class
NXP
ColdFire+/ColdFire
i.MX
Kinetis
LPC
PowerPC
S32
ルネサス
H8/300H
RX
RZ
SH
Synergy
V850
ST
STM32F0
STM32F1
STM32F2
STM32F3
STM32F4
STM32F7
STM32L
Silicon Labs
Gecko
Giant Gecko
Giant Gecko S1
Happy Gecko
Jade Gecko
Leopard Gecko
Pearl Gecko
Tiny Gecko
Wonder Gecko
Zero Gecko
シノプシス
ARC 600
ARC 700
ARC EM
ARC HS
テキサス・インスツルメンツ
C674x
C64x+
Hercules
MSP430
SimpleLink MSP432
Sitara
Tiva-C
ザイリンクス
Microblaze
Zynq-7000
Zynq UltraScale+

3. 歴史
-----

ThreadXは、1997年に初めて提供された。ThreadX 4は2001年に、ThreadX 5は2005年に提供が開始された。ThreadX 5が最新バージョンである。

FileX組み込みファイルシステムサポートは1999年に提供が開始された。

NetX組み込みTCP/IPネットワーキングスタックは2002年に提供が開始された。

USBX組み込みUSBサポートは2009年に提供が開始された。

ThreadX SMPは、2009年に提供が開始された。

ThreadX Modules2011年に提供が開始された。

2013年にThreadXはTUV IEC 61508 safety certificationを取得した。また、2014年にはUL 60730 certificateを取得した。

GUIX組み込みUIは2014年に提供が開始された

2017年のVDC Research社の調査によると、ThreadXは62億台以上で利用される最も広く使われるRTOSの一つである。

2019年4月18日にExpress Logic社は、非公開の買収金額でマイクロソフト社に買収された。

4. 技術
-----

ThreadXは、preemption-thresholdと呼ばれるプロプライエタリーな機能によって、優先度付きのプリエンプティブなスケジューリングアルゴリズムを実装している。Preemption-thresholdは、クリティカルセクションにおける細かな粒度と、コンテクストスイッチの削減を提供する。

ThreadXはevent chainingと呼ばれる独自の構造を提供する。これにより、アプリケーションは外部イベントで起動される全てのAPIに対してコールバック関数を登録することができる。これにより、アプリケーションはThreadX内の様々な公開されたオブジェクトに対して連結することができ、一つのスレッドが複数のオブジェクトを効果的にブロックすることができる。

ThreadXは、他にもカウンティングセマフォや優先度の継承が可能な排他制御、イベントフラグ、メッセージキュー、ソフトウエアタイマー、固定長メモリーブロック、可変長メモリーの機能を提供している。リソースをブロックするThreadXの全てのAPIは、タイムアウトを設定可能である。

ThreadXはAMPとSMPによるマルチコアサポートを提供する。アプリケーションコードの分離は、ThreadX Modulesコンポーネントにより利用可能である。

5. 主なコンポーネント
------------

ThreadX RTOSのコンポーネントは以下のようである。

組み込みファイルシステム
組み込みグラフィカルユーザーインターフェイス
組み込みネットワーキング
組み込みUSB
Safety certification
パッケージング

6. 組み込みファイルシステム
---------------

FileXは、ThreadXの組み込みファイルシステムである。 FileXはFAT12とFAT16、FAT32、exFAT形式をサポートする。exFATはFATのファイル容量制限を4GB以上に拡張したものであり、 ビデオファイルで特に有用である。exFATを利用するには、マイクロソフト社から直接ライセンスを得る必要があるのには注意が必要である。FileXは障害許容性と、フラッシュメモリーのウェアレベリングサポートであるLevelXと呼ばれる製品を使ってNORまたはNANDフラッシュメディアを直接利用する機能も提供する。

7. 組み込みグラフィカルユーザーインターフェイス
-------------------------

GUIXはThreadX用の組み込みUIである。GUIXはThreadXを利用した組み込みアプリケーションに2次元グラフィックスランタイム環境を提供する。GUIXは、様々な画面解像度と色深度を持つ複数のディスプレイをサポートする。多くの定義済みのウィジェットが利用可能である。GUIX Studioと呼ばれるWIndows用のWYSIWYGホストツールを利用することで、ランタイムで実行可能なGUIX用のCのコードを自動的に生成することができる。

8. 組み込みネットワーキング
---------------

NetX Duoは、ThreadX用のTCP/IPシステムである。NetX Duoは、IPv4とIPv6の両方をサポートし、ARPやAutoIP、DHCP、DNS、DNS-SD、FTP、HTTP、ICMP、IGMP、mDNS、POP3、PPP、PPPoE、RARP、TFTP、SNTP、SMTP、SNMP、TELNETなどのプロトコルをサポートしている。IPレイヤーでのネットワークセキュリティーは、IPsecによって提供される。TCPまたはUDPのソケットレイヤーでのセキュリティーは、それぞれTLSとDTLSにより提供される。IoTクラウドプロトコルとしては、CoAPやMQTT、LWM2Mなどが提供される。NetXはThreadと6LoWPANもサポートする。2017年に、ThreadXとNetX Duoは、Threadの認証製品となった。

9. 組み込みUSB
----------

USBXは、ThreadXの組み込みUSBシステムである。USBXはホストとデバイスの両方をサポートする。ホストコントローラーとしては、EHCIとOHCIに加え、プロプライエタリーなUSBホストコントローラーもサポートする。USBXはOTGもサポートする。USBXはクラス等としてオーディオやASIX、CDC/ACM、CDC/ECM、DFU、GSER、HID、PIMA、プリンター、Prolific、RNDIS、ストレージをサポートする。

10. Safety certification
------------------------

ThreadXとFileX、NetX Duoは、IEC 61508 SIL 4とIEC 62304 Class C、ISO 26262 ASIL D、EN 50128 SW-SIL 4の各安全基準についてSGS-TUV Soarにより事前に認証済みである。

ThreadXとFileX、NetX Duoは、UL/IEC 60730とUL/IEC 60335,UL 1998についても事前に認証済みである。

ThreadXとFileX、NetX Duoは、様々な軍事企業と宇宙航空企業により、DO-178標準の認証済みでもある。wolfSSLといった著名にSSL/TLSライブラリーのサポートもある。

11. パッケージ化
----------

2017年の時点で、ThreadXはX-Ware IoTプラットフォームの一部として、全体のソースコードが付属し、ランタイムのロイヤリティーなしでパッケージ化されている。

12. ThreadXを利用する製品
------------------

主要なThreadXを利用した製品として、小型のウェアラブルデバイスからHP社のプリンター、NASAのディープインパクトスペースプローブまでが挙げられる。

13. 関連項目
--------

Intel Management Engine 

14. 脚注
------

15. 外部リンク
---------

[1]
[2] at Express Logic