ページ 11

C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 15:58
by おはつ
すいません、初心者です。ここの掲示板で質問することではないかもしれませんが、よろしくお願いします。

まず、ちゃんとした知識がなさすぎるためか、自分で色々調べてもそのままもやもやしたままになってしまい、結論が出ない状態です。
よろしくお願いします。

現在、LinuxにてC言語による開発を行っています。
Linuxは組込み用Linuxを使用しております。

開発ようのLinuxでソフトをコンパイルし、
組込み用Linuxにコピーして、その中でCプログラムを起動する。
ということを確認しました。
※組込み用OSをCFカードにいれて他の機器で動作確認行いました。

ここで、教えてください。
てっきり私はこれは組込みをやっているのだと思っていたのですが、組込みではなくパソコンだよとつっこまれてしまいました。

私の中でPCと組込みの違いがよくわかりません。
下記サイトを見ましたが、
http://www.eforce.co.jp/technology/technology1.html

今回のLinuxで行っていることはPCということになるのでしょうか?
実際に他の機器でCFにコピーして起動し、キーボードで操作しています。

家電製品のほとんどが組込みであるといいますが、何をもって組込みで何をもってPCなのかいまいちわかりません。
変なこと言っていたら、すいません。
もやもやしていて、なんとかはっきりさせたいです。よろしくお願いします。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 16:45
by ISLe
おはつ さんが書きました:開発ようのLinuxでソフトをコンパイルし、
組込み用Linuxにコピーして、その中でCプログラムを起動する。
ということを確認しました。
※組込み用OSをCFカードにいれて他の機器で動作確認行いました。
ふつうに組み込み機器用ソフトの開発手法だと思います。
おはつ さんが書きました:ここで、教えてください。
てっきり私はこれは組込みをやっているのだと思っていたのですが、組込みではなくパソコンだよとつっこまれてしまいました。
つっこみ内容の正確な表現が分からないと本意も分かりませんが。

ふつう、組み込み機器用のソフトを、対象の環境上で開発することはありません。というかできません。
ソフトウェアはPC上で作って、組み込み機器に転送して実行・テストします。
こういうのをクロス開発と言います。

効率良く実行・テストできるように、PC上に仮想的な組み込み機器の環境を作ることがあります。
本物そっくりに作ってあるものをエミュレータ、本物そっくりではないけれどPCの機能を使ってそれなりに動くように作ってあるものをシミュレータ、と呼んだりします。
おはつ さんが書きました:今回のLinuxで行っていることはPCということになるのでしょうか?
実際に他の機器でCFにコピーして起動し、キーボードで操作しています。
その『他の機器』が何なのかというところが重要じゃないですかね。
実際の組み込み機器なのか、あるいは勉強のためにPC上に作った環境で動かしているとか。
後者ならパソコンで動かしてるだけかよ、とつっこまれる可能性はありますね。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 16:54
by softya(ソフト屋)
組み込み機器(自販機やレジ)などでPC(パソコン)がそのまま入っているものはありますね。
と言っても、これも一種の組み込み開発です。

>てっきり私はこれは組込みをやっているのだと思っていたのですが、組込みではなくパソコンだよとつっこまれてしまいました。

狭義の組み込みだと家電製品や車などのマイコンの事を言いたいのだと思います。
要するに一般PCを機器として使っているかどうかの違いじゃないでしょうか。

