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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

2回答

296閲覧

Linuxのデバイスドライバ周りの用語の関係について整理したい

toshiyan

総合スコア74

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/08/18 09:14

Linuxのデバイスドライバを勉強していると、以下の用語が出てきます。

  • dev
  • udev
  • ベンダーID、デバイスID
  • ドメイン、バス番号、スロット番号
  • モジュールエイリアス

これらの関係が、ぶっちゃけよくわかりません…。これらの関係がわかりやすくまとまっているサイトなどありますでしょうか?

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

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

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

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

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

pepperleaf

2018/08/18 10:10

具体的に何用のデバイスドライバを作りたいのでしようか? 目的によって学ぶ範囲が違ってきます。デバイスドライバの守備範囲は広いので、全てを知っている人はごく僅かと思います。
guest

回答2

0

Linux デバイスドライバ でくぐってみました。

The Linux Kernel

The Linux Kernel (多分、上と内容は同じ)

組み込みLinuxデバイスドライバの作り方 (1)

組み込みLinuxカーネル構築の実際

以前、調べた時のURLが幾つか消えていた。デバイスドライバ開発は、あんまりメジャーじゃないので、後は、英文でしょうか。

Read/Write だけじゃなくて、Ioctrlもサポートが必要なんだって改めて思い出した。 ま、上記だけでは不十分とは思いますが、手掛かりにはなるでしょうか。


[追記]
googleさんに、"PCI ..." としたら、"pci バス番号 デバイス番号 ファンクション番号" と補完してくれました。結構、調べる人いるのでしょうか。

色々と、解説ページがあったので、
C MAGAZINE Linux programming Tips
PCIコンフィグレーションに関するページ
■PCI(PeripheralComponentInterface) ... ここまで遡る必要あるか? きちんと理解するためには必要かも。

他にも多数ありましたが、こんなところで。
ファンクション番号は、あるページでは、"機能番号" とされていました。そのデバイスが、どのような機能をサポートするかという事です。番号 0 は必須で、その他は任意(というより、何をサポートするか)

投稿2018/08/18 11:48

編集2018/08/19 08:50
pepperleaf

総合スコア6383

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

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

toshiyan

2018/08/18 13:04

回答ありがとうございます。 実はただの興味本位です。仕事などでデバイスドライバを開発するという目的はありません。興味本位ですが、物凄く知りたいと思っていますし、Linuxカーネルについてもっと詳しくなりたいとも思っています。 デバイスドライバについて調べると、色々な用語がまとめて出てきて混乱してしまうのですよ…。まずPCIって結局なんだ?と思います。lspciは一体何を表示しているのでしょうか?この一覧にはUSB controllerやSATA controllerがありますが、これらがなぜ一覧に含まれているのかがわからないのです(PCIってただのプラグのことじゃないの?USBやSATAってPCIとプラグの形違うじゃん、と思うわけです)。 上の混乱に含めて、更にバス番号とかudevとかそういった概念が出てくるので、ぶっちゃけ本当に混乱しているのですよ…。そんな混乱を晴らしてくれるような素晴らしい図が欲しいです…。
pepperleaf

2018/08/18 13:10

> そんな混乱を晴らしてくれるような素晴らしい図が欲しいです…。 あったら、私も欲しい。 以前、トランジスタ技術の付録で外部 I/Oの解説がありましたが、昔の話。ハードウェア寄りの話なので、探し方を変えた方が良いと思いますが、ソフト指向の方には厳しいかも。
toshiyan

2018/08/18 13:29

僕がPCI周りについて理解した暁には、そのような図を作りたいと思っています。需要はあると思うんですよね…。なんか、Linux周りの人たちって閉鎖的な人が多いというか、優しく教えないという職人の世界に近いものがあるんですよね…。僕が目指しているのはそこではないのですよ。 自分語りして申し訳ございません><結局のところ、PCIという言葉はPCIバスという、複数の機器を繋ぐケーブルの意味も持っている感じですかね?あのPCIeというインタフェースだけでなく…。
toshiyan

2018/08/18 13:32

連投して申し訳ございませんが、疑問が湯水のように湧き出てくるので質問させてください。 バス番号というのは、PCIバスに接続された各機器を見分けるためにあるものという認識で正しいでしょうか?ということは、スロット番号やドメインは何のために存在するのでしょうか?すみません。迷惑なら無視しでください。別の質問として投稿させていただきます。
toshiyan

2018/08/19 06:14

違いました>< バス番号はその名の通り、各バスにつけられた識別子のことのようですね。ただしこのバスは、USBバスのようなものは含まず、あくまでPCIバスに限定されるようですね。そして、PCIバスには複数のPCIデバイスが接続されており、そのPCIバス毎に与えられたIDがデバイス番号のようですね。ファンクション番号はまだよくわかりませんが…。
toshiyan

2018/08/19 10:11

色々お調べ頂きありがとうございます! それにしても、PCI関連の文献はどれも古いですね…。あまり今の技術を勉強しているという感じがしないです…。紹介して頂いたページも、「古くなったISAの代わり」という表現があったり、2004年とかの記事だったりで、うーん…といった感じです。 ファンクション番号とは、具体的にどういったときに使われるのでしょうか?デバイスが2つ以上の機能を持つとはどういうときでしょうか?
pepperleaf

2018/08/19 12:08

ざっと検索した結果では、分かりませんでした。 以前(この世界では大昔)、調べた限りでは、番号 0は必須で、プロパティみたいなもの。で、他が本来の機能だったかと。詳細は忘れました。(UI とか、ディスプレイとか、そんなもの) PCI関連の文献は古いですが、多分、基本は変わらない。互換性大事の世界です。PCIeもソフトから見た基本機能は同じ。だから、昔のアプリがそのままアクセスできるのです。
guest

0

まずはそれぞれぐぐってみましょう。
それででてきたものを一通り読んでみてからのはなしでいいんじゃないでしょうか。

投稿2018/08/18 09:48

y_waiwai

総合スコア87719

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

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

pepperleaf

2018/08/18 10:11

一般的用語もあり、単純にくぐっても探すのは難しいと思いますが、、、。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問