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