[補足]PC/AT系の互換アーキテクチャ(今のWondows/Linuxパソコンの一般的なアーキテクチャ)を使っているのならパソコンと呼ばれてもおかしないでしょう。
「PC/AT互換機 - Wikipedia」
http://ja.wikipedia.org/wiki/PC/AT%E4%B ... B%E6%A9%9F
一般の人の考えるパソコンとは、やはり違いますが。
「2011年10月号 組み込みの世界に接近するPC/ATアーキテクチャ 目次|Interface」 ← こういう機器なのでは?
http://www.kumikomi.net/interface/contents/201110.php

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 17:05
by おはつ
ISLe さんが書きました:ソフトウェアはPC上で作って、組み込み機器に転送して実行・テストします。
こういうのをクロス開発と言います。
では、開発用Linuxで作成して、組込み用Linuxに入れているのは上記の言っていることになりますね。
ISLe さんが書きました:実際の組み込み機器なのか、あるいは勉強のためにPC上に作った環境で動かしているとか。
softya(ソフト屋) さんが書きました:要するに一般PCを機器として使っているかどうかの違いじゃないでしょうか。
ほんとに知らなすぎてごめんなさいですが、
一般的なノードパソコン、デスクトップはPCというのは
何をもってPCというのでしょう。(変な質問すいません)
というのは組込み機器にもCPUがありますよね?

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 17:12
by softya(ソフト屋)
上の補足でも書きましたが特徴を上げると
・x86系CPUを使用していること(必須条件ではないと思います)
・PC/AT互換のバスアーキテクチャを採用していること(重要)
・一般PCと同じチップセットを使用していること(必須ではない)
・Windowsやx86系LinuxOSが大した手間もなく動作すること。
じゃないでしょうか。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 17:36
by ISLe
例えばAndroidだと、Androidパソコンあるし、家電や車で使う動きもあるし。
Androidそのものは組み込みでしょうけど、Androidアプリはどうなの、と。

いわゆるマイコンとかのファームウェアは疑うこと無く組み込みと言えるところでしょうけどあとは正確な分類は分からないですね。

個人的な意見ですけど…
あらかじめハードウェア要件が限定的で自由に拡張できないのが組み込み機器。
汎用インターフェースを備えベンダー提供ドライバで自由に拡張できるのがパソコン。
という感じかな、と。

まるきりパソコンと同じ性能でも、特定用途にしか使えないようにカスタマイズされてて変更できないなら組み込み機器じゃないでしょうかね。
Xbox360のゲームコントローラーをUSBでウィンドウズに接続して使えるけど、Xbox360にいろんなUSB機器を自由に接続して使うことはできない、みたいな。

乱暴ですが、開発環境インストールできるのがパソコンで、インストールできないのが組み込み機器、ってのはどうでしょう。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 17:54
by non
私の認識では、
PCは汎用の用途のために標準化された入出力装置を備えたもの。
組み込みマイコンはある特定な機能のために使用し、実現に必要な入出装置のみを備えたもの。
かな。
最初に突っ込まれた方が言われているのは、まだターゲットマシンを動かしてないじゃん。ってことかな。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月08日(木) 18:02
by たかぎ
パーソナルコンピュータを「個人によって占有されるコンピュータ」だとするなら、電気炊飯器のマイコンだろうが、自動車のECUだろうが、すべてパーソナルコンピュータになってしまいます。
ホスト環境またはホスト処理系かどうかという観点では、LinuxやAndroidはホスト環境だといえます。
結局のところ、その突っ込んだ人が「パソコン」をどう定義しているのかによります。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月09日(金) 09:00
by おはつ
みなさん、色々な意見ありがとうございます。
結局のところ、ここを見ればそれがPC機器、組込み機器というのは人それぞれの
定義の仕方によるというところでしょうか…

PC
・汎用性、拡張性がある

組込み
・特定の動作のためだけのもの

では組込み機器として作成していたものは拡張できないのかというところも疑問です。

私は、組込み用Linuxを使用していたため組込み機器と認識していました。
今回の場合、拡張ボードなどを取り付ていますので、PCということになるのでしょうか。
そうなると、組込み用Linuxを使用する理由がわからなくなりますが。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月09日(金) 09:10
by softya(ソフト屋)
おはつ さんが書きました:私は、組込み用Linuxを使用していたため組込み機器と認識していました。
今回の場合、拡張ボードなどを取り付ていますので、PCということになるのでしょうか。
そうなると、組込み用Linuxを使用する理由がわからなくなりますが。
結局PC/AT互換アーキテクチャでは無いのでしょうか?
[追記]
・その機器のマイコンは何系ですか? x86かどうかだけでも確認して下さい。
・拡張ボードはISAあるいはPCIバスですか?
・ATA/ATAPIは使っていますか?


