今日は、リアルタイムオペレーティングシステム(RTOS)などの興味深いことについてお話します。 これが経験豊富なプログラマーにとって興味深いものかどうかはわかりませんが、初心者はそれが好きになると思います。
RTOSとは何ですか?
ウィキペディアを見ると、4つの定義があります。
要するに、RTOSは、一定期間内に外部イベントに応答するオペレーティングシステムです。 ここから、RTOSの主な目的、つまりイベントへの迅速な対応が必要なデバイスを理解できます(ただし、RTOSの動作を中断と混同しないでください)。
なぜ必要なのですか?
これにはかなりの理由があります。
まず、RTOSはマルチタスク、セマフォプロセスの優先度などをサポートします。
第二に、それは非常に軽く、ほとんどリソースを必要としません。
第三に、ほとんどすべてのハードウェアで上記のすべてを取得できます(たとえば、FreeRTOSは8ビットAtMegaでも動作します)。
そして第四に、ただ遊んで楽しんでください。
3つの有名なRTOSの概要。
注意:以下は私の個人的な意見です。
FreeRTOS
今日最も人気のあるRTOSの1つ。 大量の鉄に移植されました。 公式サイト 。
長所
1)無料
2)大量の鉄に移植
3)強力な機能
4)グラフィックス、インターネットなど、さまざまなライブラリがあります。
5)優れたドキュメント。
短所
1)新しいハードウェアへの移植のかなり複雑なプロセス。
結論:これは、優れたドキュメントを備えた真にプロフェッショナルなRTOSです。 ハードウェアにすでにポートがある場合、初心者に適しています。
Keilrtx
最近まで、このRTOSは商用でしたが、最近オープンになりました。 armアーキテクチャでのみ機能します。 公式サイト 。
長所
1)無料
2)(armのアーキテクチャ内で)新しいハードウェアに簡単に移植できます。
3)グラフィックス、インターネットなど、さまざまなライブラリがあります。
短所
1)Keilと一緒に働くことはほとんど不可能です
2)わずかに切り捨てられた機能
3)アームのみがサポートされています。
4)(個人的な経験から)多くのRTOSの速度が低下します。
結論:初心者および小規模プロジェクトに最適です。
uc / os
強力な商用RTOS。 サイト 。
長所
1)膨大な数の関数とライブラリ。
2)多くの鉄をサポート
短所
1)コマーシャル。
2)使いにくい。
結論:初心者にとっては、RTOSと呼ぶことができます。
その他の興味深いRTOS
RTLinux通常のLinuxベースのRTOS。
UnixベースのQNX RTOS。
RTOSを使用した開発の機能
まず、最初に、次のことを理解する必要があります。RTOSはWindowsではありません。 インストールできません。 このシステムは、単にプログラムでコンパイルします。
RTOSでプログラムを作成する場合、通常の意味での関数は使用されません。 違いは、プロセス(またはタスク)が使用されることです。違いは、プロセスとは異なり、プロセスは無限ループであり、終了しないことです(誰かまたは彼自身が彼を殺さない限り-つまり、メモリからアンロードします)。
複数のプロセスが有効になっている場合、RTOSはそれらを切り替えて、コンピューターの時間とリソースを順番に割り当てます。 ここでプロセスの優先順位の概念が発生します-2つのプロセスが同時にマシン時間を必要とする場合、RTOSはそれをより優先順位の高い人に与えます。
RTOSには特別な遅延機能があります-1つのプロセスの遅延時間の間、時間が無駄に消えないように、2番目のプロセスが実行されます。
セマフォのようなものについて話しましょう-これは、アプリケーションリソースへのプロセスのアクセスを制御するようなものです。 各リソースにはマーカーがあります-プロセスがリソースを必要とするとき、それはそれを取り、このリソースを使用します。 マーカーがない場合、プロセスは返されるまで待機する必要があります。 例を挙げましょう。異なるプロセスが1つのUARTで情報を送信します。 セマフォがなかった場合、それらは順番にバイトを送信し、混乱が判明します。 そのため、最初のプロセスはUARTでマーカーを取得し、メッセージを送信して2番目に送信しました(など、無限に)。
RTOSの追加ライブラリ。
多くの場合、RTOSは、たとえばグラフィックス、インターネットなどで作業するためのさまざまなライブラリを提供します。 彼らは本当に便利であり、それらを使用することを軽disしません。 ただし、RTOSが書かれているRTOSがないと機能しません。
以下に例を示します。
RTX Graphics Internet File Systemの場合
2番目の(おそらく最後の)パートでは、ミューテックス、メッセージバッファ、およびそれらの使用方法について説明します。