• ベストアンサー

組込みOS

いつもお世話になっています。 組込み分野によく、OSを搭載するという話を聞きます。 私自身、Keilという会社のIDEであるμVisionという統合開発環境を使って、ARM7TDMIコアCPUのプログラムをC言語で書いています。特に、グラフィックLCDを使ったので、1ライン(8bit)を書くのに費やす時間を極限まで(自分でできる限り^^;)縮小して、メインのループの邪魔にならないように、処理しました。 OSを使えば、タスク処理ができるとの情報を得て、興味がわき、調べてみました。LCDを使ってたので、処理を個別に記述して、あとはタスクに任せれば、メインのループ処理とのかねあいをあまり気にせずプログラミングできるのではないかとの漠然とした考えからです。 私の使用しているCPU自体は、どうやらOSというものを搭載することができるそうなのですが、OSを使用してののプログラミングのイメージがつかみにくい、またそもそもOSとはバイナリで提供され、それをCPUへダウンロードするのか? 等々、いろいろな本を買い漁ったり(会社経費^^;)、WEBを探したりしましたが、やはり漠然としかわからないままでいてます。 OSを使って開発するというのは、いま私が使用しているKeil開発環境以外のものを使って開発・デバッグするということでしょうか? また気軽にOSを入れて(?)プログラミングができるようなお試し環境などあるのでしょうか? せめて、「こういう本読め」のようなご意見でもかまいませんので、よろしくご指導お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

>特に、グラフィックLCDを使ったので、1ライン(8bit)を書くのに費やす時間を極限まで(自分でできる限り^^;)縮小して、メインのループの邪魔にならないように、処理しました。 LCDの制御ぐらいでしたら、タイマ割り込みで実現可能ではないでしょうか?タイマで一定周期で割り込んで、LCDの表示処理を行えばメインループへの負荷もさほど問題とならないと思います。 これで問題あるようなメインループ処理なら、タスク処理にすること事態に無理があります。 このあたりを参考に↓ http://www.cqpub.co.jp/hanbai/books/33/33441.htm ITRONって何だって話なら下記を参照してください。 http://ja.wikipedia.org/wiki/ITRON んで、詳しく知りたいならこちらなど。 http://www.cqpub.co.jp/hanbai/books/33/33351.htm >またそもそもOSとはバイナリで提供され、それをCPUへダウンロードするのか? 組み込みOSは、基本的に周辺装置の違いからターゲットごとのカスタマイズが不可欠ですから、もらってそのまま動くもは考えられないです。カーネルはライブラリとかはあるかも知れませんけど。 >OSを使って開発するというのは、いま私が使用しているKeil開発環境以外のものを使って開発・デバッグするということでしょうか? OS毎にデバッガの利用できるかは様々ですから分からないですね。Keil社自体がRTOSを出しているみたいですが、これはどうなんでしょうね? http://www.keil.com/arm/rl-arm/ (flexible royalty-free RTOS with source code)って書いてあるので無料みたいですが。 >また気軽にOSを入れて(?)プログラミングができるようなお試し環境などあるのでしょうか? 気軽に組み込めるかどうかは不明ですが、Design Wave MagazineのバックナンバーでARMにRTOSを載せる記事があります。 http://www.cqpub.co.jp/dwm/contents/dwm0101i.htm ちなみに、TOPPERS/JSPはオープンソースで提供されるITRONです。 http://www.toppers.jp/jsp-kernel.html なんかITRONばっかの説明になってしまいましたが、他にもOSは沢山あります。

scheimpflug
質問者

お礼

