質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
RTOS

RTOS(リアルタイムOS)は、リアルタイムシステムのためのOSです。実時間システムや実時間OSとも呼ばれ、時間的な制限のある処理を行うための機能・特性を備えています。組み込みシステムの制御に多く用いられています。

Q&A

解決済

4回答

4417閲覧

組み込みシステムやリアルタイムOSについて勉強したいと思っています。

can-sby

総合スコア8

RTOS

RTOS(リアルタイムOS)は、リアルタイムシステムのためのOSです。実時間システムや実時間OSとも呼ばれ、時間的な制限のある処理を行うための機能・特性を備えています。組み込みシステムの制御に多く用いられています。

1グッド

1クリップ

投稿2019/01/18 14:43

大学の情報系の学生です。
組み込みシステムやリアルタイムOS(特にこっちについて)興味があり勉強したいのですが、本を読むだけでなく実際に手を動かしたりして勉強したいです。

どんなことから始めてみたら良いでしょうか。

ちなみに私は以下のことを、とても詳しいとは言えませんが勉強したことがあります。
・C言語
・アセンブラ(本当に少し)
・組み込みシステム概論
・リアルタイムOS(μITRON仕様について若干)

set0gut1👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

iTRONというのであれば、Toppersで、Windowsの実装が公開されてますんで、それで一通り動作させてみる、なにか組んで見るってところから始めればどうでしょ。

まあ、なにか評価用のマイコンボードを買ってきてそれでどうにかするというのは最終目的ですが、それをするにはそれなりにハードの知識が必要となりますし、ちとハードルが高いかとはおもいます。

投稿2019/01/19 08:06

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私自身は組み込みガチ勢ではないので、あくまで個人的意見ですが。

とにかく手を動かして、なんでもやってみれば良いと思います。もし、コードを書いた経験やハードウェアをいじった経験が少なく不安があるのであれば、最初に手を付けるのは簡単な電子工作を伴って、規模が小さく、問題が起きたときに解決策を得やすい、情報が多く出廻っているものが良いと思います。

例えばarduinoでもいいし、ラズパイのGPIOを使ってもいいし、ラズパイでWiringPiを併用してみるのもいいでしょうし、ベアメタルに挑戦してみるのもいいでしょうし、ボードの種類が豊富なmbedのようなものもあります。

これらは質問者さんが特に興味をお持ちのリアルタイムOSを使ったものではありませんが、開発環境の整備や自分にとって未知のハードウェアを扱うときには、情報が多く、動作確認が取れているものが多いという点で取り組む際の障壁が低いです。

「リアルタイムOSではないし、物足りないな」と思われるかもしれませんが、実際にやってみると案外思ったとおりに動かず、所望の動きになるまで苦労するものです。ソフトウェア(ファームウェア)を書くための知識はもちろんですが、ハードウェアに対する基本的な知識、問題が起きたときに必要に応じてテスターやロジックアナライザーを使ったり、そもそも外部デバイスを使うにあたってはデバイスのデータシートを読み、回路図をたぐるようなケースも出てきます。反対に言うと、それらに対応できると現場で強いです。

リアルタイムOSは本当にシビアにリアルタイム性を求められる製品であったり、逆にリソースが少ないものの、精密で多機能な動きを求められるケースで使われます。最近では組み込みといえどもCPU性能が高くなっているのでもともと動作が速く、ゆっくりとポーリングでI/Oをしたり、ポーリングでまかなえないところは割り込みを併用して使うにとどめるケースが多いように思います。それが組み込みlinuxやベンダーの独自組み込みOSに現れていて、尚更リアルタイムOSに触れる機会は少なくなっています。

別回答でTOPPERS/JSPのお話が出ていましたが、オープンソースのリアルタイムOSは主に最終的に自分たちが設計したボードにポーティング(移殖)することを想定しています。ですので、ポーティングにあたってはかなり広範で、高度な知識が実装者に求められることもあります。

フリーなリアルタイムOSと言えば、別回答で出たμITRONの実装であるTOPPERS/JSPのほかに、おととし(2017年)に話題になったFreeRTOSもあります。
FreeRTOS - Wikipedia
Amazon FreeRTOS
こちらはいくつか評価ボードも出ていますし、情報を眺めてみるのも良いのではないでしょうか。

組み込み系に片足を突っ込みつつ、主にOS上で動くアプリを作っている立場での意見ですが、組み込み系OSではないlinuxでもWindowsでも、システムが用意しているシステムコールやAPIの仕様やそれが提供されている背景、マルチタスク/プロセス/スレッドを実現するためのミューテックスやセマフォを使った排他制御、コンテキストスイッチなどに関する知識はリアルタイムOSにも共通するものです。ですので、もし単なるPC上のアプリを造る場合でもそれらを意識しておくと、他のプラットフォームでの開発にも役立ち、決して無駄にはならないと考えます。

組み込み系やリアルタイムOSに興味がお有り、と言うのはどちらかと言うと珍しく、業界にとってとても貴重(<ほめてます)ですので、ぜひモチベーションを保って頑張っていただきたいです。

投稿2019/01/20 04:45

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ラズパイ用にプログラムを書くというのはどうでしょうか?
クロスコンパイルが必要ですし、ラズパイにセンサーをつければセンサーを制御してみましょう。

投稿2019/01/18 15:16

fu7mu4

総合スコア1088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

既にいくつか回答がありますが、参考として、、。

組み込みシステムと言いますが、リアルタイムOS を採用した時点で、大半の処理は、組み込みを意識しないで作られている事が多いです。正確には、OS周りのサポートでなければ、となりますが。
理由は簡単で、ハードウェア/処理タイミングを(あまり)意識せずにシステムを作るために、OSを採用しているので、個々の処理で意識するようだと、OSを採用した意味が無くなるからです。
そして、ゼロから作るのでなければ、LEDを光らせるのもパネルから入力するのも大抵、ライブラリ化されていて、呼び出すだけってのが、現場には多いと思います。(少なくとも自分の経験では) fgetc() の代わりに xxInput()とかを使うとか。
その一方、ゼロから作るのだと、ハードウェアの知識が必要になります。場合によっては、回路図を読む必要があります。また、外部I/Oのためには、各種プロトコル仕様なども知らないといけません。昔(8bit CPUの頃とか)だったら、ハードウェアもシンプルで、通信と言っても RS232C知っていれば、良かったかも知れませんが、今の複雑なシステムでは、全てを知っている人は居ないんじゃないかと思います。
お手軽には、既に回答のあるように、ラズパイなんかも良いと思います。(と言っても、大抵はライブラリ使うようですが) その辺で勉強しながら、色々と調べるのはどうでしょう。(結局、当たり前の話になりましたが)
後はコードを書くときに動作タイミングを意識しながら、書くだけでも違うと思います。

投稿2019/01/20 14:31

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問