ThreadX

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

概要 
ThreadXの作者(1990年のNucleus RTOSの作者でもある)は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プラットフォームは、組み込みファイルシステムサポート(FileX)、組み込みUIサポート(GUIX)、組み込みTCP/IPとクラウド接続(NetX/NetX Duo)、USBサポート(USBX)を含んでいる。ThreadXは、開発者から高い評価を得ており、非常に幅広く利用されているRTOSである。
市場調査会社であるVDC Research社によると、ThreadX RTOSは、
家電製品からネットワーク機器、SoCまで、2017年時点で62億台以上の機器で利用されている。

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

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

 アナログ・デバイセズ
 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+

歴史 
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社は、非公開の買収金額でマイクロソフト社に買収された。

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

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

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

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

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

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

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

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

組み込みネットワーキング 
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の認証製品となった。

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

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ライブラリーのサポートもある。

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

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

関連項目 
 Intel Management Engine (ME)

脚注

外部リンク 
Express Logic, Inc.
ThreadX Information at Express Logic

1997年のソフトウェア
リアルタイムオペレーティングシステム
組み込みオペレーティングシステム