ご回答ありがとうございます。 >タイマ割り込みで実現可能ではないでしょうか?タイマで一定周期で割り込んで、LCDの表示処理を行えばメインループへの負荷もさほど問題とならないと思います。 実はメインループの処理開始の時間を一定に保つために、タイマーを使っています。その中でLCDへの制御をcallして1ループごとにほんの少しのLCD制御を実施し、500~600ループ回ってはじめて1度の描画を達成することにしています。 > (flexible royalty-free RTOS with source code)って書いてあるので無料みたいですが。 お調べいただき、ありがとうございます。 これについてはすでに問い合わせ中です。 ですが、日本の代理店、headquarterともにno responseです・・・ >気軽に組み込めるかどうかは不明ですが、Design Wave MagazineのバックナンバーでARMにRTOSを載せる記事があります。 さっそく、アマゾンで調べましたが売り切れ中でした。 ちょうどこの前月号にARM基盤が付録でついてるものがありましたね。 組込み系ではdesign waveがデファクトスタンダードな雑誌でしょうか? とりあえず、私が使用しています開発環境の付属のものでどうやらOSとやらを使ってタスク処理できるものがあるようなので、実験してみたいと思います。 回答、ありがとうございました。

その他の回答 (5)

  • R32C
  • ベストアンサー率39% (115/290)
回答No.6

>あまり気にせずプログラミングできるのではないかとの漠然とした考えからです。 結論からするとその1点かと思います。 OSを導入することでもっとも大きな点は、実際のところ複数のメンバーで開発しや すくなることです。つまり関係を絶って部分的にソースが作ることが可能になります。 >またそもそもOSとはバイナリで提供され、それをCPUへダウンロードするのか? いろいろ形態はあります。μITRON4.0StandardProfileでは、アプリケーションと リンクするものを想定しています。つまりライブラリですね。 ものによっては別ROM化可能なものとかもあります。 >OSを使って開発するというのは、いま私が使用しているKeil開発環境以外のものを使って開発・デバッグするということでしょうか? Keil開発環境がサポートしているものを使うことがベターだと思います。 サポートしていないものを使おうとすると返ってそれに時間を費やしたりします。 >「こういう本読め」のようなご意見 ITRON等導入についてさっくり書いたドキュメントとしては、M16C関係のMR30あたり のユーザーズマニュアルがいいと思います。あんまり字がぎっしり書いてないので 概念はすぐに理解できると思います。 カーネル入門あたりをななめ読みしてもよいかと思います。

参考URL:
http://documentation.renesas.com/jpn/products/tool/rjj10j1525_mr304_u.pdf
scheimpflug
質問者

お礼

ごかいとうありがとうございます。 >結論からするとその1点かと思います。OSを導入することでもっとも大きな点は、実際のところ複数のメンバーで開発しやすくなることです。つまり関係を絶って部分的にソースが作ることが可能になります。 明快な回答を頂き、ありがとうございます。 >ITRON等導入についてさっくり書いたドキュメントとしては、M16C関係のMR30あたりのユーザーズマニュアルがいいと思います。あんまり字がぎっしり書いてないので概念はすぐに理解できると思います。カーネル入門あたりをななめ読みしてもよいかと思います。 少し拝見しました。なかなか興味をそそるドキュメントでした。 一度、ななめ読んでみます^^; ありがとうございました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

>いやオレも97年頃かな...SH2で開発したことあるにはあるんですよ。OSなしで。でも今の時代にもその手法で開発することあるんですか? 私も去年までの話ですが、今でも変わって無いと思います。 OSを乗せるよりも低コストで開発できる場合が多々ありますので、task用件やインターフェイス(TCP/IPとか)でOSを必要とするほど複雑でなければ今でもありえます。単に高速なCPUが欲しいってだけの用途ですね。 SH3でOS無しを見たこともありますので、場所によってはSH4でもOS無しで開発している可能性はありますね。

  • crew21
  • ベストアンサー率26% (58/222)
回答No.4

くあーーー zwiさん、失礼しやしたああぁぁ! いやオレも97年頃かな...SH2で開発したことあるにはあるんですよ。OSなしで。 でも今の時代にもその手法で開発することあるんですか? >これはWindows上で動くクロスプラットホームの開発環境です。 そうなんだ。それじゃコンパイルしてオブジェクト生成して、あとはシステム側にロードというわけですね。 質問者さんごめんなさい。今もこういう開発あるみたいっす。 組み込みLinuxで3年ばかしやっただけで、遠い昔になってまったみたいです。 ごめんなさい!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

