マガジン

  • SOLIDで安全なリアルタイムシステムを開発する

    京都マイクロコンピュータ株式会社製のリアルタイムOS, IDEである「SOLID」の特徴をご紹介します。

  • SOLID for Raspberry Pi 4

    • 26本

    SOLID for Raspberry Pi 4 の使い方について連載しています。 SOLID for Raspberry PI 4 は、Linux の機能を使用可能で、更にマイクロ秒単位のリアルタイム処理も可能な組込みアプリケーションの開発・実行・デバッグを包括的にサポートする開発環境です。実行環境の OS イメージと開発環境は、無償配布されており、誰でも簡単に使用できます。

最近の記事

連載27-ベアメタルでSOLIDを使う

いよいよ来ました最終段階。 ベアメタルでSOLIDを使ってみます。 SOLID OSもSOLIDコアサービスも取り外します。 じゃぁ一体何をもってSOLIDなのか。。。? ラスボスがいます。 SOLID-IDEです。 1. SOLID-IDE今まで、イマイチ後ろに隠れがちだったSOLID-IDE。 カバレジ結果を表示しても、「コンパイラとSOLIDコアサービスのルーチンのおかげ」と言われ、アドレスサニタイザ機能により異常なアクセスを未然に検出しても「コンパイラとSOL

    • 連載26-OSレスでSOLIDコアサービスを使うー3

      前々回、前回と、統合開発環境であるSOLIDからTOPPERSカーネルを取り外しています。 今回は、前回できなかった機能のうち、ぜひご紹介したい機能「ローダー機能」について書いていきます。 1. ローダー機能ローダー機能も、TOPPERSカーネルがなくとも使えます。 「SOLID コアサービス」が持っている機能なので、OSに依存していません。 本連載第18回でご紹介した内容を試してみましょう。 https://note.com/yn_2022/n/n3185aeeb8

      • 連載25-OSレスでSOLIDコアサービスを使うー2

        前回、統合開発環境であるSOLIDからTOPPERSカーネルを取り外してみました。 「OS(SOLIDコアサービス含む)、デバッガ、コンパイラ」の三位一体 から、 「SOLIDコアサービス、デバッガ、コンパイラ」の三位一体 になったわけです。 当然OSの機能は使えないことになりますが、SOLIDコアサービスが提供している機能の中でOSとは独立しているものは、使えます。 今までご紹介してきた機能で、例えばどのような機能が使えるのか。 今回は、それを見ていきましょう。 ※

        • 連載24-OSレスでSOLIDコアサービスを使う

          今回は今までとは少し変わったアプローチをご紹介します。 1.三位一体最近の記事はおさらいばかりですが、懲りずに、統合開発環境SOLIDの一番の特徴をおさらいすると、 「OS、デバッガ、コンパイラの三位一体」 です。 上記のOSの括りの中には、CPU抽象化レイヤ「SOLID Core Service」という、SOLID独自のレイヤがあります。 過去記事の以下でご紹介しています。 https://note.com/yn_2022/n/nfd36baf8cd11#570cd1

        連載27-ベアメタルでSOLIDを使う

        マガジン

        • SOLIDで安全なリアルタイムシステムを開発する
          27本
        • SOLID for Raspberry Pi 4
          26本

        記事

          連載23-SOLID 便利機能連載の振り返り

          OS&統合開発環境SOLIDの便利機能をご紹介するこの連載も、23回目となりました。 SOLIDのブレない特徴は、「OS、コンパイラ、デバッガ三位一体の開発環境」です。 だからというワケでもないのですが、この連載では、3つの特徴をごちゃまぜにご紹介してきました。 ちょっとここで整理します。 大きく分けて、 ・OSとしての特徴 ・開発環境としての特徴 ・コンパイラと連携しての特徴 があります。 では、振り返っていきます。 1.OSとしての特徴SOLIDのRTOSカーネル

          連載23-SOLID 便利機能連載の振り返り

          連載22-QEMUでハードウェアなし開発ー2

          前回は、QEMUを使って、ハードウェアがない状態で開発する方法についてご紹介しましたが、書ききれなかった機能がまだまだあります。 今回はその中でも、以下についてご紹介します。 ・32ビットCPUのサポート ・SOLID for QEMUのロード機能を試す 1.64ビットand 32ビットSOLID for QEMUがエミュレートするCPUはARM Cortex-A53です。 ARMv8なので、64ビット命令(AArch64)です。 そしてこのARMv8、ARMv7との互

          連載22-QEMUでハードウェアなし開発ー2

          連載21-QEMUでハードウェアなし開発

          今回は、QEMUを使って、ハードウェアがない状態で開発する方法についてご紹介します。 1.QEMUって一言で言うとハードウェアのシミュレータです。 組み込みのソフトウェア開発を開始するためには、まずハードウェアが手元にないと、ビルドまでしかできませんよね。 しかしQEMUを使うと、ハードウェアを仮想的に実現してくれます。 そうはいっても、動くのってCPUと割り込みとメモリくらいでしょ? と、お思いかもしれません。 違います。 定義しさえすれば、いろんなハードウェア

          連載21-QEMUでハードウェアなし開発

          連載20-ローダー機能ー4

          前回までで、ロードモジュールをロードし実行するまでを行いました。 今回は、いくつかの開発スタイルにおいてどのようにデバッグをするのか、についてご紹介できればと思います。 1.開発スタイルとデバッグ対象今回、開発のスタイルについて、以下3パターンを考えてみます。 ・メインアプリのワークスペースを使って、メインアプリ&ロードモジュールのデバッグをする デバッグする人はメインアプリ担当者であるケースです。 ・ロードモジュールのワークスペースを使って、メインアプリ&ロードモジ

          連載20-ローダー機能ー4

          連載19-ローダー機能ー3

          ここしばらく、SOLID-OSの持つ「ローダー機能」についてご紹介しています。 今回は、SOLID独自形式のローダー機能を動かしてみていきます。 1.SOLID独自形式のローダー機能おさらいDLL形式の場合と同様、OSや基幹部となるアプリ等とは別に、アプリ入れ替え可能な領域が存在します。 複数アプリをロードすることも可能で、両アプリとも相互呼び出しが可能です。 DLL形式の場合、入れ替え対象のアプリは、ビルドの際には実行アドレスが決定しませんでした。 今回ご紹介する、

          連載19-ローダー機能ー3

          連載18-ローダー機能ー2

          前回から、SOLID-OSの持つ「ローダー機能」についてご紹介しています。 今回は、DLL(Dynamic Link Library)方式のローダー機能を動かしてみていきます。 1.DLL方式のローダー機能おさらいOSや基幹部となるアプリ等とは別に、アプリ入れ替え可能な領域が存在します。 下の図で、紫色の部分です。 ローダー機能により、例えばアプリAをロードするとします。 以降はアプリAの関数をコールしたり、アプリAが基幹部分の関数をコールしたりすることができます。

          連載18-ローダー機能ー2

          連載17-ローダー機能ー1

          ここ何回か、SOLID-IDEの持つデバッグ機能に着目してご紹介してきました。 今回はSOLID-OSの持つ機能を一つご紹介します。 1.ローダー機能とは一言で「ロードする」といっても、いろんな意味がありますよね。 組み込みエンジニアがパッと思いつくのは、ある程度のサイズがあるバイナリデータをメモリに書きこむこと、ではないでしょうか。(筆者だけ?) ベアメタルの場合は、そうですよね。 そして多くの場合、ベアメタルで作るローダーとは、ブートローダーの場合が多いですね。 組

          連載17-ローダー機能ー1

          連載16-関数トレース

          今回は、関数トレースについてご紹介します。 「ここに至るまでの経緯」を知るための機能です。 1.トレースとはデバッガの機能の一つに、トレースの情報を取得する機能があります。 一般的に思いつくのは、ICEにトレースプローブを付ける方法です。 マイコンチップのトレース用端子とトレースアダプタを接続し、そこから分岐情報やバス情報等拾ってトレースを行います。 この場合、トレースの情報を抽出し出力するのは、ハードウェアによって行われるため、どのようなファームウェアに対してもトレース

          連載16-関数トレース

          連載15-静的解析

          SOLIDの便利機能をご紹介するシリーズも、15回目になりました。 まだまだご紹介したい機能があります。 今回は、静的解析についてご紹介します。 ソースコードを解析し、間違っている要素があるところを指摘してくれる機能です。 1.静的解析とはClangコンパイラにはとても沢山機能がありますが、使うのが面倒です。 (のっけから言ってしまうと、身も蓋もありませんが。) 沢山ある機能のうち、使いたいけど面倒だからいいや、となりがちな機能の一つに、ソースコードの静的解析を行う機能

          連載15-静的解析

          連載14-コードカバレッジ機能

          前回、前々回と、例外が発生した場合の対応方法をご紹介しました。 今回は、コードカバレッジ機能についてご紹介します。 1.コードカバレッジ機能とは画面を見るのが一番わかりやすいと思うので、以下URLから抜粋させていただきます。 https://solid.kmckk.com/SOLID/doc/latest/user_guide/code_coverage.html こんな機能です。 プログラム開始しブレークするまでに、各行について実行したorしないを知ることができます

          連載14-コードカバレッジ機能

          連載13-例外が発生した場合ー2

          前回は、例外が発生した場合のデバッガの振る舞いについて記載しましたが、すべて書ききれたわけではありません。 今回は、もう一つの機能についてご紹介します。 1.クラッシュダンプ今でこそ滅多に見ませんが、昔のWindowsはよくクラッシュしましたねー。。。(あ、もう知らない人も多い?) いきなり、画面が真っ青になり、よくわからないログがバババーッと表示されましたよね。 エラーの番号とか出たりして、番号をよく調べたものです。 Linuxでもシステムクラッシュに遭遇したことあり

          連載13-例外が発生した場合ー2

          連載12-例外が発生した場合

          今回は、例外が発生した場合どうなるのか?どうすべきなのか?について、考えていきます。 1.例外って今まで書いてきた中で、よい例があります。 連載3を振り返ってみましょう。 スタックオーバーフローについての記事でした。 https://note.com/yn_2022/n/ne1ab585ff233?magazine_key=m5b34a9ddbc30#441cc49c-3e42-4fab-a0d1-15328e72b8df 適度な疲労感を味わって頂けたのではないかと思

          連載12-例外が発生した場合