[補足]Windowsにも組み込み用Windowsがありますね。
「接続機器 | Windows 機器 | Windows Embedded Standard 7」
http://www.microsoft.com/windowsembedde ... ard-7.aspx
こういうPC/AT互換アーキテクチャを使っている機器をパソコンと呼ぶか組み込み機器と呼ぶかだと思いますが。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月09日(金) 11:34
by おはつ
softyaさん、ありがとうございます。
softya(ソフト屋) さんが書きました:結局PC/AT互換アーキテクチャでは無いのでしょうか?
[追記]
・その機器のマイコンは何系ですか? x86かどうかだけでも確認して下さい。
・拡張ボードはISAあるいはPCIバスですか?
・ATA/ATAPIは使っていますか?
・x86
・全てISA
・ATA使用しています

です。
softya(ソフト屋) さんが書きました:こういうPC/AT互換アーキテクチャを使っている機器をパソコンと呼ぶか組み込み機器と呼ぶかだと思いますが。
現在私が行っていることはPC/AT互換アーキテクチャを使っている機器に組み込んでいるといってもいいのでしょうか?
組込みをしていることになるのか、こういったことをしているのは一般的にはそうではないのでしょうか。すいませんそれぞれの定義があるのかもしれませんが、アドバイスお願いします。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月09日(金) 11:44
by beatle
そもそもパソコンとか組み込みという言葉に正確な定義がなく、だから「〇〇はパソコンであるか、組み込みであるか。」
という問題は場合によって、人によって答えが変わるのは当然なような気がします。
おはつさんは、今開発している機器がパソコンかどうかということに非常なこだわりを持っておられるようですが、
それほどこだわる意図は何でしょうか。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月09日(金) 11:52
by softya(ソフト屋)
おはつ さんが書きました:現在私が行っていることはPC/AT互換アーキテクチャを使っている機器に組み込んでいるといってもいいのでしょうか?
それは詳しい人に確認してください。ほぼPC/AT互換アーキテクチャで間違い無いと思います。
おはつ さんが書きました: 組込みをしていることになるのか、こういったことをしているのは一般的にはそうではないのでしょうか。すいませんそれぞれの定義があるのかもしれませんが、アドバイスお願いします。
組み込みと言うとOSもが無かったり特殊だったりでx86系のCPUじゃないワンチップマイコン系(ARM、H8、R8、SH、PowerPC、MIPS、PIC、AVR、etc.)って仕事もかなりの部分を占めているので、そういう物でも仕事が出来たら組み込み屋として一人前だと「組込みではなくパソコンだよ」と答えた人は思っているのでは?
おはつさんは、そちらの方の自信はどうでしょうか?たぶん、そこが気になっているんですよね。

[補足]x86だとマイコンのデータシートやエラッタなんて目を通す機会なんて無いでしょうし。

Re: C言語での組込み開発とPC?開発の違いについて

Posted: 2011年12月09日(金) 13:12
by おはつ
色々と意見ありがとうございます。

当初私が考えていたものが下記になります。
・PC
制御はPC内にあるアプリケーションをマウスやキーボードで操作し、「制御対象」となる機器に出力したり、入力を受け取ったりする。

・組込み
PCで述べた「制御対象」となるものの中に組み込まれたソフトがあり、その動作をする。
※制御対象自体はセンサなどによる入力など

という認識でいました。
今回使用した機器は、拡張ボードでシリアル通信やUSBなど使用するので、自分が当初考えていたものを考えるとPCにあたると思います。(またみなさんの話を聞いていても)
ただ、組込み用OSを使用していることから、組込みになるのか?と思いみなさんに意見を頂戴しました。

結局のところ、こだわって組込みかPCかなんて考えなくてもよいことが分かり、
当初のあやふやだった部分が少し明確になった気がします。

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