SOLID の機能

Visual Studio Shell ベースの IDE

実績豊富なVisual Studioを採用

  • SOLID用に専用実装をしているので、Visual Studioの別途導入や購入は必要なし

Visual Studioの高度な機能との連携

  • Visual StudioがClangコンパイラと連携して高度な機能を実現

  • 入力リストを候補表示するインテリセンス

    ../_images/show-candidate.png
  • ソース編集時に、コンパイル時の問題を警告(入力時に自動的にバックグラウンドでコンパイラエンジンが動作)

    ../_images/rt-warning.png

Visual Studioによる快適なデバッグ

  • ブレーク箇所周辺で参照している変数を、ローカル・グローバル問わずに集めて表示する自動変数表示

  • SOLID-OSと連携し、タスク別の呼び出し参照表示

  • ARM CPU例外発生時に、例外発生箇所をポイント

  • タスクを認識したブレーク機能

RTOS TOPPERS

TOPPERS/ASP3,TOPPERS/FMPおよびTOPPERS/FMP3を採用

  • 軽量コンパクトな最新のオープンソースITRON

  • ティックレスカーネル (ASP3, FMP3)

    • 省電力性にすぐれる

    • usecオーダーの時間管理を効率的に実現

  • SMPカーネル (FMP, FMP3)

  • 資源動的生成版カーネルと、よりコンパクトな静的生成版カーネルを用意

  • Cortex-A 32bit (ARMv7A, ARMv8AのAArch32互換モード), 64bit (ARMv8AのAArch64モード)をサポート

  • T-kernel相当の ITRON APIを追加サポート

  • ランタイムロイヤリティフリー

SOLID-IDEと密接に連携

  • スタックフェンス、スタック解析機能

  • システムコールトレーサ

  • タスク状況をIDEに表示

  • RTOSの資源表示

    ../_images/task-context.png

    SOLID-IDEのデバッガに、タスクリストや状態を表示。各タスクの状態だけでなく、関数呼び出しや ローカル変数もタスクを切り替えて表示可能。

GCC/Clang コンパイラ

  • 選べる二種類のコンパイラを同梱

  • 実績豊富なGCCコンパイラ

  • 先進的機能のClangコンパイラ

  • リンカは実績あるGNU binutilsを同梱

  • 生成されるソフトウェアはGPLフリー

  • 標準ライブラリは、ソースコードが付属

  • コンパイラの持つ豊富な機能も、SOLID-IDEと連携してかんたんに利用可能

メモリ管理機能

ARM Cortex-AシリーズのMMUを活用

  • 仮想アドレスは使用するが、単一空間なので常に全てのメモリ空間が見えていてわかりやすい

  • 生成されたプログラムについては、自動的にセクションに応じたプロテクションを設定

IDEメモリマップデザイナ

  • 利用する仮想アドレスを設定しやすくするためのIDEメモリマップレイアウト機能

  • リンカスクリプトと連携

  • MMU初期化コードと連携

../_images/mmap-designer.png

IDEに搭載されるメモリマップレイアウト機能

ELF ローダー

ELFローダーを標準提供

  • 分割開発を可能にする本格的なELFローダを標準提供

  • 双方向アドレス解決

  • 二つのローダブルアプリ形式を提供

    • 組込向けに特化した軽量動作のSOLID形式

      • 固定アドレスで実行

    • 組込でも使いやすいDLL形式

      • PICバイナリ

  • MMUを使って効率的にメモリ使用

  • ローディングにMMUを使ったプロテクション設定

  • 自動デバッグ開始起動

  • SOLID-IDEと連携することで、ローディング時に自動的にデバッグ開始

../_images/loader-image.png

ローダーの実行イメージ

軽量動作の実現

  • SOLIDツールチェインに、ターゲットシステム上の専用ローダーと連携した専用機能を追加

  • 開発環境と実行環境の一体化で、実行時の負荷を削減

  • ROM上のプログラムを効率的にロードする専用ファイルシステム

ソースコード静的解析

静的解析機能を標準搭載

  • 実行前にソースコードの分析を行い、論理的な問題を検出する静的解析機能

  • 関数呼び出しや分岐条件を加味し、未初期化ポインタアクセスやゼロ除算など、様々な問題を指摘

  • IDEのビルド環境と連携しているので、#ifdefなどの条件もビルド設定がそのまま反映

../_images/static-analysis.png

問題箇所と、問題に繋がる箇所をソース上でハイライト表示

簡単に使用可能

  • IDEのプロジェクトメニューを選択して実行するだけ

  • 問題箇所と、問題に繋がる箇所をソース上でハイライト表示

アドレスサニタイザ

実行時の不正メモリアクセスを監視

  • Clangコンパイラの持つ機能と、ターゲットシステム上の検出ランタイム(KMC製)を組み合わせて実現

  • ローカル変数、グローバル変数について、オーバーランや未定義領域アクセスの問題検出が可能

  • memcpy()など連続するメモリアクセスであっても、専用ライブラリ(KMC製)の利用で、効率良く問題検出が可能

../_images/sanitizer.png

アドレスサニタイザで問題を検出