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

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

新規登録して質問してみよう
ただいま回答率
85.48%
マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

5回答

2963閲覧

ハードウェア?デバイスドライバ?

siaron

総合スコア8

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2018/06/02 16:33

またまたさらに変な質問が飛び出しますが
ハードウェアって言うのは一般的にはあまりいじっちゃダメみたいに見かけた気がします
マイコンとかラズベリーパイというのは
ハードウェアに当たるのでしょうか?
いずれはそういうのを扱いたいのですが機械部分を作りたいというわけではないですが
ハードウェアの命令はどう作れるんでしょうか?

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

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

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

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

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

guest

回答5

0

まずは使いたいデバイスの仕様を理解して、どんな信号を送ったらどんな風に動くと理解して、ドライバーやソフトを作ります。
多くのデバイスドライバーでは、ソフト側ではデバイスが変わったり複数のものを相手にするときにいちいち個別に作成しなくて良いように共通の部分を決めて作成される事が殆どです。

例えばマウスのドライバーではマウスの動き、ボタンのクリックなどをどんな風に受け止めたいと決めて規格化。それに合わせてマウスとかトラックボールのハードとのやり取りをドライバー内部で定義。ソフト側はメーカーや機能をあまり意識せずドライバーをインストールしておけば動作する。(最近ではデフォルトで動くものが多くなりましたが)

他にもUSBカメラとかほぼ繋ぐとすぐ動作する。(拡張的な部分があればその分は特別なドライバーが必要ですが。例えば輝度調整とか焦点の調整とか)

そんな働きの部分がドライバーと考えれば。結局ハードをどう動かすか?のソフト部分がドライバーです。

投稿2018/06/02 20:58

MasahikoHirata

総合スコア3747

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

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

siaron

2018/06/03 04:55

その仕様とはなんでしょうか、部品があってその部品の事でしょうか? 自分が言っているラズパイやマイコンでしょうか? わからないことの質問なのでざっくりとした言葉ですいません 信号をよく理解してませんがどんな知識が必要でしょうか?
MasahikoHirata

2018/06/03 05:54

質問の表題がハードウエアなのか?デバイスドライバーなのか?という前提で回答します。 仕様とはハードの制御方法や通信方法について。(これを理解できていなければ制御できません) 例としてラズベリーパイなどで良く使われるセンサーで説明します。 漠然とセンサーと言われても分かりにくいでしょうから、参考に販売されている例として https://www.amazon.co.jp/OSOYOO-%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-Arduino-raspberry-%E5%AD%A6%E7%94%9F%E5%AE%9F%E9%A8%93%E3%81%AB%E6%9C%80%E9%81%A9/dp/B00YR0COXA この中の温度センサーでは、シリアル通信で温度が取得できます。 さてその方法は。 http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/DS18B20/DS18B20manual.html にて詳しく書かれています。 これが使い方(仕様)です。 それを使いやすく、また他のソフトにも使い回しできるように作成するのがデバイスドライバー。ICが変わってもドライバーを対応させればソフトの変更なしで対応する設計もできます。
siaron

2018/06/03 16:48

ありがとうございます なのかというか理解してないので曖昧になってしまっていますが 知識を増やしたいのでどちらでも、どちらもと言う感じでしょうか 分類できればそれに越したことはないですけども ありがとうございます! 一つでも流れしれればきっかけにはなるのでありがたいです ICですね、これから理解を深めたいと思います
guest

0

ハードウェアの命令体系は、ハードウェアを設計する人が決めます。
ハードウェアを操る命令は、ハードウェアのマニュアルを読んで理解したプログラマが書くことができます。あるいはOSがデバイスドライバを用意してくれてたら、APIを呼び出すことで間接的にハードウェアに命令を出すことができます。

投稿2018/06/03 10:45

a_saitoh

総合スコア702

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

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

gm300

2018/06/03 11:58

ハードのアーキテクチャを決める人が決めます。設計する人が、AMDの場合は、intelが設計したアーキテクチャに基づいて設計します。 ARMの場合は、ARMのアーキテクチャに合わせて、appleの人とか、Samsung、Asus、Sonyその他の人が設計します。 Power9、SPARC64の場合は、アーキの設計とハードの設計は大体同じところで設計しています。(のはず)
siaron

2018/06/03 17:19

マニュアルとは一般的には公開されてるものなのですか? 一般人はそんな見る機会ないので マニュアルを理解できるように努力します 割と設計はそんなに多くないんですね
a_saitoh

2018/06/04 04:17