crew21さん、代わり答えますとですね。 >だいたい今どきOS全然搭載しない組み込み開発なんてあるの? SH2やARM7クラスならOSなしで開発することは十分にありえます(実例を色々見てきました)。 >そのμVisionてのは知らないけど、IDEである以上、何らかのOSに乗ってるはずだが。 これはWindows上で動くクロスプラットホームの開発環境です。JTAGでICE代わりにも使えます。ですので、ARM7側にはOSを必要としません。 そもそもARM7-TDMIコア系ですから大規模なOSが載るほどRAMを搭載しているとは思えません。

  • crew21
  • ベストアンサー率26% (58/222)
回答No.2

おいおい、アドバイスというか感想になってしまってすまんけど、 文章の前半を読んでると、バリバリとまでいかずとも油の乗り始めたプログラマって感じがするのに(ハッタリに読めない)、 OSとはそもそも何かって.... つか、OS無い状態でC言語コンパイルできないだろよ? そのμVisionてのは知らないけど、IDEである以上、何らかのOSに乗ってるはずだが。 だいたい今どきOS全然搭載しない組み込み開発なんてあるの? すまん最後は質問になってしもた。

scheimpflug
質問者

お礼

回答、ありがとうございました。

関連するQ&A

  • 組み込みOSの選択について

    評価ボードにOSを組み込んでサーバと簡単な通信をするものを作ろうと 思っています。組み込むOSですが予算も無いのでLinuxかFreeBSDを考えています。組み込みOSとして考えた場合、LinuxとFreeBSDとどちらが適しているのでしょうか? また、おすすめの開発環境等も教えて頂ければうれしいです。

  • 要求する組み込みCPU演算処理能力の割出し方は?

    こんにちは。 要求する組み込みCPU演算処理能力の割出し方はどのようにすればよいのでしょうか? 現時点での背景は以下の通りです: +ロボットを作っていて、そのロボットがやることは決まっています。 +そのロボットのメインCPUは視覚カメラの画像処理までやるので、組み込みCPUは「そこそこの処理能力」が必要だなと思い、そのCPUの評価ボードまで手に入れました。 +そのやることの要求をUMLレベルにまで落とし込むことは出来ました。でも実際のソフトウエア開発は始まっていません。 +ただし、とにかく電力消費がきついね、という話になり、CPUのグレードダウンを迫られています。 「そこそこの処理能力」を持つCPUを選んできたからそういうことが起きるので、そもそもはっきりと(例えば)「このロボットでのCPUの使い方なら、50MIPSレベルCPUで制御ループ周波数は2Hzでいけるよね」のようなコトを言わなければいけなかったのだと反省しています。 ソフトウエアを書いてしまってからそれをテストすれば間違いはないのでしょうが、今すぐ新しいハードウエアCPUの目星をつける必要性に迫られています。 ロボットでのCPUの使い方が分かっているという条件で、「50MIPSレベルCPUで制御ループ周波数は2Hzでいけるよね」というような必要CPU演算処理能力の出し方はどのようなものでしょうか?

  • 組み込みでの画像処理

    こんにちは 最近組み込みプログラミングについて勉強し始めました初心者ですので、質問に稚拙な部分等があっても目をつぶっていただけるとありがたいです。 今まで、スタンドアローンのPCで画像処理(OpenCVを使用)をしたことがあるのですが、組み込み機器上で画像処理を行う場合にもOpenCVは使用できるのでしょうか? また使用できない場合は、どのように画像処理を行うのでしょうか? お答えよろしくお願いいたします。

  • 組込みC開発

    お世話になります。 組込みでARMコアのCPUをチョイスしての仕事を任されました。 開発ツールはKeilというIDEで、C言語でOS使用しないで開発をしています。 C言語はかれこれ2年以上使用しており、文法上の事などはほぼマスター しており、上記のIDEでソースをコンパイルしてコンパイルエラーもなく 60kbytesほどのコードが生成されます。 ただ、このプログラムをターゲットCPUへダウンロードして使うと コードとは異なる動きをするときがあります。 これは、小規模なプログラムでは経験したことの無いことです。 たとえば、思った動きにならないときに、ソースを少しいじっただけで 今度は例外が発生して止まったりします。 割込みは内部タイマー、外部(ボタン等)、UARTなど計4種類を 設定していますが、どうもこのあたりが怪しいと考えています。 たとえばUARTでPCからデータを送って、ボタンを押す、などの アクションを起こすと、データアボートやプリフェッチアボート が発生したりしますので。 ちなみに、割込み処理は、IDEがサンプルソースでつけているものを includeして使っています。 また、CでのプログラムでMISRA-C参考書も購入してチェックして おります。 大規模なプログラミングは今回が初めてなのですが、こうもソース を少しさわっただけで、例外が発生したりする(コード上問題ない と考えています)ので、現状は記述の仕方を変えてみたりして 対応しています。 こうした規模の大きい組込み系でのプログラミングで、注意する点 や、常識的な部分があればお教えいただきたく思います。 よろしくお願いいたします。

  • H8マイコンによる組み込みプログラミング入門

    この分野の初心者です.マシン語,アセンブラ,CPUの仕組みは理解できていますが,CPUと周辺との入出力,デバッグ環境等はまったく自信なしです. H8マイコンを使って,組み込みプログラミングを学習したいと思います.秋月から出ている,AKI-H8~ が手頃なようですが,どれを購入したら良いのかよくわかりません.ゆくゆくは,自分で回路なんぞ組み立ててH8から制御してみたいのですが,現時点では,LCDへの表示やLEDの点灯等の簡単なものを行いたいのです.C言語はできるので,開発環境一式そろったものが良いのです. AKI-H8/3052F USB開発キット(フルセット) AKI-H8/3052F開発セット(H8マザーボードセット) AKI-H8/3048開発キット(即使えるキット) など,8000円台前後でいろいろあるようですが (1)組み立ては難しいですか? (2)パソコンと接続するのに,他に何か必要なのですか? (3) ROMに焼けるのですか?(何回も) (4)最初に述べた目的を達成するには,何を購入すれば良いですか.

  • Windowsのアプリ開発と、リアルタイムOSへの組込み開発、注意すべき点や特徴ってなんでしょう?

    若輩プログラマーです。 Windowsの業務アプリケーション(オープン、Web)開発と、リアルタイムOSへの組込み開発の経験があるのですが、いつも上位モジュール(アプリ層)の開発だったせいかそれぞれの特徴が良く分かりませんでした。 リアルタイムOSというと、割り込みがどうとか、タスクがどうとか、メモリがどうとか。。。でもこれって、Windowsアプリでも注意しないといけない点って同じですよね? そこでご質問です、 Windowsのアプリ開発と、リアルタイムOSへの組込み開発、注意すべき点や特徴ってなんでしょう?

  • 組み込みOSでスタックオーバーフローしたら?

    マイコンにて組み込みOSでスタックオーバーフローするとその振る舞いはどうなるのでしょうか? SH2を使っています。 組み込みOSはNorti4を使っています。 タスク作成したときにスタック容量を指定しています。 タスクはひとつです。 タスクのスタックより前の領域には定義メモリ(グローバルメモリ)の領域になっています。 タスクのスタックより後の領域は大きな領域(数Kbyte)ほどあいています。 この場合にタスクのある関数の動作中にスタックオーバーフローが起きた場合、どうなるのでしょうか? 思いついた選択肢は以下のとおりです。 1.定義メモリ(グローバルメモリ)の領域をオーバーフロー分書き換えて、その関数が終了したら呼び出し元の関数に戻る。 その後、書き換えられた定義メモリ(グローバルメモリ)による影響で処理によってはマイコンが意図しない動作になる。 2.スタックオーバーフローした時点でアドレス例外などの例外処理に飛んでしまう。 3.スタックオーバーフローした時点で、暴走し戻れなくなる。 4.その以外 どんなことが考えられますでしょうか?

  • 同機能の、「組み込み関数」と「ユーザ関数」、両者の性能差について。

    いつもお世話になっております。 PHP5.2.5 Apache1.3.37 SQLite3.3.7 PHPには、組み込み関数が予め、膨大な数、用意されているという話なので、 実際には、 有用であるけども出会うことのない組み込み関数 というものもあるように思います。 この場合、 そういった組み込み関数と同機能のユーザ関数 を車輪の再開発してしまうことが考えられます。 そこで、私が知りたいことは、 組み込み関数で提供されている機能を、 ユーザ関数で実現する際、 性能を損なわずに(つまり、処理速度面でも同等に)、 ほぼ等価な関数をユーザ関数で作ることはできるのか、 ということです。 よく使用されるお馴染みの関数の多くは、 それ自体、基本的な機能でのみ構成されていると思われるので、 それをユーザ関数で実現するとなると、 私にも、「それは難しそうだな…」と思えますが、 そうではなく、 かなりマニアックな関数、 つまり、 基本的な組み込み関数を複数組み合わせて作られているような、 そんな組み込み関数も、中にはあるわけで、 それらの中には、よく知られておらず、 車輪の再開発されてしまうものも多いと思います。 (再開発自体を回避する策があるのであれば、それも知りたいと思います) PHPの中の構造について詳しくないので、 既に変なことを言っているかもしれませんし、 以下でも、さらに変なことを言うかもしれませんが、 組み込み関数とは、C言語など、PHPではない言語で作られていたりするのでしょうか? (処理速度をあげる、等の理由から) そうであるならば、 ユーザがPHPを操って作るユーザ関数は、出来る限り作らず、 既存の「組み込み関数」を利用したい、と私は考えます。 よって、「知りたいこと」を要約すると、 ・車輪の再開発を防ぐ方法 ・車輪の再開発されたユーザ関数の、組み込み関数との性能差 ・組み込み関数の成り立ち(C言語由来?) こうなります。 組み込み関数を検索する際の、自分の検索能力を鍛えるべきなのか、 車輪の再開発することになることを想定し、その再開発能力を鍛えるべきなのか、 どなたかに、何らかのアドバイスをして頂けると嬉しく思います。 (そもそも、組み込み関数に適当な関数があるかどうかを、皆さんはどのように検索されているのでしょうね…。 私なんかは、リファレンス本をメインに探していたりしますが。) 以上、どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 組込み機器のUI開発について

    初めまして、現在WindowsCE6.0をベースに組込み機器を開発しようと検討しております。ユーザーインターフェースはWindowsフォームを使わず、自分がデザインしたUIを使いたいですが、やり方がまったく分かりません、ご存知の方がいらっしゃいましたら教えてください、また、お勧めのツールや本があればぜひ紹介してください。よろしくお願いしますm(__)m CPU:ARM11 OS:WindowsCE6.0 R3 開発言語:VC++、C 開発環境:VisualStudio2005 他のツール:なし 希望:電源ONした後、独自のロゴが表示され、2、3秒後独自のUIが表示され、タッチで機械の設定と制御ができるようにする。アプリも一切Windowsフォームを使いません。イメージとしてはカーナビみたいなもんかな・・・ 自分のレベル:低いと思います。 H8とC言語を使った開発経験はありますが、組込みOSやVC++は初めてですから、かなり迷っています(@_@ どうかやり方とアドバイスを頂ければ幸いです。

  • パネルPCでVB6アプリ動作中にCPU100%が周期的に発生

    初めて質問いたします。 VBによるタッチパネルで動作するソフトを開発しています。 連続動作時(4日間)に、急にCPU使用率が周期的に100%になりました。 特にループ等の処理などで負荷をかけていません。 通常時のCPU使用率はタスクマネージャを開いた状態で、0~4%程度であります。 どうやら、30秒周期で行っているシリアル通信のログをテキストボックスへ表示する際にCPU使用率が100%となっていたみたいです。 ログをテキストボックスへSeltextで追加していて3000行以上になっていたのが怪しいと思ったので、再度通信の周期を5秒にして現在2日間ほど連続的に動作させていますが、再現しません。 同じような現象を見たことがある方いませんでしょうか? 動作環境 OS:windows XPE 開発環境 VB6

専門家に質問してみよう