2017年 11月 15日
京都マイクロコンピュータ株式会社
特定非営利活動法人TOPPERS プロジェクト
組込みOS 開発環境SOLID が、マルチコア向け TOPPERS/FMP に対応
~ITRON 以上・Linux 未満、
京都マイクロコンピュータの組込みOS 開発環境SOLID の新展開 ~
1 SOLID とは
京都マイクロコンピュータでは、これまで多くのソフトウェア開発者の方々から開発環境に対するご要望やご意見をいただき、開発者の立場になって取り組んできた様々な課題を解決するため、2017 年度より革新的なソフトウェア開発プラットフォームSOLID の提供を開始しています。
SOLID は、Arm®プロセッサで動作するリアルタイムOS であるSOLID-OS と、Windows®パソコン上で動作する統合開発環境SOLID-IDE から構成されます。SOLID-OS には実績のあるμITRON 仕様をベースとしたTOPPERS/ASP3 を、SOLID-IDE にはアプリケーション開発に広く利用されているMicrosoft® Visual Studio®を使用しています。これらのソフトウェアが相互に密接に連携することにより、ソースコード静的解析機能はもちろん、実行時のメモリ破壊やリークを自動検出する動的解析機能を備えた開発プラットフォームとなっています。
2 SOLID の強み
開発者が本来のクリエイティブな業務に最大のパフォーマンスを発揮して「かしこく開発」し、また、不具合のモグラ叩きに翻弄されずに「スマートにデバッグ」する環境を提供することで、高品質なソフトウェア製品が計画通りにリリースできるよう支援することがSOLID のコンセプトであり、SOLID の強みは、次の通りです。
立上げが簡単で、開発準備コストを低減
ツールとRTOS、Arm® Cortex®用ライブラリを揃えています。また分かり易いGUI 設定だけで煩雑なMMU 制御プログラムが自動生成できます。
自動バグ検出で、デバッグ・テストコストを低減
ソースコード静的解析が標準で利用できます。また先進的な動的解析機能であるアドレスサニタイザによる実行時メモリバグ検出やプロテクションが可能であり、隠れたバグをあぶり出します。
チーム開発の悩みを解決
アドレス解決可能なローダーを標準搭載しており、分散開発したプログラムを拠点や機能単位でビルド・ロードできます。
SOLID ではRTOS カーネルと共に、メモリ保護やソフトウェアモジュールの配置を最適に行うためのランタイムを開発環境が提供し、ビルドおよびデバッグ環境と一体化することで、Linux が提供しているメモリ管理に準じた機能をRTOS でも利用できる開発プラットフォームとなっています。SOLID を利用することでソフトウェアエンジニアは、「ITRON 以上、Linux 未満」の開発スタイルを実践することができ、「かしこく開発」し「スマートにデバッグ」が実現できます。
現在、既開発済のArmv7-A 版に続いてArmv8-A(AArch32 用)の対応が完了し、2018 年1 月よりリリース開始予定です。
3 マルチプロセッサへの展開
SOLID の提供が進む中で、「RTOS がこれだけ効率良く開発できるのであれば、やはり次はマルチプロセッサシステムでも採用したい」というご意見をいただくようになりました。そこでSOLID の第2フェーズ展開として、マルチプロセッサ対応であるTOPPERS/FMP をベースにしたSMP 対応版を開発しました。
マルチプロセッサシステムでは対象のソフトウェアの規模が大きくなることが想定されるため、SOLID SMP 版ではTOPPERS/FMP の機能はそのままに、タスク優先度を最大256 まで拡張しました。また、タスクなどOS 資源の動的生成機能にも対応したことで、プログラム実行中にその実行状況に応じたタスクの生成および解放処理が簡単に行えるようにしています。
SOLID SMP 版のもう一つの特徴的な機能としてProcessor Local Storage と名付けた、プロセッサが各々固有の値を保持するための機構を新たに設けました。これはLinux システムにおけるThreadLocal Storage(TLS)に類するもので、Linux においては並列に動作するスレッドが固有のデータを保有したい場合にコンパイラの機能拡張としてTLS を指定し利用されています。SOLID SMP 版では、複数のプロセッサが並列実行する際にProcessor Local Storage 機構を用いることで、同一の論理メモリ空間を異なる物理アドレスに割り付けることでプロセッサ固有の値が利用できるようになっています。
すなわち、C 言語では同じ変数ではありながら、プロセッサごとに固有の値を持つことが可能になります。
SOLID の標準機能であるメモリの保護や動的解析機能では、MMU の制御を含むランタイムをSOLIDが自動生成しています。SOLID がMMU の設定を行うランタイムを生成し自動的にメモリの割り付けを行うので、ユーザーが特別な設定をしなくても、SOLID SMP 版のProcessor Local Storage 機構を簡単に利用することができます。
なお、SOLID ではBSP の実装レイヤのAPI をシングルプロセッサとマルチプロセッサで共通にしているため、シングルプロセッサで動作しているシステムをマルチプロセッサに拡張する際のポーティングが容易であることも特徴となっています。
SOLID のSMP 対応版は、2017 年11 月15 日よりパシフィコ横浜で開催される組込み技術展2017 のTOPPERS パビリオンにおいてデモ展示によるご紹介をいたします。また、同製品版は2018 年度より提供開始予定です。
SOLIDについて
https://solid.kmckk.com/SOLID/