ThreadX は、主にC 言語でプログラミングされた組み込みリアルタイムオペレーティングシステム(RTOS)です。元々はExpress Logic が開発したThreadXとして 1997 年にリリースされましたが、後に Express Logic がMicrosoftに買収された後、Azure RTOS (2019 年) に改名され[ 2 ]、最近ではEclipse Foundation の管理下でフリーのオープンソースモデルに移行した後、 Eclipse ThreadX (2023 年) または略称の「ThreadX」に再び改名されました[ 3 ]。
1997年、米国カリフォルニア州サンディエゴのExpress Logic社によってThreadXが初めてリリースされ、販売されました。開発者は、NucleusおよびPX5 RTOSのオリジナル作者であり、Express Logic社の社長兼CEOでもあったWilliam Lamie氏[ 4 ]です。ThreadXバージョン4は2001年に、バージョン5は2005年に、そしてバージョン6は2020年にリリースされました(最新のメジャーバージョン)。 FileX – ThreadX 用の組み込みファイルシステムは 1999 年に導入されました。NetX – ThreadX 用の組み込み TCP/IP ネットワークスタックは 2002 年に導入されました。USBX – ThreadX 用の組み込み USB サポートは 2004 年に導入されました。SMP マルチコア環境用の ThreadX SMP は 2009 年に導入されました。ThreadX Modules は 2011 年に導入されました。ThreadX は、2013 年にTÜV IEC 61508、2014年にUL 60730の安全認証を取得しました。GUIX – ThreadX 用の組み込み UI は 2014 年に導入されました。
2019年4月18日、マイクロソフトはExpress Logicを非公開の金額で買収し、Azure RTOSに社名を変更した。[ 2 ]
2023年11月21日、マイクロソフトは、Azure RTOSがEclipse Foundationの管理下でオープンソースモデルに移行し、寛容なMITライセンスの下でプロジェクトを公開すると発表しました。[ 3 ] Eclipse Foundationが新たな拠点となったことで、Azure RTOSはEclipse ThreadX、略して「ThreadX」と改名されました。
ThreadXという名前は、実行要素として使用されるスレッドを指し、 Xはコンテキストスイッチングを表します。
ThreadXは、優先度ベースのプリエンプティブスケジューリング、高速な割り込み応答、メモリ管理、スレッド間通信、相互排他、イベント通知、およびスレッド同期機能を提供します。ThreadXの主な技術的特徴としては、プリエンプションしきい値、優先度継承、効率的なタイマー管理、高速なソフトウェアタイマー、ピコカーネル設計、イベントチェイニング、および小型サイズ( ARMアーキテクチャプロセッサでの最小サイズは約2KB)が挙げられます。
ThreadXは、非対称マルチプロセッシング(AMP)または対称マルチプロセッシング(SMP)のいずれかを介して、マルチコアプロセッサ環境をサポートします。ThreadXモジュールを使用すると、メモリ管理ユニット(MMU)またはメモリ保護ユニット(MPU)によるメモリ保護を備えたアプリケーションスレッドの分離が可能です。
ThreadXはTÜVおよびULの安全認証を取得しており、自動車産業ソフトウェア信頼性協会(MISRA)およびMISRA Cに準拠しています。
ThreadXは、Express LogicのX-Ware IoTプラットフォームの基盤であり、組み込みファイルシステムサポート(FileX)、組み込みUIサポート(GUIX)、組み込みインターネットプロトコルスイート(TCP/IP)、クラウド接続(NetX/NetX Duo)、およびユニバーサルシリアルバス(USB)サポート(USBX)が含まれています。ThreadXは開発者に好まれており、人気のあるRTOSです。[ 5 ]
2017年現在ThreadX RTOSは、世界で最も人気のあるRTOSの1つとなり、家電製品、医療機器、データネットワークアプリケーション、SoCなど、62億を超えるデバイスに採用されています。[ 6 ]
ThreadX は、優先度ベースのプリエンプティブ スケジューリング アルゴリズムを実装しており、プリエンプション しきい値と呼ばれる独自の機能を備えています。このしきい値により、クリティカル セクション内の粒度が高まり、コンテキスト スイッチングが削減され、スケジューリングを保証するための学術研究の対象となっています。[ 7 ]
ThreadX はイベントチェーンと呼ばれる独自の構造を提供します[ 8 ]。アプリケーションは、外部イベントを通知できるすべてのAPIにコールバック関数を登録できます。これにより、アプリケーションは ThreadX 内のさまざまなパブリック オブジェクトをチェーン接続し、1 つのスレッドが複数のオブジェクトでブロックできるようになります。
ThreadXは、カウントセマフォ、優先度継承オプション付きミューテックス、イベントフラグ、メッセージキュー、ソフトウェアタイマー、固定サイズブロックメモリ、可変サイズブロックメモリも提供します。ThreadXのリソースをブロックするすべてのAPIには、オプションのタイムアウトも用意されています。
ThreadXは、AMPまたはSMPのいずれかを介してマルチコアプロセッサをサポートします。アプリケーションコードの分離は、ThreadX Modulesコンポーネントを通じて利用可能です。
ThreadX(およびFileXとNetX Duo)は、SGS-TÜV Saarにより、 IEC 61508 SIL 4、IEC 62304 Class C、ISO 26262 ASIL D、およびEN 50128 SW-SIL 4の安全規格について事前認証を受けています 。
ThreadX(およびFileXとNetX Duo)は、ULにより以下の安全規格の事前認証を受けています:UL/ IEC 60730、UL/ IEC 60335、UL 1998
ThreadXは、さまざまな軍事および航空宇宙企業によってDO-178規格の認証も受けています。wolfSSLなどの一般的なトランスポート層セキュリティ(SSL/TLS)ライブラリによってサポートされています。[ 9 ]
2017年現在、ThreadXはX-Ware IoT Platformの一部として完全なソースコードでパッケージ化されており、ランタイムロイヤリティの支払いは不要です。
ThreadXの主要コンポーネントは以下のとおりです。
ThreadXはリアルタイムオペレーティングシステム(RTOS)です。
FileXはThreadXのオプションのファイルシステムです。FAT12 、FAT16、FAT32、およびexFATファイルシステムをサポートしています。exFATはFATファイルのサイズを4GB以上に拡張できるため、大容量のビデオファイルなどに便利です。
また、耐障害性を備えており、 LevelXと呼ばれるオプションのフラッシュウェアレベリング製品を通じて、 NORおよびNANDフラッシュメモリメディアを直接サポートします。
GUIXは、ThreadXのオプションのグラフィカルユーザーインターフェース(GUI)です。さまざまな画面解像度と色深度を持つ複数のディスプレイデバイスをサポートする2Dコンピュータグラフィックスシステムを提供します。多くの定義済みグラフィカルウィジェットが利用可能です。GUIX Studioと呼ばれるWindows WYSIWYGホストツールは、実行時にGUIXが実行するCコードを自動的に生成します。
NetX Duo は ThreadX のオプションのTCP/IPネットワーク システムです。IPsec ネットワーク セキュリティを備えた IPv4 および IPv6 ネットワークの両方をサポートします。TCPおよび UDP ソケット レイヤーは TLS / DTLS によって提供されます。オプションのプロトコルには、 ARP、Auto IP、DHCP、DNS、DNS-SD、FTP、HTTP、ICMP、IGMP、mDNS、POP3、PPP、PPPoE、RARP、TFTP、SNTP、SMTP、SNMP、およびTelnetが含まれます。IoT クラウド プロトコルのサポートには、CoAP、MQTT、および LWM2M が含まれます。NetX Duo はThreadおよび 6LoWPANもサポートしています。2017 年に、ThreadX および NetX Duo は Thread 認定製品になりました。[ 10 ]
USBXは、ThreadX用のオプションのUSB(Universal Serial Bus )システムです。ホスト/デバイス/OTG(On-The-Go)の両方をサポートしています。ホストコントローラのサポートには、EHCI、OHCI、および独自のUSBホストコントローラが含まれます。
この製品は、オーディオ、Asix、CDC/ACM、CDC/ECM、DFU、GSER、HID、PIMA、プリンター、Prolific、RNDIS、ストレージといったUSBデバイスクラスをサポートしています。
TraceXは、ThreadX RTOSイベントをグラフィカルに表示するオプションのホストソフトウェアです。Windows XP以降が必要です。
ThreadXを使用している製品の例をいくつかご紹介します。