ものによりますが、仕様は公開されているものが多いです。ネット検索してみてください。一部に、メーカー提供のドライバでしか動かさせない方針でハードウェアのプログラミングのやりかた仕様を公表していないものもあります。 たとえば、PCのシリアルポートだとこれ。この手のものの中では非常に短い部類で15ページしかありません。http://www.latticesemi.com/~/media/LatticeSemi/Documents/ReferenceDesigns/SZ/UART16450Transceiver-Documentation.PDF
guest

0

ハードウェアって言うのは一般的にはあまりいじっちゃダメみたいに見かけた気がします

別にダメじゃないです
いじるのがダメ、じゃなく、いじるのが難しい、ってだけのはなしです

ハードウエアいじろうと思ったら、エディタでコード修正するだけではできません。
ほら、この時点で無理ということがわかるでしょう

投稿2018/06/03 00:10

y_waiwai

総合スコア87774

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

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

0

こんな感じです。
ハードウエアは、機械。
ソフトウエアは、プログラム。
プログラムで、機械を 自動運転する・相互接続する・測定する..

ソフトウエアは、机上で変更が簡単に行えます。
ハードウエアは、簡単ではないことも多いです。

加えて、解説本を書く人も含めて、多くのソフトウエアの人は、ハードの知識が少ないし、経験はほとんど無い場合が多いでしょう。そのために、ハードウエアを変更することに抵抗感がある場合が多いのでしょう。

例えば、

ラズパイのメモリを増やすことは、半田ゴテとパーツで机上で できるかもしれない。
プロセッサをインテル製の大きなものに置きなおすのは、かなり大変。
ラズパイのプロセッサの中身を変えるためには、数か月単位の作業が必要。
..
これでまあまま満足・気に入ったら評価してね。

投稿2018/06/02 23:04

gm300

総合スコア580

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

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

pepperleaf

2018/06/03 01:10

> 多くのソフトウエアの人は、 ソフトウェアから、入った人には、ハードの敷居は高いですね。その一方、ハードの人からは、良く書けると言われますが、、、。 ラズパイのメモリ交換は分かりませんが、、、、ちょっと調べてみたら、SoC。CPU,Memory etc.が一体化なので、一般人どころか、ハードの人でもまず無理。(現実的なコストでは)
gm300

2018/06/03 01:29

zynq berry というものがあって、ある程度書きなおせます。 https://www.trenz.jp/aboutzynqberry.html コスト的には、zynq berryの値段は、15,000円なので普通に買えます。 容量的にArmのコアを書き直すことはできないのですが、周辺は書き直せます。チップについているHDMIを無視して自分のHDMIを作ればそこも直せます。イチからHDMIを作るのは大変なので、部分修正に留めたい人には、そういったこともできなくはないです。 Armではなくてプロセッサはなにでもよいのであれば、自分で書くことも、開発キットに入っているものを使うこともできます。デバイスは違いますが、同好会で似たデバイスにプロセッサを入れている人もいます。 http://respon.org/ >ソフトウェアから、入った人には、ハードの敷居は高いですね。その一方、ハードの人からは、良く書けると言われますが、、、。 大半は、勉強のコストですよね。ソフトも普通OSを書かないし、ドライバも作らない。Pythonで上物だけ書く時代の中で、ソフト・ハード両方の底の方から理解するのは、大変です。1万ページくらいは本読まないといけない気がします。
pepperleaf

2018/06/03 02:01

ラズパイのSoCは書換え可能なのですね。 にわか調査では、分かりませんでした。 ありがとうございます。
siaron

2018/06/03 04:48

プロセッサを書き換えるとはどういうことでしょうか? あれももっと深いところからかけるんでしょうか? 自分の中でのプログラミングの最小単位がアセンブラなのでアセンブラで書くんですか?みたいにしか言葉が見つかりません 実現可能なのは教えていただきましたが、それを示すことばがわかりません どう調べたらいいでしょうか?
pepperleaf

2018/06/03 05:14

今のCPUは、機械語を実行するためのプログラムが入っています。(機械語実行用インタープリタ?) そして、そのプログラムは、外部から変更可能な領域に格納されているという事です。FPGAとか、マイクロコードとかで検索かけると詳しい説明が見つかるかもしれません。(FPGA とマイクロコードは別物ですが、それを組み合わせたものと考えても良いかと)
ikadzuchi

2018/06/03 09:49

