| 開発者 | Express Logic (オリジナル) Microsoft (旧) Eclipse (現在) |
|---|---|
| 書かれた | C |
| 作業状態 | 現在 |
| ソースモデル | オープンソース |
| 初回リリース | 1997年 |
| 最新リリース | 6.4.1 [1] / 2024年2月28日 |
| リポジトリ | github.com/eclipse-threadx/threadx/ |
| マーケティングターゲット | 組み込みシステム、IoT |
| 更新方法 | 再インストール |
| パッケージマネージャー | なし |
| プラットフォーム | ARC、ARM、Blackfin、CEVA、C6x、MIPS、NXP、PIC、PowerPC、RISC-V、RX、SH、SHARC、TI、V850、Xtensa、x86、Coldfire、その他 |
| カーネルタイプ | 組み込み、決定論的、リアルタイム マイクロカーネル、ピコカーネル |
| デフォルトの ユーザーインターフェース | 組み込みUIサポート(GUIX) |
| ライセンス | MITライセンス(2023年現在) |
| 公式サイト | スレッドx.io |
ThreadXは、主にC言語でプログラムされた、高度に決定論的な組み込みリアルタイムオペレーティングシステム(RTOS)です。Express Logicが最初に開発した1997年にThreadXとして最初にリリースされ、その後、Express LogicがMicrosoftに買収された後、Azure RTOS (2019)に名前が変更されました。 [2]その後、 Eclipse Foundationの管理下で無料のオープンソースモデルに移行した後、最近ではEclipse ThreadX(2023)、または短縮形で「ThreadX」に名前が変更されました。[3]
歴史
1997年、ThreadXは米国カリフォルニア州サンディエゴのExpress Logic社によって初めてリリースされ、販売されました。これは、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 モジュールは 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 アーキテクチャプロセッサの最小サイズは約 2 KB) などがあります。
ThreadX は、非対称マルチプロセッシング(AMP) または対称マルチプロセッシング(SMP) のいずれかを介してマルチコア プロセッサ環境をサポートします。メモリ管理ユニット(MMU) またはメモリ保護ユニット(MPU)によるメモリ保護を使用したアプリケーション スレッド分離は、ThreadX モジュールで利用できます。
ThreadX は、 Technischer Überwachungsverein (TÜV、英語: Technical Inspection Association) およびUL (旧 Underwriters Laboratories)から広範な安全認証を取得しており、 Motor Industry Software Reliability Association MISRA Cに準拠しています。
ThreadXは、Express LogicのX-Ware IoT(モノのインターネット)プラットフォームの基盤であり、組み込みファイルシステムサポート(FileX)、組み込みUIサポート(GUIX)、組み込みインターネットプロトコルスイート(TCP/IP)およびクラウド接続(NetX/NetX Duo)、ユニバーサルシリアルバス(USB)サポート(USBX)も含まれています。ThreadXは開発者から高い評価を得ており、非常に人気のあるRTOSです。[5]マーケティング調査会社VDC Researchによると、 2017年現在[アップデート]、ThreadX RTOSは、民生用電子機器、医療機器、データネットワーキングアプリケーション、SoCなど、62億を超えるデバイスに導入されており、世界で最も人気のあるRTOSの1つになっています。[6]
テクノロジー
ThreadXは、プリエンプションしきい値と呼ばれる独自の機能を備えた、優先度ベースのプリエンプティブスケジューリングアルゴリズムを実装しています。後者は、クリティカルセクション内でより高い粒度を提供し、コンテキストスイッチを減らすことが示されており、スケジューリングの保証に関する学術研究の対象となっています。[7]
ThreadXはイベントチェーンと呼ばれる独自の構造を提供し、[8]アプリケーションは外部イベントを通知できるすべてのアプリケーションプログラミングインターフェース(API)にコールバック関数を登録することができます。これにより、アプリケーションはThreadX内のさまざまなパブリックオブジェクトをチェーン化して、1つのスレッドが複数のオブジェクトを効果的にブロックできるようになります。
ThreadX は、カウントセマフォ、オプションの優先度継承を備えたミューテックス、イベント フラグ、メッセージキュー、ソフトウェア タイマー、固定サイズのブロック メモリ、可変サイズのブロック メモリも提供します。リソースをブロックする ThreadX のすべての API には、オプションのタイムアウトもあります。
ThreadX は、AMP または SMP を介して マルチコア プロセッサのサポートを提供します。アプリケーション コードの分離は、ThreadX モジュール コンポーネントを通じて利用できます。
安全認証
ThreadX (および FileX と NetX Duo) は、SGS-TÜV Saar によって次の安全規格の事前認定を受けています: IEC 61508 SIL 4、IEC 62304クラス 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 プラットフォームの一部として完全なソース コードでパッケージ化されており、ランタイムロイヤリティの支払いは不要です。
主要コンポーネント
主要な ThreadX コンポーネントは次のとおりです。
スレッドX
ThreadX はリアルタイム オペレーティング システム(RTOS) です。
ファイルXとレベルX
FileX は、 ThreadX のオプションのファイル システムです。FAT12 、FAT16、FAT32、exFATファイルシステムをサポートしています。exFAT は FAT ファイル サイズを 4 GB以上に拡張するため、大きなビデオ ファイルに適しています。FileX はフォールト トレランスも提供し、LevelX と呼ばれるオプションのフラッシュ ウェア レベリング製品を通じてダイレクト NOR および NANDフラッシュ メモリメディアをサポートします。
グイックス
GUIX は、ThreadX のオプションのグラフィカル ユーザー インターフェイス(GUI)です。さまざまな画面解像度と色深度を持つ複数のディスプレイ デバイスをサポートする2D コンピュータ グラフィックスシステムを提供します。多数の定義済みグラフィカル ウィジェットが利用可能です。GUIX Studio と呼ばれる Windows WYSIWYGホスト ツールは、実行時に GUIX が実行する C コードを自動的に生成します。
ネットエックスデュオ
NetX Duo は、ThreadX のオプションのTCP/IPネットワーク システムです。IPv4とIPv6の両方のネットワークをサポートし、 IPsecネットワーク セキュリティを備えています。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
USBX は、ThreadX のオプションのユニバーサル シリアル バス ( USB ) システムです。ホスト / デバイス / On-The-Go の両方をサポートします。ホスト コントローラーのサポートには、EHCI、OHCI、および独自の USB ホスト コントローラーが含まれます。USBX は OTG もサポートします。USBX クラスのサポートには、オーディオ、Asix、CDC/ACM、CDC/ECM、DFU、GSER、HID、PIMA、プリンター、Prolific、RNDIS、およびストレージが含まれます。
トレースX
TraceX は、ThreadX RTOS イベントのグラフィカル ビューを提供するオプションのホスト ソフトウェアです。Windows XP以降が必要です。
サポートされているポート
- ARMリアルタイムコア(32ビット)[11]
- ARMマイクロコントローラコア(32ビット)[11]
- ARMアプリケーションコア(32ビット)[11]
- ARMアプリケーションコア(32ビット)[11]
- ARMアプリケーションコア(64ビット)[11]
- ARM Cortex-A34
- ARM Cortex-A53
- ARM Cortex-A55
- ARM Cortex-A57
- ARM Cortex-A65
- ARM Cortex-A76
- その他のコア[11] [12]
ThreadXを使用した製品
ThreadX を使用する製品の例:
- 小型ウェアラブルデバイス。
- ヒューレット・パッカードのインクジェットプリンターとオールインワンデバイス。[13]
- インテル マネジメントエンジン(ME)。[14]
- NASA ディープインパクト宇宙探査機。[15]
- Raspberry Piシリーズのシングルボードコンピュータは、グラフィックス処理装置(GPU)上のバイナリブロブとしてThreadXを実行します。これは初期ブートを制御し、 Linuxなどのセカンダリオペレーティングシステムのブートに使用され、ブートプロセス後もより特権的な役割で動作し続けます。[16]
参照
参考文献
- ^ 「リリース · eclipse-rtos/Threadx」。GitHub。
- ^ ab Janakiram、MSV (2019 年 4 月 21 日)。「Express Logic の買収は Microsoft と IoT エコシステムにどのような影響を与えるか」Forbes。
- ^ ab 「Microsoft が Azure RTOS をオープン ソースに提供」。Microsoft。2023年11 月 23 日閲覧。
- ^ Cole, Bernard; McConnel, Toni (2010 年 9 月 3 日)。「Bill Lamie: ある男と彼のリアルタイム オペレーティング システムの物語」。Embedded。AspenCore。
- ^ Carbone, John. 「高性能 RTOS「ThreadX」:Express Logic:市場投入までの時間の短縮と開発コストの削減を実現」Renesas。
- ^ 「IoT & 組み込みオペレーティングシステム」。VDC Research 。 2018年7月31日閲覧。
- ^ Wang, Yun; Saksena, Manas. 「プリエンプションしきい値による固定優先度タスクのスケジュール設定」(PDF)。コンピュータサイエンス学部。ユタ大学。
- ^ 「イベント チェーンにより、リアルタイム システムは複数のリアルタイム イベントに効率的に応答できるようになります」(PDF)。Express Logic。
- ^ 「ThreadX/NetX サポートが強化された wolfSSL」. wolfSSL . 2018-01-16 . 2019-02-13閲覧。
- ^ 「Thread Certified Products」。Thread Group。2018年6月14日時点のオリジナルよりアーカイブ。2018年1月11日閲覧。
- ^ abcdefgh 「Eclipse - ThreadX - ThreadX の概要」。GitHub。2024年12月3日時点のオリジナルよりアーカイブ。
- ^ ab “Eclipse - ThreadX - RTOS Docs”. GitHub . 2024年12月3日時点のオリジナルよりアーカイブ。
- ^ “Hewlett Packard”. Green Hills Software . 2024年12月8日時点のオリジナルよりアーカイブ。
- ^ 「Intel Management Engine」。bitkeks.eu。2017年12月5日。2024年4月23日時点のオリジナルよりアーカイブ。
- ^ Lamie, William E. (2006 年 1 月 13 日)。「ケース スタディ: NASA の「ディープ インパクト」は組み込みシステムを使用して 8000 万マイル離れたブルズアイを撃ち抜く」。Military Embedded Systems。2015 年 4 月 4 日時点のオリジナルよりアーカイブ。2015年3 月 30 日閲覧。
- ^ nachoparker (2019年2月2日). 「Raspberry Piの何が問題なのか」。Own Your Bits。2022年5月31日時点のオリジナルよりアーカイブ。 2024年3月9日閲覧。
さらに読む
- ThreadX ドキュメント
- Azure RTOS ThreadX ユーザー ガイド (2020) - Microsoft
- RTOSの比較
- 2024 RTOS パフォーマンス レポート (FreeRTOS / ThreadX / PX5 / Zephyr) - Beningo Embedded Group
- 2013 RTOS 比較 (Nucleus / ThreadX / ucOS / Unison) - Embedded Magazine
外部リンク
- 公式サイト
- Eclipse ThreadX ソースコードリポジトリ | GitHub
- ThreadX-OXシミュレータ
