SOLID の機能
Visual Studio Shell ベースの IDE
実績豊富なVisual Studioを採用
SOLID用に専用実装をしているので、Visual Studioの別途導入や購入は必要なし
Visual Studioの高度な機能との連携
Visual StudioがClangコンパイラと連携して高度な機能を実現
入力リストを候補表示する機能
ソース編集時に、コンパイル時の問題を警告(入力時に自動的にバックグラウンドでコンパイラエンジンが動作)
Visual Studioによる快適なデバッグ
ブレーク箇所周辺で参照している変数を、ローカル・グローバル問わずに集めて表示する自動変数表示
SOLID-OSと連携し、タスク別の呼び出し参照表示
ARM CPU例外発生時に、例外発生箇所をポイント
タスクを認識したブレーク機能
RTOS TOPPERS
TOPPERS/ASP3、TOPPERS/FMPおよびTOPPERS/FMP3を採用
軽量コンパクトな最新のオープンソースITRON
ティックレスカーネル (ASP3, FMP3)
省電力性にすぐれる
μsecオーダーの時間管理を効率的に実現
SMPカーネル (FMP, FMP3)
資源動的生成版カーネルと、よりコンパクトな静的生成版カーネルを用意
Cortex-A 32bit (ARMv7-A, ARMv8-AのAArch32互換モード), 64bit (ARMv8-AのAArch64モード)をサポート
T-kernel相当の ITRON APIを追加サポート
ランタイムロイヤリティフリー
SOLID-IDEと密接に連携
スタックフェンス、スタック解析機能
システムコールトレーサ
タスク状況をIDEに表示
RTOSの資源表示
GCC/Clang コンパイラ
選べる二種類のコンパイラを同梱
実績豊富なGCCコンパイラ
先進的機能のClangコンパイラ
リンカは実績あるGNU binutilsを同梱
生成されるソフトウェアはGPLフリー
標準ライブラリは、ソースコードが付属
コンパイラの持つ豊富な機能も、SOLID-IDEと連携してかんたんに利用可能
メモリ管理機能
ARM Cortex-AシリーズのMMUを活用
仮想アドレスは使用するが、単一空間なので常に全てのメモリ空間が見えていてわかりやすい
生成されたプログラムについては、自動的にセクションに応じたプロテクションを設定
IDEメモリマップデザイナ
利用する仮想アドレスを設定しやすくするためのIDEメモリマップレイアウト機能
リンカスクリプトと連携
MMU初期化コードと連携
ELF ローダー
ELFローダーを標準提供
分割開発を可能にする本格的なELFローダを標準提供
双方向アドレス解決
二つのローダブルアプリケーション形式を提供
組込向けに特化した軽量動作のSOLID形式
固定アドレスで実行
組込でも使いやすいDLL形式
PICバイナリ
MMUを使って効率的にメモリ使用
ローディングにMMUを使ったプロテクション設定
自動デバッグ開始起動
SOLID-IDEと連携することで、ローディング時に自動的にデバッグ開始
軽量動作の実現
SOLIDツールチェインに、ターゲットシステム上の専用ローダーと連携した専用機能を追加
開発環境と実行環境の一体化で、実行時の負荷を削減
ROM上のプログラムを効率的にロードする専用ファイルシステム
ソースコード静的解析
静的解析機能を標準搭載
実行前にソースコードの分析を行い、論理的な問題を検出する静的解析機能
関数呼び出しや分岐条件を加味し、未初期化ポインタアクセスやゼロ除算など、様々な問題を指摘
IDEのビルド環境と連携しているので、#ifdefなどの条件もビルド設定がそのまま反映
簡単に使用可能
IDEのプロジェクトメニューを選択して実行するだけ
問題箇所と、問題に繋がる箇所をソース上でハイライト表示
豊富な実行トレース機能
CPUコアの持つハードウェアトレースおよび、ランタイムソフトウェアによる関数トレースをサポート
ハードウェアトレース
ARM CPU のトレース機能 (ETB, ETR) の ON/OFF や、トレース情報の表示が IDE から簡単に可能
ソフトウェアトレース
関数単位のトレース情報を取得可能
トレースの対象にする関数を、実行時に ON/OFF 可能
トレースデータのオフライン再生も可能
アドレスサニタイザ
実行時の不正メモリアクセスを監視
Clangコンパイラの持つ機能と、ターゲットシステム上の検出ランタイム(KMC製)を組み合わせて実現
ローカル変数、グローバル変数について、オーバーランや未定義領域アクセスの問題検出が可能
memcpy()など連続するメモリアクセスであっても、専用ライブラリ(KMC製)の利用で、効率良く問題検出が可能
スレッドサニタイザ
複数スレッド間で発生するデータアクセス競合を検出
Clangコンパイラが提供するスレッドサニタイザの機能と、ターゲットシステム上の検出ランタイム(KMC製)を組み合わせて実現
同期しない複数のスレッドが同じメモリをアクセスする場合に、少なくとも一つのスレッドが書込みをしている場合の競合を検出
QEMUエミュレータによるオフターゲット開発
QEMUエミュレータによる仮想 Cortex-A CPUをサポート
仮想的なハードウェアで構成されたターゲットボード上での開発が可能
物理的なターゲットボードが不要のため、手軽にアプリケーションの動作を確認できます
Rust言語でのアプリ開発が可能
新しいコンパイル型のプログラミング言語の Rust でのアプリケーション開発が可能
Rust 言語で記述されたアプリケーションを SOLID-IDE 上でビルド&デバッグ可能
アプリケーションは SOLID-OS上で実行され、SOLID-OS の API の呼び出しが可能
他の C/C++ で記述されたモジュールともリンクして相互運用させることが可能
Rust の豊富なオープンソースライブラリを簡単に利用いただけます