RaspberryPiとは無関係なFPGAボードの話ですね。 > プロセッサを書き換える 一般的なプロセッサが書き換えられるわけではありません。 プロセッサとは異なるプログラマブルロジックデバイスというたぐいのデバイス(「FPGA」とほぼ同義)を使うと、ロジック回路を組み替えられる(※注)ということです。 プロセッサもロジック回路の塊ですから、FPGAを使えばプロセッサを(市販の普通のプロセッサには遠く及ばないごく小規模のものなら)自作することができます。 使う言語はアセンブラやCなどのプログラミング言語とは違ってHDL(Hardware Description Language)というたぐいの言語で(あれ、これ別の質問でも言いましたね)、ロジック回路の組み合わせを記述します。 なおマイクロコードは「ICチップの動作を書き換える」点で働きは似ているものの、プロセッサがプログラムを実行するのと同一の仕組みで動きますのでFPGAとは分けて考えたほうがよいと思います。 ※ 厳密なことを言うと、中でロジック回路が組み替わっているわけではなくルックアップテーブルの書き換えだったりもするが、外から見ればロジック回路が組み替わっている「ように見える」のでそう考えて差し支えない。
gm300

2018/06/03 11:50

Zynqは、ラズパイと似ていますが、全く違うハードウエアです。 Linuxで普通にプログラムするのであれば同じように使えます。 カーネルやon boardのハードを駆動するデバイスドライバは少なくてもそのままでは動作しません。 Zynqの場合、PS=processorのまわりにハードワイアされた、幾分かのIPがあって、bootできたりARMだけでそれなりの機能を実現できます。DDRもPS部に接続できる。PL=programmable logic部にもI/Oがついていて、その部分にもDDRをつけることができる。Zynq 7000の場合、bootは、かならずPS部から行う必要があって、PL部分だけでbootすることはできない。PS部にはboot loaderもついていて、FATフォーマットのSDcardのBOOT.BINを探して読み込むことができる。ということになっています。
siaron

2018/06/03 16:59

皆様ありがとうございます 難しすぎてついていけませんが 勉強用にはいいのかなと思ってます
guest

0

コメント書きながら、書ききれなくなったので、、、。

コンピュータの世界では、ハードウェアとソフトウェアの境界は曖昧と思っています。ソフトウェアでできる事は、(それなりの)ハードウェアを作成すれば、実現できます。特に、FPGAはソフト(ここもソフト)書換えができるので自由度が高いですね。それでもハードウェアに分類されると思った。ではFPGAと専用ハードウェアは何が違うか。専用ハードウェアの方が一般的に高性能で安い。ただし、作成に時間が掛かるし、初期コストが高い。(その辺のバランスで決めていると聞きます)
あと、ハードウェアと言った場合、機械部分も含みます。車で行ったら、エンジンとかタイヤとか。 こちらはまた、違った世界ですが、今は、CAD設計が大半のようなので、昔ほどの敷居は無いと思っています。

ハードウェアの命令はどう作れるんでしょうか?

ソフトウェアです。ただし、ターゲットが一般のPCで無いだけで。普通のPCみたいにキーボードやディスプレイが繋がっていないので、デバッグは特殊ですが、、、(昨今は、PC上のエミュレータがあるらしい)

マイコンとかラズベリーパイというのは
ハードウェアに当たるのでしょうか?

ハードウェアだと思います。と言うより、ハードウェア扱いですね。
話は違いますが、コンビニとか、スーパーのレジは何でしょうか? ただのレジって人が大半だと思いますが、今時のレジは多機能です。カード情報確認、自動割引きとか、中にコンピュータが入っていると思います。(当然、ソフトも)
その機能を実現しているのは、ソフトウェアでしょうが、総体としてはハードウェアで、部品としてのソフトウェア。(組込みの大半はそう)

投稿2018/06/03 01:57

pepperleaf

総合スコア6383

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

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

siaron

2018/06/03 04:42

ありがとうございます 例えば条件やらオンオフやらでオンオフとかで転倒するとか色も指定できるとか開けるのもオフなら鍵あけるとかあるとは思いますが、ハードウェアの機能をどう使えるかというのがよくわかりません、同じような質問繰り返してしまいますがモニターの色を表示もただのオンオフてことですか? どんなサイトを見ればいいでしょうか、根本的に間違えてたらすいません
pepperleaf

2018/06/03 05:28

それらに正確に回答するには、今の液晶はどういう原理で動いているかまで書かないと正確ではないかもしれません。それは大量の時間と資料が必要です。 現実には、液晶ディスプレイは、(例えば) HDMIで接続されている。そしてHDMIで接続されているディスプレイは、このグラフィックボードがサポートしており、対応するデバイスドライバがサポートしている。そのデバイスドライバを使うには、この関数(ライブラリ)を使えば、良いという理解で使っていると思います。これらをすべて知っていれば、完璧でしょうが、まず、いないと思います。一般的な使い方を覚えて、困った時に調べるが普通じゃないかと思います。あるいは、その一部が仕事になった時。
siaron

2018/06/03 17:06

そうですね 理解をしたら先に進めばいいですね、地道にやってみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問