• 締切済み

OSとファームウェアについて教えてください。

ハードウェア設計者(OS搭載未経験)ですがOSとファームウェアとの違いについて教えていただけないでしょうか?(ソフトについては詳しいことは分かりません) (他の投稿を拝見しましたがパソコンを例にあげて説明されており、理解ができなかったので今回は自分の状況でご説明いたします。) 汎用CPU(SH4)ボード(周辺:SDRAM、フラッシュメモリ、USB、コンパクトフラッシュ)を設計いたしました。このボードは現在、SHの外部バス(アドレス、データ、コントロール)を外部ボードに接続して、外部ボードをコントロールしております。 そこで、ソフト設計者へC言語を使用して、周辺デバイス(CPUボード付属の周辺+外部ボード)をコントロールするソフトを製作してもらいましたが、すこし疑問が生まれております。 【質問】 A.下記1.項のソフトはデバイスドライバと言われる物で、ファーム   ウェアに属するものなのでしょうか? B.下記1.項のドライバを例えば、FPGAで構成してCPUからは   ドライバの設定をしなくてもよく、あたかもSRAM接続のよう   にI/F回路が構築できた場合、FPGAの内部回路がデバイス   ドライバ(ファームウェア?)と解釈されるのでしょうか? C.OSを搭載するという事は、ファームウェアと同様にCPUの開   始アドレスにOSを割り当てておく事になると思うのですが、O   Sをコンパクトフラッシュから起動させたい場合、ハード的に電   源投入後フラッシュメモリ起動であれば、フラッシュメモリにそ   の旨のソフト(起動プログラム?)を組み込む必要があるのでし   ょうか? D.OSを搭載して、今回のように外部ボードをコントロールする   場合、どういった利点が見出せるのでしょうか?   (現在はリレーのONしている時間の設定は、オシロを見ながら    NOP命令?を入れたりして時間調整しております。) E.OSを搭載して、ソフト設計すると言うことは周辺デバイスのド   ライバのファームウェアは準備されていて、単純な命令でレジス   タ設定を意識せずに使用できるのでしょうか? F.あらゆるデバイスドライバを構築して、汎用性のあるファームウ   ェアを構成すれば、それも一つのOSと見なせるのでしょうか? 【ソフト構成内容】 1.例えばUSBデバイスを使用する場合、USBコントロールデバ   イスの設定(レジスタ設定、データ送受信)するソフト。 2.1.項で作成したソフトを活用して、USBポートを使用して   外部に接続しているボードのリレーをコントロールするソフト。 少し、技術者らしくない素人的な考え方ですが、なにとぞ教えてくださいませ。★説明が解りにくく大変申し訳ありません。

みんなの回答

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.3

参考文献について書くのを忘れました。 現在、具体的なお勧め本のタイトルを持っていません。 私が持っている最新の本は Pentiumファミリーデベロッパーズマニュアル しかもPenII時代の古さです。それでも上下巻あり、それ ぞれ1000ページ超えです。 要するに、CPUの仕組みアーキテクチャなどの解説本が いいです。今ならCore2やAthlonの解説本があればいいの ですが。1000ページ超えが4巻くらいになっているかも。 またOSを理解するにはオペレーティングシステムアーキ テクチャ的な題名のものがいいでしょう。 仕事で汎用機を使っていないのであれば、手近なパソコン を題材にしたものがいいと思います。 汎用機と関わりがあるなら、汎用機を勉強した方がずっと 面白いと思います。またスーパーコンピュータも独自の世 界でこれも面白いですよ。マシンが使えるならまた関わり たいと思う世界です。好奇心的テーマが幾つか残ったまま ですね。 ハードウェア設計をされていたらOSなどは上位過ぎるので だいたいの概念把握で、ファームなどの学習に専念した方 がいいかもしれませんね。しかし、私がOSをやっていた頃 は、仕事上で対応するハード屋さんは、OSに詳しかった ですねえ。 ファームに関しては私は本を読んだことがありませんので どんな文献があるのか知らないです。 若干知識があるのは開発に関わり手書きの資料は目を通し ているからです。 全然具体的でなくてすみません。

oldmanx
質問者

お礼

親切なご返答有り難うございました。 少しずつでも、上達するように邁進いたします。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

