連載23-SOLID 便利機能連載の振り返り
OS&統合開発環境SOLIDの便利機能をご紹介するこの連載も、23回目となりました。
SOLIDのブレない特徴は、「OS、コンパイラ、デバッガ三位一体の開発環境」です。
だからというワケでもないのですが、この連載では、3つの特徴をごちゃまぜにご紹介してきました。
ちょっとここで整理します。
大きく分けて、
・OSとしての特徴
・開発環境としての特徴
・コンパイラと連携しての特徴
があります。
では、振り返っていきます。
1.OSとしての特徴
SOLIDのRTOSカーネルは、TOPPERSカーネルを採用しています。
そしてTOPPERSの持つ機能に加え、独自の機能やAPIが追加されています。
ここではその、SOLIDの特徴と言えるその追加機能についてのご紹介記事を振り返ります。
1.1 SOLID-OS独自API関連
・MMU設定変更用API
仮想/物理アドレスをマップしたり、属性を変更したり、コードキャッシュを破棄したりするAPIです。SOLID OSのAPIなので、プログラムから操作するための機能です。
1.2 SOLID-OSでタスクや割り込みを使用(IDE機能併記)
OS標準機能であるタスクや、必須機能である割り込みについてです。
デバッグ時の各IDEウインドウ表示内容についても記載しています。
1.3 マルチコア対応
マルチコア動作についてです。
1.4 例外発生時の対処
例外発生時に自作例外ハンドラを登録する方法等ご紹介しています。
1.5 その他SOLID-OS独自機能
その他、TOPPERSを元にSOLID-OSとして追加している独自機能において、主要思われる機能についてご紹介しています。
連載7:2. SOLIDのCPU抽象化レイヤ「SOLID Core Service」
連載17:ローダー機能―1(ご紹介)
連載18:ローダー機能―2(DLL形式)
連載19:ローダー機能―3(SOLID独自形式)
連載20:ローダー機能―4(開発スタイル)
2.開発環境(IDE)としての特徴
SOLIDのIDEには、デバッグに便利な機能がいろいろ搭載されています。
ここではIDEの便利機能についてのご紹介記事を振り返ります。
2.1 MMU関連機能
・MMUの保護違反例外を使った機能
NULLポインタ検出、スタックオーバーフロー検出ができます。
連載1途中:MMUの保護違反例外を使ったNULLポインタ検出
連載1途中:MMUの保護違反例外を使ったスタックオーバーフロー検出
実現方法等の詳細について連載3でご紹介しました。
・MMUアドレス変換テーブル設定機能
IDEの機能として提供されています。
2.2 マルチコア動作のデバッグ
全体はこちら。
以下2機能をご紹介
2.3 タスクデバッグ機能
連載7はRTOSとしてのタスク機能のご紹介ですが、タスク使用時のデバッグ機能についても一部ご紹介しています。
2.4 例外発生時
・例外要因&コード表示
・クラッシュダンプ、スナップショット機能
2.5 その他便利機能
3.コンパイラと連携した特徴
SOLIDではClangとGCCコンパイラをサポートしています。そういったコンパイラが用意している機能をSOLID側で生かしているという特徴を持つ機能について振り返ります。
・アドレスサニタイザ機能
本来アクセスすべきでないアドレスへのメモリアクセスを、アクセス直前に検出する機能です。
コンパイラフロントエンドであるClangはアドレスサニタイザ機能を持っています。
それらと連携するルーチンをSOLID-OSのランタイムに組み込むことによって、不正アドレス検出機能を実現しています。
・静的解析
Clangコンパイラの機能を使っています。
・関数トレース
こちらもClangコンパイラの機能を使っています。
4.まとめ
今回の連載の中で何度も書いているのですが、OS、デバッガ、コンパイラの三位一体でないとできない機能って沢山あるんだな、というのが正直な感想です。
例えば、コンパイラフロントエンドであるClangは、アドレスサニタイザ機能を持っている、と言っても、OSが連携ルーチンを準備する必要がある。
そしてIDEは、そのOSルーチンが発生するブレークを受け止め、要因表示等を行う。
すべてを連携させ、そしてそれをユーザに対し深く考える必要なく当たり前のように使える機能として提供する。これらの機能実現のために多大な努力が隠されていることと推察します。
ところで、ここで振り返りをしたので本連載終わるのかと思いきや、もう少し続きます。
まだまだご紹介したい機能がありますので、もう少しお付き合いください。。。