ディバイスドライバを ..
64:login:Penguin
02/02/04 18:52 NNgCZ8vd
>>63 >>61
その頃、マイクロソフトのドライバ開発者@新橋ガード下は、
「ってやんでぇバーカヤローゥ! Linuxがなんだってんだっ、ヒック、ゥィー!」
65:login:Penguin
02/02/04 23:07 2sAhIg4J
>57
いいぞ!続きを!
66:login:Penguin
02/02/05 15:21 iaI23jTt
>65 同感。
でも、もう少し読みやすい(見やすい)とうれしんだけどな。
67:login:Penguin
02/02/05 18:54 F3yqU4bD
「予想される近未来」
・Linuxに市場を荒らされ全ての商用UNIXが撤退。
・Windowsは順調に売れて市場を拡大。
・エンタープライズ用途でのLinuxの駄目さ加減が発覚してみんな困る。
・みんなしょうがなくWindowsに移行する。
・Linuxはカーネルの分裂により大混乱。商用用途で使い物にならなくなる。
・Windowsしかなくなる。
68:login:Penguin
02/02/05 19:58 EBSnoi/G
>>67
BeOSのような第3の勢力が突発的に出現して
Gates帝国もUNIX連合も一夜にして淘汰される。に一票
69:login:Penguin
02/02/05 20:26 YUE4G5dx
サーバはどうか知らんが
結局ごちゃごちゃでも便利なものから離れられない。windowsは無くならんのは当然だが
linuxもWindowsがGPLにでもならん限り無くならんと思うなあ。
そのうち良くなるだろ。
もしBeOSみたいなのがでてきても、よっぽど革新的でFreeでないと、また往っちゃうよ
70:login:Penguin
02/02/05 20:59 UUxecaUS
コピペにマジレスカコワルイ
71:login:Penguin
02/02/05 21:21 JQSzVmkT
5年程度のスパンで見ると、Linuxは産業用の組み込み系のOSと
して活躍するでしょう。
また、IBM系のリナックスも順調にシェアを伸ばしていくでしょう。
PCではWindowsが制覇するでしょう。
72:login:Penguin
02/02/13 10:11 Ocy9V5oG
モジュールを組み込むとき、変数が渡せるものもいくつかあるけど
そのときに どの変数が渡されているかあとで知る手段ってない?
例えば sb.o とかなら irqとかいろいろ渡せるよね。
insmodしたその後で irqいくつだったか忘れたときとか
知る手段無いよね。
あと、ついでに どの変数が渡せるかを事前に知りたい。
ソースみりゃわかるけど面倒くさいじゃん。
73:login:Penguin
02/02/13 11:37 QvFCkM3Q
/proc以下のファイルで確認すればいんじゃないの?
74:名無しさん@Emacs
02/02/14 02:48 z04c7JYX
ディバイスドライバをファックしよう!
75:BERO
02/04/02 18:12 zlzOuE7v
デバイスドライバの解説って
「デバイスにはchar型とblock型があって・・charデバイスの実装サンプル」
で終わってるのが多いんだけど、
実際はソレを生で使ってることは少なくて、サウンドデバイス、CD-ROMデバイス、FlashROMデバイス、ビデオデバイスとか
デバイスごとのフレームワークがあって、実際のハードウェアドライバはその下にくるようになってる。
実験機器や自作ハードで生のI/Oポートをたたけるだけでいい、ていうのならともかく、
(フレームワークが存在するような)一般的なハードウェアでは、このテのデバドラ解説ってのは参考にならない。
ファイルシステムドライバとかもこの範疇に入らないし。
みたところ各フレームワークの解説ってのはみあたんなくて、結局ソースにあたるしかない。
ところが既存のソースも、古いコードが残ってたり、そこからのコピペと思しき不要なコードが紛れ込んでたりして、
どれをリファレンス実装として参考にしたらいいのやら、って感じでアタマいたくなる。
76:login:Penguin
02/04/05 22:06 swoFdSIN
>>75
本物?
77:login:Penguin
02/04/05 22:15 CU/0IjiI
まぁ、アゲられついでに75さんにLinux界に伝わる格言を一つ。
「動けば正義」
78:login:Penguin
02/05/08 17:01 kXDZWtdP
>77
VBプログラマに通ずるものがある(w
79:login:Penguin
02/05/12 06:02 i/O/fiuU
>>77
イイ言葉だ....
80:login:Penguin
02/06/25 11:32 h8q+RUm7
お馬さん本買ってきて、サンプルコードをftp.ora.comからダウンロード
しようと思ったのに、ftp.ora.comがつながんねーYO!
どなたかftp.ora.com/pub/examples/linux/drivers/の中身を
ミラーしていただけないでしょうか?
81:login:Penguin
02/06/26 10:26 MG8jc7TY
すみません。ftp.ora.comにつながりましたので、>>80はなしにしてください。
これだけではなんなので、同じ壁に突き当たるかもしれない人へ:
お馬さん本のサンプルソースは、筆者のサイト
fURLリンク(ar.linux.it) からもダウンロードできます。
82:login:Penguin
02/08/14 00:47 2q+/MEDi
age
83:login:Penguin
02/08/14 00:52 udiJKVSV
あがりついでに...
>>78
>>77
>VBプログラマに通ずるものがある(w
「クソコードを見付けたら、書き直すチャンス!」ってのが
VBとの違いだな。
84:login:Penguin
02/08/16 07:53 c0C09J9f
糞コードをハケーン!!
じっとガマンして保守に付き合うのはプロ
とっとと書き直すのはアマ
85:login:Penguin
02/08/16 14:43 S24KMUAB
>>84
じゃあオレはアマチュアの方がいいや。
プロっていってもピンキリだし。
86:login:Penguin
02/08/17 02:23 D5BAubdc
たとえ糞コードでも動いているものであれば余計なことをしないのが当然だろ。
元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら
周囲に迷惑をかけることになるのだから、
勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。
87:login:Penguin
02/08/17 03:47 L76cjPXx
サン電子U-cableP5のドライバはいずこ?
IOのケーブルはLinux対応してまっか?DDIに聞いたら
Linuxは独自のOSですので当社では判りかねます。
つーかWinはMS独自のOSだしMacもMac独自のOSでは?
製作者及び団体の数ではWinの方が独自性が強いと思うのですが
先生方!教えてくだはい
88:login:Penguin
02/08/17 16:48 OXP9X1ng
おお、こんなスレがあったのか。
ちょっと感動……と思ったら
>>87
だから、自分でドライバを書けよ。
89:login:Penguin
02/08/17 16:55 OXP9X1ng
仕事としてソース非公開なLinux用ドライバ開発なんぞをやってます。
>>75の言ってる事は同感。
drivers/char/serial.cなんかを見てると情けなくて泣きたくなってくる。
「動けば正義」は否定しないけど、「動いたら放置」ってのはちょっと
なぁ。
Linuxだと、なら「ならお前が書き直せ」ってことになるんだけど、正直
どこから手をつければいいのか、途方にくれるようなドライバが多すぎ
る。
90:login:Penguin
02/08/17 17:21 MTVVTQyw
88>書ければWinでネットしません!
91:login:Penguin
02/08/17 20:48 Zdf5lEt8
サン電子は「ドライバ書くので情報くれ」といってもくれない会社だから
どうしようもない。
92:login:Penguin
02/08/17 23:46 IR8qSaOk
じゃIO・DATAさんでも良いよ。
H"用のUSBケーブルで32kパケット通信(つなぎ放題)対応って2つしか無いのね!
9月にサンデンシから新しい奴が出るけどWinとMacのみ対応だし・・・・
93:login:Penguin
02/08/18 19:29 XonFUm75
>>90
書けるけどWindowsで繋いでますがなにか。
>>91
いや、情報のない状態からつついて解析していくのも、なかなか
面白いものだよ。
必要性と興味が持続しないとやっとれんけどな。
94:login:Penguin
02/08/20 04:33 EFxDYaWg
U-cableP5ならどっかにドライバ落ちてなかったか?
95:login:Penguin
02/08/21 02:27 ++pf5YT/
94>落ちてたけどウチのPCはFDも無いしCD−Rも無いから意味無し
それ以前にturboLinux7でドライバの入れ方知らんから無意味
Turboじゃなくても知らないが・・・
完全マスターTurboLinux読んで頑張ってみます。
お騒がせしました。
96:login:Penguin
02/08/22 00:52 hok07Wzb
昔DOS3.1の時代に、プリンターのデバイスドライバーをひとつ一機種に
ついて書くたびに50万円もらっていた友達をしっている。
非常においしい商売だったようだ。
97:login:Penguin
02/09/17 02:52 uJTVD8V1
今さらあげてしまいますが、オライリーのドライバの本に書いてある。
file構造体がなにをやっているのかよくわかりません。というかその存在自体が疑問です。file_operation構造体はinit_moduleによって登録されるってのはわかるんですが、file構造体はどんなときに使われるとかよくわかりません。
デバイスドライバで2番目に重要な構造体と書いてあったのでかなり意味があると思うのですが、
くだ質できく内容でないと判断したので、ここで聞かせて下さい。
98:login:Penguin
02/09/17 22:14 2Yzp0rLg
>>97
Linux のドライバは(一部除いて)ファイルで表されてるわけです。
/dev/配下にいっぱいありますよね?
そのファイルをopen すればfile_operations 構造体のopen メソッドが呼ばれる。
そのファイルをread すればfile_operations 構造体のread メソッドが以下略。
多分システムコールかデバイスファイルについて知識不足なんだと思われ。
なぜ存在自体が疑問なのか書いてる途中でわけわかんなくなってきたよヽ(`Д´)ノウワァァン
ちなみにここでつまずいてたらその本絶対読めないから教えてくれる人探した方がいい。。。
99:login:Penguin
02/09/18 03:24 AWtWYegc
ありがとうございました。
どうやらfile_operations構造体の次にでてきたので、
デバイスドライバ特有の構造体かと勘違いしてしまったようですが、
低水準システムコールのときのfile構造体と同じだったんですね。
わかったみたいです。
一応半分位まで読みました。なんとなくですがわかったきがするので、
音なるやつでも書いてみることにします。
100:login:Penguin
02/09/19 00:16 YeCer3VV
>>99
あう。。。file 構造体の方でしたか。file_operations 構造体と間違えた。。。
ごめんなさい。でもわかったんならいいよね。。。
101:login:Penguin
02/09/19 01:00 Zca/tfIP
デバイスドライバで、file構造体って見ることあります?
漏れ、見たことないんですが。
102:login:Penguin
02/09/24 08:38 jDkNy+Lt
age
103:login:Penguin
02/09/24 10:47 oRAD0jRL
久々に上がってたりして...で亀レス
>>101
一つのドライバで複数のデバイスを制御(特に割り込み)する時に
使わない? (private_data)
static な領域にデータ置いといてベタで検索でもいいけど...
104:ねここねこ
02/09/24 12:11 jDkNy+Lt
デバイスドライバを書くときに使う各種マクロや関数などが
詳しく&解りやすく載っている資料とか無いでしょうか?
謎の関数が多くて、、、、
105:login:Penguin
02/09/24 16:20 oRAD0jRL
>>104
>37 にある Linux DeviceDriver 2nd Edition
これを wget で落して(いいのか?) grep で検索しる。
あとはお決まりのソース drivers/char 以下を検索かな?
106:101
02/09/24 18:33 YwjfORCG
>>103
おお、なるほど。
そういうドライバは書いた事無いからなー。
107:ねここねこ
02/09/26 16:00 3O4ltuCq
>105
やっぱり、それしかないですか、、、
馬の本見てがんばります
さらに質問
ハードを直接叩く(?)デバイスドライバを作っているのですが
良いサンプルとか無いでしょうか?
とりあえずは、
linux/drivers/char/qpmouse.c
あたりを参考にしてるのですが、、、
108:login:Penguin
02/09/26 17:52 l3dRzYLM
>>107
お馬さんで充分かと...
> ハードを直接叩く(?)デバイスドライバを作っているのですが
これだけでサンプルないかって言われてもなぁ。
誰もレス出来ないんじゃぁ?
マウスドライバでも作ってんの?
レス出来ないかも知んないけど。
109:login:Penguin
02/09/26 18:12 7zzSbQve
>>107
ターゲットと同じ種類のドライバ
or
似たような構造のハードを制御するドライバ
が一番いいサンプルなんだが。
目的のハードがどんな物かわからんので誰も答えられんと思う。
物によって微妙に作りが違うし。
110:ねここねこ
02/09/27 09:39 2CKrLbeR
>108&109
確かに、物が不明だとわからないですね
物はFPGAというチップ経由で
データがやってくるハードのようです
外部のチップからFPGAにある程度データが貯まると
IRQをキックして(?)まとめてデータをCPUに対して送ってくるとか
言ってたな、、、
実はハードがまだ出来ていなかったり〜
111:login:Penguin
02/09/27 12:01 Bk3J3OAM
>>110
> 実はハードがまだ出来ていなかったり〜
よくある話。
まだ漠然としているが、画像処理か計測系だね?
割り込み関係と poll、 DMA or mmap? 、PCI?。
まず、このあたりをお馬さんで理解すればよろしいかと。
112:ねここねこ
02/09/30 09:38 ILjZfqgw
>111
>まだ漠然としているが、画像処理か計測系だね?
だいたいそんな感じです
お馬さん本見てがんばります
113:login:Penguin
02/10/03 20:49 XOS3kDwu
FPGAというチップってあーた
114:ねここねこ
02/10/04 10:18 reYTaTWA
>113
なんか呼び方が変なのでしょうか?
FPGAというICが有ると効いたのですが、、、
115:ねここねこ
02/10/04 10:18 reYTaTWA
あと、デバイスドライバ製作の資料になるようなページ
Linux PCI デバイスドライバ
URLリンク(www.hemamu.com)
Programmed I/O (PIO)を用いた簡単なPCIデバイスドライバ
URLリンク(www-online.kek.jp)
Linux Module-HOWTO
URLリンク(www.linux.or.jp)
Linuxデバイスドライバ開発ノート
URLリンク(www2s.biglobe.ne.jp)
Linuxによるロボット制御・デバイスドライバ開発
URLリンク(www.mechatronics.mech.tohoku.ac.jp)
Linux用デバイスドライバの作成
URLリンク(ap.fukushima-iri.go.jp)
LinuxデバイスドライバFAQ
URLリンク(www-online.kek.jp)
エンジニアリングLinux応用技法
カーネル/デバイスドライバ/ポーティング/リアルタイム
URLリンク(www.cqpub.co.jp)
色々調べると
ロボット系の人が多いような気がします
SFに出てくるガレージでオリジナル2足歩行ロボットを作る
時代が来たのかな?
116:login:Penguin
02/10/06 18:35 URuHDkGy
hack! age
117:login:Penguin
02/10/17 21:17 RGYfSOtJ
age
118:login:Penguin
02/12/13 10:20 NJ02XiJx
うおータコがドライバ書くのってやっぱ無理があるなー
でも仕事だしがんばるぞーちくしょー
119:IP記録実験
03/01/08 22:12 KwFqEkll
IP記録実験
スレリンク(accuse板)
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
120:login:Penguin
03/01/09 01:09 kgNvzzS1
なんとか頑張って下さい>ひろゆき
お金は持ってないけど応援します。
121:login:Penguin
03/01/09 01:23 kgNvzzS1
ひろゆきは早起きのし過ぎでちょっと壊れてるな。
122:login:Penguin
03/01/09 01:33 kgNvzzS1
>>532
プ
123:IP記録実験
03/01/09 01:55 AmicprCv
IP記録実験
スレリンク(accuse板)
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
124:login:Penguin
03/01/09 02:06 0uJfVOg+
名スレの予感
125:login:Penguin
03/01/09 02:50 yayiRGlu
福島もキタ━━━(゚∀゚)━━━ !!!!
126:login:Penguin
03/01/09 03:34 TPkK0Va9
>>81
まぁそういうところでよしゆきはすごいわな。
127:山崎渉
03/01/15 11:31 m6zO97qQ
(^^)
128:ドライバー
03/01/15 13:09 I5ofFU+k
いまLynxEMのドライバいじってるんだけど、
マルチディスプレイに成功した人います?
もう何年も放置されてる問題だから無理なのかな…?
129:login:Penguin
03/01/15 18:11 nk4F1IDO
>>128
Windows2000でも放置されてた問題だし
あきらめよう
130:login:Penguin
03/02/05 19:41 YQeAwX++
保守age
131:login:Penguin
03/02/07 19:54 jVRQXDIx
1ms以下のタイミングでポーリングを監視する方法って何かないですか?
やっぱ割り込み使わんと無理?
132:login:Penguin
03/02/07 20:36 0UoE11AV
>>131
HZいじってタイマの周期を1ms以下にすればなんとかなると思うけど。
割り込み使うのが正攻法じゃないかなー。
133:
03/02/07 21:50 VKdRg4g7
ftpfs きぼんぬ
modprobe ftpfs login=ftp password=hoge@2ch.net host=ftp.ring.gr.jp
とかすんの
134:login:Penguin
03/02/07 22:07 nu9G29ZI
>>133
URLリンク(www.google.co.jp)
# gnutellafsなんてのもあるのか...
135:133
03/02/11 02:29 /akGZqt4
URLリンク(ftpfs.sourceforge.net)
がーん・・・
寝る!
136:login:Penguin
03/02/11 03:04 bsSBCYyf
>>17
> モジュールアンロード
> # rmmod hello.o
正しくは、rmmod hello
気になったんで...
137:login:Penguin
03/02/14 03:21 vgGnuLAo
お馬さんの本にspinlockにぎったままsleepしちゃいかん、
って書いてあるんですがどんな困ったことが起こるのか教えて欲しい
今日この頃…
138:login:Penguin
03/02/16 03:44 tbT/WrCe
>>137
スピンしっぱなしになる
ちなみに超電磁スピンはこれの応用
139:login:Penguin
03/02/16 23:53 7J4Y8mCH
>>138
ああ、そっか。てことは攻撃中にspin_unlock()されるとマズー?
140:login:Penguin
03/02/20 22:11 +wCEK+nh
>>137
デッドロックが起きる。
spinlock を獲得したままスリープすると、そのプロセスが目覚めるまで
同じ spinlock を獲得しようとするプロセスがビジーウェイトし続ける。
141:137
03/02/21 03:18 qmT4Thn5
>> 140
どうもです。
自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を
同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを
コールしようとたくらんでました。
DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば
問題ないかなと思ったのですが、間違いですか?
その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで
ブロックするべきでしょうか。
142:login:Penguin
03/02/21 05:38 wCxVa5I1
>>141
だめ。
プロセスAのカーネル内: 獲得 -> sleep
プロセスBのカーネル内: 獲得に失敗してビジーウェイト
なのだけど、カーネル内では、ページフォルトとか明示的にschedule()呼ぶと
かしないとスイッチはおこらないので、単一プロセッサシステムだと絶対死亡。
SMPだとか、2.5のプリエンプションカーネルだと、大丈夫かもね。
終了割込みで起こされる処理なら、sleep と wakeupを使うのが普通じゃない?
143:bluehat
03/02/27 02:47 2xZ0HU3V
デバドラをアクセス(介する?)することで、ファイルを暗号化して保存&
ファイルを複号化して取得、ってな事ってできんのか?
おめーだったらどうやって実現するよ?教えろ!ゴルァ!
144:login:Penguin
03/02/27 03:04 1e6KPqQp
普通loopだろう。
145:bluehat
03/02/28 03:17 5YDI7es3
>>144
却下。普通じゃだめぽ。デバドラで実現しる!
146:login:Penguin
03/02/28 07:13 0bshxi8O
>>145
んー、何をもってデバドラというのかよーわからんが、狭義な,
ハードウェアを制御するドライバのことなら
「オマエラ、おつむ悪すぎなので出直して下さい。」
147:login:Penguin
03/02/28 12:21 oFO1qwF8
>>145
んと、loopは広義のデバドラですよ。メジャー番号7のブロックデバイスです。
148:login:Penguin
03/03/06 14:51 NOJmB8ay
kernel-2.5 でデバドラのインターフェースが大幅に変わるという話を
きいたがおまえら知っているか?
149:login:Penguin
03/03/06 22:23 33Ph63nv
>>148
プリエンプティブカーネルになるってのはどっかで見たが・・・
I/F というと、エントリーポイントの仕様でも変わるのか?
それとも、カーネルがエクスポートするルーチンの仕様変更?
150:login:Penguin
03/03/06 23:24 gj2ir03d
>>148
モジュールまわりの仕様が変わるというのはあるが、
モジュール自体に影響ないはずだし…
構造体とかカーネル側の関数が変更されるのはよくあることだし…
その話の出所はどこよ?
151:148
03/03/07 00:48 2S2Wvrkx
struct file_operations つくって register_chrdrv()するだろ。
そのやりかたが変わるとか聞いたんだが。
152:login:Penguin
03/03/07 04:37 2ohbwA9F
>>151
(゚∀゚)んなこたーない
153:148
03/03/07 13:38 2S2Wvrkx
>>152
安心したよ
>>149
カーネルプリエンプションに関しては大問題だ。
ドライバかなり書き直さなくてはいかんのぉ。
154:login:Penguin
03/03/08 00:05 l6jbsomd
2.5のソース読んでからまた来い
155:login:Penguin
03/03/08 00:53 dd9ui0La
>>153
その様子では 2.5のカーネルプリエンプションを理解するのが先です。
名前から想像するものとはちょっと違うものです。
156:login:Penguin
03/03/17 00:55 POpqK4+0
デバイスドライバを書いてる人って 日本に何人いるんだろう
hello.o くらいだったら1万人くらいいるのかな?
157:login:Penguin
03/03/21 01:19 4f4NMJji
3000人くらい
158:LINUX初心者
03/03/22 00:33 c2EgVY2O
ご質問があります。
IDEのDVD-ROMから、暗号無しのDVDデータを取り出すソフトが必要になり
まして、MT.FUJIの仕様書とcdrom.cを読んでいます。どうやら、DVDの
情報はIOCTLを通して取り出せるみたいなのですが、データ(2Kバイト)の
データの取り出しは、IOCTL経由では出来ないように見えます。その割には
CD-ROMのモード1と2、CDオーディオのデータはIOCTLで読み出せます。
フリーのソフトを見るとpf_readで実行しているようですが、どうやれば
良いのでしょうか? 出来たらIOCTLを使いたいのですが・・・・
よろしくお願いします。
159:名無しさん@Emacs
03/03/22 11:15 j2wJcuTQ
>158
URLリンク(www.linuxvideo.org)
ここを読んだだけだけど、、、
DVDでioctlを使うには、カーネルで、それようの設定をして
コンパイルが必要みたい?
160:login:Penguin
03/04/13 20:50 Z3+MYXr2
USBドライバの開発の参考って何かないですか?
161:あぼーん
03/04/13 20:51 fhD9Fsc5
______________
/:\.____\
|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
URLリンク(saitama.gasuki.com)
162:login:Penguin
03/04/13 22:03 Z3+MYXr2
kill -9 161
163:login:Penguin
03/04/13 22:08 ecu8jjet
>>160
定番は、似たようなのを見る だろ。なお、クラス(ってかベンダ)ドライバな
ら、一番簡単なのは、scanner.c 。バグありだけどね。
164:login:Penguin
03/04/13 22:16 Z3+MYXr2
>>163
ありがとうございます。
ところで、カーネルに組み込まれているデバイスドライバのソースをモジュール化するのに定番の手法とかって
ないでしょうか?
カーネルがROM化されているので、モジュールにする必要があるもので。
165:login:Penguin
03/04/13 22:25 ecu8jjet
>>164
手法って、なにも特別なことはないとおもうんだけど...
make modules 以外でコンパイルするっていみ? それなら -DMODULE がみそ。
カーネル関連のソース内部でも、ドライバでも、これを ifdef とかで見る。
それともmodule対応じゃないドライバを対応に書き直す方法? こっちなら、
適当な初期化/後かたづけ処理を module_init()とmodule_exit()で登録すればいい。
166:login:Penguin
03/04/13 22:33 Z3+MYXr2
>>165
>module対応じゃないドライバを対応に書き直す方法
こちらの方です。ありがとうございます。意外と簡単なんですね。
早速、明日試してみます。
デスクトップで動いているドライバを組み込みLinuxに移植しようとしてるんですが、
ドライバを作るのははじめてなので、馬本で勉強してます。まだ2章目ですが
167:開発メモ
03/04/14 14:29 Y6l/xCVk
Warning: loading module.o will taint the kernel: no license
がでたときは、
#include <linux/module.h>
MODULE_LICENSE("GPL");
printk の出力はdmesgで見ることができる。
168:login:Penguin
03/04/14 22:12 ktmIntrh
>>160
こんなんが参考になるかも・・・
URLリンク(www-online.kek.jp)
>>167
> printk の出力はdmesgで見ることができる。
cat /proc/kmsg
としても見れます。
カーネルバッファにメッセージが追加される度にコンソールに表示されます。
でも表示内容の文頭に <4> というようなログレベルが付いてまうけど・・・
169:login:Penguin
03/04/16 10:03 Rj9RiWI4
#define MODULE
#include <linux/module.h>
int init_module(void){ printk("<1>こんにちは\n"); return 0;}
void cleanup_module(void){ printk("さやうなら\n");}
を gcc -c hello.c でコンパイル
insmod ./hello.o で組みこもうとすると
./hello.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols
というメッセージがでます。
カーネルのバージョン管理だと小間生のですが、カーネルの再構築をせずにすり抜ける
ことは不可能でしょうか?
170:山崎渉
03/04/17 11:54 KRn99/cy
(^^)
171:login:Penguin
03/04/18 01:19 HcWYqirI
>>169
>>167 ?
172:山崎渉
03/04/20 06:14 xFRXxEWb
∧_∧
( ^^ )< ぬるぽ(^^)
173:login:Penguin
03/04/21 11:26 dxqbEfvS
insmod test.o をするとこんなエラーがでます。
どんなライブラリをリンクすればいいのでしょうか?
./test.o: unresolved symbol remap_page_range
./test.o: unresolved symbol __wake_up
./test.o: unresolved symbol schedule
./test.o: unresolved symbol kmalloc
./test.o: unresolved symbol vfree
./test.o: unresolved symbol usb_deregister
./test.o: unresolved symbol video_register_device
./test.o: unresolved symbol remove_wait_queue
./test.o: unresolved symbol video_unregister_device
./test.o: unresolved symbol usb_free_urb
./test.o: unresolved symbol usb_alloc_urb
./test.o: unresolved symbol usb_register
./test.o: unresolved symbol __pollwait
./test.o: unresolved symbol kfree
./test.o: unresolved symbol usb_string
./test.o: unresolved symbol add_wait_queue
./test.o: unresolved symbol usb_submit_urb
./test.o: unresolved symbol usb_control_msg
./test.o: unresolved symbol __vmalloc
./test.o: unresolved symbol printk
./test.o: unresolved symbol usb_set_interface
./test.o: unresolved symbol vmalloc_to_page
./test.o: unresolved symbol __generic_copy_to_user
./test.o: unresolved symbol usb_unlink_urb
174:login:Penguin
03/04/21 11:35 TzNUZhnB
>>173
カーネルのバージョンとtest.cがわからないとちゃんと答えられない
175:login:Penguin
03/04/21 11:37 65INoG+s
>>173
find ライブラリのありそうなパス -exec grep -l "remap_page_range" {} \;
とかやってみるとか?
176:login:Penguin
03/04/21 12:03 UyUiMYQq
>>173
MODVERSIONSでせう。
test.cコンパイルするときに-DMODVERSIONSつけてみ。
当然includeはカーネルと同じものを使うこと。
177:173
03/04/21 12:48 dxqbEfvS
カーネルは、2.4.20 です。
ソースはこれです。usbカメラのドライバです。
URLリンク(www.smcc.demon.nl)
このソースの *.c を
INCLUDEDIR = /usr/src/linux/include/
CFLAGS = -O2 -DMODULE -D__KERNEL__ -static -Wall -Wstrict-prototypes -DMODVERSIONS -I$(INCLUDEDIR) -DEXPORT_SYMTAB
でコンパイルしてできた、*.o を、
ld -o test.o -r ./*.o でリンク。insmod test.o で、173のメッセージがでます。
ROM化されたカーネルに、モジュールをいれてusbカメラを使えるようにしようと思ったのですが・・・
ちなみに、同じソースをカーネルに組みこめば動作するのは確認しました。
178:login:Penguin
03/04/21 19:06 UyUiMYQq
>>177
そのカーネルの.configは?
CONFIG_MODVERSIONS=nのときに-DMODVERSIONS付けても同じ事になったような気がするが。
179:うまうま
03/04/22 01:26 0SpJ1zOH
>>177
お馬さん本2巻目の
「11.3.1 モジュールでバージョンサポートを使う」
「11.3.2 バージョン付きシンボルのエクスポート」
あたりをみたらどうよ? サンプルコードもあったよ
健闘を祈る!
180:177
03/04/23 19:22 TY1i8cop
みなさん、ありがとうございます。
--static を外したら、うまく出来ました。
>>178
組込みのLinuxなんですが、開発元がソースをよこしてくれないので不明です。
GPL的にいいのだろうか・・・
181:login:Penguin
03/04/23 21:19 DUkd9IIg
linkあげ
・カーネル2.6のドライバ・モデル
URLリンク(japan.linux.com)
182:login:Penguin
03/04/24 12:36 LW5TaSjX
Linux で USB制御とかを学ぶのに便利な電子工作キットのおすすめってありません?
できるだけ安いの。
183:うまうま
03/04/25 12:03 HCQr+NWK
>>182
モルフィー企画のUSBキットはいかが?
URLリンク(www.morphyplanning.co.jp)
確かLinuxドライバを開発しているサイトがあった気がする。
184:bloom
03/04/25 12:26 1KQi+Ees
URLリンク(homepage.mac.com)
185:login:Penguin
03/05/02 11:48 LZsBxbHZ
USB デバイスを/dev 以下のデバイスノードに割りあてるにはどうすればいいのでしょうか?
馬本を見ながら、
devfs = devfs_mk_dir(NULL, "matsu", NULL);
if(!devfs)
return -EBUSY;
devfs_register(devfs, "nt401", DEVFS_FL_AUTO_DEVNUM, 0, 0,
S_IFCHR | S_IRUGO | S_IWUGO,
&scull_fops,
sampleDevice
);
とやっているのですが、indmod すると
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
IOやIRQはどこからとってくればいいのでしょうか?
186:login:Penguin
03/05/02 12:21 5kcklCyp
>>183
モルフィー企画は、5/1 千葉地裁に破産申し立てを行った模様。
やっと終わったようですね、夢が・・・
187:login:Penguin
03/05/02 13:17 8SKdq5Sf
>>185
それはモジュールの初期化に失敗した時のメッセージでつ。
だまされないように。
188:login:Penguin
03/05/02 14:02 fxkN+fN8
>>185
それは、init_moduleがretun 0;以外で終了した場合のメッセージですよ。
普通、デバイスが見付からないときは -ENODEVとかでかえすでしょ?
返り値を確認汁。
ISAのデバイスでは、IOとかIRQの設定が違うと見付からないことが多いので、
insmodが、ヒントのために、IOとかIRQはどうよ? って書くことになってるだけ。
189:185
03/05/02 14:12 LZsBxbHZ
>>187
>>188
ありがとうございます。
probe の処理のところへ devfs 関係の処理を移したらinsmod できるようになりました。
190:login:Penguin
03/05/02 14:25 fxkN+fN8
あぁ、すまん。よく読まずに答えた。USBなのね。
USBの場合は、usb_driver.probe() が NULL で帰った時がそのエラーですね。
で、probeのところでdevfs関係やるので正解です。
191:login:Penguin
03/05/02 15:56 gUkzFRNW
モニタのドライバディスクっていうのはあるんでしょうか?
当方モニタを認識できないのですが・・・。
192:login:Penguin
03/05/02 17:25 MBGKHtnA
>>191
周波数や解像度を設定すれば済むだろ。
193:185
03/05/02 18:18 LZsBxbHZ
>>190
insmod はできるようになったのですが、devfs関係の処理がうまくいきません。
devfs_mk_dir と devfs_register がNULL しか返さないのですが・・・
194:login:Penguin
03/05/02 18:33 ntJpWIhT
>>193
カーネルがまずい
195:185
03/05/02 19:13 LZsBxbHZ
>>194
了解っす。さっそく、カーネルを再コンパイルします。
196:ドライバ初心者
03/05/07 14:44 8SxzL6UK
ううう、USB器機との通信方法がよくわからん。
0x07 を送ると 0x1f を返すというUSB器機との通信でどうやるの?
キャラクタデバイス作って、それをread, write するでいいの?
197:bloom
03/05/07 15:13 dAUH81mE
URLリンク(homepage.mac.com)
198:login:Penguin
03/05/07 18:18 xHs+a1Ja
>>196
??? どのレベルでわからないんだろう。ユーザアプリから機器を操作するのは、
すべからくデバイスドライバを通してopen/close/read/write/ioctl 等です。
でも、0x07 を送ると 0x1fを返すとうUSB機器なら、デバドラいらないじゃん。っ
ていうか、機器もいらないじゃん。「0x07を送ると0x1fを返す」ダミーの関数
かませればいいじゃん。たぶん、その質問はなにか省略しすぎで返事がしにくい。
199:ドライバ初心者
03/05/07 23:02 Sh0BeBWS
>>198
分かりにくくてすいません。
USB機器に、データ確認コマンド(0x07のバイト列)を送る。
USB機器にデータがあるなら、(0x01)が返ってくる。
(0x01)が返ってきたのを確認したら、データ取得コマンド(0x0a)を送る。
USB機器からデータ(20バイト)が返ってくる。
上記の仕様で、USB機器にバイト列を送ったり、USB機器が返すバイト列を受け取るにはどうすればいいのかが分からないのです。
urb構造体を使うのでしょうか?
200:login:Penguin
03/05/07 23:47 ppjtoJvG
>>199
USBのドライバは書いた事ないのでアドバイス出来んが、
URLリンク(www.narimatsu.net)
にあるドライバが多分近いので、読んで見ると参考になるかも。
201:login:Penguin
03/05/08 02:33 XzMiCqqd
>>199
なんか、道が遠いな。がんばれー。
> urb構造体を使うのでしょうか?
まぁ、正解なんだけど。なにしろ最終的には全部usb_submit_urb()だから...
実際には usb_bulk_msg()とか、その類を使うの。
その前に基本設計。ハンドシェイクのようなものがあるのよね。それをどうする?
ドライバを一番簡単にするなら、ドライバは、ただデータの横流しをするだけにして、
ハンドシェイクをアプリにさせたらいい。
アプリが /dev/それ をopenして
アプリが 0x07をwriteして
アプリが readでまって、0x01がかえったら
アプリが 0x0aをwriteして
アプリが readする
これが一番簡単だろ。ドライバのデバッグより、アプリのデバッグのほうが簡
単だから、ドライバを簡単にするのは意味がある。
もし、これにするなら、カーネルに標準でついてるdrivers/usb/scanner.c を
参考にしたらいい。はっきりいって、本当に横流ししかしないドライバなので、
参考にして書き直す必要スラなくて、idさえ指定すればスキャナじゃなくても
ナンデモ操作できます。おすすめ。
あ、でもclose/unloadあたりでのリソースの解放順序にバグがあるので、気を
つけてね。
202:ドライバ初心者
03/05/08 18:46 01Q6DwzH
>>200
>>201
アドバイスありがとうございます。 非常に助かりました。
とりあえず、morphy と scanner の両方をコンパイルして試してみました。
morphy の方は、何とかデバイスをopenできるように改造できました。
scannerの方は。 カーネルがdevfsを使えないのと、今回のUSB器機からendpoint の取得がうまくできないようです。
/dev/usb のスペシャルファイルの取得はmorphy を参考に、read write はscanner を参考に、 ハンドシェイクは >>201 の方法でやってみます。
203:ドライバ初心者
03/05/09 19:55 ye3nMZo+
open,close,probe,disconnect はうまく動くようになりました。
read の実装に入ったのですが、 usb_bulk_msg で
#define RD_NAK_TIMEOUT (10*HZ)
usb_bulk_msg(dev, usb_rcvbulkpipe(dev, endpoint), buffer, 20, &partial, RD_NAK_TIMEOUT);
usb_rcvbulkpipe へ渡すパラメータの endpoint にはどんな値を渡せばいいのでしょうか?
lsusb で以下のように表示されている 2 とかでいいのでしょうか?
bEndpointAddress 0x02 EP 2 OUT
scanner.c のソースを読むと、1,2,3, のどれかの値が入るようなのですが・・・
204:login:Penguin
03/05/09 23:43 ZjYTJvxM
>>203
相手側の仕様にあわせてください。
仕様書ぐらいあるよね?
205:ドライバ初心者
03/05/10 00:57 5c13M/Uv
>>204
それが、>>201 に書いたようなコマンドのやりとりのはしご図しかありません。
206:login:Penguin
03/05/10 18:30 +67eyGUg
>>205
たぶん、1にかいて、2を読むんだとおもうけど、そんな状態でコーディングを
すすめちゃだめです。仕様書をもらって、それをもとに設計してから書くの。
207:うまうま
03/05/11 02:10 sP9foAmw
>>203
ひょっとして未公開プロトコルをハックしてlinux用にドライバ
作ってんの?
lsusbの表示について
デバイスからデータを読むためのエンドポイントは IN になって
いるはずだよ。そのようなエンドポイントがひとつしかないなら
その番号でOKだと思う。
逆に、デバイスへデータを書き込むためのエンドポイントは OUT
そのターゲットデバイスにはエンドポイントが複数あるっぽいけど、
それだったらコマンドやりとり時、どのエンドポイントが使われて
いるのか調べる必要がある。
208:206
03/05/11 02:28 +b1ggx7/
あう。よく読まず1,2を逆にかいてしまいました。つことで>>206に惑わされないで2がOUTね。>>205
209:ドライバ初心者
03/05/12 22:03 fBjjjcco
>>206
組み込み用のLinuxにUSB機器をつなげてアレコレしようという計画がありまして。
ところが、社内でC言語の経験があるのは私だけ。とりあえず研究開発名目で、USBドライバを
作ってみろと白羽の矢が立ちました。
うまうまさんのアドバイスでwriteができるようになりました。ありがとうございました。
あとはreadだけです。
210:ドライバ初心者
03/05/15 18:21 QUGfuS7s
read するとタイムアップになってしまう・・・。何が悪いのでしょうか。
キューのクリアとか必要ですか?
211:login:Penguin
03/05/16 16:21 yZKduc9i
初歩的な質問ですみませんが、導師のみなさま、お導きを。
write()されたデータを一時的に保持して、次のread()で保持した値を返す
ようなキャラクタデバドラがあるとします。
アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが
上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。
これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を
実現するにはどのように実装すればいいのでしょうか?
212:login:Penguin
03/05/16 16:44 0mzALYCZ
>>211
プロセス別にキューを持てばいいんでは?
openされたら新しいキューを割り当てて、
closeされたら開放。
213:211
03/05/16 18:32 g3wElzO+
>>212
では、同一プロセスの複数スレッドまで考慮しなければならない場合、
どうすればいいのでしょうか?
214:212
03/05/16 19:18 0mzALYCZ
>>213
スレッドじゃなくても、二つ以上開いたら破綻しますな。
→お手軽コース:1回だけオープンできるようにする。
→まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな?
というところで。
215:うまうま
03/05/17 03:23 WAKxeCTB
>>210
readしたとき、とりあえず何バイトか読み出してる?
デバイスが返しうるバイト数よりも多く読み出そうとして待ち
続けているという可能性はない?
216:ドライバ初心者
03/05/18 01:04 2usiGwhL
>>215
>readしたとき、とりあえず何バイトか読み出してる?
その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました!
今はハードが手元に無いので月曜日に試してみます。ありがとうございました。
217:動画直リン
03/05/18 01:11 pMLvChGr
URLリンク(homepage.mac.com)
218:login:Penguin
03/05/18 21:07 sDNMC/v5
猿でもわかるように書かれたデバドラ作成解説ページってある?
219:ドライバ初心者
03/05/19 19:00 r7lftq4x
>>215
タイムアウトは無くなりましたが、こんどはusb-uhci.c 内でエラーになってしまいました。
/proc/kmsg の出力は
usb-uhci.c: ENXIO c0010200, flags 0, urb de96cbe0, burb de96cbe0
usb_bulk_msg の使い方がまずいのでしょうか・・・
usb_bulk_msg(scn->dev, usb_rcvbulkpipe(scn->dev, M_READ), ibuf,
count, &partial, RD_NAK_TIMEOUT);
USBデバドラ開発に役立ちそうなページ
usb.c File Reference
URLリンク(www.atomised.org)
220:login:Penguin
03/05/19 19:13 Q6lDTR8l
>>218
デバドラの前に、まずはRFC2795から行ってみよう。
221:login:Penguin
03/05/19 22:53 808Vam9H
>>220
英語読むのめんどくせ
猿にハムレット歌わせるんだっけ?
222:ドライバ初心者
03/05/20 18:31 oatjLeiG
>>219 は私のバグでした。
しかしながら。タイムアウトは解決しないままです。
Windows用のドライバではちゃんと読みこめているようなのですが・・・
lsusb で 下のようにでているのと関係があるのか・・・
unknown descriptor type: 05 24 00 10 01
unknown descriptor type: 04 24 02 06
unknown descriptor type: 05 24 06 00 01
unknown descriptor type: 05 24 01 03 01
223:山崎渉
03/05/22 01:55 p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
224:ドライバ初心者
03/05/22 16:32 7jvNN9yz
>>222
仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。
URLリンク(north.hokkai.net)
ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ
りがとうございました。
225:login:Penguin
03/05/27 12:06 VgmJadOg
あまりにも便利なので上げさせてください
226:login:Penguin
03/05/28 14:11 2En7vxAz
insmod するとこんなエラーが出てきたのですがどうすればいいでしょう?
couldn't find the kernel version the module was compiled for
227:山崎渉
03/05/28 16:42 3t6i6zxR
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎―◎ 山崎渉
228:login:Penguin
03/05/28 16:55 3qAfQe3K
>>226
そのドライバを今のカーネルでコンパイルし直してください。
もしくは -f オプションで insmod してください。なんちって
229:login:Penguin
03/05/28 23:40 z1beycbb
>>226
なにをいれた? 「実はモジュールじゃない」ってときもそれ。
230:226
03/05/29 18:33 FeUqO3hy
>>228
>>229
MIPS で動いているLinux に、Redhat7.2 のUSBデバイスドライバです。
ソースのコンパイルはちゃんと通るのですが。
あと、Hello World を出力するだけのデバドラの動作は確認済。
231:login:Penguin
03/05/29 21:59 5gpS9IGq
>>230
archがあってないとか。
$ file vmlinux
$ file そのモジュール
の結果を見てみたい所ですね。
232:226
03/05/30 10:13 Mg17snq6
>>231
$file vmlinux
./vmlinux: ELF 32-bit LSB mips-2 executable, MIPS R3000_LE [bfd bug], version 1, statically linked, not stripped
$file test.o
./test.o: ELF 32-bit LSB mips-2 relocatable, MIPS R3000_LE [bfd bug], version 1, not stripped
233:login:Penguin
03/05/31 15:40 pCrUKetP
>>232
あってるねえ。謎だなあ。
init_moduleがエラーを返してるって事はないよね?
234:226
03/06/02 11:33 O0kbkjww
>>233
cc に渡すパラメータに -DCONFIG_MODVERSIONS を付け加えたら無くなりました。
ところが今度は、insmod するとこんなエラーが・・・
./test.o: unresolved symbol _gp_disp
./test.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols
_gp_disp はどこのライブラリにあるのでしょうか?
235:login:Penguin
03/06/03 01:50 iocW6lsY
>>234
そんな関数見たことないなー。
別なモジュールに依存してるとかないの?
カーネル絡みはlibgcc以外のライブラリ使わないよ。
236:コピペ
03/06/03 13:33 9FZ3sCry
(゚∀゚) ?
Insmod が _gp_disp シンボルが未定義だと文句を言います
(゚∀゚) !
_gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。
このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。
この場合の問題の要点は、カーネル作成時の Makefile のオプションと、
カーネルモジュール作成時のオプションは同じにすべきだということです。
特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。
237:login:Penguin
03/06/03 13:34 9FZ3sCry
まあなんか知らんけどgoogleって便利ってのはわかった
意味まではわかんないけど
238:login:Penguin
03/06/03 14:40 iocW6lsY
>>236
へぇ、MIPSのPICは変わっていると聞いたことがあるが…
そんな事もやってるのか。
ひとつ賢くなったような気がする。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5366日前に更新/265 KB
担当:undef