> OSで有ろうと、ファームウェアであろうと、 > CPUから見れば機械語であることは変わらない? ここがまったく違います。 OSは機械語で動きますが、ファームは機械語より 細かい命令で動きます。しかも命令の種類が少な い。種類が少ないと簡単、という訳ではありませ ん。回路のことを理解しなければ分からない命令 群です。レジスタの概念も無いのでは。 例えば、どこそこのゲートをどのくらいの時間開 放せよ、とかそんな命令です。命令の種類は少ない ですが、回路の中にはゲートなんて山のようにあり、 それぞれのゲートの意味を知らなければなりません。 OSが動いているような、メモリとレジスタを中心と した所謂機械語とファーム用の命令はまったく別で あり、ファームはCPUで動作するものではありません。 装置そのものなのです。CPUの機能自体がファーム化 されている場合はファームなのです。 言っていることが難しいかもしれませんが、例えば 機械語のL(ロード命令)がありますね。 これをファームで書くと、今は基本的に12段階くら いで多くのファーム命令で書いているはずです。 命令フェッチ、オペレーション解釈、オペランド解釈、 アドレス計算・・・これらの段階的機能を実現する 命令が、どこそこのゲートを開け、などです。 とOSが使っているL命令を実現するのがファームです。 これはCPUの場合ですが、ファームとは装置の機能を 実現するプログラムのことです。 CPUの機能がファームで実現されているコンピュータは OSを立ち上げることをIPLと言って、メモリにOSを取込 みます。 それに対して、CPUのファームをCPU内に取込むのをMIPL と言っていた様に記憶します。Mはマイクロプロセッサ だったかな・・・忘れました。 IPLはCPUが動いて実現しますが、MIPLはCPUそのものを 取込むのでCPUは動作できません。このようなマシンは 小型コンピュータが内蔵されていて、小型コンピュー タで大型コンピュータのファームをセッティングするの です。 少しでも理解の手助けになるような文章になっていたら いいのですが。

oldmanx
質問者

お礼

専門的なご説明有り難うございました。 私にとっては、鬼のように難しい内容でした。汗 現在の所、ズバリOSは概念的な物として取り扱って、ある程度 そう言う物として考えておこうと思います。 CPUの詳細なハード構成自体をを熟知していないと、とてもじゃないけれども理解出来ない内容だと言うことを痛感しました。 CPUのハードウェアマニュアルで外枠だけ見てハード設計をしてま したが、この内容を熟知するには、もっと根底の物を理解していない と無理だと思いました。 色々有り難うございました。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

勘違いされていることが多く、一つ一つ答えるのは 辛いので、一般論です。 1)ファームウェア  ハード的機能を実現します。  例えば汎用機のCPU命令はフォーム化されており、  ファームを変えることにより、ハード命令の追加  も可能。 2)デバイスドライバ  OSの一部。ハードをコントロールする、1種のハー  ドに特化したプログラム。 3)OS  ハードとソフトをコントロールするシステム なお、今までOSの一部だった機能がハード化され ファームウェアとして組み込まれたものもあります。 機能の移譲はあっても、ファームとOSははっきり別 ものです。 レジスタの意識:  OSとか関係がありません。  アッセンブラで作るかコンパイラ言語で作るかと  いう問題です。 OSのロード  コンパクトフラッシュであろうと、HDDであろうと、 その状態はOSが保存されているだけです。 主記憶装置にロードされてから動きます。 このOSをメモリに取込む一連の作業をIPL(イニシャル プログラムロード)とかBOOTと言います。 BOOTはブーツストラップの略です。 あまり深くも広くも無いですが、関わればけっこう大変 な世界ですが、技術は確立した世界でしょう。 また、OSが用意するメモリ空間は、CPUの機能と手を組ん でかなり複雑な世界です。まず、ページングの概念があり 論理アドレスが連続していてもページ単位で物理アドレ スがばらばらでも構いません。 次に仮想メモリの概念があり、ページ単位でHDDなどの外部 にあっても構いません。CPUがアクセスに行くとページが 無ければページフォルトを起こし、OSがHDDにあったページ をメモリに取込んで、論理アドレスに物理アドレスを割当て 中断していたところから再開する、といった具合です。 また、論理アドレスの多くはそれぞれのアプリで別空間で すが、同じ空間を持った部分もあります・・・ OSについて書いていると本が2~3冊くらいになってしまい ますね。 OSたる条件  フォームはOSにはなりえません。ファームは1つの 装置の機能を実現するものです。OSはハードをまたがって 制御します。また、ソフトの管理もファームでは考えられ ないでしょう。それが出来たらファームではなくて、 やはりOSです。 難しい説明かもしれませんが、ファームは装置であり、 OS(デバイスドライバを含む)は装置上で動作し、装置 やソフトをコントロールするものです。

oldmanx
質問者

補足

返答ありがとうございました。 意味不明な質問をしてしまいすみませんでした。 回答の意味も正直難しくて理解できませんでした。 (ハードの根元から、説明されている文献等を探して勉強します。 参考になる文献等があればご教授願います。) 一点に絞って、再度ご確認させていただきますと、 OSで有ろうと、ファームウェアであろうと、CPUから見れば 機械語であることは変わらない?(←そもそもここが間違っていたらすみません)と思いますが、とすれば周辺デバイスへのレジスタ設定等の プログラムは何処に格納されているのでしょうか? デバイスの根元に埋め込まれていて、それを制御するソフトがさらに上位にあり・・・というふうに階層化されてその中の一階層がOSですよ!ということになるのでしょうか? 又、OS上でソフトを実行するということは、OSが管理しているメモリにそのソフト内容を解読して埋め込み、それをOSの管理の下でCPUに実行してもらうということになるのでしょうか? (OSもCPUにすでに実行してもらっていますが、その中での話しとして)

関連するQ&A